{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://meatpuppets.co.uk/task.schema.json",
  "title": "Meatpuppets draft task brief (planning only)",
  "description": "Not a live API request. No submission endpoint exists. Validation is not acceptance or authorisation. Avoid personal data.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "objective",
    "category",
    "approximate_location",
    "budget",
    "payer_authorisation_confirmed",
    "evidence_requested"
  ],
  "properties": {
    "objective": {
      "type": "string",
      "minLength": 10,
      "maxLength": 2000
    },
    "category": {
      "enum": [
        "location_checks",
        "collection_and_delivery",
        "hands_on_setup"
      ]
    },
    "approximate_location": {
      "type": "string",
      "description": "Town or area only, not a private street address.",
      "maxLength": 200
    },
    "time_window": {
      "type": "string",
      "maxLength": 200
    },
    "budget": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "currency",
        "maximum"
      ],
      "properties": {
        "currency": {
          "type": "string",
          "pattern": "^[A-Z]{3}$"
        },
        "maximum": {
          "type": "number",
          "exclusiveMinimum": 0
        }
      }
    },
    "payer_authorisation_confirmed": {
      "const": true
    },
    "required_skills": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 20
    },
    "evidence_requested": {
      "type": "string",
      "maxLength": 1000
    }
  }
}
