{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/johnsessentials-com/json-schema/johnsessentials-com-job-event-schema.json",
  "title": "JobEvent",
  "description": "IMPORTANT — additionalProperties is true intentionally. M4 / future\nphases add new fields without breaking SDK consumers. The named\ncost_usd_so_far / tokens_in / tokens_out / model fields above were\npromoted from additional properties in Phase 2 of SWAGGER_ON_STEROIDS.\n",
  "x-generated": "2026-11-13",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/johnsessentials-com-openapi.json#/components/schemas/JobEvent",
  "additionalProperties": true,
  "properties": {
    "cost_usd_so_far": {
      "description": "Running total of LLM + per-call costs for this job. Updates\nmid-orchestration so SDK consumers can show spend live.\n",
      "format": "double",
      "type": "number"
    },
    "job_id": {
      "format": "uuid",
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "model": {
      "description": "LLM model the current step is using (provider-qualified).",
      "type": "string"
    },
    "schema_version": {
      "default": 1,
      "description": "Bumped when the event shape changes incompatibly. M3 added\ncost_usd_so_far / tokens_in / tokens_out / model fields without\nbumping schema_version, relying on additionalProperties: true.\n",
      "type": "integer"
    },
    "tokens_in": {
      "description": "Input tokens consumed so far.",
      "type": "integer"
    },
    "tokens_out": {
      "description": "Output tokens generated so far.",
      "type": "integer"
    },
    "type": {
      "enum": [
        "started",
        "progress",
        "complete",
        "error",
        "tool_call",
        "tool_result",
        "token",
        "cost"
      ],
      "type": "string"
    }
  },
  "required": [
    "job_id",
    "type",
    "schema_version"
  ],
  "type": "object"
}