---
title: "codes.task-summary@1 · OpenVibe.Services"
canonical: "https://openvibe.services/docs/contracts/codes.task-summary"
updated: null
---

# codes.task-summary@1 · OpenVibe.Services

HTML: [codes.task-summary@1 · OpenVibe.Services](https://openvibe.services/docs/contracts/codes.task-summary)

# CodesTaskSummary `codes.task-summary@1`

Generated at 2026-11-13 06:25:48 UTC from [`openvibe-contracts v0.419.0`](https://github.com/OpenVibers/OpenVibe.Contracts/tree/v0.419.0) and [`openvibe-sdk v0.161.0`](https://github.com/OpenVibers/OpenVibe.SDK/tree/v0.161.0).

- Version: 1.0.0
- Owner: codes
- Visibility: first-party
- Status: active
- Compatibility: backward
- Schema: [`https://openvibe.network/contracts/codes/task-summary.v1.json`](/docs/contracts/codes.task-summary.json)

codes.task-summary@1: a coding task on OpenVibe.Codes as the Dock's Code tab lists it (GET /api/v1/me/tasks, newest and running first). STATUS is the task in the Dock's words: queued (waiting for one of the person's machines), running, needs-you (it waits on the person: an approval in its inbox), done, failed or stopped. MODE is where the request started: create (built on openvibe.space, no Codes task), openvibe (one of OpenVibe's own projects) or repo (the person's own repository). STEPS counts the attempts the task has run. URL is the task's page on openvibe.codes; PREVIEW\_URL is its live preview when one exists (a Space build), else null; PR\_URL is the pull request it opened, else null.

## Fields

| Field | Type | Required | Description | Constraints |
| --- | --- | --- | --- | --- |
| `id` | string | yes | The Codes task id (tsk\_ + ULID). | - `pattern ^tsk_[0-9A-HJKMNP-TV-Z]{26}$` |
| `title` | string | yes | The task's first line: what was asked, in the person's own words. | - `minLength 1`<br>- `maxLength 200` |
| `status` | enum | yes | The task in the Dock's words. | - `one of "queued", "running", "needs-you", "done", "failed", "stopped"` |
| `mode` | enum | yes | Where the request started. | - `one of "create", "openvibe", "repo"` |
| `repo` | string | yes | The repository the task works on. | - `maxLength 300` |
| `started_at` | string | yes |  | - `format date-time` |
| `updated_at` | string | yes |  | - `format date-time` |
| `steps` | integer | yes | How many attempts the task has run. | - `minimum 0` |
| `url` | string | yes | The task's page on openvibe.codes. | - `pattern ^https://`<br>- `format uri` |
| `preview_url` | string \| null | yes | Its live preview when one exists, else null. | - `format uri` |
| `pr_url` | string \| null | yes | The pull request it opened, else null. | - `format uri` |

## Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

 Valid: needs-you

~~~~
{
  "id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
  "title": "Make the home page faster on phones",
  "status": "needs-you",
  "mode": "openvibe",
  "repo": "https://github.com/OpenVibers/OpenVibe.Live",
  "started_at": "2026-11-10T09:00:00.000Z",
  "updated_at": "2026-11-10T09:30:00.000Z",
  "steps": 1,
  "url": "https://openvibe.codes/tasks/tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
  "preview_url": null,
  "pr_url": "https://github.com/OpenVibers/OpenVibe.Live/pull/654"
}
~~~~

Valid: running

~~~~
{
  "id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
  "title": "Add a test for the date parser",
  "status": "running",
  "mode": "repo",
  "repo": "https://github.com/OpenVibers/OpenVibe.Codes",
  "started_at": "2026-11-10T10:00:00.000Z",
  "updated_at": "2026-11-10T10:04:00.000Z",
  "steps": 2,
  "url": "https://openvibe.codes/tasks/tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
  "preview_url": null,
  "pr_url": null
}
~~~~

Rejected: bad-status

~~~~
{
  "id": "tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
  "title": "Add a test for the date parser",
  "status": "flying",
  "mode": "repo",
  "repo": "https://github.com/OpenVibers/OpenVibe.Codes",
  "started_at": "2026-11-10T10:00:00.000Z",
  "updated_at": "2026-11-10T10:04:00.000Z",
  "steps": 2,
  "url": "https://openvibe.codes/tasks/tsk_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3",
  "preview_url": null,
  "pr_url": null
}
~~~~

## Validate

~~~~
const contracts = require('openvibe-contracts');
contracts.validate('codes.task-summary@1', value);   // { valid, errors: [{ path, message }] }
~~~~
