{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/suzanne3d/main/json-schema/suzanne3d-job-schema.json",
  "title": "Job",
  "x-generated": "2026-10-07",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_ae-authored/suzanne3d-openapi-generated.yml#/components/schemas/Job",
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "queued",
        "running",
        "done",
        "failed",
        "cancelled"
      ]
    },
    "model": {
      "type": "string",
      "enum": [
        "sculptor",
        "atelier",
        "capture"
      ],
      "description": "Stable named model; all three run on the Atelier2 engine."
    },
    "created_at": {
      "type": "string",
      "format": "date-time"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time"
    },
    "completed_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "outputs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "format": {
            "type": "string",
            "enum": [
              "glb",
              "obj",
              "stl",
              "fbx"
            ]
          },
          "download_url": {
            "type": "string",
            "format": "uri",
            "description": "Stable download URL; call it to get a fresh 15-minute presigned S3 URL."
          }
        }
      }
    },
    "error": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/$defs/JobError"
        }
      ],
      "description": "Set when status == \"failed\"."
    }
  },
  "$defs": {
    "JobError": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "vendor_model_error",
            "vendor_http_error",
            "vendor_timeout",
            "vendor_not_configured",
            "missing_image",
            "insufficient_views",
            "job_cancelled",
            "sqs_enqueue_failed"
          ]
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}