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
}
}
}