{
  "$ref": "#/definitions/Component",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "Component": {
      "additionalProperties": false,
      "properties": {
        "actions": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "icon": {
                "type": "string"
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "icon",
              "name"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "authors": {
          "items": {
            "$ref": "#/definitions/TAuthor"
          },
          "type": "array"
        },
        "id": {
          "type": "string"
        },
        "messages": {
          "items": {
            "$ref": "#/definitions/TMessage"
          },
          "type": "array"
        },
        "options": {
          "additionalProperties": false,
          "properties": {
            "bubbles": {
              "type": "boolean"
            },
            "showAvatar": {
              "type": "boolean"
            },
            "showName": {
              "type": "boolean"
            },
            "showTimestamp": {
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "style": {
          "type": "string"
        }
      },
      "required": [
        "messages",
        "authors"
      ],
      "type": "object"
    },
    "TAuthor": {
      "additionalProperties": false,
      "properties": {
        "avatar": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "isAI": {
          "type": "boolean"
        },
        "me": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "status": {
          "enum": [
            "online",
            "offline",
            "away",
            "busy"
          ],
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "type": "object"
    },
    "TMessage": {
      "additionalProperties": false,
      "properties": {
        "authorId": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "language": {
          "type": "string"
        },
        "quotedMessageId": {
          "type": "string"
        },
        "reply": {
          "type": "boolean"
        },
        "status": {
          "enum": [
            "pending",
            "sent",
            "received",
            "read"
          ],
          "type": "string"
        },
        "system": {
          "type": "boolean"
        },
        "text": {
          "type": "string"
        },
        "timestamp": {
          "format": "date-time",
          "type": "string"
        },
        "type": {
          "enum": [
            "text",
            "image",
            "video",
            "audio",
            "file",
            "code"
          ],
          "type": "string"
        },
        "uri": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "text",
        "timestamp",
        "type"
      ],
      "type": "object"
    }
  }
}
