{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/hummingdeck/main/json-schema/hummingdeck-room-item-schema.json",
  "title": "RoomItem",
  "x-generated": "2026-10-24",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/hummingdeck-openapi.json#/components/schemas/RoomItem",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid"
    },
    "tabId": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid",
      "description": "The tab the item appears in. Items stored without a tab appear in the first content tab and report that tab."
    },
    "position": {
      "type": "integer",
      "minimum": 0,
      "description": "0-based place within its tab."
    },
    "type": {
      "type": "string",
      "enum": [
        "document",
        "url",
        "embed",
        "section"
      ]
    },
    "title": {
      "type": [
        "string",
        "null"
      ]
    },
    "documentId": {
      "type": [
        "string",
        "null"
      ]
    },
    "processingStatus": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "pending",
        "processing",
        "completed",
        "failed",
        null
      ],
      "description": "Documents only; null for other items. A document can be added while it is still processing; send the room link once it reads completed."
    },
    "processingErrorCode": {
      "type": [
        "string",
        "null"
      ],
      "description": "Why processing failed, when processingStatus is failed."
    },
    "deliveryMode": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "preview",
        "download_only",
        null
      ],
      "description": "Documents only; null for other items. download_only files are never previewed: recipients download them and open them on their device, and their downloads stay on for every link."
    },
    "urlId": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid"
    },
    "url": {
      "type": [
        "string",
        "null"
      ],
      "format": "uri"
    },
    "embedUrl": {
      "type": [
        "string",
        "null"
      ],
      "format": "uri"
    },
    "allowDownloads": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "createdAt": {
      "type": "string",
      "format": "date-time"
    }
  },
  "required": [
    "id",
    "tabId",
    "position",
    "type",
    "title",
    "documentId",
    "processingStatus",
    "processingErrorCode",
    "deliveryMode",
    "urlId",
    "url",
    "embedUrl",
    "allowDownloads",
    "createdAt"
  ]
}