{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "additionalProperties": false,
    "properties": {
        "additionalTerms": {
            "minLength": 0,
            "pattern": "^$|(^(?:\\S+\\s+){0,99}\\S+$)",
            "type": "string"
        },
        "backgroundInformation": {
            "minLength": 1,
            "pattern": "^(?:\\S+\\s+){0,99}\\S+$",
            "type": "string"
        },
        "budgetRange": {
            "minLength": 0,
            "pattern": "^$|(^(?:\\S+\\s+){0,99}\\S+$)",
            "type": "string"
        },
        "contractLength": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string"
        },
        "culturalFitCriteria": {
            "items": {
                "maxLength": 300,
                "pattern": "^(?:\\S+\\s+){0,29}\\S+$",
                "type": "string"
            },
            "maxItems": 20,
            "minItems": 1,
            "type": "array"
        },
        "culturalWeighting": {
            "maximum": 20,
            "minimum": 5,
            "type": "integer"
        },
        "earlyMarketEngagement": {
            "minLength": 0,
            "pattern": "^$|(^(?:\\S+\\s+){0,199}\\S+$)",
            "type": "string"
        },
        "endUsers": {
            "minLength": 1,
            "pattern": "^(?:\\S+\\s+){0,99}\\S+$",
            "type": "string"
        },
        "essentialRequirements": {
            "items": {
                "maxLength": 300,
                "pattern": "^(?:\\S+\\s+){0,29}\\S+$",
                "type": "string"
            },
            "maxItems": 20,
            "minItems": 1,
            "type": "array"
        },
        "evaluationType": {
            "items": {
                "enum": [
                    "Case study",
                    "Work history",
                    "Reference",
                    "Presentation"
                ]
            },
            "maxItems": 4,
            "minItems": 0,
            "type": "array",
            "_uniqueItems": true
        },
        "existingTeam": {
            "minLength": 1,
            "pattern": "^(?:\\S+\\s+){0,99}\\S+$",
            "type": "string"
        },
        "location": {
            "enum": [
                "Scotland",
                "North East England",
                "North West England",
                "Yorkshire and the Humber",
                "East Midlands",
                "West Midlands",
                "East of England",
                "Wales",
                "London",
                "South East England",
                "South West England",
                "Northern Ireland",
                "Offsite"
            ]
        },
        "niceToHaveRequirements": {
            "items": {
                "maxLength": 300,
                "pattern": "^(?:\\S+\\s+){0,29}\\S+$",
                "type": "string"
            },
            "maxItems": 20,
            "minItems": 0,
            "type": "array"
        },
        "numberOfSuppliers": {
            "maximum": 15,
            "minimum": 3,
            "type": "integer"
        },
        "organisation": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
        },
        "outcome": {
            "minLength": 1,
            "pattern": "^(?:\\S+\\s+){0,99}\\S+$",
            "type": "string"
        },
        "phase": {
            "enum": [
                "not_applicable",
                "not_started",
                "discovery",
                "alpha",
                "beta",
                "live"
            ]
        },
        "priceCriteria": {
            "enum": [
                "Fixed price",
                "Time and materials",
                "Capped time and materials"
            ]
        },
        "priceWeighting": {
            "maximum": 85,
            "minimum": 20,
            "type": "integer"
        },
        "questionAndAnswerSessionDetails": {
            "minLength": 0,
            "pattern": "^$|(^(?:\\S+\\s+){0,99}\\S+$)",
            "type": "string"
        },
        "securityClearance": {
            "minLength": 0,
            "pattern": "^$|(^(?:\\S+\\s+){0,49}\\S+$)",
            "type": "string"
        },
        "startDate": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
        },
        "successCriteria": {
            "items": {
                "maxLength": 300,
                "pattern": "^(?:\\S+\\s+){0,29}\\S+$",
                "type": "string"
            },
            "maxItems": 20,
            "minItems": 1,
            "type": "array"
        },
        "summary": {
            "minLength": 1,
            "pattern": "^(?:\\S+\\s+){0,49}\\S+$",
            "type": "string"
        },
        "technicalWeighting": {
            "maximum": 75,
            "minimum": 10,
            "type": "integer"
        },
        "title": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
        },
        "workAlreadyDone": {
            "minLength": 0,
            "pattern": "^$|(^(?:\\S+\\s+){0,99}\\S+$)",
            "type": "string"
        },
        "workingArrangements": {
            "minLength": 1,
            "pattern": "^(?:\\S+\\s+){0,99}\\S+$",
            "type": "string"
        },
        "workplaceAddress": {
            "minLength": 1,
            "pattern": "^(?:\\S+\\s+){0,99}\\S+$",
            "type": "string"
        }
    },
    "required": [
        "backgroundInformation",
        "culturalFitCriteria",
        "culturalWeighting",
        "endUsers",
        "essentialRequirements",
        "existingTeam",
        "location",
        "numberOfSuppliers",
        "organisation",
        "outcome",
        "phase",
        "priceCriteria",
        "priceWeighting",
        "startDate",
        "successCriteria",
        "summary",
        "technicalWeighting",
        "title",
        "workingArrangements",
        "workplaceAddress"
    ],
    "title": "Digital Outcomes and Specialists Digital outcomes Brief Schema",
    "type": "object"
}