RunJobCreateResult run.job-create-result@1

Generated at from openvibe-contracts v0.97.0 and openvibe-sdk v0.26.0.

Version
1.0.0
Owner
run
Visibility
public
Status
planned
Compatibility
backward
Decision
ADR-034
Schema
https://openvibe.network/contracts/run/job-create-result.v1.json

run.job-create-result@1 (PLANNED; plan T14 R1, ADR-034): the answer of POST /api/v1/jobs on OpenVibe.Run (capability run.job.submit). 201 with created true and the new job, queued; 200 with created false and the job first created under the same idempotency_key (in whatever state it has reached). Refusals are application/problem+json: 400 (body invalid), 413 (args over 512 KiB), 422 run.limits.exceeded or a duplicate input name, 409 run.idempotency.conflict, 429 (quota).

Fields

FieldTypeRequiredDescriptionConstraints
createdbooleanyesfalse when the idempotency_key matched an earlier job.
jobrun.job-read-resultyes

Examples

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

Valid: created
{
  "created": true,
  "job": {
    "id": "job_01JAB2C3D4E5F6G7H8J9K0MNPQ",
    "project_id": "prj_01JAB2C3D4E5F6G7H8J9K0MNPR",
    "requester": {
      "type": "app",
      "id": "app_01JAB2C3D4E5F6G7H8J9K0MNPV"
    },
    "class": "function",
    "artifact": {
      "name": "thumbnail",
      "version": "1.2.0"
    },
    "inputs": [
      {
        "name": "photo.jpg",
        "media_id": "med_01JAB2C3D4E5F6G7H8J9K0MNPS",
        "sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
        "size_bytes": 482113
      }
    ],
    "limits": {
      "wall_ms": 30000,
      "cpu_ms": 30000,
      "mem_bytes": 268435456
    },
    "ttl_ms": 630000,
    "egress": "none",
    "requirements": {
      "kind": "run.function",
      "mobility": "job",
      "latency_class": "background",
      "objective": "balanced"
    },
    "idempotency_key": "thumb:photo-7",
    "state": "queued",
    "placement": null,
    "timings": {
      "created_at": "2026-10-04T10:00:00.000Z",
      "placed_at": null,
      "started_at": null,
      "finished_at": null
    },
    "exit": null,
    "result": null,
    "usage": {
      "seconds": 0,
      "wall_ms": 0,
      "cpu_ms": null,
      "mem_peak_bytes": null
    },
    "error": null
  }
}
Valid: idempotent-repeat
{
  "created": false,
  "job": {
    "id": "job_01JAB2C3D4E5F6G7H8J9K0MNPQ",
    "project_id": "prj_01JAB2C3D4E5F6G7H8J9K0MNPR",
    "requester": {
      "type": "app",
      "id": "app_01JAB2C3D4E5F6G7H8J9K0MNPV"
    },
    "class": "function",
    "artifact": {
      "name": "thumbnail",
      "version": "1.2.0"
    },
    "inputs": [
      {
        "name": "photo.jpg",
        "media_id": "med_01JAB2C3D4E5F6G7H8J9K0MNPS",
        "sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
        "size_bytes": 482113
      }
    ],
    "limits": {
      "wall_ms": 30000,
      "cpu_ms": 30000,
      "mem_bytes": 268435456
    },
    "ttl_ms": 630000,
    "egress": "none",
    "requirements": {
      "kind": "run.function",
      "mobility": "job",
      "latency_class": "background",
      "objective": "balanced"
    },
    "idempotency_key": "thumb:photo-7",
    "state": "running",
    "placement": {
      "node": "dev_01JAB2C3D4E5F6G7H8J9K0MNPT",
      "provider": null,
      "region": "us-west"
    },
    "timings": {
      "created_at": "2026-10-04T10:00:00.000Z",
      "placed_at": "2026-10-04T10:00:00.400Z",
      "started_at": "2026-10-04T10:00:00.650Z",
      "finished_at": null
    },
    "exit": null,
    "result": null,
    "usage": {
      "seconds": 0,
      "wall_ms": 0,
      "cpu_ms": null,
      "mem_peak_bytes": null
    },
    "error": null
  }
}
Rejected: without-created
{
  "job": {
    "id": "job_01JAB2C3D4E5F6G7H8J9K0MNPQ",
    "project_id": "prj_01JAB2C3D4E5F6G7H8J9K0MNPR",
    "requester": {
      "type": "app",
      "id": "app_01JAB2C3D4E5F6G7H8J9K0MNPV"
    },
    "class": "function",
    "artifact": {
      "name": "thumbnail",
      "version": "1.2.0"
    },
    "inputs": [
      {
        "name": "photo.jpg",
        "media_id": "med_01JAB2C3D4E5F6G7H8J9K0MNPS",
        "sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
        "size_bytes": 482113
      }
    ],
    "limits": {
      "wall_ms": 30000,
      "cpu_ms": 30000,
      "mem_bytes": 268435456
    },
    "ttl_ms": 630000,
    "egress": "none",
    "requirements": {
      "kind": "run.function",
      "mobility": "job",
      "latency_class": "background",
      "objective": "balanced"
    },
    "idempotency_key": "thumb:photo-7",
    "state": "queued",
    "placement": null,
    "timings": {
      "created_at": "2026-10-04T10:00:00.000Z",
      "placed_at": null,
      "started_at": null,
      "finished_at": null
    },
    "exit": null,
    "result": null,
    "usage": {
      "seconds": 0,
      "wall_ms": 0,
      "cpu_ms": null,
      "mem_peak_bytes": null
    },
    "error": null
  }
}

Validate

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