# ProgramVersion

The ProgramVersion object of the Kaabist API.

| Field | Type | Required | Description |
|---|---|---|---|
| `id` | string | yes | pattern `^pv_[0-9a-hjkmnp-tv-z]{26}$` |
| `object` | `"program_version"` | yes |  |
| `program_id` | string | yes | pattern `^prg_[0-9a-hjkmnp-tv-z]{26}$` |
| `version` | integer | yes | ≥ 1 |
| `status` | `"draft"`, `"published"`, `"archived"` | yes |  |
| `definition` | [ProgramDefinition](https://docs.kaab.ist/reference/api/schemas/program-definition) | yes |  |
| `definition_hash` | string | yes |  |
| `lint` | [LintResult](https://docs.kaab.ist/reference/api/schemas/lint-result) | yes |  |
| `notes` | string or null | yes |  |
| `source` | `"manual"`, `"api"`, `"proposal"`, `"takeover"` | yes |  |
| `created_at` | string (date-time) | yes |  |
| `published_at` | string or null (date-time) | yes |  |

## Example

```json
{
  "id": "pv_01j9zqk3q7m4n5p6r7s8t9v0wx",
  "object": "program_version",
  "program_id": "prg_01j9zqk3q7m4n5p6r7s8t9v0wx",
  "version": 3,
  "status": "published",
  "definition": {
    "kaab": "1",
    "steps": [
      {
        "goto": "https://shop.example.com/p/1"
      },
      {
        "extract": {
          "title": "h1"
        }
      }
    ]
  },
  "definition_hash": "sha256:9ab1",
  "lint": {
    "errors": [],
    "warnings": [
      {
        "code": "W001",
        "path": "steps[0]",
        "message": "`goto` without `expect`"
      }
    ]
  },
  "notes": "healing: relocate price",
  "source": "proposal",
  "created_at": "2026-09-18T10:00:00Z",
  "published_at": "2026-09-18T10:00:00Z"
}
```
