"""
    schemas: Instruction set message containing a collection of configuration files
"""

config_file_schema = {
    "type": "object",
    "properties": {
        "name": {
            "type": "string",
            "description": "Name of file",
            "example": "yo95.ma",
        },
        "content": {
            "type": "string",
            "description": "Base64 encoded file content",
            "example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcB"
            + "AAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
        },
        "mime_type": {
            "type": "string",
            "description": "MIME type",
            "example": "text/plain",
        },
        "static": {
            "type": "object",
            "description": "list of the fixed values set by the config file",
        },
    },
    "required": ["name", "content"],
}


instruction_set_schema = {
    "type": "object",
    "properties": {
        "categories": {
            "type": "object",
        },
        "files": {
            "type": "array",
            "items": config_file_schema,
        },
    },
    "required": [
        "files",
    ],
}


platform_instruction_set_schema = {
    "type": "object",
    "properties": {
        "message_type": {
            "type": "string",
            "description": "Type of message",
            "example": "platform_instruction_set",
            "enum": ["platform_instruction_set"],
        },
        "platform_ID": {
            "type": "string",
            "description": "Unique identifier for this platform",
            "example": "reav-x-1",
        },
        "instruction_set": instruction_set_schema,
    },
    "required": ["message_type", "platform_ID", "instruction_set"],
}