{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/vonage/main/json-schema/vonage-channel-schema.json",
  "title": "channel",
  "description": "A user who joins a conversation as a member can have one channel per membership. For more details see [channel concept docs](/voice/voice-api/concepts/in-app-calling)",
  "x-generated": "2026-10-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/vonage-conversation-openapi.yml#/components/schemas/channel",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "title": "App",
      "description": "Member is using app channel type",
      "properties": {
        "type": {
          "type": "string",
          "description": "Channel type",
          "enum": [
            "app"
          ]
        },
        "from": {
          "$ref": "#/$defs/member_channel_from"
        },
        "to": {
          "type": "object",
          "description": "Settings which control who this member can send messages to.",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "app"
              ]
            },
            "user": {
              "description": "The user ID of the member that this member can send messages to.",
              "type": "string"
            }
          }
        }
      },
      "required": [
        "type"
      ]
    },
    {
      "type": "object",
      "title": "Phone",
      "description": "Member is using phone channel type",
      "properties": {
        "type": {
          "type": "string",
          "description": "Channel type",
          "enum": [
            "phone"
          ]
        },
        "from": {
          "$ref": "#/$defs/member_channel_from"
        },
        "to": {
          "type": "object",
          "description": "Settings which control who this member can send messages to.",
          "properties": {
            "number": {
              "type": "string",
              "description": "The phone number of the member that this member can send messages to."
            },
            "type": {
              "type": "string",
              "enum": [
                "phone"
              ]
            }
          }
        }
      },
      "required": [
        "type"
      ]
    },
    {
      "type": "object",
      "title": "SMS",
      "properties": {
        "type": {
          "type": "string",
          "description": "Channel type",
          "enum": [
            "sms"
          ]
        },
        "from": {
          "$ref": "#/$defs/member_channel_from"
        },
        "to": {
          "type": "object",
          "properties": {
            "number": {
              "type": "string"
            },
            "type": {
              "type": "string",
              "enum": [
                "sms"
              ]
            }
          }
        }
      }
    },
    {
      "type": "object",
      "title": "MMS",
      "properties": {
        "type": {
          "type": "string",
          "description": "Channel type",
          "enum": [
            "mms"
          ]
        },
        "from": {
          "$ref": "#/$defs/member_channel_from"
        },
        "to": {
          "type": "object",
          "properties": {
            "number": {
              "type": "string"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "title": "WhatsApp",
      "properties": {
        "type": {
          "type": "string",
          "description": "Channel type",
          "enum": [
            "whatsapp"
          ]
        },
        "from": {
          "$ref": "#/$defs/member_channel_from"
        },
        "to": {
          "type": "object",
          "properties": {
            "number": {
              "type": "string"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "title": "Viber",
      "properties": {
        "type": {
          "type": "string",
          "description": "Channel type",
          "enum": [
            "viber"
          ]
        },
        "from": {
          "$ref": "#/$defs/member_channel_from"
        },
        "to": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "title": "Messenger",
      "properties": {
        "type": {
          "type": "string",
          "description": "Channel type",
          "enum": [
            "messenger"
          ]
        },
        "from": {
          "$ref": "#/$defs/member_channel_from"
        },
        "to": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string"
            }
          }
        }
      }
    }
  ],
  "$defs": {
    "member_channel_from": {
      "type": "object",
      "description": "Which channel types this member accepts messages from (if not set, all are accepted)",
      "properties": {
        "type": {
          "description": "Comma sperated list, can include channel types `app`, `phone`, `sms`, `mms`, `whatsapp` , `viber`, or `messenger`",
          "type": "string"
        }
      }
    }
  }
}