Zoom Phone Private Directory API

The Private Directory API from Zoom Phone — 2 operation(s) for private directory.

Operations 4

GET /phone/private_directory/members List private directory members #
POST /phone/private_directory/members Add members to a private directory #
DELETE /phone/private_directory/members/{extensionId} Remove a member from a private directory #
PATCH /phone/private_directory/members/{extensionId} Update a private directory member #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/zoom-phone-private-directory-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

zoom-phone-private-directory-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Phone Private Directory API
  description: "You can access information from Zoom with Zoom Phone APIs to build private services or public applications on the [Zoom App Marketplace](https://marketplace.zoom.us/).\n\n  To learn how to get your credentials and create private or public applications, see Zoom APIs use [OAuth 2.0 authorization](https://developers.zoom.us/docs/integrations/oauth/). \n\n  All endpoints are available through `https` at `api.zoom.us/v2/`. For instance, `https://api.zoom.us/v2/users/` returns all users on an account. You'll receive a `403` error message if you have not set up Zoom Phone."
  termsOfService: https://zoom.us/docs/en-us/zoom_api_license_and_tou.html
  contact:
    name: Zoom Developers
    url: https://developer.zoom.us/
  version: '2'
servers:
- url: https://api.zoom.us/v2
tags:
- name: Private Directory
paths:
  /phone/private_directory/members:
    get:
      tags:
      - Private Directory
      summary: List private directory members
      description: 'Returns the member list of a [private directory](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0063992).


        **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:admin`


        **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:read:list_private_directory_members:admin`


        **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`'
      operationId: listPrivateDirectoryMembers
      parameters:
      - name: next_page_token
        in: query
        description: The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size.
        required: false
        schema:
          type: string
          example: ICF5K4lVmGG4kyIyGxSfBU2LH4QQG95cn32
      - name: page_size
        in: query
        description: The number of records returned within a single API call.
        required: false
        schema:
          maximum: 300
          minimum: 1
          type: integer
          example: 30
          default: 30
      - name: keyword
        in: query
        description: The partial string of the private directory's member number. It only supports suffix fuzzy matching for the extension number.
        required: false
        schema:
          type: string
          example: '800'
      - name: site_id
        in: query
        description: The unique identifier of the [site](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) that you would like to use for the private directory. This field is required only if the multiple sites option has been enabled for the account.
        required: false
        schema:
          type: string
          example: vkBoHKaRTxeBiTLRsdEwTQ
      responses:
        '200':
          description: "**HTTP Status Code:** `200` \n\nPrivate direcotry member list returned. "
          content:
            application/json:
              schema:
                type: object
                properties:
                  next_page_token:
                    type: string
                    description: The next page token paginates through large set of results.
                    example: ICF5K4lVmGG4kyIyGxSfBU2LH4QQG95cn32
                  page_size:
                    type: integer
                    description: The number of records returned within a single API call.
                    example: 30
                  total_records:
                    type: integer
                    description: The total number of records available across all pages.
                    example: 1
                  private_directory_members:
                    type: array
                    items:
                      required:
                      - extension_display_name
                      - extension_id
                      - extension_number
                      - extension_type
                      - searchable_on_web_portal
                      type: object
                      properties:
                        extension_id:
                          type: string
                          description: The member's extension ID.
                          example: JpjPXizWTz-l35tFRUK3Gg
                        extension_type:
                          type: string
                          description: 'The member extension''s type. The valid value is:

                            * user

                            * zoom_room

                            * common_area

                            * auto_receptionist

                            * call_queue

                            * shared_line_group'
                          example: user
                          enum:
                          - user
                          - zoom_room
                          - common_area
                          - auto_receptionist
                          - call_queue
                          - shared_line_group
                        extension_number:
                          type: integer
                          description: The member's extension number.
                          example: 800
                        extension_display_name:
                          type: string
                          description: The member's display name.
                          example: sample extension
                        extension_email:
                          type: string
                          description: The member's email address, this field should be returned when "extension_type" is user.
                          example: sample@zooom.us
                        searchable_on_web_portal:
                          type: string
                          description: 'The value indicates who is allowed to access to this member, valid value is:

                            * everybody

                            * admins_only

                            * nobody'
                          example: everybody
                          enum:
                          - everybody
                          - admins_only
                          - nobody
                        site_id:
                          type: string
                          description: The unique identifier of the [site](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) that you would like to use for the push to talk channel. You will only be able to add members that belong to this site to the push to talk channel. This field is required only if the [multiple sites](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) option has been enabled for the account.
                          example: vkBoHKaRTxeBiTLRsdEwTQ
                        site_name:
                          type: string
                          description: The name of the site to which the private directory belongs. This field is required only if the [multiple sites](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) option has been enabled for the account.
                          example: sample site
        '400':
          description: "**HTTP Status Code:** `400` <br>\n Bad Request  \n\n **Error Code:** `2001` <br>\n Account does not exist. <br>\n**Error Code:** `8001` <br>\n Site does not exist: {siteId} <br>\n"
        '429':
          description: "**HTTP Status Code:** `429` <br>\n Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/). \n\n "
      security:
      - openapi_oauth:
        - phone:read:admin
        - phone:read:list_private_directory_members:admin
        openapi_authorization: []
      x-extensions:
        x-permissions: []
        x-macro-scopes:
        - phone:read:admin
        x-granular-scopes:
        - phone:read:list_private_directory_members:admin
    post:
      tags:
      - Private Directory
      summary: Add members to a private directory
      description: 'Adds members to a [private directory](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0063992).


        **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`


        **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:private_directory_member:admin`


        **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`'
      operationId: addMembersToAPrivateDirectory
      requestBody:
        content:
          application/json:
            schema:
              required:
              - members
              type: object
              properties:
                site_id:
                  type: string
                  description: The unique identifier of the [site](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) that you would like to use for the private directory. You will only be able to add members that belong to this site to the private directory. This field is required only if the [multiple sites](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) option has been enabled for the account.
                  example: vkBoHKaRTxeBiTLRsdEwTQ
                members:
                  maxItems: 1000
                  type: array
                  items:
                    required:
                    - extension_id
                    - searchable_on_web_portal
                    type: object
                    properties:
                      extension_id:
                        type: string
                        description: The member's extension ID.
                        example: JpjPXizWTz-l35tFRUK3Gg
                      searchable_on_web_portal:
                        type: string
                        description: 'The value indicates who can have access to this member. The valid value is: * everybody * admins_only * nobody'
                        example: everybody
                        enum:
                        - everybody
                        - admins_only
                        - nobody
      responses:
        '201':
          description: "**HTTP Status Code:** `201` **Created** \n\nMembers added successfully."
        '400':
          description: "**HTTP Status Code:** `400` <br>\n Bad Request  \n\n **Error Code:** `2001` <br>\n Account does not exist. <br>\n**Error Code:** `8001` <br>\n Site does not exist: {siteId}. <br>\n**Error Code:** `405` <br>\n The number of items for members must not exceed 1,000. <br>\n"
        '429':
          description: "**HTTP Status Code:** `429` <br>\n Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/). \n\n "
      security:
      - openapi_oauth:
        - phone:write:admin
        - phone:write:private_directory_member:admin
        openapi_authorization: []
      x-extensions:
        x-permissions: []
        x-macro-scopes:
        - phone:write:admin
        x-granular-scopes:
        - phone:write:private_directory_member:admin
  /phone/private_directory/members/{extensionId}:
    delete:
      tags:
      - Private Directory
      summary: Remove a member from a private directory
      description: 'Removes a member from a [private directory](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0063992).


        **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`


        **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:delete:private_directory_member:admin`


        **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`'
      operationId: removeAMemberFromAPrivateDirectory
      parameters:
      - name: extensionId
        in: path
        description: The member's extension ID.
        required: true
        schema:
          type: string
          example: JpjPXizWTz-l35tFRUK3Gg
      - name: site_id
        in: query
        description: The unique identifier of the [site](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) that you would like to use for the private directory. This field is required only if the multiple sites option has been enabled for the account.
        required: false
        schema:
          type: string
          example: vkBoHKaRTxeBiTLRsdEwTQ
      responses:
        '204':
          description: '**HTTP Status Code:** `204` **No Content**


            A member was removed successfully.'
        '400':
          description: "**HTTP Status Code:** `400` <br>\n Bad Request  \n\n **Error Code:** `2001` <br>\n Account does not exist. <br>\n**Error Code:** `8001` <br>\n Site does not exist: {siteId}. <br>\n"
        '404':
          description: "**HTTP Status Code:** `404` <br>\n Not Found  \n\n **Error Code:** `404` <br>\n Extension does not exist: {extensionId} <br>\n**Error Code:** `404` <br>\n Extension does not exist in the private directory: {extensionId}. <br>\n"
        '429':
          description: "**HTTP Status Code:** `429` <br>\n Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/). \n\n "
      security:
      - openapi_oauth:
        - phone:write:admin
        - phone:delete:private_directory_member:admin
        openapi_authorization: []
      x-extensions:
        x-permissions: []
        x-macro-scopes:
        - phone:write:admin
        x-granular-scopes:
        - phone:delete:private_directory_member:admin
    patch:
      tags:
      - Private Directory
      summary: Update a private directory member
      description: 'Updates a member of a [private directory](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0063992).


        **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:write:admin`


        **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `phone:update:private_directory_member:admin`


        **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`'
      operationId: updateAPrivateDirectoryMember
      parameters:
      - name: extensionId
        in: path
        description: The member's extension ID.
        required: true
        schema:
          type: string
          example: JpjPXizWTz-l35tFRUK3Gg
      requestBody:
        content:
          application/json:
            schema:
              required:
              - searchable_on_web_portal
              type: object
              properties:
                site_id:
                  type: string
                  description: The unique identifier of the [site](https://support.zoom.us/hc/en-us/articles/360020809672-Managing-multiple-sites) that you would like to use for the private directory. This field is required only if the multiple sites option has been enabled for the account.
                  example: vkBoHKaRTxeBiTLRsdEwTQ
                searchable_on_web_portal:
                  type: string
                  description: 'The value indicates who can access this member. The valid value is:

                    * everybody

                    * admins_only

                    * nobody'
                  example: everybody
                  enum:
                  - everybody
                  - admins_only
                  - nobody
      responses:
        '204':
          description: "**HTTP Status Code:** `204` **No Content** \n\nMembers updated successfully."
        '400':
          description: "**HTTP Status Code:** `400` <br>\n Bad Request  \n\n **Error Code:** `2001` <br>\n Account does not exist. <br>\n**Error Code:** `8001` <br>\n Site does not exist: {siteId}. <br>\n"
        '404':
          description: "**HTTP Status Code:** `404` <br>\n Not Found  \n\n **Error Code:** `404` <br>\n Extension does not exist: {extensionId} <br>\n**Error Code:** `404` <br>\n Extension does not exist in the private directory: {extensionId}. <br>\n"
        '429':
          description: "**HTTP Status Code:** `429` <br>\n Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/). \n\n "
      security:
      - openapi_oauth:
        - phone:write:admin
        - phone:update:private_directory_member:admin
        openapi_authorization: []
      x-extensions:
        x-permissions: []
        x-macro-scopes:
        - phone:write:admin
        x-granular-scopes:
        - phone:update:private_directory_member:admin
components:
  securitySchemes:
    openapi_authorization:
      type: apiKey
      name: Authorization
      in: header
    openapi_oauth:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: /
          tokenUrl: ''
          refreshUrl: ''
          scopes:
            phone:read:admin: phone:read:admin
            phone:read:list_account_settings:admin: phone:read:list_account_settings:admin
            phone:write:admin: phone:write:admin
            phone:write:customized_number:admin: phone:write:customized_number:admin
            phone:read:list_customized_number:admin: phone:read:list_customized_number:admin
            phone:delete:customized_number:admin: phone:delete:customized_number:admin
            phone:write:alert_setting:admin: phone:write:alert_setting:admin
            phone:read:list_alert_settings:admin: phone:read:list_alert_settings:admin
            phone:read:alert_setting:admin: phone:read:alert_setting:admin
            phone:patch:alert_setting:admin: phone:patch:alert_setting:admin
            phone:delete:alert_setting:admin: phone:delete:alert_setting:admin
            phone:read: phone:read
            phone:read:audio: phone:read:audio
            phone:read:audio:admin: phone:read:audio:admin
            phone:write: phone:write
            phone:delete:audio: phone:delete:audio
            phone:delete:audio:admin: phone:delete:audio:admin
            phone:update:audio: phone:update:audio
            phone:update:audio:admin: phone:update:audio:admin
            phone:read:list_audios: phone:read:list_audios
            phone:read:list_audios:admin: phone:read:list_audios:admin
            phone:write:audio: phone:write:audio
            phone:write:audio:admin: phone:write:audio:admin
            phone:write:batch_audios: phone:write:batch_audios
            phone:write:batch_audios:admin: phone:write:batch_audios:admin
            phone:read:list_auto_receptionists:admin: phone:read:list_auto_receptionists:admin
            phone:write:auto_receptionist:admin: phone:write:auto_receptionist:admin
            phone:delete:auto_receptionist:admin: phone:delete:auto_receptionist:admin
            phone:update:auto_receptionist:admin: phone:update:auto_receptionist:admin
            phone:read:auto_receptionist:admin: phone:read:auto_receptionist:admin
            phone:read:auto_receptionist_call_handling_setting:admin: phone:read:auto_receptionist_call_handling_setting:admin
            phone:update:auto_receptionist_call_handling_setting:admin: phone:update:auto_receptionist_call_handling_setting:admin
            phone:delete:auto_receptionist_number:admin: phone:delete:auto_receptionist_number:admin
            phone:write:auto_receptionist_number:admin: phone:write:auto_receptionist_number:admin
            phone:update:auto_receptionist_policy:admin: phone:update:auto_receptionist_policy:admin
            phone:read:auto_receptionist_policy:admin: phone:read:auto_receptionist_policy:admin
            phone:delete:auto_receptionist_policy:admin: phone:delete:auto_receptionist_policy:admin
            phone:write:auto_receptionist_policy:admin: phone:write:auto_receptionist_policy:admin
            phone:read:auto_receptionist_setting:admin: phone:read:auto_receptionist_setting:admin
            phone:write:auto_receptionist_setting:admin: phone:write:auto_receptionist_setting:admin
            phone:update:auto_receptionist_setting:admin: phone:update:auto_receptionist_setting:admin
            phone:delete:auto_receptionist_setting:admin: phone:delete:auto_receptionist_setting:admin
            phone:read:list_billing_accounts:admin: phone:read:list_billing_accounts:admin
            phone:read:billing_account:admin: phone:read:billing_account:admin
            phone:write:blocked_list:admin: phone:write:blocked_list:admin
            phone:read:list_blocked_lists:admin: phone:read:list_blocked_lists:admin
            phone:delete:blocked_list:admin: phone:delete:blocked_list:admin
            phone:read:blocked_list:admin: phone:read:blocked_list:admin
            phone:update:blocked_list:admin: phone:update:blocked_list:admin
            phone:read:list_call_handling_settings:admin: phone:read:list_call_handling_settings:admin
            phone:update:call_handling_setting:admin: phone:update:call_handling_setting:admin
            phone:delete:call_handling_setting:admin: phone:delete:call_handling_setting:admin
            phone:write:call_handling_setting:admin: phone:write:call_handling_setting:admin
            phone_call_log:read: phone_call_log:read
            phone_call_log:read:admin: phone_call_log:read:admin
            phone:read:call_log:admin: phone:read:call_log:admin
            phone:read:list_call_logs:admin: phone:read:list_call_logs:admin
            phone:update:call_log:admin: phone:update:call_log:admin
            phone:read:ai_call_summary: phone:read:ai_call_summary
            phone:read:ai_call_summary:admin: phone:read:ai_call_summary:admin
            phone:read:list_call_logs: phone:read:list_call_logs
            phone_call_log:write: phone_call_log:write
            phone_call_log:write:admin: phone_call_log:write:admin
            phone:delete:call_log: phone:delete:call_log
            phone:delete:call_log:admin: phone:delete:call_log:admin
            phone:read:list_call_queues:admin: phone:read:list_call_queues:admin
            phone:write:call_queue:admin: phone:write:call_queue:admin
            phone:delete:call_queue:admin: phone:delete:call_queue:admin
            phone:update:call_queue:admin: phone:update:call_queue:admin
            phone:read:call_queue:admin: phone:read:call_queue:admin
            phone:read:call_queue_call_handling_setting:admin: phone:read:call_queue_call_handling_setting:admin
            phone:update:call_queue_call_handling_setting:admin: phone:update:call_queue_call_handling_setting:admin
            phone:read:call_queue_custom_group:admin: phone:read:call_queue_custom_group:admin
            phone:write:call_queue_custom_group:admin: phone:write:call_queue_custom_group:admin
            phone:update:call_queue_custom_group:admin: phone:update:call_queue_custom_group:admin
            phone:delete:call_queue_custom_group:admin: phone:delete:call_queue_custom_group:admin
            phone:delete:call_queue_custom_group:master: phone:delete:call_queue_custom_group:master
            phone:master: phone:master
            phone:read:call_queue_custom_group:master: phone:read:call_queue_custom_group:master
            phone:write:call_queue_custom_group_member:admin: phone:write:call_queue_custom_group_member:admin
            phone:delete:call_queue_custom_group_member:admin: phone:delete:call_queue_custom_group_member:admin
            phone:write:call_queue_member:admin: phone:write:call_queue_member:admin
            phone:delete:call_queue_member:admin: phone:delete:call_queue_member:admin
            phone:read:list_call_queue_members:admin: phone:read:list_call_queue_members:admin
            phone:write:call_queue_number:admin: phone:write:call_queue_number:admin
            phone:delete:call_queue_number:admin: phone:delete:call_queue_number:admin
            phone:read:call_queue_policy:admin: phone:read:call_queue_policy:admin
            phone:update:call_queue_policy:admin: phone:update:call_queue_policy:admin
            phone:write:call_queue_policy:admin: phone:write:call_queue_policy:admin
            phone:delete:call_queue_policy:admin: phone:delete:call_queue_policy:admin
            phone:read:list_call_queue_recordings:admin: phone:read:list_call_queue_recordings:admin
            phone:read:call_queue_setting:admin: phone:read:call_queue_setting:admin
            phone:write:call_queue_setting:admin: phone:write:call_queue_setting:admin
            phone:delete:call_queue_setting:admin: phone:delete:call_queue_setting:admin
            phone:update:call_queue_setting:admin: phone:update:call_queue_setting:admin
            phone:update:carrier_number:admin: phone:update:carrier_number:admin
            phone:write:carrier_number:admin: phone:write:carrier_number:admin
            phone:read:list_carrier_numbers:admin: phone:read:list_carrier_numbers:admin
            phone:delete:carrier_number:admin: phone:delete:carrier_number:admin
            phone:write:common_area:admin: phone:write:common_area:admin
            phone:read:common_area:admin: phone:read:common_area:admin
            phone:read:list_common_area_activation_codes:admin: phone:read:list_common_area_activation_codes:admin
            phone:write:apply_template_to_common_areas:admin: phone:write:apply_template_to_common_areas:admin
            phone:delete:common_area:admin: phone:delete:common_area:admin
            phone:update:common_area:admin: phone:update:common_area:admin
            phone:read:common_area_call_handling_setting:admin: phone:read:common_area_call_handling_setting:admin
            phone:update:common_area_call_handling_setting:admin: phone:update:common_area_call_handling_setting:admin
            phone:write:common_area_calling_plan:admin: phone:write:common_area_calling_plan:admin
            phone:delete:common_area_calling_plan:admin: phone:delete:common_area_calling_plan:admin
            phone:write:common_area_number:admin: phone:write:common_area_number:admin
            phone:delete:common_area_number:admin: phone:delete:common_area_number:admin
            phone:read:list_common_area_settings:admin: phone:read:list_common_area_settings:admin
            phone:update:common_area_setting:admin: phone:update:common_area_setting:admin
            phone:delete:common_area_setting:admin: phone:delete:common_area_setting:admin
            phone:write:common_area_setting:admin: phone:write:common_area_setting:admin
            phone:read:call_qos:admin: phone:read:call_qos:admin
            phone:read:default_emergency_address:admin: phone:read:default_emergency_address:admin
            phone:read:detectable_personal_location:admin: phone:read:detectable_personal_location:admin
            phone:read:location_sharing_permission:admin: phone:read:location_sharing_permission:admin
            phone:read:nomadic_emergency_services:admin: phone:read:nomadic_emergency_services:admin
            phone:read:realtime_location_devices:admin: phone:read:realtime_location_devices:admin
            phone:read:realtime_location_users:admin: phone:read:realtime_location_users:admin
            phone:read:list_tracked_locations:admin: phone:read:list_tracked_locations:admin
            phone:update:device_line_keys: phone:update:device_line_keys
            phone:update:device_line_keys:admin: phone:update:device_line_keys:admin
            phone:read:device_line_keys: phone:read:device_line_keys
            phone:read:device_line_keys:admin: phone:read:device_line_keys:admin
            phone:delete:directory:admin: phone:delete:directory:admin
            phone:read:directory:admin: phone:read:directory:admin
            phone:write:directory:admin: phone:write:directory:admin
            phone:write:emergency_address:admin: phone:write:emergency_address:admin
            phone:read:list_emergency_addresses:admin: phone:read:list_emergency_addresses:admin
            phone:read:emergency_address:admin: phone:read:emergency_address:admin
            phone:delete:emergency_address:admin: phone:delete:emergency_address:admin
            phone:update:emergency_address:admin: phone:update:emergency_address:admin
            phone:write:batch_emergency_locations:admin: phone:write:batch_emergency_locations:admin
            phone:read:list_emergency_locations:admin: phone:read:list_emergency_locations:admin
            phone:write:emergency_location:admin: phone:write:emergency_location:admin
            phone:read:emergency_location:admin: phone:read:emergency_location:admin
            phone:update:emergency_location:admin: phone:update:emergency_location:admin
            phone:delete:emergency_location:admin: phone:delete:emergency_location:admin
            phone:write:external_contact:admin: phone:write:external_contact:admin
            phone:read:list_external_contacts:admin: phone:read:list_external_contacts:admin
            phone:delete:external_contact:admin: phone:delete:external_contact:admin
            phone:read:external_contact:admin: phone:read:external_contact:admin
            phone:update:external_contact:admin: phone:update:external_contact:admin
            phone:write:send_fax: phone:write:send_fax
            phone:write:send_fax:admin: phone:write:send_fax:admin
            phone:read:list_fax_log: phone:read:list_fax_log
            phone:read:list_fax_log:admin: phone:read:list_fax_log:admin
            phone:read:fax_log:admin: phone:read:fax_log:admin
            phone:read:fax_log: phone:read:fax_log
            phone:delete:fax_log: phone:delete:fax_log
            phone:delete:fax_log:admin: phone:delete:fax_log:admin
            phone:read:list_firmware_update_rules:admin: phone:read:list_firmware_update_rules:admin
            phone:write:firmware_update_rule:admin: phone:write:firmware_update_rule:admin
            phone:delete:firmware_update_rule:admin: phone:delete:firmware_update_rule:admin
            phone:update:firmware_update_rule:admin: phone:update:firmware_update_rule:admin
            phone:read:firmware_update_rule:admin: phone:read:firmware_update_rule:admin
            phone:read:list_firmwares:admin: phone:read:list_firmwares:admin
            phone:read:list_call_pickup_groups:admin: phone:read:list_call_pickup_groups:admin
            phone:write:call_pickup_group:admin: phone:write:call_pickup_group:admin
            phone:read:call_pickup_group:admin: phone:read:call_pickup_group:admin
            phone:update:call_pickup_group:admin: phone:update:call_pickup_group:admin
            phone:delete:call_pickup_group:admin: phone:delete:call_pickup_group:admin
            phone:write:call_pickup_group_member:admin: phone:write:call_pickup_group_member:admin
            phone:read:call_pickup_group_member:admin: phone:read:call_pickup_group_member:admin
            phone:delete:call_pickup_group_member:admin: phone:delete:call_pickup_group_member:admin
            phone:update:group_policy:admin: phone:update:group_policy:admin
            phone:read:group_policy:admin: phone:read:group_policy:admin
            phone:read:group_setting:admin: phone:read:group_setting:admin
            phone:read:auto_receptionist_ivr:admin: phone:read:auto_receptionist_ivr:admin
            phone:update:auto_receptionist_ivr:admin: phone:update:auto_receptionist_ivr:admin
            phone:read:list_extension_inbound_block_rules:admin: phone:read:list_extension_inbound_block_rules:admin
            phone:read:list_extension_inbound_block_rules: phone:read:list_extension_inbound_block_rules
            phone:delete:extension_inbound_block_rule:admin: phone:delete:extension_inbound_block_rule:admin
            phone:delete:extension_inbound_block_rule: phone:delete:extension_inbound_block_rule
            phone:write:extension_inbound_block_rule:admin: phone:write:extension_inbound_block_rule:admin
            phone:write:extension_inbound_block_rule: phone:write:extension_inbound_block_rule
            phone:delete:extension_inbound_block_rule_stat:admin: phone:delete:extension_inbound_block_rule_stat:admin
            phone:read:list_extension_inbound_block_rules_stat:admin: phone:read:list_extension_inbound_block_rules_stat:admin
            phone:update:inbound_blocked_for_all:admin: phone:update:inbound_blocked_for_all:admin
            phone:delete:inbound_block_rule:admin: phone:delete:inbound_block_rule:admin
            phone:read:list_inbound

# --- truncated at 32 KB (49 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/zoom-phone/refs/heads/main/openapi/zoom-phone-private-directory-api-openapi.yml