{
    "title": "A2UI (Agent to UI) Client-to-Server Event Schema",
    "description": "Describes a JSON payload for a client-to-server event message.",
    "type": "object",
    "minProperties": 1,
    "maxProperties": 1,
    "properties": {
        "userAction": {
            "type": "object",
            "description": "Reports a user-initiated action from a component.",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the action, taken from the component's action.name property."
                },
                "surfaceId": {
                    "type": "string",
                    "description": "The id of the surface where the event originated."
                },
                "sourceComponentId": {
                    "type": "string",
                    "description": "The id of the component that triggered the event."
                },
                "timestamp": {
                    "type": "string",
                    "format": "date-time",
                    "description": "An ISO 8601 timestamp of when the event occurred."
                },
                "context": {
                    "type": "object",
                    "description": "A JSON object containing the key-value pairs from the component's action.context, after resolving all data bindings.",
                    "additionalProperties": true
                }
            },
            "required": ["name", "surfaceId", "sourceComponentId", "timestamp", "context"]
        },
        "error": {
            "type": "object",
            "description": "Reports a client-side error. The content is flexible.",
            "additionalProperties": true
        }
    },
    "oneOf": [{ "required": ["userAction"] }, { "required": ["error"] }]
}
