"""
    schemas: Message Wrapper is used to wrap all message types that contain
    details of where the message is coming from, which end client is its
    destination and the type of message.
"""

message_wrapper_schema = {
    "type": "object",
    "discriminator": {
        "propertyName": "message_type",
    },
    "properties": {
        "message_ID": {
            "type": "string",
            "description": "An identifier for the type of message received.",
            "example": "b427003c-0000-11aa-a1eb-bvcdfghjgfdd",
        },
        "timestamp": {
            "type": "date-time",
            "description": "Timestamp of message",
            "example": "2022-11-16T00:00:00Z",
        },
        "message_type": {
            "type": "Type of message",
            "description": "Type of message",
            "example": "platform_status",
        },
        "version": {
            "type": "string",
            "description": "Version of comms bacbone message format protocol",
            "example": 2.0,
        },
        "source": {
            "type": "string",
            "description": "The sender; Where is this message from",
            "example": "autonomy_engine",
        },
        "destination": {
            "type": "string",
            "description": "Publisher topic; What is the destination"
            + " of this message",
            "example": "ah1",
        },
        "encoded": {
            "type": "boolean",
            "description": "Indicate that message raw (encoded) or decoded. "
            + "Options: encoded=True, decoded=False",
            "example": False,
        },
        "delivery_type": {
            "type": "string",
            "description": "To publish or broadcast this message.",
            "enum": ["broadcast", "publish"],
            "example": "publish",
            "default": "publish",
        },
    },
    "required": ["message_type"],
}