{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://seedtactics.com/schemas/seedsim",
  "title": "SeedTactic Simulation JSON API",
  "type": "object",
  "properties": {
    "PluginInfoOutput": {
      "$ref": "#/$defs/PluginInfo"
    },
    "AllocateCmdInput": {
      "$ref": "/schemas/allocate#/$defs/AllocateRequest"
    },
    "AllocateCmdOutput": {
      "$ref": "/schemas/allocate#/$defs/AllocateDetails"
    },
    "CreateScheduleCmdInput": {
      "$ref": "/schemas/orders#/$defs/NewSchedule"
    },
    "BackoutCmdOutput": {
      "type": "array",
      "items": {
        "$ref": "/schemas/fms-insight#/components/schemas/JobAndDecrementQuantity"
      }
    },
    "CreateJobsCmdOutput": {
      "$ref": "#/$defs/CreateJobsResult"
    },
    "SyncWorkordersCmdOutput": {
      "$ref": "#/$defs/WorkordersToSync"
    },
    "ManualCreateJobsCmdInput": {
      "$ref": "#/$defs/ManualJobInput"
    },
    "ManualCreateJobsCmdOutput": {
      "$ref": "#/$defs/CreateJobsResult"
    },
    "FlexProject": {
      "$ref": "/schemas/flexplan#/$defs/FlexProject"
    }
  },
  "$defs": {
    "PluginInfo": {
      "type": "object",
      "required": ["Version"],
      "properties": {
        "Version": {
          "type": "string"
        },
        "LoadBookings": {
          "type": "boolean"
        },
        "LoadOrderSnapshot": {
          "type": "boolean"
        },
        "CreateJobs": {
          "type": "boolean"
        },
        "CreateScheduleAfterCreateJobs": {
          "type": "boolean"
        },
        "BackoutJobs": {
          "type": "boolean"
        },
        "SyncWorkordersToInsight": {
          "type": "boolean"
        },
        "ReportWorkordersToERP": {
          "type": "boolean"
        },
        "ManualCreateJobsFromBookings": {
          "type": "boolean"
        },
        "ManualCreateJobsFromPaths": {
          "type": "boolean"
        },
        "ManualCreateJobsFromPlays": {
          "type": "boolean"
        },
        "MaxNumberOfInsightsSupported": {
          "type": "integer",
          "format": "int32"
        },
        "AllocateVariants": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "DownloadRequest": {
      "type": "object",
      "required": ["URL", "NewJobs"],
      "properties": {
        "URL": {
          "type": "string"
        },
        "NewJobs": {
          "$ref": "/schemas/fms-insight#/components/schemas/NewJobs"
        }
      }
    },
    "CreateJobsResult": {
      "type": "object",
      "properties": {
        "AllocateRequest": {
          "$ref": "/schemas/allocate#/$defs/AllocateRequest"
        },
        "Jobs": {
          "$ref": "/schemas/fms-insight#/components/schemas/NewJobs"
        },
        "ToDownload": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/DownloadRequest"
          }
        },
        "AllocationError": {
          "type": "string"
        }
      }
    },
    "WorkordersToSync": {
      "type": "object",
      "additionalProperties": false,
      "required": ["NewScheduleId"],
      "properties": {
        "NewScheduleId": {
          "type": "string"
        },
        "NewWorkorders": {
          "type": "array",
          "items": {
            "$ref": "/schemas/fms-insight#/components/schemas/Workorder"
          }
        },
        "ModifiedWorkorders": {
          "type": "array",
          "items": {
            "$ref": "/schemas/fms-insight#/components/schemas/Workorder"
          }
        },
        "UnchangedWorkorders": {
          "type": "array",
          "items": {
            "$ref": "/schemas/fms-insight#/components/schemas/Workorder"
          }
        },
        "Programs": {
          "type": "array",
          "items": {
            "$ref": "/schemas/fms-insight#/components/schemas/NewProgramContent"
          }
        }
      }
    },
    "ManualJobInput": {
      "type": "object",
      "additionalProperties": false,
      "required": ["Bookings"],
      "properties": {
        "Bookings": {
          "type": "array",
          "items": {
            "$ref": "/schemas/orders#/$defs/Booking"
          }
        }
      }
    }
  }
}