{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/phone-com/main/json-schema/phone-com-extension-schema.json",
  "title": "Extension",
  "x-generated": "2026-10-14",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/phone-com-phoenix-api-by-phone-com-openapi.yml#/components/schemas/Extension",
  "type": "object",
  "properties": {
    "usage_type": {
      "enum": [
        "limited",
        "unlimited"
      ],
      "description": "Can be 'limited' or 'unlimited'. In most cases, changing this will affect your monthly bill."
    },
    "extension": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Extension number that callers may dial. On POST, leaving this empty will result in an auto-generated value. On PUT, this field is required."
    },
    "full_name": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 70,
      "description": "Full name of the individual or department to which this extension is assigned"
    },
    "name": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 30,
      "description": "User-supplied name for the extension. On POST, leaving this empty will result in an auto-generated value. On PUT, this field is required"
    },
    "timezone": {
      "type": [
        "string",
        "null"
      ],
      "description": "Time zone in IANA time zone database format (like 'America/Los_Angeles')"
    },
    "name_greeting": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Recording ID. Read-only"
        },
        "name": {
          "type": [
            "string",
            "null"
          ],
          "description": "Name of recording"
        }
      },
      "description": "Greeting that communicates the extension's name"
    },
    "include_in_directory": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Whether this extension should be included in the dial-by-name directory for this account."
    },
    "caller_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Phone number to use as Caller ID for outgoing calls. Must be a phone number belonging to this account, or one of any additional authorized phone number"
    },
    "local_area_code": {
      "type": [
        "integer",
        "null"
      ],
      "description": "For outbound calls, this is the North American area code that this extension is calling from"
    },
    "enable_call_waiting": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Whether Call Waiting is enabled. Default is TRUE"
    },
    "enable_outbound_calls": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Whether outgoing calls are enabled. Default is TRUE."
    },
    "bypass_hard_phone": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Set 'true' if you want to use advanced call handling rules instead of device"
    },
    "voicemail": {
      "properties": {
        "enabled": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Whether voicemail is enabled"
        },
        "password": {
          "type": [
            "string",
            "null"
          ],
          "pattern": "^[0-9]+$",
          "description": "Password for accessing voicemail box. Must be digits only."
        },
        "greeting": {
          "properties": {
            "type": {
              "enum": [
                "name",
                "standard",
                "alternate"
              ],
              "description": "The greeting to play. Can be 'name' for the name_greeting as described above, 'standard' for the standard greeting, or 'alternate' for an alternate greeting."
            },
            "standard": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "id": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "minimum": 1,
                  "description": "Recording ID. Read-only."
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Name of recording"
                }
              },
              "description": "Greeting to be played when type='standard'"
            },
            "alternate": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "id": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "minimum": 1,
                  "description": "Recording ID. Read-only."
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Name of recording"
                }
              },
              "description": "Greeting to be played when type='alternate'"
            },
            "enable_leave_message_prompt": {
              "type": [
                "boolean",
                "null"
              ],
              "description": "Whether to prompt the caller with the following words after the voicemail greeting has been played: 'Please leave your message after the tone. When finished, hang up or press the pound key."
            }
          },
          "description": "Voicemail Greeting Object"
        },
        "transcription": {
          "enum": [
            "human",
            "automated"
          ],
          "description": "Type of voicemail transcription to use. Can be 'human' for high-quality manual transcriptions by human operators, 'automated' for machine-generated transcriptions, or NULL to omit trancriptions"
        },
        "attachments": {
          "enum": [
            "wav",
            "mp3"
          ],
          "description": "If notification emails are being used, this defines the format of the audio attachments. Can be 'wav' for WAV format, 'mp3' for MP3 format, or NULL to disable attachments."
        },
        "notifications": {
          "properties": {
            "emails": {
              "type": [
                "string",
                "null"
              ],
              "description": "Array of email addresses"
            },
            "sms": {
              "type": [
                "string",
                "null"
              ],
              "pattern": "^\\+?([0-9\\-\\(\\)\\s]*)$",
              "description": "Phone number capable of receiving SMS messages"
            }
          },
          "description": "Voicemail Notifications Object. Can be set to NULL to disable notifications."
        }
      },
      "description": "Voicemail Object."
    },
    "call_notifications": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "emails": {
          "type": [
            "string",
            "null"
          ],
          "description": "Array of email addresses"
        },
        "sms": {
          "type": [
            "string",
            "null"
          ],
          "pattern": "^\\+?([0-9\\-\\(\\)\\s]*)$",
          "description": "Phone number capable of receiving SMS messages"
        }
      },
      "description": "Call Notifications Object"
    },
    "presence_publish": {
      "type": [
        "boolean",
        "null"
      ],
      "description": ""
    },
    "presence_subscribe": {
      "type": [
        "boolean",
        "null"
      ],
      "description": ""
    },
    "route": {
      "description": "Extension route"
    }
  }
}