{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/CallInterceptInfo",
  "title": "CallInterceptInfo",
  "type": "object",
  "required": [
    "enabled",
    "incoming",
    "outgoing"
  ],
  "properties": {
    "enabled": {
      "type": "boolean",
      "example": true,
      "description": "`true` if call intercept is enabled."
    },
    "incoming": {
      "type": "object",
      "required": [
        "type",
        "voicemailEnabled",
        "announcements"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "INTERCEPT_ALL",
            "ALLOW_ALL"
          ],
          "description": "`INTERCEPT_ALL` indicated incoming calls are intercepted.\n * `INTERCEPT_ALL` - Incoming calls are routed as the destination and voicemail specify.\n * `ALLOW_ALL` - Incoming calls are not intercepted.\n"
        },
        "voicemailEnabled": {
          "type": "boolean",
          "description": "If `true`, the destination will be the virtual line's voicemail."
        },
        "announcements": {
          "type": "object",
          "required": [
            "greeting",
            "filename",
            "newNumber",
            "zeroTransfer"
          ],
          "properties": {
            "greeting": {
              "type": "string",
              "enum": [
                "CUSTOM",
                "DEFAULT"
              ],
              "description": "`DEFAULT` indicates that a system default message will be placed when incoming calls are intercepted.\n * `CUSTOM` - A custom greeting is played when incoming calls are intercepted.\n * `DEFAULT` - A System default greeting will be played when incoming calls are intercepted.\n"
            },
            "filename": {
              "type": "string",
              "example": "incoming.wav",
              "description": "Filename of custom greeting; will be an empty string if no custom greeting has been uploaded."
            },
            "newNumber": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "example": true,
                  "description": "If `true`, the caller will hear this new number when the call is intercepted."
                },
                "destination": {
                  "type": "string",
                  "example": "2225551212",
                  "description": "New number caller will hear announced."
                }
              },
              "description": "Information about the new number announcement."
            },
            "zeroTransfer": {
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "example": true,
                  "description": "If `true`, the caller will be transferred to destination of when zero (0) is pressed."
                },
                "destination": {
                  "type": "string",
                  "example": "2225551212",
                  "description": "Destination to which caller will be transferred when zero is pressed."
                }
              },
              "description": "Information about how the call will be handled if zero (0) is pressed."
            }
          },
          "description": "Settings related to how incoming calls are handled when the intercept feature is enabled."
        }
      },
      "description": "Settings related to how incoming calls are handled when the intercept feature is enabled."
    },
    "outgoing": {
      "type": "object",
      "required": [
        "type",
        "transferEnabled"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "INTERCEPT_ALL",
            "ALLOW_LOCAL_ONLY"
          ],
          "description": "`INTERCEPT_ALL` indicated all outgoing calls are intercepted.\n * `INTERCEPT_ALL` - Outgoing calls are routed as the destination and voicemail specify.\n * `ALLOW_LOCAL_ONLY` - Only non-local calls are intercepted.\n"
        },
        "transferEnabled": {
          "type": "boolean",
          "example": true,
          "description": "If `true`, allows transfer and forwarding for the call type."
        },
        "destination": {
          "type": "string",
          "example": "2225551212",
          "description": "Number to which the outbound call be transferred."
        }
      },
      "description": "Settings related to how outgoing calls are handled when the intercept feature is enabled."
    }
  }
}