Engineering manualSchema reference
Campaign Asset Plan
Declared schema: schemas/campaign-asset-plan.schema.json
Source: schemas/campaign-asset-plan.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 Asset Plan",
"type": "object",
"additionalProperties": false,
"required": [
"id",
"campaign_id",
"brand_id",
"open_design_design_system_id",
"funnel_model",
"assets",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"campaign_id": {
"type": "string",
"minLength": 1
},
"brand_id": {
"type": "string",
"minLength": 1
},
"open_design_design_system_id": {
"type": "string",
"minLength": 1
},
"funnel_model": {
"type": "string",
"minLength": 1
},
"assets": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"asset_id",
"asset_type",
"channel",
"platform",
"funnel_stage",
"purpose",
"audience_state",
"message_role",
"cta_id",
"why_this_asset",
"source_ids",
"claim_ids",
"quality_bar",
"status"
],
"properties": {
"asset_id": {
"type": "string",
"minLength": 1
},
"asset_type": {
"type": "string",
"minLength": 1
},
"channel": {
"type": "string",
"minLength": 1
},
"platform": {
"type": "string",
"minLength": 1
},
"funnel_stage": {
"type": "string",
"enum": [
"tofu",
"mofu",
"bofu",
"awareness",
"consideration",
"conversion"
]
},
"purpose": {
"type": "string",
"minLength": 1
},
"audience_state": {
"type": "string",
"minLength": 1
},
"message_role": {
"type": "string",
"minLength": 1
},
"cta_id": {
"type": "string",
"minLength": 1
},
"why_this_asset": {
"type": "string",
"minLength": 1
},
"source_ids": {
"type": "array",
"items": {
"type": "string"
}
},
"claim_ids": {
"type": "array",
"items": {
"type": "string"
}
},
"quality_bar": {
"type": "object",
"additionalProperties": false,
"required": [
"must_be_on_brand",
"must_match_stage",
"must_have_clear_next_step"
],
"properties": {
"must_be_on_brand": {
"type": "boolean"
},
"must_match_stage": {
"type": "boolean"
},
"must_have_clear_next_step": {
"type": "boolean"
}
}
},
"status": {
"type": "string",
"enum": [
"planned",
"draft",
"needs_review",
"approved",
"blocked"
]
}
}
}
},
"created_at": {
"type": "string",
"minLength": 1
},
"updated_at": {
"type": "string",
"minLength": 1
}
}
}