{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schemas.logicsrc.com/agentad-campaign.schema.json",
  "title": "AgentAd Campaign",
  "description": "An advertiser campaign grouping one or more ads under a shared budget, schedule, and targeting policy.",
  "type": "object",
  "required": ["type", "version", "id", "advertiser_did", "name", "budget"],
  "additionalProperties": false,
  "properties": {
    "type": { "const": "agentad.campaign" },
    "version": { "type": "string", "pattern": "^\\d+\\.\\d+(\\.\\d+)?$" },
    "id": { "type": "string", "pattern": "^[a-z0-9][a-z0-9_-]*$", "minLength": 1, "maxLength": 64 },
    "advertiser_did": { "type": "string", "pattern": "^[a-z0-9][a-z0-9._-]*\\.[a-z0-9][a-z0-9._-]*$" },
    "name": { "type": "string", "minLength": 1, "maxLength": 120 },
    "status": { "type": "string", "enum": ["draft", "active", "paused", "completed"], "default": "draft" },
    "budget": {
      "type": "object",
      "required": ["total", "currency"],
      "additionalProperties": false,
      "properties": {
        "total": { "type": "number", "minimum": 0 },
        "daily_cap": { "type": "number", "minimum": 0 },
        "currency": { "type": "string", "minLength": 2, "maxLength": 12 }
      }
    },
    "schedule": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "start_at": { "type": "string", "format": "date-time" },
        "end_at": { "type": "string", "format": "date-time" }
      }
    },
    "ad_ids": {
      "type": "array",
      "items": { "type": "string", "pattern": "^[a-z0-9][a-z0-9_-]*$" },
      "uniqueItems": true
    }
  }
}
