{
  "openapi" : "3.0.3",
  "info" : {
    "title" : "Job 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" : { }
              }
            }
          },
          "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/ValidationResultIssueDetail"
                }
              }
            }
          },
          "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" : {
      "Anchor" : {
        "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" : {
        "required" : [ "id" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "Unique identifier of the job.",
            "type" : "string"
          },
          "anchor" : {
            "$ref" : "#/components/schemas/Anchor"
          },
          "minOffset" : {
            "$ref" : "#/components/schemas/Duration"
          },
          "maxOffset" : {
            "$ref" : "#/components/schemas/Duration"
          },
          "requiresSameResource" : {
            "type" : "boolean"
          },
          "noIntermediateJobs" : {
            "type" : "boolean"
          }
        }
      },
      "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"
          },
          "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"
            } ]
          },
          "jobs" : {
            "description" : "Jobs assigned to this employee.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/InputJobOnResource"
            }
          }
        },
        "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" : "InputJob'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" : {
          "machineType" : {
            "description" : "The type of the machine.",
            "type" : "string",
            "nullable" : true
          },
          "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"
            } ]
          }
        },
        "additionalProperties" : false
      },
      "IssueCode" : {
        "type" : "object",
        "properties" : {
          "value" : {
            "type" : "string"
          }
        }
      },
      "IssueDetail" : {
        "type" : "object",
        "oneOf" : [ {
          "$ref" : "#/components/schemas/StringDetail"
        } ]
      },
      "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"
            }
          }
        }
      },
      "JobDependencyNotAssignedViolationJustification" : {
        "description" : "Justification for a job dependency not being assigned violation.",
        "type" : "object",
        "properties" : {
          "description" : {
            "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" : {
            "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"
          }
        }
      },
      "JobDependencyTimingViolationJustification" : {
        "description" : "Justification for a job dependency violation.",
        "type" : "object",
        "properties" : {
          "description" : {
            "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
      },
      "JobFinishedAfterMaximumEndJustification" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : "string"
          },
          "jobId" : {
            "type" : "string"
          },
          "maxEnd" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "processingEnd" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          }
        }
      },
      "JobIsInvalidJustification" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : "string"
          },
          "jobId" : {
            "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.",
        "type" : "object",
        "properties" : {
          "minimizeMakespanWeight" : {
            "format" : "int64",
            "type" : "integer"
          },
          "minimizeIdealEndDifferenceWeight" : {
            "format" : "int64",
            "type" : "integer"
          }
        },
        "additionalProperties" : false
      },
      "JobScheduleConstraintJustification" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "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" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/InputMachine"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "machineTags" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Tag"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "machineTypes" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/MachineType"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "employees" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/InputEmployee"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "employeeTags" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Tag"
            }
          },
          "jobs" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/InputJob"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "jobTypes" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/JobType"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "jobTransitions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/JobTransition"
            }
          },
          "resourceTransitions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ResourceTransition"
            }
          }
        },
        "additionalProperties" : false
      },
      "JobScheduleInputMetrics" : {
        "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" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OutputMachine"
            }
          },
          "employees" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OutputEmployee"
            }
          },
          "unassignedJobs" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OutputJob"
            }
          }
        },
        "additionalProperties" : false
      },
      "JobScheduleOutputMetrics" : {
        "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" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : "string"
          },
          "jobId" : {
            "type" : "string"
          },
          "minStart" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "processingStart" : {
            "$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
      },
      "JobType" : {
        "description" : "Job type expressing the type of a job",
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "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" : {
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "MapsConfiguration" : {
        "type" : "object",
        "properties" : {
          "provider" : {
            "type" : "string"
          },
          "location" : {
            "type" : "string"
          },
          "maxDistanceFromRoad" : {
            "format" : "double",
            "type" : "number"
          },
          "transportType" : {
            "type" : "string"
          }
        }
      },
      "Metadata" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "parentId" : {
            "description" : "The id of the parent data set this was created from",
            "type" : "string",
            "nullable" : true
          },
          "originId" : {
            "description" : "The id of the origin (root) data set this initially originates from",
            "type" : "string",
            "nullable" : true
          },
          "name" : {
            "type" : "string",
            "nullable" : true
          },
          "submitDateTime" : {
            "description" : "The moment the run is submitted",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "startDateTime" : {
            "description" : "The moment the run begins initializing",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "activeDateTime" : {
            "description" : "The moment the solving phase begins",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "completeDateTime" : {
            "description" : "The moment the solving phase concludes",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "shutdownDateTime" : {
            "description" : "The moment the post-processing phase finishes",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "solverStatus" : {
            "allOf" : [ {
              "$ref" : "#/components/schemas/SolvingStatus"
            } ],
            "nullable" : true
          },
          "score" : {
            "type" : "string",
            "nullable" : true
          },
          "tags" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "validationResult" : {
            "$ref" : "#/components/schemas/LegacyValidationResult"
          },
          "failureMessage" : {
            "description" : "The message describing the reason of failure, in case of solverStatus=SOLVING_FAILED.",
            "type" : "string",
            "nullable" : true
          }
        }
      },
      "MetadataHardMediumSoftScore" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "parentId" : {
            "description" : "The id of the parent data set this was created from",
            "type" : "string",
            "nullable" : true
          },
          "originId" : {
            "description" : "The id of the origin (root) data set this initially originates from",
            "type" : "string",
            "nullable" : true
          },
          "name" : {
            "type" : "string",
            "nullable" : true
          },
          "submitDateTime" : {
            "description" : "The moment the run is submitted",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "startDateTime" : {
            "description" : "The moment the run begins initializing",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "activeDateTime" : {
            "description" : "The moment the solving phase begins",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "completeDateTime" : {
            "description" : "The moment the solving phase concludes",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "shutdownDateTime" : {
            "description" : "The moment the post-processing phase finishes",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "solverStatus" : {
            "allOf" : [ {
              "$ref" : "#/components/schemas/SolvingStatus"
            } ],
            "nullable" : true
          },
          "score" : {
            "type" : "string",
            "nullable" : true
          },
          "tags" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "validationResult" : {
            "$ref" : "#/components/schemas/LegacyValidationResult"
          },
          "failureMessage" : {
            "description" : "The message describing the reason of failure, in case of solverStatus=SOLVING_FAILED.",
            "type" : "string",
            "nullable" : true
          }
        }
      },
      "MinimizeIdealEndDifferenceJustification" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : "string"
          },
          "jobId" : {
            "type" : "string"
          },
          "idealEnd" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "processingEnd" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          }
        }
      },
      "MinimizeMakespanJustification" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : "string"
          },
          "resourceId" : {
            "type" : "string"
          },
          "duration" : {
            "$ref" : "#/components/schemas/Duration"
          }
        }
      },
      "MinimizeNumberOfUnassignedJobs" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : "string"
          },
          "jobId" : {
            "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" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : "string"
          },
          "resourceId" : {
            "type" : "string"
          },
          "jobId" : {
            "type" : "string"
          },
          "requiredResourceIds" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "RequiredTagsDoNotMatchJustification" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : "string"
          },
          "resourceId" : {
            "type" : "string"
          },
          "jobId" : {
            "type" : "string"
          },
          "requiredTags" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "tags" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "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" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : "string"
          },
          "fromResourceId" : {
            "type" : "string"
          },
          "toResourceId" : {
            "type" : "string"
          }
        }
      },
      "ResourcesConfiguration" : {
        "type" : "object",
        "properties" : {
          "memory" : {
            "format" : "double",
            "type" : "number"
          },
          "labels" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          }
        }
      },
      "RewardResourceTransitionJustification" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : "string"
          },
          "fromResourceId" : {
            "type" : "string"
          },
          "toResourceId" : {
            "type" : "string"
          },
          "reward" : {
            "format" : "int32",
            "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 must be empty. Warning: using this option will disable the default diminished returns termination which is recommended for most use cases.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "example" : "PT5M"
          },
          "stepCountLimit" : {
            "format" : "int32",
            "description" : "Maximum solver step count. The solver will stop solving after a pre-determined amount of steps. Use when you require results independently of the hardware resources performance. Use this termination if you want to benchmark your models, not recommended for production use. If set, unimprovedSpentLimit must be empty. Warning: using this option will disable the default diminished returns termination which is recommended for most use cases.",
            "type" : "integer",
            "example" : 1000
          }
        },
        "additionalProperties" : false
      },
      "SolvingStatus" : {
        "enum" : [ "DATASET_CREATED", "DATASET_VALIDATED", "DATASET_INVALID", "DATASET_COMPUTED", "SOLVING_SCHEDULED", "SOLVING_STARTED", "SOLVING_ACTIVE", "SOLVING_COMPLETED", "SOLVING_INCOMPLETE", "SOLVING_FAILED" ],
        "type" : "string"
      },
      "StringDetail" : {
        "type" : "object",
        "properties" : {
          "value" : {
            "type" : "string"
          }
        }
      },
      "Tag" : {
        "description" : "Tag expressing a characteristic of a machine or an employee",
        "type" : "object",
        "properties" : {
          "id" : {
            "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
      },
      "TagMatchSummary" : {
        "description" : "Summary of tag matches.",
        "type" : "object",
        "properties" : {
          "unsatisfiedTags" : {
            "description" : "Map of unsatisfied tags and their durations.",
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "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"
            }
          }
        }
      },
      "ValidationResultIssueDetail" : {
        "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" : {
              "required" : [ "id", "code", "severity" ],
              "type" : "object",
              "properties" : {
                "id" : {
                  "format" : "int32",
                  "description" : "Issue instance ID. Unique per dataset.",
                  "type" : "integer"
                },
                "code" : {
                  "description" : "Issue code referring to an issue type.",
                  "type" : "string"
                },
                "severity" : {
                  "description" : "Issue severity",
                  "enum" : [ "ERROR", "WARNING" ],
                  "type" : "string"
                },
                "detail" : {
                  "description" : "Issue detail specific to the issue type.",
                  "type" : "object",
                  "allOf" : [ {
                    "$ref" : "#/components/schemas/IssueDetail"
                  } ],
                  "nullable" : true
                }
              }
            }
          }
        }
      },
      "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"
      }
    }
  }
}