{
  "openapi" : "3.0.3",
  "info" : {
    "title" : "Task Scheduling",
    "description" : "Assign jobs to machines and/or employees while minimizing the makespan.",
    "contact" : {
      "name" : "Timefold BV",
      "url" : "https://timefold.ai",
      "email" : "info@timefold.ai"
    },
    "version" : "v1"
  },
  "servers" : [ {
    "url" : "/api/models/job-scheduling"
  } ],
  "tags" : [ {
    "name" : "Demo data",
    "description" : "Generated demo data for the model"
  }, {
    "name" : "Job Schedule",
    "description" : "Assign jobs to machines and/or employees, optimizing for production efficiency and employee satisfaction, minimizing the makespan."
  } ],
  "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/ModelRequestJobScheduleInputJobScheduleConfigOverrides"
                }
              }
            }
          },
          "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/JobScheduleInput"
                }
              }
            }
          },
          "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/schedules" : {
      "post" : {
        "summary" : "Request a job schedule to be solved, a unique identifier is returned that can be used to retrieve the job schedule once solved",
        "operationId" : "schedule",
        "tags" : [ "Job Schedule" ],
        "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/ModelRequestJobScheduleInputJobScheduleConfigOverrides"
              }
            }
          },
          "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 job schedules that are registered in the service (that are to be solved, in progress, or solved), only returning its status",
        "operationId" : "getSchedules",
        "deprecated" : true,
        "tags" : [ "Job Schedule" ],
        "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/schedules/score-analysis" : {
      "post" : {
        "summary" : "Calculates score analysis for the supplied schedule",
        "operationId" : "calculateScoreAnalysis",
        "tags" : [ "Job Schedule" ],
        "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/ScoreAnalysisRequestJobScheduleInputJobScheduleConfigOverrides"
              }
            }
          },
          "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/schedules/validation-issue-types" : {
      "get" : {
        "summary" : "Get validation issue types supported by the model",
        "operationId" : "getValidationIssueTypes",
        "tags" : [ "Job Schedule" ],
        "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/schedules/validation-issue-types/{code}" : {
      "get" : {
        "summary" : "Get validation issue type by the code",
        "operationId" : "getValidationIssueTypeByCode",
        "tags" : [ "Job Schedule" ],
        "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/schedules/{id}" : {
      "delete" : {
        "summary" : "Terminate and return a job schedule with the given identifier",
        "operationId" : "terminateSchedule",
        "tags" : [ "Job Schedule" ],
        "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/ModelResponseHardMediumSoftScoreJobScheduleOutputJobScheduleInputMetricsJobScheduleOutputMetrics"
                }
              }
            }
          },
          "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" : [ "Job Schedule" ],
        "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 job schedule with the given identifier. It's the best schedule so far as the solver might still be running.",
        "operationId" : "getSchedule",
        "tags" : [ "Job Schedule" ],
        "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/ModelResponseHardMediumSoftScoreJobScheduleOutputJobScheduleInputMetricsJobScheduleOutputMetrics"
                }
              }
            }
          },
          "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/schedules/{id}/config" : {
      "get" : {
        "summary" : "Get the configuration used for the schedule",
        "operationId" : "getScheduleConfig",
        "tags" : [ "Job Schedule" ],
        "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/schedules/{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" : [ "Job Schedule" ],
        "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/schedules/{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" : [ "Job Schedule" ],
        "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/schedules/{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" : [ "Job Schedule" ],
        "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/ModelInputPatchRequestJobScheduleConfigOverrides"
              }
            }
          },
          "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/schedules/{id}/input" : {
      "get" : {
        "summary" : "Get input dataset",
        "operationId" : "getScheduleInput",
        "tags" : [ "Job Schedule" ],
        "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/JobScheduleInput"
                }
              }
            }
          },
          "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/schedules/{id}/logs" : {
      "get" : {
        "summary" : "Get logs with given identifier",
        "operationId" : "getScheduleLogs",
        "tags" : [ "Job Schedule" ],
        "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/schedules/{id}/metadata" : {
      "get" : {
        "summary" : "Get a job schedule status with the given identifier",
        "operationId" : "getMetadata",
        "tags" : [ "Job Schedule" ],
        "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/schedules/{id}/model-request" : {
      "get" : {
        "summary" : "Get complete input request for given schedule with given identifier",
        "operationId" : "getModelRequest",
        "tags" : [ "Job Schedule" ],
        "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/ModelRequestJobScheduleInputJobScheduleConfigOverrides"
                }
              }
            }
          },
          "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/schedules/{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" : [ "Job Schedule" ],
        "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/schedules/{id}/run" : {
      "get" : {
        "summary" : "(Deprecated endpoint, please use /{id}/metadata instead) Get a job schedule status with the given identifier",
        "operationId" : "getScheduleStatus",
        "deprecated" : true,
        "tags" : [ "Job Schedule" ],
        "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/schedules/{id}/score-analysis" : {
      "get" : {
        "summary" : "Get score analysis for a schedule with the given identifier",
        "operationId" : "getScoreAnalysis",
        "tags" : [ "Job Schedule" ],
        "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/schedules/{id}/validation-result" : {
      "get" : {
        "summary" : "Get validation result of a dataset with the given identifier",
        "operationId" : "getValidationResult",
        "tags" : [ "Job Schedule" ],
        "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/ValidationResultAbstractJobScheduleIssue"
                }
              }
            }
          },
          "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/schedules/{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/ModelResponseHardMediumSoftScoreJobScheduleOutputJobScheduleInputMetricsJobScheduleOutputMetrics"
                }
              }
            }
          },
          "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" : {
      "AbstractJobScheduleIssue" : {
        "description" : "Reports one problem found while validating a job schedule input.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          }
        },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/DuplicateResourceIdIssue"
        }, {
          "$ref" : "#/components/schemas/JobDependencyCycleIssue"
        }, {
          "$ref" : "#/components/schemas/JobDependencyDoesNotExistIssue"
        }, {
          "$ref" : "#/components/schemas/JobDependencyMaxOffsetLessThanMinOffsetIssue"
        }, {
          "$ref" : "#/components/schemas/JobDependencyNegativeMaxOffsetIssue"
        }, {
          "$ref" : "#/components/schemas/JobDependencyNegativeMinOffsetIssue"
        }, {
          "$ref" : "#/components/schemas/JobDependencyNoIntermediateJobsWithoutSameResourceIssue"
        }, {
          "$ref" : "#/components/schemas/JobDependencySameResourceWithoutEndAnchorIssue"
        }, {
          "$ref" : "#/components/schemas/JobDurationOnResourceDoesNotExistIssue"
        }, {
          "$ref" : "#/components/schemas/JobNegativeDurationOnResourceIssue"
        }, {
          "$ref" : "#/components/schemas/JobNonExistingJobTypeIssue"
        }, {
          "$ref" : "#/components/schemas/JobOnResourceDoesNotExistIssue"
        }, {
          "$ref" : "#/components/schemas/JobRequiredResourceDoesNotExistIssue"
        }, {
          "$ref" : "#/components/schemas/JobTransitionNonExistingFromJobTypeIssue"
        }, {
          "$ref" : "#/components/schemas/JobTransitionNonExistingMachineTypeIssue"
        }, {
          "$ref" : "#/components/schemas/JobTransitionNonExistingToJobTypeIssue"
        }, {
          "$ref" : "#/components/schemas/JobWithoutDurationIssue"
        }, {
          "$ref" : "#/components/schemas/ResourceNonExistingMachineTypeIssue"
        }, {
          "$ref" : "#/components/schemas/ResourceOverlappingUnavailableTimeSpansIssue"
        }, {
          "$ref" : "#/components/schemas/ResourceTransitionForbiddenWithRewardIssue"
        }, {
          "$ref" : "#/components/schemas/ResourceTransitionNonExistingMachineIssue"
        }, {
          "$ref" : "#/components/schemas/TagOnResourceDoesNotExistIssue"
        }, {
          "$ref" : "#/components/schemas/TagOnResourceMultipleTimeSpansIssue"
        } ]
      },
      "Anchor" : {
        "description" : "The point on the preceding job that the offsets of a job dependency are measured from.",
        "enum" : [ "END", "START" ],
        "type" : "string"
      },
      "DatasetSelector" : {
        "enum" : [ "UNSOLVED", "SOLVED" ],
        "type" : "string"
      },
      "DemoDataConfigEntry" : {
        "type" : "object",
        "properties" : {
          "key" : {
            "type" : "string"
          },
          "value" : {
            "type" : "string"
          }
        }
      },
      "DemoMetaData" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "shortDescription" : {
            "type" : "string"
          },
          "longDescription" : {
            "type" : "string"
          },
          "tags" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "config" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DemoDataConfigEntry"
            }
          }
        }
      },
      "DependencyJob" : {
        "description" : "A job that must be finished, or started, before the job that declares this dependency.",
        "required" : [ "id" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "Unique identifier of the job.",
            "type" : "string"
          },
          "anchor" : {
            "description" : "The point on the preceding job that the offsets are measured from.",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Anchor"
            } ]
          },
          "minOffset" : {
            "description" : "Smallest allowed offset between the anchor of the preceding job and the start of this job.",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "maxOffset" : {
            "description" : "Largest allowed offset between the anchor of the preceding job and the start of this job. Unset means unbounded.",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "requiresSameResource" : {
            "description" : "The dependent job must run on the same resource as the preceding job.",
            "type" : "boolean"
          },
          "noIntermediateJobs" : {
            "description" : "No other job may run between the preceding job and the dependent job.",
            "type" : "boolean"
          }
        }
      },
      "DuplicateResourceIdIssue" : {
        "description" : "Multiple resources have the same id.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "resourceId1" : {
            "description" : "The id that both resources declare.",
            "type" : "string"
          },
          "resource1Type" : {
            "description" : "The type of the resource that declared the id first.",
            "type" : "string"
          },
          "resourceId2" : {
            "description" : "The id that both resources declare, repeated for the second resource.",
            "type" : "string"
          },
          "resource2Type" : {
            "description" : "The type of the resource that repeats the id.",
            "type" : "string"
          }
        }
      },
      "Duration" : {
        "format" : "duration",
        "type" : "string",
        "example" : "P1D"
      },
      "ErrorInfo" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "code" : {
            "type" : "string"
          },
          "message" : {
            "type" : "string"
          },
          "details" : {
            "type" : "string"
          }
        }
      },
      "InputEmployee" : {
        "description" : "The employee that processes jobs.",
        "required" : [ "id", "start" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The id of the employee.",
            "type" : "string"
          },
          "jobs" : {
            "description" : "Jobs assigned to this employee.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/InputJobOnResource"
            }
          },
          "start" : {
            "description" : "The start the of the jobs assigned to this employee will be derived from this value. There will be no jobs with 'processingStart' before this point in time.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "tags" : {
            "description" : "Tags associated with this employee.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TagAvailability"
            }
          },
          "unavailableTimeSpans" : {
            "description" : "The list of time spans the employee is not available. Time spans can not overlap.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TimeSpan"
            }
          },
          "freezeJobsUntil" : {
            "description" : "All jobs submitted on this employee with a processingStart before this point in time will get pinned.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          }
        },
        "additionalProperties" : false
      },
      "InputJob" : {
        "description" : "Jobs that are processed by machines or employees.",
        "required" : [ "id" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the job.",
            "type" : "string"
          },
          "duration" : {
            "description" : "Duration of the job. If both 'duration' and 'durationOnResources' are specified, then `duration` is the default and `durationOnResources` will override it for the the resources listed in 'durationOnResources'.",
            "type" : "string",
            "nullable" : true
          },
          "durationOnResources" : {
            "description" : "Duration of the job on specific resources. If both 'duration' and 'durationOnResources' are specified, then `duration` is the default and `durationOnResources` will override it for the the resources listed in 'durationOnResources'.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/JobDurationOnResource"
            },
            "nullable" : true
          },
          "requiredTags" : {
            "description" : "Required tags. A job can only be assigned to a resource (machine or employee) with all of these tags.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "requiredResources" : {
            "description" : "Required resources. A job can only be assigned to one of these resources.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "dependencies" : {
            "description" : "Dependency jobs. This job can only start after all dependency jobs have finished.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DependencyJob"
            }
          },
          "minStart" : {
            "description" : "Minimum start time of the job. The job will never be scheduled before this point in time.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "idealEnd" : {
            "description" : "Ideal end time of the job. The job will ideally finish close to this point in time.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "maxEnd" : {
            "description" : "Maximum end time of the job. The job will never finish after this point in time.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "priority" : {
            "format" : "int32",
            "description" : "The job's priority. Jobs with high priority ideally finish before low-priority jobs.",
            "minimum" : 1,
            "type" : "integer"
          },
          "jobType" : {
            "description" : "The type of the job.",
            "type" : "string",
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "InputJobOnResource" : {
        "description" : "Jobs that are processed by machines or employees.",
        "required" : [ "id" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the job.",
            "type" : "string"
          },
          "start" : {
            "description" : "Processing start, as calculated by the solver.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "InputMachine" : {
        "description" : "The machine that processes jobs.",
        "required" : [ "id", "start" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the machine.",
            "type" : "string"
          },
          "jobs" : {
            "description" : "Jobs assigned to this machine.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/InputJobOnResource"
            }
          },
          "start" : {
            "description" : "The start the of the jobs assigned to this machine will be derived from this value. There will be no jobs with 'processingStart' before this point in time.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "tags" : {
            "description" : "Tags associated with this machine.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TagAvailability"
            }
          },
          "unavailableTimeSpans" : {
            "description" : "The list of time spans the machine is not available. Time spans can not overlap.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TimeSpan"
            }
          },
          "freezeJobsUntil" : {
            "description" : "All jobs submitted on this machine with a processingStart before this point in time will get pinned.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "machineType" : {
            "description" : "The type of the machine.",
            "type" : "string",
            "nullable" : true
          }
        },
        "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"
            }
          }
        }
      },
      "JobDependencyCycleIssue" : {
        "description" : "A job dependency would close a cycle in the dependency graph.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "job" : {
            "description" : "The job that the issue is about.",
            "type" : "string"
          },
          "dependency" : {
            "description" : "The dependency of that job that the issue is about.",
            "type" : "string"
          }
        }
      },
      "JobDependencyDoesNotExistIssue" : {
        "description" : "A job depends on a job that the schedule does not contain.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "job" : {
            "description" : "The job that the issue is about.",
            "type" : "string"
          },
          "dependency" : {
            "description" : "The dependency that does not exist.",
            "type" : "string"
          }
        }
      },
      "JobDependencyMaxOffsetLessThanMinOffsetIssue" : {
        "description" : "A job dependency allows no offset at all, because its maxOffset is below its minOffset.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "job" : {
            "description" : "The job that the issue is about.",
            "type" : "string"
          },
          "dependency" : {
            "description" : "The dependency of that job that the issue is about.",
            "type" : "string"
          },
          "minOffset" : {
            "description" : "The smallest allowed offset that the dependency declares.",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "maxOffset" : {
            "description" : "The largest allowed offset that the dependency declares.",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          }
        }
      },
      "JobDependencyNegativeMaxOffsetIssue" : {
        "description" : "A job dependency declares a negative maxOffset.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "job" : {
            "description" : "The job that the issue is about.",
            "type" : "string"
          },
          "dependency" : {
            "description" : "The dependency of that job that the issue is about.",
            "type" : "string"
          },
          "maxOffset" : {
            "description" : "The negative largest allowed offset that the dependency declares.",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          }
        }
      },
      "JobDependencyNegativeMinOffsetIssue" : {
        "description" : "A job dependency declares a negative minOffset.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "job" : {
            "description" : "The job that the issue is about.",
            "type" : "string"
          },
          "dependency" : {
            "description" : "The dependency of that job that the issue is about.",
            "type" : "string"
          },
          "minOffset" : {
            "description" : "The negative smallest allowed offset that the dependency declares.",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          }
        }
      },
      "JobDependencyNoIntermediateJobsWithoutSameResourceIssue" : {
        "description" : "A job dependency forbids intermediate jobs without requiring the same resource, which cannot be enforced.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "job" : {
            "description" : "The job that the issue is about.",
            "type" : "string"
          },
          "dependency" : {
            "description" : "The dependency of that job that the issue is about.",
            "type" : "string"
          }
        }
      },
      "JobDependencyNotAssignedViolationJustification" : {
        "description" : "Justification for a job dependency not being assigned violation.",
        "type" : "object",
        "properties" : {
          "description" : {
            "description" : "Human readable explanation of this constraint match.",
            "type" : "string"
          },
          "jobId" : {
            "description" : "The job that starts too early.",
            "type" : "string"
          },
          "dependencyJobId" : {
            "description" : "The dependency job that finishes too late.",
            "type" : "string"
          }
        }
      },
      "JobDependencyRequiresSameResourceViolationJustification" : {
        "description" : "Justification for a job dependency not being assigned to the same resource violation.",
        "type" : "object",
        "properties" : {
          "description" : {
            "description" : "Human readable explanation of this constraint match.",
            "type" : "string"
          },
          "jobId" : {
            "description" : "The job that is not assigned to the same resource as the dependency job.",
            "type" : "string"
          },
          "dependencyJobId" : {
            "description" : "The dependency job.",
            "type" : "string"
          }
        }
      },
      "JobDependencySameResourceWithoutEndAnchorIssue" : {
        "description" : "A job dependency requires the same resource without anchoring on the end of the preceding job.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "job" : {
            "description" : "The job that the issue is about.",
            "type" : "string"
          },
          "dependency" : {
            "description" : "The dependency of that job that the issue is about.",
            "type" : "string"
          }
        }
      },
      "JobDependencyTimingViolationJustification" : {
        "description" : "Justification for a job dependency violation.",
        "type" : "object",
        "properties" : {
          "description" : {
            "description" : "Human readable explanation of this constraint match.",
            "type" : "string"
          },
          "jobId" : {
            "description" : "The job that is assigned.",
            "type" : "string"
          },
          "dependencyJobId" : {
            "description" : "The dependency job that is not assigned.",
            "type" : "string"
          },
          "jobStart" : {
            "description" : "The start time of the job.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "dependencyEnd" : {
            "description" : "The end time of the dependency job.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          }
        }
      },
      "JobDurationOnResource" : {
        "description" : "Duration of a job on a specific machine or employee.",
        "required" : [ "resource", "duration" ],
        "type" : "object",
        "properties" : {
          "resource" : {
            "description" : "Identifier of the machine.",
            "type" : "string"
          },
          "duration" : {
            "description" : "Duration of the job on the machine or employee.",
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "JobDurationOnResourceDoesNotExistIssue" : {
        "description" : "A job declares a duration on a resource that the schedule does not contain.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "job" : {
            "description" : "The job that the issue is about.",
            "type" : "string"
          },
          "resource" : {
            "description" : "The resource that does not exist.",
            "type" : "string"
          },
          "duration" : {
            "description" : "The duration that the job declares for that resource.",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          }
        }
      },
      "JobFinishedAfterMaximumEndJustification" : {
        "description" : "Justification for a job that finishes after its maximum end.",
        "type" : "object",
        "properties" : {
          "description" : {
            "description" : "Human readable explanation of this constraint match.",
            "type" : "string"
          },
          "jobId" : {
            "description" : "The job that finishes too late.",
            "type" : "string"
          },
          "maxEnd" : {
            "description" : "The maximum end that the job was allowed to finish at.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "processingEnd" : {
            "description" : "The end that the solver scheduled the job to finish at.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          }
        }
      },
      "JobIsInvalidJustification" : {
        "description" : "Justification for a job that cannot be scheduled because it is invalid.",
        "type" : "object",
        "properties" : {
          "description" : {
            "description" : "Human readable explanation of this constraint match.",
            "type" : "string"
          },
          "jobId" : {
            "description" : "The job that is invalid, for example because it is part of a dependency loop.",
            "type" : "string"
          }
        }
      },
      "JobNegativeDurationOnResourceIssue" : {
        "description" : "A job declares a negative duration on a resource.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "job" : {
            "description" : "The job that the issue is about.",
            "type" : "string"
          },
          "resource" : {
            "description" : "The resource that the negative duration is declared for.",
            "type" : "string"
          },
          "duration" : {
            "description" : "The negative duration that the job declares.",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          }
        }
      },
      "JobNonExistingJobTypeIssue" : {
        "description" : "A job refers to a job type that the schedule does not declare.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "job" : {
            "description" : "The job that the issue is about.",
            "type" : "string"
          },
          "jobType" : {
            "description" : "The job type that does not exist.",
            "type" : "string"
          }
        }
      },
      "JobOnResourceDoesNotExistIssue" : {
        "description" : "A resource carries a job that the schedule does not contain.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "job" : {
            "description" : "The job on the resource that does not exist.",
            "type" : "string"
          },
          "resource" : {
            "description" : "The machine or employee that the issue is about.",
            "type" : "string"
          }
        }
      },
      "JobRequiredResourceDoesNotExistIssue" : {
        "description" : "A job requires a resource that the schedule does not contain.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "job" : {
            "description" : "The job that the issue is about.",
            "type" : "string"
          },
          "resource" : {
            "description" : "The required resource that does not exist.",
            "type" : "string"
          }
        }
      },
      "JobScheduleConfigOverrides" : {
        "description" : "Definition of soft constraint weights. Every constraint has a default weight of 1, meaning that all constraints are equally important. Use this to express preference of some constraints over others. For example, in order to express that the minimize makespan constraint is more important than the rest of the constraints, set the value of the minimizeMakespanWeight attribute to 10. In order to turn off a constraint, set the value of the corresponding attribute to 0. A weight left unset is not overridden here, so the value from the configuration profile (or the constraint's default) applies.",
        "type" : "object",
        "properties" : {
          "minimizeMakespanWeight" : {
            "format" : "int64",
            "description" : "Soft weight of the minimize makespan constraint.",
            "type" : "integer"
          },
          "minimizeIdealEndDifferenceWeight" : {
            "format" : "int64",
            "description" : "Soft weight of the minimize ideal end difference constraint.",
            "type" : "integer"
          }
        },
        "additionalProperties" : false
      },
      "JobScheduleConstraintJustification" : {
        "description" : "Explains why a constraint matched, so that a score can be traced back to the input.",
        "type" : "object",
        "properties" : {
          "description" : {
            "description" : "Human readable explanation of this constraint match.",
            "type" : "string"
          }
        },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/JobDependencyNotAssignedViolationJustification"
        }, {
          "$ref" : "#/components/schemas/JobDependencyRequiresSameResourceViolationJustification"
        }, {
          "$ref" : "#/components/schemas/JobDependencyTimingViolationJustification"
        }, {
          "$ref" : "#/components/schemas/JobFinishedAfterMaximumEndJustification"
        }, {
          "$ref" : "#/components/schemas/JobIsInvalidJustification"
        }, {
          "$ref" : "#/components/schemas/JobStartedBeforeMinimumStartJustification"
        }, {
          "$ref" : "#/components/schemas/MinimizeIdealEndDifferenceJustification"
        }, {
          "$ref" : "#/components/schemas/MinimizeMakespanJustification"
        }, {
          "$ref" : "#/components/schemas/MinimizeNumberOfUnassignedJobs"
        }, {
          "$ref" : "#/components/schemas/RequiredResourcesDoNotMatchJustification"
        }, {
          "$ref" : "#/components/schemas/RequiredTagsDoNotMatchJustification"
        }, {
          "$ref" : "#/components/schemas/ResourceTransitionForbiddenJustification"
        }, {
          "$ref" : "#/components/schemas/RewardResourceTransitionJustification"
        } ]
      },
      "JobScheduleInput" : {
        "description" : "Definition of the schedule.",
        "type" : "object",
        "properties" : {
          "machines" : {
            "description" : "The machines that can process jobs.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/InputMachine"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "machineTags" : {
            "description" : "The tags that machines can carry.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Tag"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "machineTypes" : {
            "description" : "The machine types that machines and job transitions can refer to.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/MachineType"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "employees" : {
            "description" : "The employees that can process jobs.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/InputEmployee"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "employeeTags" : {
            "description" : "The tags that employees can carry.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Tag"
            }
          },
          "jobs" : {
            "description" : "The jobs to schedule.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/InputJob"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "jobTypes" : {
            "description" : "The job types that jobs and job transitions can refer to.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/JobType"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "jobTransitions" : {
            "description" : "The transition times between jobs of a given type on a machine of a given type.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/JobTransition"
            }
          },
          "resourceTransitions" : {
            "description" : "The rewarded and the forbidden transitions between specific resources.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ResourceTransition"
            }
          }
        },
        "additionalProperties" : false
      },
      "JobScheduleInputMetrics" : {
        "description" : "The size of the input dataset.",
        "type" : "object",
        "properties" : {
          "jobs" : {
            "format" : "number",
            "title" : "Jobs",
            "description" : "The number of jobs in the input dataset.",
            "type" : "integer",
            "example" : 4064,
            "x-tf-priority" : "1",
            "x-tf-example" : "1654"
          },
          "machines" : {
            "format" : "number",
            "title" : "Machines",
            "description" : "The number of machines in the input dataset.",
            "type" : "integer",
            "example" : 100,
            "x-tf-priority" : "2",
            "x-tf-example" : "50"
          },
          "employees" : {
            "format" : "number",
            "title" : "Employees",
            "description" : "The number of employees in the input dataset.",
            "type" : "integer",
            "example" : 50,
            "x-tf-priority" : "3",
            "x-tf-example" : "25"
          }
        }
      },
      "JobScheduleOutput" : {
        "description" : "Definition of the schedule.",
        "type" : "object",
        "properties" : {
          "machines" : {
            "description" : "The machines with the jobs the solver placed on them, in processing order.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OutputMachine"
            }
          },
          "employees" : {
            "description" : "The employees with the jobs the solver placed on them, in processing order.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OutputEmployee"
            }
          },
          "unassignedJobs" : {
            "description" : "The jobs the solver could not assign to any machine or employee.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OutputJob"
            }
          }
        },
        "additionalProperties" : false
      },
      "JobScheduleOutputMetrics" : {
        "description" : "The characteristics of the schedule that the solver produced.",
        "type" : "object",
        "properties" : {
          "makespan" : {
            "format" : "duration",
            "title" : "Makespan",
            "description" : "The total duration of the schedule.",
            "type" : "string",
            "example" : "PT1H",
            "x-tf-priority" : "2",
            "x-tf-example" : "PT1H"
          },
          "unassignedJobs" : {
            "format" : "number",
            "title" : "Unassigned jobs",
            "description" : "The number of jobs that could not be assigned to a machine or employee in this schedule.",
            "type" : "integer",
            "example" : 10,
            "x-tf-priority" : "1",
            "x-tf-example" : "12"
          },
          "assignedJobs" : {
            "format" : "number",
            "title" : "Assigned jobs",
            "description" : "The number of jobs that are successfully assigned to machines or employees in this schedule.",
            "type" : "integer",
            "example" : 90,
            "x-tf-priority" : "3",
            "x-tf-example" : "88"
          },
          "activatedMachines" : {
            "format" : "number",
            "title" : "Activated machines",
            "description" : "The number of machines that have at least one job assigned.",
            "type" : "integer",
            "example" : 5,
            "x-tf-priority" : "4",
            "x-tf-example" : "5"
          },
          "activatedEmployees" : {
            "format" : "number",
            "title" : "Activated employees",
            "description" : "The number of employees that have at least one job assigned.",
            "type" : "integer",
            "example" : 5,
            "x-tf-priority" : "5",
            "x-tf-example" : "5"
          },
          "idealEndTimeDeviation" : {
            "format" : "duration",
            "title" : "Ideal end time deviation",
            "description" : "The total deviation of jobs from their ideal end times when specified.",
            "type" : "string",
            "example" : "PT2H",
            "x-tf-priority" : "6",
            "x-tf-example" : "PT2H"
          }
        }
      },
      "JobStartedBeforeMinimumStartJustification" : {
        "description" : "Justification for a job that starts before its minimum start.",
        "type" : "object",
        "properties" : {
          "description" : {
            "description" : "Human readable explanation of this constraint match.",
            "type" : "string"
          },
          "jobId" : {
            "description" : "The job that starts too early.",
            "type" : "string"
          },
          "minStart" : {
            "description" : "The minimum start that the job was allowed to start at.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "processingStart" : {
            "description" : "The start that the solver scheduled the job to start at.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          }
        }
      },
      "JobTransition" : {
        "description" : "JobTransition between jobs",
        "required" : [ "machineType", "fromJobType", "toJobType", "duration" ],
        "type" : "object",
        "properties" : {
          "machineType" : {
            "description" : "Type associated with the machine",
            "type" : "string"
          },
          "fromJobType" : {
            "description" : "Type associated with the source job",
            "type" : "string"
          },
          "toJobType" : {
            "description" : "Type associated with the target job",
            "type" : "string"
          },
          "duration" : {
            "description" : "Duration of the transition",
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "JobTransitionNonExistingFromJobTypeIssue" : {
        "description" : "A job transition starts from a job type that the schedule does not declare.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "transition" : {
            "description" : "The job transition that the issue is about.",
            "type" : "string"
          },
          "fromJobType" : {
            "description" : "The source job type that does not exist.",
            "type" : "string"
          }
        }
      },
      "JobTransitionNonExistingMachineTypeIssue" : {
        "description" : "A job transition refers to a machine type that the schedule does not declare.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "transition" : {
            "description" : "The job transition that the issue is about.",
            "type" : "string"
          },
          "machineType" : {
            "description" : "The machine type that does not exist.",
            "type" : "string"
          }
        }
      },
      "JobTransitionNonExistingToJobTypeIssue" : {
        "description" : "A job transition leads to a job type that the schedule does not declare.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "transition" : {
            "description" : "The job transition that the issue is about.",
            "type" : "string"
          },
          "toJobType" : {
            "description" : "The target job type that does not exist.",
            "type" : "string"
          }
        }
      },
      "JobType" : {
        "description" : "Job type expressing the type of a job",
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the job type.",
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "JobWithoutDurationIssue" : {
        "description" : "A job declares neither a duration nor a duration on any resource, so it cannot be scheduled.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "job" : {
            "description" : "The job that the issue is about.",
            "type" : "string"
          }
        }
      },
      "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
      },
      "LogInfo" : {
        "type" : "object",
        "properties" : {
          "details" : {
            "type" : "string"
          }
        }
      },
      "MachineType" : {
        "description" : "Resource type expressing the type of a resource",
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the machine type.",
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "MapsConfiguration" : {
        "type" : "object",
        "properties" : {
          "provider" : {
            "type" : "string"
          },
          "location" : {
            "type" : "string"
          },
          "maxDistanceFromRoad" : {
            "format" : "double",
            "type" : "number"
          },
          "transportType" : {
            "type" : "string"
          },
          "useTraffic" : {
            "type" : "boolean"
          }
        }
      },
      "Metadata" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "parentId" : {
            "description" : "The id of the parent data set this was created from",
            "type" : "string",
            "nullable" : true
          },
          "originId" : {
            "description" : "The id of the origin (root) data set this initially originates from",
            "type" : "string",
            "nullable" : true
          },
          "name" : {
            "type" : "string",
            "nullable" : true
          },
          "submitDateTime" : {
            "description" : "The moment the run is submitted",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "startDateTime" : {
            "description" : "The moment the run begins initializing",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "activeDateTime" : {
            "description" : "The moment the solving phase begins",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "completeDateTime" : {
            "description" : "The moment the solving phase concludes",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "shutdownDateTime" : {
            "description" : "The moment the post-processing phase finishes",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "solverStatus" : {
            "allOf" : [ {
              "$ref" : "#/components/schemas/SolvingStatus"
            } ],
            "nullable" : true
          },
          "score" : {
            "type" : "string",
            "nullable" : true
          },
          "tags" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "validationResult" : {
            "$ref" : "#/components/schemas/LegacyValidationResult"
          },
          "failureMessage" : {
            "description" : "The message describing the reason of failure, in case of solverStatus=SOLVING_FAILED.",
            "type" : "string",
            "nullable" : true
          }
        }
      },
      "MetadataHardMediumSoftScore" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "parentId" : {
            "description" : "The id of the parent data set this was created from",
            "type" : "string",
            "nullable" : true
          },
          "originId" : {
            "description" : "The id of the origin (root) data set this initially originates from",
            "type" : "string",
            "nullable" : true
          },
          "name" : {
            "type" : "string",
            "nullable" : true
          },
          "submitDateTime" : {
            "description" : "The moment the run is submitted",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "startDateTime" : {
            "description" : "The moment the run begins initializing",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "activeDateTime" : {
            "description" : "The moment the solving phase begins",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "completeDateTime" : {
            "description" : "The moment the solving phase concludes",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "shutdownDateTime" : {
            "description" : "The moment the post-processing phase finishes",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "solverStatus" : {
            "allOf" : [ {
              "$ref" : "#/components/schemas/SolvingStatus"
            } ],
            "nullable" : true
          },
          "score" : {
            "type" : "string",
            "nullable" : true
          },
          "tags" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "validationResult" : {
            "$ref" : "#/components/schemas/LegacyValidationResult"
          },
          "failureMessage" : {
            "description" : "The message describing the reason of failure, in case of solverStatus=SOLVING_FAILED.",
            "type" : "string",
            "nullable" : true
          }
        }
      },
      "MinimizeIdealEndDifferenceJustification" : {
        "description" : "Justification for a job that finishes away from its ideal end.",
        "type" : "object",
        "properties" : {
          "description" : {
            "description" : "Human readable explanation of this constraint match.",
            "type" : "string"
          },
          "jobId" : {
            "description" : "The job that finishes away from its ideal end.",
            "type" : "string"
          },
          "idealEnd" : {
            "description" : "The end that the job would ideally finish at.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "processingEnd" : {
            "description" : "The end that the solver scheduled the job to finish at.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          }
        }
      },
      "MinimizeMakespanJustification" : {
        "description" : "Justification for the time that a resource spends on the jobs assigned to it.",
        "type" : "object",
        "properties" : {
          "description" : {
            "description" : "Human readable explanation of this constraint match.",
            "type" : "string"
          },
          "resourceId" : {
            "description" : "The machine or employee that the jobs are assigned to.",
            "type" : "string"
          },
          "duration" : {
            "description" : "The time from the start of the resource to the end of its last job.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          }
        }
      },
      "MinimizeNumberOfUnassignedJobs" : {
        "description" : "Justification for a job that is not assigned to any machine or employee.",
        "type" : "object",
        "properties" : {
          "description" : {
            "description" : "Human readable explanation of this constraint match.",
            "type" : "string"
          },
          "jobId" : {
            "description" : "The job that is left unassigned.",
            "type" : "string"
          }
        }
      },
      "ModelConfig" : {
        "type" : "object",
        "properties" : {
          "overrides" : {
            "description" : "The configuration of individual (soft) constraints weights and additional global model configuration attributes.",
            "type" : "object",
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "ModelConfigJobScheduleConfigOverrides" : {
        "type" : "object",
        "properties" : {
          "overrides" : {
            "description" : "The configuration of individual (soft) constraints weights and additional global model configuration attributes.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/JobScheduleConfigOverrides"
            } ],
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "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"
      },
      "ModelConfiguration" : {
        "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/ModelConfigObject"
            } ],
            "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
      },
      "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/ModelConfigJobScheduleConfigOverrides"
            } ],
            "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"
      },
      "ModelInputPatchRequestJobScheduleConfigOverrides" : {
        "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"
            }
          }
        }
      },
      "ModelRequest" : {
        "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/ModelConfiguration1"
            } ],
            "nullable" : true
          },
          "modelInput" : {
            "description" : "The model input to solve.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ModelInput"
            } ]
          }
        },
        "additionalProperties" : false
      },
      "ModelRequestJobScheduleInputJobScheduleConfigOverrides" : {
        "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/JobScheduleInput"
            } ]
          }
        },
        "additionalProperties" : false
      },
      "ModelResponseHardMediumSoftScoreJobScheduleOutputJobScheduleInputMetricsJobScheduleOutputMetrics" : {
        "type" : "object",
        "properties" : {
          "metadata" : {
            "description" : "The model dataset metadata.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/MetadataHardMediumSoftScore"
            } ],
            "nullable" : true
          },
          "modelOutput" : {
            "description" : "The solution to the requested model input.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/JobScheduleOutput"
            } ],
            "nullable" : true
          },
          "inputMetrics" : {
            "description" : "Key metrics aggregated from the model input.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/JobScheduleInputMetrics"
            } ],
            "nullable" : true
          },
          "kpis" : {
            "description" : "Key metrics aggregated from the model output.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/JobScheduleOutputMetrics"
            } ],
            "nullable" : true
          },
          "run" : {
            "description" : "The model run metadata. Deprecated in favor of \"metadata\"",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/MetadataHardMediumSoftScore"
            } ],
            "readOnly" : true,
            "nullable" : true,
            "deprecated" : true
          }
        }
      },
      "OffsetDateTime" : {
        "format" : "date-time",
        "type" : "string",
        "example" : "2022-03-10T12:15:50-04:00"
      },
      "OperationOnPost" : {
        "enum" : [ "NONE", "SOLVE" ],
        "type" : "string"
      },
      "OutputEmployee" : {
        "description" : "The employee that processes jobs.",
        "required" : [ "id" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The id of the employee.",
            "type" : "string"
          },
          "schedule" : {
            "description" : "Jobs assigned to this employee.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OutputJob"
            }
          }
        },
        "additionalProperties" : false
      },
      "OutputJob" : {
        "description" : "Jobs that are processed by machines or employees.",
        "required" : [ "id" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the job.",
            "type" : "string"
          },
          "start" : {
            "description" : "Processing start, as calculated by the solver.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "end" : {
            "description" : "Processing end, as calculated by the solver.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "OutputMachine" : {
        "description" : "The machine that processes jobs.",
        "required" : [ "id" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the machine.",
            "type" : "string"
          },
          "schedule" : {
            "description" : "Jobs assigned to this machine.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OutputJob"
            }
          }
        },
        "additionalProperties" : false
      },
      "RequiredResourcesDoNotMatchJustification" : {
        "description" : "Justification for a job that is assigned to a resource it does not accept.",
        "type" : "object",
        "properties" : {
          "description" : {
            "description" : "Human readable explanation of this constraint match.",
            "type" : "string"
          },
          "resourceId" : {
            "description" : "The machine or employee that the job is assigned to.",
            "type" : "string"
          },
          "jobId" : {
            "description" : "The job whose required resources are not met.",
            "type" : "string"
          },
          "requiredResourceIds" : {
            "description" : "The machines or employees that the job accepts.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "RequiredTagsDoNotMatchJustification" : {
        "description" : "Justification for a job that is assigned to a resource without all of its required tags.",
        "type" : "object",
        "properties" : {
          "description" : {
            "description" : "Human readable explanation of this constraint match.",
            "type" : "string"
          },
          "resourceId" : {
            "description" : "The machine or employee that the job is assigned to.",
            "type" : "string"
          },
          "jobId" : {
            "description" : "The job whose required tags are not met.",
            "type" : "string"
          },
          "requiredTags" : {
            "description" : "The tags that the job requires.",
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "tags" : {
            "description" : "The tags that the assigned machine or employee carries.",
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "ResourceNonExistingMachineTypeIssue" : {
        "description" : "A resource refers to a machine type that the schedule does not declare.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "resource" : {
            "description" : "The machine or employee that the issue is about.",
            "type" : "string"
          },
          "machineType" : {
            "description" : "The machine type that does not exist.",
            "type" : "string"
          }
        }
      },
      "ResourceOverlappingUnavailableTimeSpansIssue" : {
        "description" : "A resource declares two unavailable time spans that overlap.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "resource" : {
            "description" : "The machine or employee that the issue is about.",
            "type" : "string"
          },
          "timeSpan1" : {
            "description" : "The earlier of the two overlapping time spans.",
            "allOf" : [ {
              "$ref" : "#/components/schemas/TimeSpan"
            } ]
          },
          "timeSpan2" : {
            "description" : "The later of the two overlapping time spans.",
            "allOf" : [ {
              "$ref" : "#/components/schemas/TimeSpan"
            } ]
          }
        }
      },
      "ResourceTransition" : {
        "description" : "A transition between dependent jobs from/to specific resources (machines/employees) will be rewarded.",
        "required" : [ "fromResourceId", "toResourceId" ],
        "type" : "object",
        "properties" : {
          "fromResourceId" : {
            "description" : "ID of the source resource",
            "type" : "string"
          },
          "toResourceId" : {
            "description" : "ID of the target resource",
            "type" : "string"
          },
          "reward" : {
            "format" : "int32",
            "description" : "Reward score for this transition (higher is better)",
            "type" : "integer"
          },
          "forbidden" : {
            "description" : "The transition is forbidden",
            "type" : "boolean"
          }
        },
        "additionalProperties" : false
      },
      "ResourceTransitionForbiddenJustification" : {
        "description" : "Justification for a pair of dependent jobs on a forbidden transition between two resources.",
        "type" : "object",
        "properties" : {
          "description" : {
            "description" : "Human readable explanation of this constraint match.",
            "type" : "string"
          },
          "fromResourceId" : {
            "description" : "The machine that the preceding job is assigned to.",
            "type" : "string"
          },
          "toResourceId" : {
            "description" : "The machine that the dependent job is assigned to.",
            "type" : "string"
          }
        }
      },
      "ResourceTransitionForbiddenWithRewardIssue" : {
        "description" : "A resource transition is forbidden and rewarded at the same time.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "resourceTransition" : {
            "description" : "The resource transition that the issue is about.",
            "type" : "string"
          },
          "reward" : {
            "format" : "int32",
            "description" : "The reward that the forbidden transition declares.",
            "type" : "integer"
          }
        }
      },
      "ResourceTransitionNonExistingMachineIssue" : {
        "description" : "A resource transition refers to a machine that the schedule does not contain.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "resourceTransition" : {
            "description" : "The resource transition that the issue is about.",
            "type" : "string"
          },
          "nonExistingMachine" : {
            "description" : "The machine that does not exist.",
            "type" : "string"
          }
        }
      },
      "ResourcesConfiguration" : {
        "type" : "object",
        "properties" : {
          "memory" : {
            "format" : "double",
            "type" : "number"
          },
          "labels" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          }
        }
      },
      "RewardResourceTransitionJustification" : {
        "description" : "Justification for a pair of dependent jobs on a rewarded transition between two resources.",
        "type" : "object",
        "properties" : {
          "description" : {
            "description" : "Human readable explanation of this constraint match.",
            "type" : "string"
          },
          "fromResourceId" : {
            "description" : "The machine that the preceding job is assigned to.",
            "type" : "string"
          },
          "toResourceId" : {
            "description" : "The machine that the dependent job is assigned to.",
            "type" : "string"
          },
          "reward" : {
            "format" : "int32",
            "description" : "The reward that this transition earns.",
            "type" : "integer"
          }
        }
      },
      "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
      },
      "ScoreAnalysisConfig" : {
        "type" : "object",
        "properties" : {
          "model" : {
            "description" : "Model configuration for the score analysis.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ModelConfigObject"
            } ],
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "ScoreAnalysisConfigJobScheduleConfigOverrides" : {
        "type" : "object",
        "properties" : {
          "model" : {
            "description" : "Model configuration for the score analysis.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ModelConfigJobScheduleConfigOverrides"
            } ],
            "nullable" : true
          }
        },
        "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
      },
      "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"
                }
              }
            }
          }
        }
      },
      "ScoreAnalysisRequest" : {
        "required" : [ "modelInput" ],
        "type" : "object",
        "properties" : {
          "config" : {
            "description" : "Configuration for the score analysis.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ScoreAnalysisConfigModelConfigOverrides"
            } ],
            "nullable" : true
          },
          "modelInput" : {
            "description" : "The model input to analyze.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ModelInput"
            } ]
          }
        },
        "additionalProperties" : false
      },
      "ScoreAnalysisRequestJobScheduleInputJobScheduleConfigOverrides" : {
        "required" : [ "modelInput" ],
        "type" : "object",
        "properties" : {
          "config" : {
            "description" : "Configuration for the score analysis.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ScoreAnalysisConfigJobScheduleConfigOverrides"
            } ],
            "nullable" : true
          },
          "modelInput" : {
            "description" : "The model input to analyze.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/JobScheduleInput"
            } ]
          }
        },
        "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 and moveCountLimit 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.",
            "minimum" : 0,
            "type" : "integer",
            "example" : 1000
          },
          "moveCountLimit" : {
            "format" : "int64",
            "description" : "Maximum number of moves evaluated by the solver. The solver will stop solving after a pre-determined amount of moves have been evaluated. 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. Can be combined with stepCountLimit: the solver stops as soon as either limit is reached. Warning: using this option will disable the default diminished returns termination which is recommended for most use cases.",
            "minimum" : 0,
            "type" : "integer",
            "example" : 100000
          },
          "slidingWindowDuration" : {
            "description" : "Sliding window (ISO 8601 duration format) over which score improvement is measured by the diminished returns termination. Defaults to PT30S when omitted. Only takes effect when diminished returns is active (i.e. unimprovedSpentLimit, stepCountLimit and moveCountLimit are all empty).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "example" : "PT30S"
          },
          "minimumImprovementRatio" : {
            "format" : "double",
            "description" : "Minimum ratio between current and initial improvement before the diminished returns termination kicks in. Must be strictly positive. Defaults to 0.0001 when omitted. Only takes effect when diminished returns is active (i.e. unimprovedSpentLimit, stepCountLimit and moveCountLimit are all empty).",
            "type" : "number",
            "example" : 0.0001
          }
        },
        "additionalProperties" : false
      },
      "SolvingStatus" : {
        "enum" : [ "DATASET_CREATED", "DATASET_VALIDATED", "DATASET_INVALID", "DATASET_COMPUTED", "SOLVING_SCHEDULED", "SOLVING_STARTED", "SOLVING_ACTIVE", "SOLVING_COMPLETED", "SOLVING_INCOMPLETE", "SOLVING_FAILED" ],
        "type" : "string"
      },
      "Tag" : {
        "description" : "Tag expressing a characteristic of a machine or an employee",
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the tag.",
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "TagAvailability" : {
        "description" : "Availability of the tag in time (optional)",
        "required" : [ "tagId" ],
        "type" : "object",
        "properties" : {
          "tagId" : {
            "description" : "Unique ID of the tag",
            "type" : "string"
          },
          "timeSpans" : {
            "description" : "A time availability of the tag. If not provided, the tag is considered as always available",
            "maxItems" : 1,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TimeSpan"
            }
          }
        },
        "additionalProperties" : false
      },
      "TagOnResourceDoesNotExistIssue" : {
        "description" : "A resource carries a tag that the schedule does not declare.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "resource" : {
            "description" : "The machine or employee that the issue is about.",
            "type" : "string"
          },
          "tag" : {
            "description" : "The tag that does not exist.",
            "type" : "string"
          }
        }
      },
      "TagOnResourceMultipleTimeSpansIssue" : {
        "description" : "A resource declares more than one availability time span for a tag, which is not supported.",
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "tag" : {
            "description" : "The tag that is declared more than once.",
            "type" : "string"
          },
          "resource" : {
            "description" : "The machine or employee that the issue is about.",
            "type" : "string"
          }
        }
      },
      "TimeSpan" : {
        "description" : "Time span with an inclusive start and an exclusive end.",
        "required" : [ "start", "end" ],
        "type" : "object",
        "properties" : {
          "start" : {
            "description" : "The start (ISO 8601) of the time span (inclusive).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "end" : {
            "description" : "The end (ISO 8601) of the time span (exclusive).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          }
        },
        "additionalProperties" : false
      },
      "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"
            }
          }
        }
      },
      "ValidationResultAbstractJobScheduleIssue" : {
        "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/AbstractJobScheduleIssue"
            }
          }
        }
      },
      "ValidationStatus" : {
        "enum" : [ "VALIDATION_NOT_SUPPORTED", "OK", "WARNINGS", "ERRORS" ],
        "type" : "string"
      }
    },
    "securitySchemes" : {
      "auth" : {
        "type" : "apiKey",
        "in" : "header",
        "name" : "X-API-KEY",
        "description" : "API key required to authenticate as part of Timefold Platform"
      }
    }
  }
}