{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://nbvn.com/schemas/service_request.v1.json",
  "title": "NBVN service request input (POST https://nbvn.com/api/request)",
  "type": "object",
  "required": [
    "description",
    "name",
    "email",
    "consent"
  ],
  "properties": {
    "description": {
      "type": "string",
      "minLength": 10,
      "maxLength": 4000,
      "description": "What needs to be done. Starting with [TEST] marks a test."
    },
    "venture_id": {
      "enum": [
        "nbvn.venture.escalation",
        "nbvn.venture.call_overflow",
        "nbvn.venture.booking",
        "nbvn.venture.field_verification",
        "nbvn.venture.back_office"
      ],
      "description": "Preferred. See /ventures.json"
    },
    "service_id": {
      "type": "string",
      "description": "Alias for venture_id; legacy nbvn.cap.* IDs accepted"
    },
    "category": {
      "enum": [
        "customer_support",
        "ai_escalation",
        "back_office",
        "calling",
        "booking",
        "verification",
        "other"
      ]
    },
    "capability": {
      "enum": [
        "nbvn.cap.customer_support",
        "nbvn.cap.ai_escalation",
        "nbvn.cap.inbound_calling",
        "nbvn.cap.outbound_calling",
        "nbvn.cap.appointment_coordination",
        "nbvn.cap.back_office",
        "nbvn.cap.human_verification_research"
      ],
      "description": "Optional capability ID from /capabilities.json"
    },
    "outcome": {
      "type": "string",
      "maxLength": 1000
    },
    "customer_type": {
      "enum": [
        "ai_agent",
        "ai_business",
        "business",
        "individual"
      ]
    },
    "volume": {
      "type": "string",
      "maxLength": 300
    },
    "languages": {
      "type": "string",
      "maxLength": 300
    },
    "geography": {
      "type": "string",
      "maxLength": 300
    },
    "hours": {
      "type": "string",
      "maxLength": 200
    },
    "systems": {
      "type": "string",
      "maxLength": 300
    },
    "consent_basis": {
      "enum": [
        "yes",
        "not_outbound",
        "no",
        "unsure"
      ],
      "description": "Outbound calling only"
    },
    "budget": {
      "enum": [
        "Not sure yet",
        "Under $1,000 a month",
        "$1,000 to $5,000 a month",
        "$5,000 to $20,000 a month",
        "More than $20,000 a month",
        "One-off project"
      ]
    },
    "start": {
      "enum": [
        "As soon as possible",
        "Within a month",
        "1 to 3 months",
        "Later / exploring"
      ]
    },
    "special": {
      "type": "string",
      "maxLength": 2000
    },
    "name": {
      "type": "string",
      "maxLength": 120,
      "description": "Accountable person"
    },
    "email": {
      "type": "string",
      "format": "email",
      "maxLength": 200
    },
    "org": {
      "type": "string",
      "maxLength": 160
    },
    "website": {
      "type": "string",
      "format": "uri",
      "maxLength": 200
    },
    "agent_note": {
      "type": "string",
      "maxLength": 300,
      "description": "Who the agent acts for"
    },
    "consent": {
      "enum": [
        "yes",
        true
      ],
      "description": "The contact agrees to be contacted about this request"
    }
  },
  "additionalProperties": true
}
