Brand Studio docs
Engineering manualSchema reference

Campaign

Declared schema: schemas/campaign.schema.json

Source: schemas/campaign.schema.json. This is the complete declaration, including nested definitions and constraints. Its presence is not evidence that a runtime producer or consumer validates against it.

All schemas · Data structures and lineage

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Campaign",
  "type": "object",
  "additionalProperties": true,
  "required": [
    "id",
    "brand_id",
    "name",
    "status",
    "review_status",
    "funnel_model",
    "audience",
    "incentive",
    "cta",
    "primary_cta_id",
    "cta_ids",
    "persona_ids",
    "target_stages",
    "metric_ids",
    "metrics",
    "source_ids",
    "interview_answer_ids",
    "created_at",
    "updated_at"
  ],
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9_-]*$"
    },
    "campaign_id": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9_-]*$"
    },
    "brand_id": {
      "type": "string",
      "minLength": 1
    },
    "open_design_design_system_id": {
      "type": "string",
      "minLength": 1
    },
    "name": {
      "type": "string",
      "minLength": 1
    },
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "active",
        "archived",
        "blocked"
      ]
    },
    "campaign_type": {
      "type": "string",
      "minLength": 1
    },
    "primary_goal": {
      "type": "string",
      "minLength": 1
    },
    "review_status": {
      "type": "string",
      "enum": [
        "draft",
        "needs_review",
        "approved",
        "rejected",
        "blocked"
      ]
    },
    "funnel_model": {
      "type": "string",
      "minLength": 1
    },
    "audience": {
      "type": "object",
      "additionalProperties": true,
      "required": [
        "primary_persona_id",
        "summary",
        "needs"
      ],
      "properties": {
        "primary_persona_id": {
          "type": "string",
          "minLength": 1
        },
        "summary": {
          "type": "string",
          "minLength": 1
        },
        "needs": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        }
      }
    },
    "primary_audience": {
      "type": "object",
      "additionalProperties": true,
      "required": [
        "audience_id",
        "summary",
        "current_state",
        "pain_points",
        "desired_belief"
      ],
      "properties": {
        "audience_id": {
          "type": "string",
          "minLength": 1
        },
        "summary": {
          "type": "string",
          "minLength": 1
        },
        "current_state": {
          "type": "string",
          "minLength": 1
        },
        "pain_points": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "desired_belief": {
          "type": "string",
          "minLength": 1
        }
      }
    },
    "secondary_audiences": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "incentive": {
      "type": "object",
      "additionalProperties": true,
      "required": [
        "id",
        "summary",
        "why_now",
        "offered_value"
      ],
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1
        },
        "summary": {
          "type": "string",
          "minLength": 1
        },
        "why_now": {
          "type": "string",
          "minLength": 1
        },
        "why_care_now": {
          "type": "string",
          "minLength": 1
        },
        "offered_value": {
          "type": "string",
          "minLength": 1
        },
        "gain": {
          "type": "string",
          "minLength": 1
        },
        "pain_avoided": {
          "type": "string",
          "minLength": 1
        },
        "risk_of_inaction": {
          "type": "string",
          "minLength": 1
        },
        "emotional_driver": {
          "type": "string",
          "minLength": 1
        },
        "practical_driver": {
          "type": "string",
          "minLength": 1
        }
      }
    },
    "problem_statement": {
      "type": "string",
      "minLength": 1
    },
    "belief_shift": {
      "type": "string",
      "minLength": 1
    },
    "core_message": {
      "type": "string",
      "minLength": 1
    },
    "offer": {
      "type": "object",
      "additionalProperties": true,
      "required": [
        "offer_id",
        "summary"
      ],
      "properties": {
        "offer_id": {
          "type": "string",
          "minLength": 1
        },
        "summary": {
          "type": "string",
          "minLength": 1
        }
      }
    },
    "cta": {
      "type": "object",
      "additionalProperties": true,
      "required": [
        "id",
        "label",
        "action",
        "destination"
      ],
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1
        },
        "label": {
          "type": "string",
          "minLength": 1
        },
        "action": {
          "type": "string",
          "minLength": 1
        },
        "destination": {
          "type": "string",
          "minLength": 1
        }
      }
    },
    "primary_cta": {
      "type": "object",
      "additionalProperties": true,
      "required": [
        "cta_id",
        "label",
        "intent"
      ],
      "properties": {
        "cta_id": {
          "type": "string",
          "minLength": 1
        },
        "label": {
          "type": "string",
          "minLength": 1
        },
        "intent": {
          "type": "string",
          "minLength": 1
        }
      }
    },
    "primary_cta_id": {
      "type": "string",
      "minLength": 1
    },
    "cta_ids": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "persona_ids": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "target_stages": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "enum": [
          "tofu",
          "mofu",
          "bofu",
          "awareness",
          "consideration",
          "conversion",
          "loyalty",
          "advocacy"
        ]
      }
    },
    "stage_strategy": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object"
      }
    },
    "asset_plan": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object"
      }
    },
    "channel_strategy": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object"
      }
    },
    "proof_requirements": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "claim_requirements": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "source_requirements": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "success_criteria": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object"
      }
    },
    "non_goals": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "metric_ids": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "metrics": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object"
      }
    },
    "source_ids": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "interview_answer_ids": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "created_at": {
      "type": "string",
      "minLength": 1
    },
    "updated_at": {
      "type": "string",
      "minLength": 1
    }
  }
}