Here’s a python script which replicates the issue:
import requests
API_URL = "https://api.zoom.us/v2/"
USER_ID = "[redacted]"
PERSONAL_JWT_TOKEN = "[redacted]"
ZOOMROOM_JWT_TOKEN = "[redacted]"
MEETING_PASSWORD = "w46!(i{74n"
ZOOM_ROOM_ID = "[redacted]"
def create_meeting():
body = {
"topic": "Test Meeting",
"type": 1,
"password": MEETING_PASSWORD,
}
res = requests.post(
f"{API_URL}users/{USER_ID}/meetings",
json=body,
headers={"Authorization": f"Bearer {PERSONAL_JWT_TOKEN}"},
)
return res.json()
def zoom_room_join_meeting(meeting_id):
body = {
"jsonrpc": "2.0",
"method": "join",
"params": {"meeting_number": meeting_id, "password": MEETING_PASSWORD},
}
res = requests.post(
f"{API_URL}rooms/{ZOOM_ROOM_ID}/meetings",
json=body,
headers={"Authorization": f"Bearer {ZOOMROOM_JWT_TOKEN}"},
)
return res
meeting = create_meeting()
res = zoom_room_join_meeting(meeting["id"])
print(res.content)
where:
-
USER_ID
is my user ID as returned from GET /users
using a JWT token from my personal account.
-
PERSONAL_JWT_TOKEN
is a JWT token generated from the app marketplace on a test app created on my personal account.
-
ZOOMROOM_JWT_TOKEN
is a JWT token generated from the app marketpalce on the Zoom Room Joiner app owned by the account which also owns the Zoom Rooms.
-
MEETING_PASSWORD
is an example of a password that has been generated automatically by the Zoom client when a user has created a meeting in the past.
-
ZOOM_ROOM_ID
is the ID of the Zoom Room I’m attempting to make join, as returned by GET /rooms
using the Zoom Room Joiner JWT token.
When MEETING_PASSWORD
is w46!(i{74n
, the output of the script is:
b'{"jsonrpc":"2.0","error":{"code":32602,"message":"Validation Failed.","data":[{"field":"params.password","message":"Invalid field."}]}}'
and the room fails to join.
When MEETING_PASSWORD
is test123
, the output of the script is:
b'{"jsonrpc":"2.0","result":{"room_id":"[redacted]","send_at":"2020-06-11T09:25:03Z"},"id":"a138c758-a43d-487a-bf5f-dfc6df7a0b75"}'
and the room joins successfully.
Hope that’s useful! Let me know if I can provide any more details.