Campaign schema
Generated from the canonical schema
schemas/campaign.schema.jsonbyscripts/generate-schema-docs.mjs— do not edit this page by hand.
A coherent mission around which Problems are coordinated. A Campaign is a coordination boundary, not a Problem type: it may contain SOLVE, BENCHMARK, and DISCOVERY Problems simultaneously, may maintain Campaign-local resources, may curate or recommend reusable Skills relevant to its Problems (ProblemRevisions independently pin exact SkillVersions), and may be finite or generative. Problems do not require a Campaign.
Schema version: 1.0.0 · $id: https://tokensforprogress.org/schemas/campaign.schema.json
Fields
id
Type: string · Required: yes · Mutable: no · Pattern: ^cmp_[0-9a-z]{10,32}$
Stable opaque identifier for the Campaign. Never encodes mission, domain, or status.
Example: "cmp_01jf8y2k9qv3"
slug
Type: string · Required: yes · Mutable: yes · Pattern: ^[a-z0-9]+(-[a-z0-9]+)*$
URL-safe short name, unique among Campaigns. Mutable, but changing it breaks inbound links; prefer stability.
Example: "federal-technology"
title
Type: string · Required: yes · Mutable: yes
Human-readable display name of the mission.
Example: "Federal Technology Transfer"
summary
Type: string · Required: yes · Mutable: yes
One- to two-sentence plain-text description shown in listings and search results.
Example: "Surface federally developed technologies that could be transferred to public use."
description_md
Type: string · Required: yes · Mutable: yes
Full Markdown description of the mission: motivation, scope, how Problems in this Campaign relate, links to external context.
Example: "## Mission\nThousands of federally funded technologies sit unused..."
status
Type: draft | active | archived · Required: yes · Mutable: yes
Lifecycle state. draft: being authored, not publicly listed. active: publicly listed and accepting Attempts on its open Problems. archived: preserved read-only; its Problems no longer accept new Attempts through the Campaign. This is lifecycle only — whether a Campaign is 'making progress' is derived from activity, never stored.
Example: "active"
owner_user_id
Type: string · Required: yes · Mutable: yes · Pattern: ^usr_[0-9a-z]{10,32}$
The User accountable for this Campaign: publishes its Problems and curates its backlog and recommended Skills. Transferable (mutable) with care.
Example: "usr_01jf8xw3tempo"
created_at
Type: string · Required: yes · Mutable: no
RFC 3339 UTC timestamp of creation.
Example: "2026-08-30T17:04:11Z"
updated_at
Type: string · Required: yes · Mutable: yes
RFC 3339 UTC timestamp of the most recent change to any mutable field.
Example: "2026-08-30T18:20:03Z"
JSON Schema source
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://tokensforprogress.org/schemas/campaign.schema.json",
"title": "Campaign",
"description": "A coherent mission around which Problems are coordinated. A Campaign is a coordination boundary, not a Problem type: it may contain SOLVE, BENCHMARK, and DISCOVERY Problems simultaneously, may maintain Campaign-local resources, may curate or recommend reusable Skills relevant to its Problems (ProblemRevisions independently pin exact SkillVersions), and may be finite or generative. Problems do not require a Campaign.",
"x-tfp-version": "1.0.0",
"type": "object",
"additionalProperties": false,
"required": [
"id",
"slug",
"title",
"summary",
"description_md",
"status",
"owner_user_id",
"created_at",
"updated_at"
],
"properties": {
"id": {
"type": "string",
"pattern": "^cmp_[0-9a-z]{10,32}$",
"x-mutable": false,
"description": "Stable opaque identifier for the Campaign. Never encodes mission, domain, or status.",
"examples": [
"cmp_01jf8y2k9qv3"
]
},
"slug": {
"type": "string",
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
"maxLength": 64,
"x-mutable": true,
"description": "URL-safe short name, unique among Campaigns. Mutable, but changing it breaks inbound links; prefer stability.",
"examples": [
"federal-technology"
]
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"x-mutable": true,
"description": "Human-readable display name of the mission.",
"examples": [
"Federal Technology Transfer"
]
},
"summary": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"x-mutable": true,
"description": "One- to two-sentence plain-text description shown in listings and search results.",
"examples": [
"Surface federally developed technologies that could be transferred to public use."
]
},
"description_md": {
"type": "string",
"x-mutable": true,
"description": "Full Markdown description of the mission: motivation, scope, how Problems in this Campaign relate, links to external context.",
"examples": [
"## Mission\nThousands of federally funded technologies sit unused..."
]
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"archived"
],
"x-mutable": true,
"description": "Lifecycle state. draft: being authored, not publicly listed. active: publicly listed and accepting Attempts on its open Problems. archived: preserved read-only; its Problems no longer accept new Attempts through the Campaign. This is lifecycle only — whether a Campaign is 'making progress' is derived from activity, never stored.",
"examples": [
"active"
]
},
"owner_user_id": {
"type": "string",
"pattern": "^usr_[0-9a-z]{10,32}$",
"x-mutable": true,
"description": "The User accountable for this Campaign: publishes its Problems and curates its backlog and recommended Skills. Transferable (mutable) with care.",
"examples": [
"usr_01jf8xw3tempo"
]
},
"created_at": {
"type": "string",
"format": "date-time",
"x-mutable": false,
"description": "RFC 3339 UTC timestamp of creation.",
"examples": [
"2026-08-30T17:04:11Z"
]
},
"updated_at": {
"type": "string",
"format": "date-time",
"x-mutable": true,
"description": "RFC 3339 UTC timestamp of the most recent change to any mutable field.",
"examples": [
"2026-08-30T18:20:03Z"
]
}
}
}