ToolsJobStartedPayload tools.job.started@1

Generated at from openvibe-contracts v0.33.0 and openvibe-sdk v0.5.0.

Version
1.0.0
Owner
tools
Visibility
first-party
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/events/payloads/tools.job.started.v1.json

tools.job.started v1 (OpenVibe.Tools apps/_shared/jobs/events.js). A worker claimed the job and it is running (attempts counts this attempt). A job requeued after a restart starts again and is announced again. Emitted in the transaction that records the transition, beside the job's own SSE event. Carries ids, type, owner, state, times and result locations; never the job's input, its files, its output data or a session. Jobs of sandbox app tokens are not announced. Envelope: subject { type: job, id: <job_id> }, visibility internal, priority low, actor service:tools.

Fields

FieldTypeRequiredDescriptionConstraints
job_idstringyes
  • pattern ^job_[0-9A-HJKMNP-TV-Z]{26}$
servicestringyesThe Tools satellite that runs the job (img, audio, docs…).
  • pattern ^[a-z][a-z0-9-]{1,39}$
typestringyesJob type, e.g. img.process.
  • pattern ^[a-z][a-z0-9]*\.[a-z0-9_.]+$
  • maxLength 80
type_versionintegeryes
  • minimum 1
stateconstyes
  • = "running"
ownerone ofyesWho submitted the job: a user (user:usr_…), a service, app or mod principal. null for an anonymous browser session; the session is never published.
attemptsintegeryes
  • minimum 0
max_attemptsintegeryes
  • minimum 1
created_atstringyes
  • format date-time
retry_ofstring | nullyesThe failed job this one retries (POST /api/v1/jobs/:id/retry).
  • pattern ^job_[0-9A-HJKMNP-TV-Z]{26}$
started_atstringyes
  • format date-time

Examples

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

Valid: service
{
  "job_id": "job_01JAB2C3D4E5F6G7H8J9K0MNPQ",
  "service": "img",
  "type": "img.process",
  "type_version": 1,
  "state": "running",
  "owner": {
    "type": "service",
    "id": "community"
  },
  "attempts": 1,
  "max_attempts": 3,
  "created_at": "2026-09-23T09:00:00.000Z",
  "retry_of": null,
  "started_at": "2026-09-23T09:00:01.000Z"
}
Rejected: wrong-state
{
  "job_id": "job_01JAB2C3D4E5F6G7H8J9K0MNPQ",
  "service": "img",
  "type": "img.process",
  "type_version": 1,
  "state": "queued",
  "owner": null,
  "attempts": 1,
  "max_attempts": 3,
  "created_at": "2026-09-23T09:00:00.000Z",
  "retry_of": null,
  "started_at": "2026-09-23T09:00:01.000Z"
}

Validate

const contracts = require('openvibe-contracts');
contracts.validate('tools.job.started@1', value);   // { valid, errors: [{ path, message }] }