{
  "x-generator": "NSwag v14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))",
  "openapi": "3.0.0",
  "info": {
    "title": "SeedTactic FMS Insight",
    "description": "API for access to FMS Insight for flexible manufacturing system control",
    "version": "1.14"
  },
  "paths": {
    "/api/v1/fms/fms-information": {
      "get": {
        "tags": [
          "Fms"
        ],
        "operationId": "Fms_FMSInformation",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FMSInfo"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/fms/find-instructions/{part}": {
      "get": {
        "tags": [
          "Fms"
        ],
        "operationId": "Fms_FindInstructions",
        "parameters": [
          {
            "name": "part",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "type",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "process",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "materialID",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "operatorName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "pallet",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            },
            "x-position": 6
          }
        ],
        "responses": {
          "302": {
            "description": ""
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/fms/print-label/{materialId}": {
      "post": {
        "tags": [
          "Fms"
        ],
        "operationId": "Fms_PrintLabel",
        "parameters": [
          {
            "name": "materialId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "process",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": ""
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/fms/parse-barcode": {
      "post": {
        "tags": [
          "Fms"
        ],
        "operationId": "Fms_ParseBarcode",
        "parameters": [
          {
            "name": "barcode",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScannedMaterial"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/fms/enable-verbose-logging-for-five-minutes": {
      "post": {
        "tags": [
          "Fms"
        ],
        "operationId": "Fms_EnableVerboseLoggingForFiveMinutes",
        "responses": {
          "200": {
            "description": ""
          }
        }
      }
    },
    "/api/v1/jobs/history": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_History",
        "parameters": [
          {
            "name": "startUTC",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          },
          {
            "name": "endUTC",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HistoricData"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_FilteredHistory",
        "parameters": [
          {
            "name": "startUTC",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          },
          {
            "name": "endUTC",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "alreadyKnownSchIds",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          "required": true,
          "x-position": 3
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HistoricData"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/jobs/recent": {
      "post": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_Recent",
        "parameters": [
          {
            "name": "startUTC",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "alreadyKnownSchIds",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecentHistoricData"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/jobs/latest-schedule": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_LatestSchedule",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MostRecentSchedule"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/jobs/status": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_CurrentStatus",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CurrentStatus"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/jobs/unscheduled-rebookings": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_UnscheduledRebookings",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Rebooking"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/jobs/add-from-sim": {
      "post": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_AddFromSim",
        "parameters": [
          {
            "name": "expectedPreviousScheduleId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "simResults",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SimulationResults"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": ""
          }
        }
      }
    },
    "/api/v1/jobs/add": {
      "post": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_Add",
        "parameters": [
          {
            "name": "expectedPreviousScheduleId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "newJobs",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NewJobs"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": ""
          }
        }
      }
    },
    "/api/v1/jobs/casting/{castingName}": {
      "post": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_AddUnallocatedCastingToQueue",
        "parameters": [
          {
            "name": "castingName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "queue",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          },
          {
            "name": "qty",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 4
          },
          {
            "name": "operName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "workorder",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 6
          }
        ],
        "requestBody": {
          "x-name": "serials",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          "required": true,
          "x-position": 3
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InProcessMaterial"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/jobs/job/{jobUnique}/plan": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_GetJobPlan",
        "parameters": [
          {
            "name": "jobUnique",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HistoricJob"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/jobs/job/{jobUnique}/unprocessed-material": {
      "post": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_AddUnprocessedMaterialToQueue",
        "parameters": [
          {
            "name": "jobUnique",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "lastCompletedProcess",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "queue",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 3
          },
          {
            "name": "pos",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 4
          },
          {
            "name": "operName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "workorder",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 7
          }
        ],
        "requestBody": {
          "x-name": "serial",
          "content": {
            "application/json": {
              "schema": {
                "type": "string"
              }
            }
          },
          "required": true,
          "x-position": 5
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InProcessMaterial"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/jobs/job/{jobUnique}/comment": {
      "put": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_SetJobComment",
        "parameters": [
          {
            "name": "jobUnique",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "comment",
          "content": {
            "application/json": {
              "schema": {
                "type": "string"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": ""
          }
        }
      }
    },
    "/api/v1/jobs/material/{materialId}/queue": {
      "put": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_SetMaterialInQueue",
        "parameters": [
          {
            "name": "materialId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "operName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "requestBody": {
          "x-name": "queue",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QueuePosition"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": ""
          }
        }
      },
      "delete": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_RemoveMaterialFromAllQueues",
        "parameters": [
          {
            "name": "materialId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "operName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        }
      }
    },
    "/api/v1/jobs/material/{materialId}/signal-quarantine": {
      "put": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_SignalMaterialForQuarantine",
        "parameters": [
          {
            "name": "materialId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "operName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "reason",
          "content": {
            "application/json": {
              "schema": {
                "type": "string"
              }
            }
          },
          "x-position": 3
        },
        "responses": {
          "200": {
            "description": ""
          }
        }
      }
    },
    "/api/v1/jobs/material/{materialId}/invalidate-process": {
      "put": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_InvalidatePalletCycle",
        "parameters": [
          {
            "name": "materialId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "putMatInQueue",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "operName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "requestBody": {
          "x-name": "process",
          "content": {
            "application/json": {
              "schema": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": ""
          }
        }
      }
    },
    "/api/v1/jobs/material/{materialId}/swap-off-pallet": {
      "put": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_SwapMaterialOnPallet",
        "parameters": [
          {
            "name": "materialId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "operName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "requestBody": {
          "x-name": "mat",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MatToPutOnPallet"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": ""
          }
        }
      }
    },
    "/api/v1/jobs/material": {
      "delete": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_BulkRemoveMaterialFromQueues",
        "parameters": [
          {
            "name": "operName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "id",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "format": "int64"
                }
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": ""
          }
        }
      }
    },
    "/api/v1/jobs/planned-cycles": {
      "delete": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_DecrementQuantities",
        "parameters": [
          {
            "name": "loadDecrementsStrictlyAfterDecrementId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "loadDecrementsAfterTimeUTC",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/JobAndDecrementQuantity"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/events/all": {
      "get": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_Get",
        "parameters": [
          {
            "name": "startUTC",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          },
          {
            "name": "endUTC",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LogEntry"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/events.csv": {
      "get": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_GetEventCSV",
        "parameters": [
          {
            "name": "startUTC",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          },
          {
            "name": "endUTC",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/events/all-completed-parts": {
      "get": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_GetCompletedParts",
        "parameters": [
          {
            "name": "startUTC",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 1
          },
          {
            "name": "endUTC",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LogEntry"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/events/recent": {
      "get": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_Recent",
        "parameters": [
          {
            "name": "lastSeenCounter",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "expectedEndUTCofLastSeen",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LogEntry"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/events/for-material/{materialID}": {
      "get": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_LogForMaterial",
        "parameters": [
          {
            "name": "materialID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LogEntry"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/events/for-material": {
      "get": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_LogForMaterials",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "style": "form",
            "explode": true,
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LogEntry"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/events/for-serial/{serial}": {
      "get": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_LogForSerial",
        "parameters": [
          {
            "name": "serial",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LogEntry"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/events/for-workorder/{workorder}": {
      "get": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_LogForWorkorder",
        "parameters": [
          {
            "name": "workorder",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LogEntry"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/material-details/{materialID}": {
      "get": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_MaterialDetails",
        "parameters": [
          {
            "name": "materialID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/material-for-job/{jobUnique}": {
      "get": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_MaterialDetailsForJob",
        "parameters": [
          {
            "name": "jobUnique",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialDetails"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/material-for-serial/{serial}": {
      "get": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_MaterialForSerial",
        "parameters": [
          {
            "name": "serial",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialDetails"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/material-details/{materialID}/serial": {
      "post": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_SetSerial",
        "parameters": [
          {
            "name": "materialID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "process",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 3
          }
        ],
        "requestBody": {
          "x-name": "serial",
          "content": {
            "application/json": {
              "schema": {
                "type": "string"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogEntry"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/material-details/{materialID}/workorder": {
      "post": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_SetWorkorder",
        "parameters": [
          {
            "name": "materialID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "process",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 3
          }
        ],
        "requestBody": {
          "x-name": "workorder",
          "content": {
            "application/json": {
              "schema": {
                "type": "string"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogEntry"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/material-details/{materialID}/inspections/{inspType}": {
      "post": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_SetInspectionDecision",
        "parameters": [
          {
            "name": "materialID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "inspType",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          },
          {
            "name": "process",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 4
          }
        ],
        "requestBody": {
          "x-name": "inspect",
          "content": {
            "application/json": {
              "schema": {
                "type": "boolean"
              }
            }
          },
          "required": true,
          "x-position": 3
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogEntry"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/material-details/{materialID}/notes": {
      "post": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_RecordOperatorNotes",
        "parameters": [
          {
            "name": "materialID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "process",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 3
          },
          {
            "name": "operatorName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "requestBody": {
          "x-name": "notes",
          "content": {
            "application/json": {
              "schema": {
                "type": "string"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogEntry"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/events/rebooking": {
      "post": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_RequestRebooking",
        "parameters": [
          {
            "name": "partName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "qty",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 2
          },
          {
            "name": "workorder",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "priority",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "requestBody": {
          "x-name": "notes",
          "content": {
            "application/json": {
              "schema": {
                "type": "string"
              }
            }
          },
          "x-position": 3
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogEntry"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/events/cancel-rebooking/{bookingId}": {
      "post": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_CancelRebooking",
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogEntry"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/events/inspection-result": {
      "post": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_RecordInspectionCompleted",
        "requestBody": {
          "x-name": "insp",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NewInspectionCompleted"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogEntry"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/events/closeout": {
      "post": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_RecordCloseoutCompleted",
        "requestBody": {
          "x-name": "insp",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NewCloseout"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogEntry"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/workorder/{workorder}/comment": {
      "post": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_RecordWorkorderComment",
        "parameters": [
          {
            "name": "workorder",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "operatorName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "requestBody": {
          "x-name": "comment",
          "content": {
            "application/json": {
              "schema": {
                "type": "string"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogEntry"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/log/workorder/{workorder}": {
      "get": {
        "tags": [
          "Log"
        ],
        "operationId": "Log_GetActiveWorkorder",
        "parameters": [
          {
            "name": "workorder",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ActiveWorkorder"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/machines/tools": {
      "get": {
        "tags": [
          "Machines"
        ],
        "operationId": "Machines_GetToolsInMachines",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ToolInMachine"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/machines/programs-in-cell-controller": {
      "get": {
        "tags": [
          "Machines"
        ],
        "operationId": "Machines_GetProgramsInCellController",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProgramInCellController"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/machines/program/{programName}/revisions": {
      "get": {
        "tags": [
          "Machines"
        ],
        "operationId": "Machines_GetProgramRevisionsInDescendingOrderOfRevision",
        "parameters": [
          {
            "name": "programName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "count",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "revisionToStart",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProgramRevision"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/machines/program/{programName}/revision/{revision}/content": {
      "get": {
        "tags": [
          "Machines"
        ],
        "operationId": "Machines_GetProgramRevisionContent",
        "parameters": [
          {
            "name": "programName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "revision",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/machines/program/{programName}/latest-revision/content": {
      "get": {
        "tags": [
          "Machines"
        ],
        "operationId": "Machines_GetLatestProgramRevisionContent",
        "parameters": [
          {
            "name": "programName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "FMSInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Name": {
            "type": "string",
            "nullable": true
          },
          "Version": {
            "type": "string",
            "nullable": true
          },
          "LicenseExpires": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "AdditionalLogServers": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "OpenIDConnectAuthority": {
            "type": "string",
            "nullable": true
          },
          "LocalhostOpenIDConnectAuthority": {
            "type": "string",
            "nullable": true
          },
          "OpenIDConnectClientId": {
            "type": "string",
            "nullable": true
          },
          "UsingLabelPrinterForSerials": {
            "type": "boolean"
          },
          "UseClientPrinterForLabels": {
            "type": "boolean",
            "nullable": true
          },
          "AllowQuarantineToCancelLoad": {
            "type": "boolean",
            "nullable": true
          },
          "QuarantineQueue": {
            "type": "string",
            "nullable": true
          },
          "CustomStationMonitorDialogUrl": {
            "type": "string",
            "nullable": true
          },
          "SupportsRebookings": {
            "type": "string",
            "nullable": true
          },
          "AllowChangeWorkorderAtLoadStation": {
            "type": "boolean",
            "nullable": true
          },
          "AllowSwapSerialAtLoadStation": {
            "type": "boolean",
            "nullable": true
          },
          "AllowInvalidateMaterialAtLoadStation": {
            "type": "boolean",
            "nullable": true
          },
          "RequireScanAtCloseout": {
            "type": "boolean"
          },
          "RequireWorkorderBeforeAllowCloseoutComplete": {
            "type": "boolean"
          },
          "AddRawMaterial": {
            "$ref": "#/components/schemas/AddRawMaterialType"
          },
          "AddInProcessMaterial": {
            "$ref": "#/components/schemas/AddInProcessMaterialType"
          },
          "RequireOperatorNamePromptWhenAddingMaterial": {
            "type": "boolean",
            "nullable": true
          },
          "AllowEditJobPlanQuantityFromQueuesPage": {
            "type": "string",
            "nullable": true
          },
          "AllowInvalidateMaterialOnQueuesPage": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "AddRawMaterialType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "AddAsUnassigned",
          "RequireExistingMaterial",
          "RequireBarcodeScan",
          "AddAndSpecifyJob"
        ],
        "enum": [
          "AddAsUnassigned",
          "RequireExistingMaterial",
          "RequireBarcodeScan",
          "AddAndSpecifyJob"
        ]
      },
      "AddInProcessMaterialType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "RequireExistingMaterial",
          "AddAndSpecifyJob"
        ],
        "enum": [
          "RequireExistingMaterial",
          "AddAndSpecifyJob"
        ]
      },
      "ServerEvent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "LogEntry": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LogEntry"
              }
            ]
          },
          "NewJobs": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/NewJobs"
              }
            ]
          },
          "NewCurrentStatus": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CurrentStatus"
              }
            ]
          },
          "EditMaterialInLog": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/EditMaterialInLogEvents"
              }
            ]
          }
        }
      },
      "LogEntry": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "counter",
          "material",
          "type",
          "startofcycle",
          "endUTC",
          "loc",
          "locnum",
          "pal",
          "program",
          "result",
          "elapsed",
          "active"
        ],
        "properties": {
          "counter": {
            "type": "integer",
            "format": "int64"
          },
          "material": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LogMaterial"
            }
          },
          "type": {
            "$ref": "#/components/schemas/LogType"
          },
          "startofcycle": {
            "type": "boolean"
          },
          "endUTC": {
            "type": "string",
            "format": "date-time"
          },
          "loc": {
            "type": "string"
          },
          "locnum": {
            "type": "integer",
            "format": "int32"
          },
          "pal": {
            "type": "integer",
            "format": "int32"
          },
          "program": {
            "type": "string"
          },
          "result": {
            "type": "string"
          },
          "elapsed": {
            "type": "string",
            "format": "duration"
          },
          "active": {
            "type": "string",
            "format": "duration"
          },
          "details": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "tooluse": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ToolUse"
            }
          }
        }
      },
      "LogMaterial": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "uniq",
          "part",
          "proc",
          "numproc",
          "face"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "uniq": {
            "type": "string"
          },
          "part": {
            "type": "string"
          },
          "proc": {
            "type": "integer",
            "format": "int32"
          },
          "path": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "numproc": {
            "type": "integer",
            "format": "int32"
          },
          "face": {
            "type": "integer",
            "format": "int32"
          },
          "serial": {
            "type": "string",
            "nullable": true
          },
          "workorder": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "LogType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "LoadUnloadCycle",
          "MachineCycle",
          "PartMark",
          "Inspection",
          "OrderAssignment",
          "GeneralMessage",
          "PalletCycle",
          "WorkorderComment",
          "InspectionResult",
          "CloseOut",
          "AddToQueue",
          "RemoveFromQueue",
          "InspectionForce",
          "PalletOnRotaryInbound",
          "PalletInStocker",
          "SignalQuarantine",
          "InvalidateCycle",
          "SwapMaterialOnPallet",
          "Rebooking",
          "CancelRebooking"
        ],
        "enum": [
          "LoadUnloadCycle",
          "MachineCycle",
          "PartMark",
          "Inspection",
          "OrderAssignment",
          "GeneralMessage",
          "PalletCycle",
          "WorkorderComment",
          "InspectionResult",
          "CloseOut",
          "AddToQueue",
          "RemoveFromQueue",
          "InspectionForce",
          "PalletOnRotaryInbound",
          "PalletInStocker",
          "SignalQuarantine",
          "InvalidateCycle",
          "SwapMaterialOnPallet",
          "Rebooking",
          "CancelRebooking"
        ]
      },
      "ToolUse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "Tool",
          "Pocket"
        ],
        "properties": {
          "Tool": {
            "type": "string"
          },
          "Pocket": {
            "type": "integer",
            "format": "int32"
          },
          "ToolChangeOccurred": {
            "type": "boolean",
            "nullable": true
          },
          "ToolSerialAtStartOfCycle": {
            "type": "string",
            "nullable": true
          },
          "ToolSerialAtEndOfCycle": {
            "type": "string",
            "nullable": true
          },
          "ToolUseDuringCycle": {
            "type": "string",
            "format": "duration",
            "nullable": true
          },
          "TotalToolUseAtEndOfCycle": {
            "type": "string",
            "format": "duration",
            "nullable": true
          },
          "ConfiguredToolLife": {
            "type": "string",
            "format": "duration",
            "nullable": true
          },
          "ToolUseCountDuringCycle": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "TotalToolUseCountAtEndOfCycle": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ConfiguredToolLifeCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "MaterialProcessActualPath": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "MaterialID",
          "Process",
          "Pallet",
          "LoadStation",
          "Stops",
          "UnloadStation"
        ],
        "properties": {
          "MaterialID": {
            "type": "integer",
            "format": "int64"
          },
          "Process": {
            "type": "integer",
            "format": "int32"
          },
          "Pallet": {
            "type": "integer",
            "format": "int32"
          },
          "LoadStation": {
            "type": "integer",
            "format": "int32"
          },
          "Stops": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Stop"
            }
          },
          "UnloadStation": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "Stop": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "StationName",
          "StationNum"
        ],
        "properties": {
          "StationName": {
            "type": "string"
          },
          "StationNum": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "NewJobs": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ScheduleId",
          "Jobs"
        ],
        "properties": {
          "ScheduleId": {
            "type": "string"
          },
          "Jobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Job"
            }
          },
          "ExtraParts": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            }
          },
          "StationUse": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SimulatedStationUtilization"
            }
          },
          "StationUseForCurrentStatus": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SimulatedStationUtilization"
            }
          },
          "SimDayUsage": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SimulatedDayUsage"
            }
          },
          "SimWorkordersFilled": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/WorkorderSimFilled"
            }
          },
          "CurrentUnfilledWorkorders": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Workorder"
            }
          },
          "Programs": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/NewProgramContent"
            }
          },
          "AllocationWarning": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "DebugMessage": {
            "type": "string",
            "format": "byte",
            "nullable": true
          }
        }
      },
      "Job": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "Unique",
          "RouteStartUTC",
          "RouteEndUTC",
          "Archived",
          "PartName",
          "Cycles",
          "ProcsAndPaths"
        ],
        "properties": {
          "Unique": {
            "type": "string"
          },
          "RouteStartUTC": {
            "type": "string",
            "format": "date-time"
          },
          "RouteEndUTC": {
            "type": "string",
            "format": "date-time"
          },
          "Archived": {
            "type": "boolean"
          },
          "PartName": {
            "type": "string"
          },
          "Comment": {
            "type": "string",
            "nullable": true
          },
          "AllocationAlgorithm": {
            "type": "string",
            "nullable": true
          },
          "Bookings": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "ManuallyCreated": {
            "type": "boolean"
          },
          "HoldEntireJob": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/HoldPattern"
              }
            ]
          },
          "Cycles": {
            "type": "integer",
            "format": "int32"
          },
          "ProcsAndPaths": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProcessInfo"
            }
          }
        }
      },
      "HoldPattern": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "UserHold",
          "ReasonForUserHold",
          "HoldUnholdPattern",
          "HoldUnholdPatternStartUTC",
          "HoldUnholdPatternRepeats"
        ],
        "properties": {
          "UserHold": {
            "type": "boolean"
          },
          "ReasonForUserHold": {
            "type": "string"
          },
          "HoldUnholdPattern": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "duration"
            }
          },
          "HoldUnholdPatternStartUTC": {
            "type": "string",
            "format": "date-time"
          },
          "HoldUnholdPatternRepeats": {
            "type": "boolean"
          }
        }
      },
      "ProcessInfo": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "paths"
        ],
        "properties": {
          "paths": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProcPathInfo"
            }
          }
        }
      },
      "ProcPathInfo": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "PalletNums",
          "Load",
          "ExpectedLoadTime",
          "Unload",
          "ExpectedUnloadTime",
          "Stops",
          "SimulatedStartingUTC",
          "SimulatedAverageFlowTime",
          "PartsPerPallet"
        ],
        "properties": {
          "PalletNums": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "Fixture": {
            "type": "string",
            "nullable": true
          },
          "Face": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Load": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "ExpectedLoadTime": {
            "type": "string",
            "format": "duration"
          },
          "Unload": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "ExpectedUnloadTime": {
            "type": "string",
            "format": "duration"
          },
          "Stops": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MachiningStop"
            }
          },
          "SimulatedProduction": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SimulatedProduction"
            }
          },
          "SimulatedStartingUTC": {
            "type": "string",
            "format": "date-time"
          },
          "SimulatedAverageFlowTime": {
            "type": "string",
            "format": "duration"
          },
          "HoldMachining": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/HoldPattern"
              }
            ]
          },
          "HoldLoadUnload": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/HoldPattern"
              }
            ]
          },
          "PartsPerPallet": {
            "type": "integer",
            "format": "int32"
          },
          "InputQueue": {
            "type": "string",
            "nullable": true
          },
          "OutputQueue": {
            "type": "string",
            "nullable": true
          },
          "Inspections": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/PathInspection"
            }
          },
          "Casting": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "MachiningStop": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "StationGroup",
          "StationNums",
          "ExpectedCycleTime"
        ],
        "properties": {
          "StationGroup": {
            "type": "string"
          },
          "StationNums": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "ExpectedCycleTime": {
            "type": "string",
            "format": "duration"
          },
          "Program": {
            "type": "string",
            "nullable": true
          },
          "ProgramRevision": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "SimulatedProduction": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "TimeUTC",
          "Quantity"
        ],
        "properties": {
          "TimeUTC": {
            "type": "string",
            "format": "date-time"
          },
          "Quantity": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "PathInspection": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "InspectionType",
          "Counter",
          "MaxVal",
          "RandomFreq",
          "TimeInterval"
        ],
        "properties": {
          "InspectionType": {
            "type": "string"
          },
          "Counter": {
            "type": "string"
          },
          "MaxVal": {
            "type": "integer",
            "format": "int32"
          },
          "RandomFreq": {
            "type": "number",
            "format": "double"
          },
          "TimeInterval": {
            "type": "string",
            "format": "duration"
          },
          "ExpectedInspectionTime": {
            "type": "string",
            "format": "duration",
            "nullable": true
          }
        }
      },
      "SimulatedStationUtilization": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ScheduleId",
          "StationGroup",
          "StationNum",
          "StartUTC",
          "EndUTC"
        ],
        "properties": {
          "ScheduleId": {
            "type": "string"
          },
          "StationGroup": {
            "type": "string"
          },
          "StationNum": {
            "type": "integer",
            "format": "int32"
          },
          "StartUTC": {
            "type": "string",
            "format": "date-time"
          },
          "EndUTC": {
            "type": "string",
            "format": "date-time"
          },
          "PlanDown": {
            "type": "boolean",
            "nullable": true
          },
          "Parts": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SimulatedStationPart"
            }
          }
        }
      },
      "SimulatedStationPart": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "JobUnique",
          "Process",
          "Path"
        ],
        "properties": {
          "JobUnique": {
            "type": "string"
          },
          "Process": {
            "type": "integer",
            "format": "int32"
          },
          "Path": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "SimulatedDayUsage": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "Day",
          "MachineGroup",
          "Usage"
        ],
        "properties": {
          "Day": {
            "type": "string",
            "format": "date"
          },
          "MachineGroup": {
            "type": "string"
          },
          "Usage": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "WorkorderSimFilled": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "WorkorderId",
          "Part"
        ],
        "properties": {
          "WorkorderId": {
            "type": "string"
          },
          "Part": {
            "type": "string"
          },
          "Started": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "Filled": {
            "type": "string",
            "format": "date",
            "nullable": true
          }
        }
      },
      "Workorder": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "WorkorderId",
          "Part",
          "Quantity",
          "DueDate",
          "Priority"
        ],
        "properties": {
          "WorkorderId": {
            "type": "string"
          },
          "Part": {
            "type": "string"
          },
          "Quantity": {
            "type": "integer",
            "format": "int32"
          },
          "DueDate": {
            "type": "string",
            "format": "date-time"
          },
          "Priority": {
            "type": "integer",
            "format": "int32"
          },
          "Programs": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ProgramForJobStep"
            }
          }
        }
      },
      "ProgramForJobStep": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ProcessNumber",
          "ProgramName"
        ],
        "properties": {
          "ProcessNumber": {
            "type": "integer",
            "format": "int32"
          },
          "StopIndex": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ProgramName": {
            "type": "string"
          },
          "Revision": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "NewProgramContent": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ProgramName",
          "ProgramContent",
          "Revision"
        ],
        "properties": {
          "ProgramName": {
            "type": "string"
          },
          "Comment": {
            "type": "string",
            "nullable": true
          },
          "ProgramContent": {
            "type": "string"
          },
          "Revision": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "CurrentStatus": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "TimeOfCurrentStatusUTC",
          "Jobs",
          "Pallets",
          "Material",
          "Alarms",
          "Queues"
        ],
        "properties": {
          "TimeOfCurrentStatusUTC": {
            "type": "string",
            "format": "date-time"
          },
          "Jobs": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/ActiveJob"
            }
          },
          "Pallets": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/PalletStatus"
            }
          },
          "Material": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InProcessMaterial"
            }
          },
          "Alarms": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "Queues": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/QueueInfo"
            }
          },
          "MachineLocations": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MachineLocation"
            }
          },
          "Workorders": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ActiveWorkorder"
            }
          }
        }
      },
      "ActiveJob": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HistoricJob"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "Completed": {
                "type": "array",
                "nullable": true,
                "items": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "format": "int32"
                  }
                }
              },
              "Precedence": {
                "type": "array",
                "nullable": true,
                "items": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "format": "int64"
                  }
                }
              },
              "AssignedWorkorders": {
                "type": "array",
                "nullable": true,
                "items": {
                  "type": "string"
                }
              },
              "RemainingToStart": {
                "type": "integer",
                "format": "int64",
                "nullable": true
              }
            }
          }
        ]
      },
      "HistoricJob": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Job"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "CopiedToSystem"
            ],
            "properties": {
              "ScheduleId": {
                "type": "string",
                "nullable": true
              },
              "CopiedToSystem": {
                "type": "boolean"
              },
              "Decrements": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/DecrementQuantity"
                }
              }
            }
          }
        ]
      },
      "DecrementQuantity": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "DecrementId",
          "TimeUTC",
          "Quantity"
        ],
        "properties": {
          "DecrementId": {
            "type": "integer",
            "format": "int64"
          },
          "TimeUTC": {
            "type": "string",
            "format": "date-time"
          },
          "Quantity": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "PalletStatus": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "PalletNum",
          "FixtureOnPallet",
          "OnHold",
          "CurrentPalletLocation",
          "NumFaces"
        ],
        "properties": {
          "PalletNum": {
            "type": "integer",
            "format": "int32"
          },
          "FixtureOnPallet": {
            "type": "string"
          },
          "OnHold": {
            "type": "boolean"
          },
          "CurrentPalletLocation": {
            "$ref": "#/components/schemas/PalletLocation"
          },
          "NewFixture": {
            "type": "string",
            "nullable": true
          },
          "NumFaces": {
            "type": "integer",
            "format": "int32"
          },
          "FaceNames": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "TargetLocation": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PalletLocation"
              }
            ]
          },
          "PercentMoveCompleted": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "PalletLocation": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "loc",
          "group",
          "num"
        ],
        "properties": {
          "loc": {
            "$ref": "#/components/schemas/PalletLocationEnum"
          },
          "group": {
            "type": "string"
          },
          "num": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "PalletLocationEnum": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "LoadUnload",
          "Machine",
          "MachineQueue",
          "Buffer",
          "Cart"
        ],
        "enum": [
          "LoadUnload",
          "Machine",
          "MachineQueue",
          "Buffer",
          "Cart"
        ]
      },
      "InProcessMaterial": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "MaterialID",
          "JobUnique",
          "PartName",
          "Process",
          "Path",
          "SignaledInspections",
          "Location",
          "Action"
        ],
        "properties": {
          "MaterialID": {
            "type": "integer",
            "format": "int64"
          },
          "JobUnique": {
            "type": "string"
          },
          "PartName": {
            "type": "string"
          },
          "Process": {
            "type": "integer",
            "format": "int32"
          },
          "Path": {
            "type": "integer",
            "format": "int32"
          },
          "Serial": {
            "type": "string",
            "nullable": true
          },
          "WorkorderId": {
            "type": "string",
            "nullable": true
          },
          "SignaledInspections": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "QuarantineAfterUnload": {
            "type": "boolean",
            "nullable": true
          },
          "LastCompletedMachiningRouteStopIndex": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Location": {
            "$ref": "#/components/schemas/InProcessMaterialLocation"
          },
          "Action": {
            "$ref": "#/components/schemas/InProcessMaterialAction"
          }
        }
      },
      "InProcessMaterialLocation": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "Type"
        ],
        "properties": {
          "Type": {
            "$ref": "#/components/schemas/LocType"
          },
          "PalletNum": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Face": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "CurrentQueue": {
            "type": "string",
            "nullable": true
          },
          "QueuePosition": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "LocType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Free",
          "OnPallet",
          "InQueue"
        ],
        "enum": [
          "Free",
          "OnPallet",
          "InQueue"
        ]
      },
      "InProcessMaterialAction": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "Type"
        ],
        "properties": {
          "Type": {
            "$ref": "#/components/schemas/ActionType"
          },
          "LoadOntoPalletNum": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "LoadOntoFace": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ProcessAfterLoad": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "PathAfterLoad": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "UnloadIntoQueue": {
            "type": "string",
            "nullable": true
          },
          "ElapsedLoadUnloadTime": {
            "type": "string",
            "format": "duration",
            "nullable": true
          },
          "Program": {
            "type": "string",
            "nullable": true
          },
          "ElapsedMachiningTime": {
            "type": "string",
            "format": "duration",
            "nullable": true
          },
          "ExpectedRemainingMachiningTime": {
            "type": "string",
            "format": "duration",
            "nullable": true
          }
        }
      },
      "ActionType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Waiting",
          "Loading",
          "UnloadToInProcess",
          "UnloadToCompletedMaterial",
          "Machining"
        ],
        "enum": [
          "Waiting",
          "Loading",
          "UnloadToInProcess",
          "UnloadToCompletedMaterial",
          "Machining"
        ]
      },
      "QueueInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "MaxSizeBeforeStopUnloading": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Role": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/QueueRole"
              }
            ]
          }
        }
      },
      "QueueRole": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "RawMaterial",
          "InProcessTransfer",
          "Quarantine",
          "Other"
        ],
        "enum": [
          "RawMaterial",
          "InProcessTransfer",
          "Quarantine",
          "Other"
        ]
      },
      "MachineLocation": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "MachineGroup",
          "MachineNum",
          "Moving",
          "PossibleLoadStations"
        ],
        "properties": {
          "MachineGroup": {
            "type": "string"
          },
          "MachineNum": {
            "type": "integer",
            "format": "int32"
          },
          "Moving": {
            "type": "boolean"
          },
          "PossibleLoadStations": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "CurrentLoadStation": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ActiveWorkorder": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "WorkorderId",
          "Part",
          "PlannedQuantity",
          "DueDate",
          "Priority",
          "CompletedQuantity",
          "ElapsedStationTime",
          "ActiveStationTime"
        ],
        "properties": {
          "WorkorderId": {
            "type": "string"
          },
          "Part": {
            "type": "string"
          },
          "PlannedQuantity": {
            "type": "integer",
            "format": "int32"
          },
          "DueDate": {
            "type": "string",
            "format": "date-time"
          },
          "Priority": {
            "type": "integer",
            "format": "int32"
          },
          "SimulatedStart": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "SimulatedFilled": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "CompletedQuantity": {
            "type": "integer",
            "format": "int32"
          },
          "Comments": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/WorkorderComment"
            }
          },
          "ElapsedStationTime": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "format": "duration"
            }
          },
          "ActiveStationTime": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "format": "duration"
            }
          },
          "Material": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/WorkorderMaterial"
            }
          }
        }
      },
      "WorkorderComment": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "Comment",
          "TimeUTC"
        ],
        "properties": {
          "Comment": {
            "type": "string"
          },
          "TimeUTC": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "WorkorderMaterial": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "MaterialID",
          "Quarantined",
          "InspectionFailed",
          "Closeout"
        ],
        "properties": {
          "MaterialID": {
            "type": "integer",
            "format": "int64"
          },
          "Serial": {
            "type": "string",
            "nullable": true
          },
          "Quarantined": {
            "type": "boolean"
          },
          "InspectionFailed": {
            "type": "boolean"
          },
          "Closeout": {
            "$ref": "#/components/schemas/WorkorderSerialCloseout"
          }
        }
      },
      "WorkorderSerialCloseout": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "None",
          "ClosedOut",
          "CloseOutFailed"
        ],
        "enum": [
          "None",
          "ClosedOut",
          "CloseOutFailed"
        ]
      },
      "EditMaterialInLogEvents": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "OldMaterialID",
          "NewMaterialID",
          "EditedEvents"
        ],
        "properties": {
          "OldMaterialID": {
            "type": "integer",
            "format": "int64"
          },
          "NewMaterialID": {
            "type": "integer",
            "format": "int64"
          },
          "EditedEvents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LogEntry"
            }
          }
        }
      },
      "ProblemDetails": {
        "type": "object",
        "additionalProperties": {
          "nullable": true
        },
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ScannedMaterial": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ExistingMaterial": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/MaterialDetails"
              }
            ]
          },
          "Casting": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ScannedCasting"
              }
            ]
          }
        }
      },
      "MaterialDetails": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "MaterialID",
          "PartName"
        ],
        "properties": {
          "MaterialID": {
            "type": "integer",
            "format": "int64"
          },
          "JobUnique": {
            "type": "string",
            "nullable": true
          },
          "PartName": {
            "type": "string"
          },
          "NumProcesses": {
            "type": "integer",
            "format": "int32"
          },
          "Workorder": {
            "type": "string",
            "nullable": true
          },
          "Serial": {
            "type": "string",
            "nullable": true
          },
          "Paths": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "ScannedCasting": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "PossibleCastings": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "PossibleJobs": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "Workorder": {
            "type": "string",
            "nullable": true
          },
          "Serial": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "HistoricData": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "Jobs",
          "StationUse"
        ],
        "properties": {
          "Jobs": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/HistoricJob"
            }
          },
          "StationUse": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SimulatedStationUtilization"
            }
          }
        }
      },
      "RecentHistoricData": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HistoricData"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "MostRecentSimulationId": {
                "type": "string",
                "nullable": true
              },
              "MostRecentSimDayUsage": {
                "type": "array",
                "nullable": true,
                "items": {
                  "$ref": "#/components/schemas/SimulatedDayUsage"
                }
              }
            }
          }
        ]
      },
      "MostRecentSchedule": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "LatestScheduleId",
          "Jobs",
          "ExtraParts"
        ],
        "properties": {
          "LatestScheduleId": {
            "type": "string"
          },
          "Jobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HistoricJob"
            }
          },
          "ExtraParts": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            }
          },
          "UnscheduledRebookings": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Rebooking"
            }
          }
        }
      },
      "Rebooking": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "BookingId",
          "PartName",
          "Quantity",
          "TimeUTC"
        ],
        "properties": {
          "BookingId": {
            "type": "string"
          },
          "PartName": {
            "type": "string"
          },
          "Quantity": {
            "type": "integer",
            "format": "int32"
          },
          "TimeUTC": {
            "type": "string",
            "format": "date-time"
          },
          "Priority": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "Notes": {
            "type": "string",
            "nullable": true
          },
          "Workorder": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SimulationResults": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ScheduleId",
          "Jobs",
          "SimStations"
        ],
        "properties": {
          "ScheduleId": {
            "type": "string"
          },
          "Jobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Job"
            }
          },
          "NewExtraParts": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            }
          },
          "SimStations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SimulatedStationUtilization"
            }
          },
          "SimStationsForExecutionOfCurrentStatus": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SimulatedStationUtilization"
            }
          },
          "SimDayUsage": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/SimulatedDayUsage"
            }
          },
          "SimWorkordersFilled": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/WorkorderSimFilled"
            }
          },
          "AllocationWarning": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "DebugMessage": {
            "type": "string",
            "format": "byte",
            "nullable": true
          }
        }
      },
      "QueuePosition": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "Queue",
          "Position"
        ],
        "properties": {
          "Queue": {
            "type": "string"
          },
          "Position": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "MatToPutOnPallet": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "Pallet",
          "MaterialIDToSetOnPallet"
        ],
        "properties": {
          "Pallet": {
            "type": "integer",
            "format": "int32"
          },
          "MaterialIDToSetOnPallet": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "JobAndDecrementQuantity": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "DecrementId",
          "JobUnique",
          "TimeUTC",
          "Part",
          "Quantity"
        ],
        "properties": {
          "DecrementId": {
            "type": "integer",
            "format": "int64"
          },
          "JobUnique": {
            "type": "string"
          },
          "TimeUTC": {
            "type": "string",
            "format": "date-time"
          },
          "Part": {
            "type": "string"
          },
          "Quantity": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "NewInspectionCompleted": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "MaterialID",
          "Process",
          "InspectionLocationNum",
          "InspectionType",
          "Success",
          "Elapsed",
          "Active"
        ],
        "properties": {
          "MaterialID": {
            "type": "integer",
            "format": "int64"
          },
          "Process": {
            "type": "integer",
            "format": "int32"
          },
          "InspectionLocationNum": {
            "type": "integer",
            "format": "int32"
          },
          "InspectionType": {
            "type": "string"
          },
          "Success": {
            "type": "boolean"
          },
          "ExtraData": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "Elapsed": {
            "type": "string",
            "format": "duration"
          },
          "Active": {
            "type": "string",
            "format": "duration"
          }
        }
      },
      "NewCloseout": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "MaterialID",
          "Process",
          "LocationNum",
          "CloseoutType",
          "Elapsed",
          "Active"
        ],
        "properties": {
          "MaterialID": {
            "type": "integer",
            "format": "int64"
          },
          "Process": {
            "type": "integer",
            "format": "int32"
          },
          "LocationNum": {
            "type": "integer",
            "format": "int32"
          },
          "CloseoutType": {
            "type": "string"
          },
          "ExtraData": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "Elapsed": {
            "type": "string",
            "format": "duration"
          },
          "Active": {
            "type": "string",
            "format": "duration"
          },
          "Failed": {
            "type": "boolean"
          }
        }
      },
      "ToolInMachine": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ToolSnapshot"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "MachineGroupName",
              "MachineNum"
            ],
            "properties": {
              "MachineGroupName": {
                "type": "string"
              },
              "MachineNum": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ]
      },
      "ToolSnapshot": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "Pocket",
          "ToolName"
        ],
        "properties": {
          "Pocket": {
            "type": "integer",
            "format": "int32"
          },
          "ToolName": {
            "type": "string"
          },
          "Serial": {
            "type": "string",
            "nullable": true
          },
          "CurrentUse": {
            "type": "string",
            "format": "duration",
            "nullable": true
          },
          "TotalLifeTime": {
            "type": "string",
            "format": "duration",
            "nullable": true
          },
          "CurrentUseCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "TotalLifeCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ProgramInCellController": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "CellControllerProgramName",
          "ProgramName"
        ],
        "properties": {
          "CellControllerProgramName": {
            "type": "string"
          },
          "ProgramName": {
            "type": "string"
          },
          "Revision": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "Comment": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProgramRevision": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ProgramName",
          "Revision"
        ],
        "properties": {
          "ProgramName": {
            "type": "string"
          },
          "Revision": {
            "type": "integer",
            "format": "int64"
          },
          "Comment": {
            "type": "string",
            "nullable": true
          },
          "CellControllerProgramName": {
            "type": "string",
            "nullable": true
          }
        }
      }
    }
  }
}