{
    "id": "http://www.ubisoft.com/ugc/acd/v1/quest/quest#",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "description": "JSON Schema for Assassin's Creed Dynasty UGC",
    "type": "object",
    "properties": {
        "Schema": {
            "type": "string",
            "enum": [
                "http://www.ubisoft.com/ugc/acd/v1/quest/quest#"
            ]
        },
        "ID": {
            "$ref": "http://www.ubisoft.com/ugc/acd/v1/types#/RequiredString"
        },
        "Title": {
            "$ref": "http://www.ubisoft.com/ugc/acd/v1/types#/RequiredString"
        },
        "Description": {
            "$ref": "http://www.ubisoft.com/ugc/acd/v1/types#/RequiredString"
        },
        "Resources": {
            "type": "array",
            "items": {
                "$ref" : "http://www.ubisoft.com/ugc/acd/v1/quest/resources#/Resource"
            }
        },
        "Operators": {
            "type": "array",
            "minItems": 1,
            "items": {
                "$ref": "http://www.ubisoft.com/ugc/acd/v1/quest/operators#/QuestOperator"
            }
        },
        "Variables": {
            "type": "array",
            "items": {
                "$ref": "http://www.ubisoft.com/ugc/acd/v1/variable#"
            }
        },
        "Rewards": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/Reward"
            }
        },
        "FailPorts": {
            "type": "array",
            "items": {
                "$ref": "http://www.ubisoft.com/ugc/acd/v1/types#/RequiredString"
            }
        },
        "SuccessPorts": {
            "type": "array",
            "items": {
                "$ref": "http://www.ubisoft.com/ugc/acd/v1/types#/RequiredString"
            }
        },
        "QuestStart": {
            "type": "array",
            "minItems": 1,
            "items": [
                {
                    "type": "object",
                    "properties": {
                        "Target": {
                            "$ref": "http://www.ubisoft.com/ugc/acd/v1/types#/RequiredString"
                        },
                        "TargetPort": {
                            "$ref": "http://www.ubisoft.com/ugc/acd/v1/types#/RequiredString"
                        }
                    },
                    "required" :[
                        "Target"
                    ],
                    "additionalProperties": false
                }
            ]
        }
    },
    "additionalProperties": false,
    "required": [
        "Title",
        "Description",
        "Operators",
        "QuestStart"
    ],
    "definitions": {
        "Reward": {
            "type": "object",
            "properties": {
                "Port": {
                    "$ref": "http://www.ubisoft.com/ugc/acd/v1/types#/RequiredString"
                },
                "XP": {
                    "type": "number",
                    "minimum": 0,
                    "exclusiveMinimum": true
                },
                "Money": {
                    "type": "number",
                    "minimum": 0,
                    "exclusiveMinimum": true
                },
                "Reputation": {
                    "$ref": "http://www.ubisoft.com/ugc/acd/v1/types#/UInt64"
                },
                "Items": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "Item": {
                                "$ref": "http://www.ubisoft.com/ugc/acd/v1/types#/RequiredString"
                            },
                            "InventorySetting": {
                                "$ref": "http://www.ubisoft.com/ugc/acd/v1/types#/ObjectId"
                            },
                            "Count": {
                                "type": "integer",
                                "minimum": 1
                            }
                        },
                        "oneOf": [
                            {
                                "required": [
                                    "Item"
                                ],
                                "not": {
                                    "required": [
                                        "InventorySetting"
                                    ]
                                }
                            },
                            {
                                "required": [
                                    "InventorySetting"
                                ],
                                "not": {
                                    "required": [
                                        "Item"
                                    ]
                                }
                            }
                        ],
                        "additionalProperties": false
                    }
                }
            },
            "required":[
                "Port"
            ],
            "additionalProperties": false
        }
    }
}