{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/vidplate-app/json-schema/vidplate-app-render-node-schema.json",
  "title": "RenderNode",
  "description": "One of the workspace's dedicated render nodes.",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/vidplate-app-openapi.json#/components/schemas/RenderNode",
  "type": "object",
  "properties": {
    "object": {
      "const": "render_node"
    },
    "id": {
      "type": "string",
      "description": "rnode_..."
    },
    "name": {
      "type": "string",
      "description": "The name given to the node in VidPlate."
    },
    "state": {
      "enum": [
        "online",
        "processing",
        "offline"
      ],
      "description": "online: heard from recently and idle. processing: rendering now. offline: not signed in, or nothing heard for about 2 minutes."
    },
    "last_seen_at": {
      "type": [
        "string",
        "null"
      ]
    },
    "renders_since_restart": {
      "type": "integer",
      "description": "Renders since the node's renderer last started. Left out when the node has not reported it."
    },
    "current_render_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "The API render it is working on (rnd_...). Null when idle, offline, or busy with an order placed in the app."
    },
    "capabilities": {
      "type": "object",
      "properties": {
        "accepts_api_renders": {
          "type": "boolean",
          "description": "Whether this node takes API renders."
        },
        "unavailable_reason": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "turned_off",
            "not_reported_yet",
            "no_graphics_hardware",
            "mobile_device",
            "not_a_render_node",
            null
          ]
        },
        "supports_3d_templates": {
          "type": "boolean",
          "description": "Whether it can render templates with 3D scenes and advanced effects."
        },
        "hardware_video_encoding": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "max_output_dimension_px": {
          "type": [
            "integer",
            "null"
          ],
          "description": "The longest side, in pixels, the node can draw. Null when not reported."
        },
        "max_output_megapixels": {
          "type": [
            "number",
            "null"
          ]
        },
        "video_codecs": {
          "type": [
            "array",
            "null"
          ],
          "description": "The video codecs the node can encode, with the largest size and frame rate it confirmed and whether a hardware encoder does it. Null until the node reports (such a node takes H.264 outputs only).",
          "items": {
            "type": "object",
            "properties": {
              "codec": {
                "enum": [
                  "h264",
                  "hevc",
                  "vp9",
                  "av1"
                ]
              },
              "container": {
                "enum": [
                  "mp4",
                  "webm"
                ]
              },
              "max_resolution": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "max_fps": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "hardware": {
                "type": "boolean"
              },
              "modes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "resolution": {
                      "type": "string"
                    },
                    "max_fps": {
                      "type": "integer"
                    },
                    "hardware": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          }
        },
        "audio_codecs": {
          "type": [
            "object",
            "null"
          ],
          "description": "Whether the node can encode AAC (MP4) and Opus (WebM) audio. Null until reported.",
          "properties": {
            "aac": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "opus": {
              "type": [
                "boolean",
                "null"
              ]
            }
          }
        }
      }
    }
  }
}