Under Users → Update user’s profile → extension_number
When I try to update the extension it gives an error code back of 200. The response message is blank and the value does not get updated.
I also tried updating other fields in the user profile and they will not update either. I can not get it to return any other response code other then 200.
Can anyone see if you can duplicate this issue on your side?
I am using Python 3 and pyjwt request.
This is my code:
def changeExtension(email, extension):
id = getUserID(email)
if id:
settings = {‘extension_number’: extension}
url = ‘https://api.zoom.us/v2/phones/users/’ + id
r = requests.patch(url, headers=API_HEADERS, data=json.dumps(settings))
Thanks for taking a look and the code snip.
To answer your questions:
No
I am using JWT.
Our use case for using the API is to maintain and provision our users for Zoom Phone migration. After reading the OAuth documentation, I don’t believe it fits our needs since we just need system access.
Are you able to try using a JWT token to modify the extension of a user?
Here is my code:
#!/usr/bin/env python3
# provision_zoom_phone_users.py
# API
# Zoom: https://marketplace.zoom.us/docs/api-reference/phone/methods
import math
from textwrap import indent
from unittest.mock import patch
from wsgiref.util import setup_testing_defaults
from requests import get
import jwt
import requests
import json
import urllib3
from time import time
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# TEST API key and API secret
API_KEY = 'YOUR_KEY'
API_SEC = 'YOUR_SEC'
# GLOBALS
LIMIT = 300
NEXT_TOKEN = ''
#############################################
def main_request(baseurl, parm_name1, parm_value1, parm_name2, parm_value2):
parameters = {
parm_name1: parm_value1,
parm_name2: parm_value2
}
data = requests.get(baseurl, headers=API_HEADERS, params=parameters, verify=False).json()
global NEXT_TOKEN
NEXT_TOKEN = data['next_page_token']
return data
def parse_json(response, field_name, dict_name):
datalist = []
for item in response[dict_name]:
if field_name in item:
item_list = {
'id': item['id'],
field_name: item[field_name]
}
datalist.append(item_list)
return datalist
def get_pages(response):
return math.ceil(response['total_records']/LIMIT)
def getZoomToken():
# Generate a token
# using the pyjwt library
token = jwt.encode({'iss': API_KEY, 'exp': time() + 5000},API_SEC,algorithm='HS256')
headers = {'authorization': 'Bearer %s' % token,'content-type': 'application/json'}
return headers
def getAllIDs(url, field, dict_name):
parsed_data = []
global NEXT_TOKEN
# First call to get page numbers then reset page token
NEXT_TOKEN = ''
data = main_request(url, '', '', 'next_page_token', NEXT_TOKEN)
NEXT_TOKEN = ''
for x in range(1,get_pages(data)+1):
parsed_data.extend(
parse_json(
main_request(url, '', '', 'next_page_token', NEXT_TOKEN),
field,
dict_name
))
return parsed_data
#############################################
def getAllUserIDs():
return getAllIDs("https://api.zoom.us/v2/users?page_size="+str(LIMIT), 'email', 'users')
def getUserID(email):
for i in USER_IDS:
if i['email'] == email:
return i['id']
def changeExtension(email, extension):
id = getUserID(email)
if id:
settings = {'extension_number': extension}
API_PATCH_URL = 'https://api.zoom.us/v2/phones/users/' + id
r = requests.post(API_PATCH_URL, headers=API_HEADERS, data=json.dumps(settings))
print(r.status_code)
print(r.text)
API_HEADERS = getZoomToken()
USER_IDS = getAllUserIDs()
changeExtension("YOUR_EMAIL", '96666')