{
  "$ref": "#/definitions/quest",
  "definitions": {
    "quest": {
      "type": "object",
      "properties": {
        "AssociatedNpc": {
          "type": "string",
          "minLength": 1
        },
        "AssociatedNPC": {
          "type": "string",
          "minLength": 1
        },
        "Tier": {
          "type": "number",
          "enum": [
            1,
            2,
            3
          ]
        },
        "Title": {
          "type": "string",
          "minLength": 1
        },
        "Description": {
          "type": "string",
          "minLength": 1
        },
        "RewardPool": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "CurrencyNormal": {
                "type": "integer",
                "minimum": 0
              },
              "CurrencyGold": {
                "type": "integer",
                "minimum": 0
              },
              "Fame": {
                "type": "integer",
                "minimum": 0
              },
              "Skills": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "Skill": {
                      "type": "string",
                      "enum": [
                        "Archery",
                        "Aviation",
                        "Awareness",
                        "Boxing",
                        "Camouflage",
                        "Cooking",
                        "Demolition",
                        "Diving",
                        "Endurance",
                        "Engineering",
                        "Farming",
                        "Handgun",
                        "Medical",
                        "MeleeWeapons",
                        "Motorcycle",
                        "Rifles",
                        "Running",
                        "Sniping",
                        "Stealth",
                        "Survival",
                        "Tactics",
                        "Thievery"
                      ]
                    },
                    "Experience": {
                      "type": "integer",
                      "exclusiveMinimum": 0
                    }
                  },
                  "required": [
                    "Skill",
                    "Experience"
                  ],
                  "additionalProperties": false
                }
              },
              "TradeDeals": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "Item": {
                      "type": "string",
                      "minLength": 1
                    },
                    "Price": {
                      "type": "integer",
                      "exclusiveMinimum": 0
                    },
                    "Amount": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "AllowExcluded": {
                      "type": "boolean"
                    },
                    "Fame": {
                      "type": "integer",
                      "minimum": 0
                    }
                  },
                  "required": [
                    "Item"
                  ],
                  "additionalProperties": false
                },
                "minItems": 1
              }
            },
            "additionalProperties": false
          },
          "minItems": 1
        },
        "Conditions": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "CanBeAutoCompleted": {
                    "type": "boolean",
                    "default": false
                  },
                  "TrackingCaption": {
                    "type": "string"
                  },
                  "SequenceIndex": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "LocationsShownOnMap": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "Location": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "X": {
                                  "type": "number"
                                },
                                "Y": {
                                  "type": "number"
                                },
                                "Z": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "X",
                                "Y",
                                "Z"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "SizeFactor": {
                          "type": "number",
                          "exclusiveMinimum": 0,
                          "default": 1
                        }
                      },
                      "required": [
                        "Location"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "Type": {
                    "type": "string",
                    "const": "Elimination"
                  },
                  "TargetCharacters": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "minItems": 1
                  },
                  "Amount": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "AllowedWeapons": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "TrackingCaption",
                  "SequenceIndex",
                  "Type",
                  "TargetCharacters",
                  "Amount"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "CanBeAutoCompleted": {
                    "type": "boolean",
                    "default": false
                  },
                  "TrackingCaption": {
                    "type": "string"
                  },
                  "SequenceIndex": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "LocationsShownOnMap": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "Location": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "X": {
                                  "type": "number"
                                },
                                "Y": {
                                  "type": "number"
                                },
                                "Z": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "X",
                                "Y",
                                "Z"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "SizeFactor": {
                          "type": "number",
                          "exclusiveMinimum": 0,
                          "default": 1
                        }
                      },
                      "required": [
                        "Location"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "Type": {
                    "type": "string",
                    "const": "Fetch"
                  },
                  "DisablePurchaseOfRequiredItems": {
                    "type": "boolean",
                    "default": false
                  },
                  "PlayerKeepsItems": {
                    "type": "boolean",
                    "default": false
                  },
                  "RequiredItems": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "AcceptedItems": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "minItems": 1
                        },
                        "RequiredNum": {
                          "type": "integer",
                          "minimum": 1
                        },
                        "RandomAdditionalRequiredNum": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "MinAcceptedItemUses": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "MinAcceptedCookLevel": {
                          "type": "string",
                          "enum": [
                            "Raw",
                            "Undercooked",
                            "Cooked",
                            "Overcooked",
                            "Burned"
                          ]
                        },
                        "MaxAcceptedCookLevel": {
                          "type": "string",
                          "enum": [
                            "Raw",
                            "Undercooked",
                            "Cooked",
                            "Overcooked",
                            "Burned"
                          ]
                        },
                        "MinAcceptedCookQuality": {
                          "type": "string",
                          "enum": [
                            "Ruined",
                            "Bad",
                            "Poor",
                            "Good",
                            "Excellent",
                            "Perfect"
                          ]
                        },
                        "MinAcceptedItemMass": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "MinAcceptedItemHealth": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "MinAcceptedItemResourceRatio": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "MinAcceptedItemResourceAmount": {
                          "type": "integer",
                          "minimum": 0
                        }
                      },
                      "required": [
                        "AcceptedItems",
                        "RequiredNum"
                      ],
                      "additionalProperties": false
                    },
                    "minItems": 1
                  }
                },
                "required": [
                  "TrackingCaption",
                  "SequenceIndex",
                  "Type",
                  "RequiredItems"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "CanBeAutoCompleted": {
                    "type": "boolean",
                    "default": false
                  },
                  "TrackingCaption": {
                    "type": "string"
                  },
                  "SequenceIndex": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "LocationsShownOnMap": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "Location": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "X": {
                                  "type": "number"
                                },
                                "Y": {
                                  "type": "number"
                                },
                                "Z": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "X",
                                "Y",
                                "Z"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "SizeFactor": {
                          "type": "number",
                          "exclusiveMinimum": 0,
                          "default": 1
                        }
                      },
                      "required": [
                        "Location"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "Type": {
                    "type": "string",
                    "const": "Interaction"
                  },
                  "Locations": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "AnchorMesh": {
                          "type": "string",
                          "minLength": 1
                        },
                        "Instance": {
                          "type": "integer"
                        },
                        "FallbackTransform": {
                          "type": "string"
                        },
                        "VisibleMesh": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "AnchorMesh"
                      ],
                      "additionalProperties": false
                    },
                    "minItems": 1
                  },
                  "MinNeeded": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "MaxNeeded": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "SpawnOnlyNeeded": {
                    "type": "boolean",
                    "default": true
                  },
                  "WorldMarkersShowDistance": {
                    "type": "integer",
                    "minimum": 0,
                    "default": 50
                  }
                },
                "required": [
                  "TrackingCaption",
                  "SequenceIndex",
                  "Type",
                  "Locations",
                  "MinNeeded",
                  "MaxNeeded"
                ],
                "additionalProperties": false
              }
            ]
          },
          "minItems": 1
        },
        "TimeLimitHours": {
          "type": "number",
          "exclusiveMinimum": 0
        }
      },
      "required": [
        "Tier",
        "Title",
        "Description",
        "RewardPool",
        "Conditions",
        "TimeLimitHours"
      ],
      "additionalProperties": false
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}