{
    "type": "object",
    "description": "Sent by either party to signal their termination of the call. This can be sent either once the call has has been established or before to abort the call.",
    "allOf": [{
        "$ref": "core-event-schema/room_event.yaml"
    }],
    "properties": {
        "content": {
            "type": "object",
            "properties": {
                "call_id": {
                    "type": "string",
                    "description": "The ID of the call this event relates to."
                },
                "version": {
                    "type": "integer",
                    "description": "The version of the VoIP specification this message adheres to. This specification is version 0."
                },
                "reason": {
                    "type": "string",
                    "description": "Optional error reason for the hangup. This should not be provided when the user naturally ends or rejects the call. When there was an error in the call negotiation, this should be ``ice_failed`` for when ICE negotiation fails or ``invite_timeout`` for when the other party did not answer in time.",
                    "enum": [
                        "ice_failed",
                        "invite_timeout"
                    ]
                }
            },
            "required": ["call_id", "version"]
        },
        "type": {
            "type": "string",
            "enum": ["m.call.hangup"]
        }
    }
}
