Description
Hi
Recently, since around January 5th, we’ve had some issues when scheduling meetings using the api.
The issue occurs when start_time parameter is already in the past.
For example, suppose we are scheduling a recurring meeting to occur every Friday at 10AM and we give start_time as 2021-01-18T10:00:00
( note here that the date 18th is a Monday, and at the time of this post is already in the past. So the first occurence should be 2021-01-22T10:00:00
).
In the past, the meetings would be scheduled properly with the first date being the first available Friday and at 10AM. But now, it being scheduled on the correct date, but incorrect time. Specifically, the current server time is being taken as the time part of start_time (I will post example json data).
That is, suppose time now is 2021-01-19T16:31:00Z
(created_at) (this is just an example), then the start_time in the occurences becomes <the_recurring_day_date> + <created_at_time>, so the first occurence becomes 2021-01-22T16:31:00Z
instead of the expected 2021-01-22T10:00:00
. This was not how it was working in the past, the time wouldn’t get modified like this. We started noticing this issue this January
Which App Type (OAuth / Chatbot / JWT / Webhook)?
We are using JWT
Which Endpoint/s?
The issue is in the create meeting endpoint
“https://api.zoom.us/v2/users/{userId}/meetings”
How To Reproduce (If applicable)
- Just create a recurring meeting with the start_time in the past using the endpoint I mentioned above and check the response
Additional context
Here are some sample requests and responses from our logs
This is a past example, from when it was working fine
The request was made at 2020-11-07 13:52:06 Asia/Kolkata (+05:30)
( 2020-11-07 08:22:06.0 UTC (+00:00)
)
This was working correctly
Request
{"topic":"Meeting on Saturday at UK time 10.30 am and Indian time 3.00 pm.","type":8,"start_time":"2020-10-31T15:00:00","duration":"60","timezone":"Asia\/Kolkata","settings":{"host_video":true,"participant_video":true,"join_before_host":true,"approval_type":2,"auto_recording":"cloud","meeting_authentication":false,"contact_name":"Tom"},"recurrence":{"type":2,"weekly_days":"7","end_times":8}}
Response
{"status":true,"info":{"uuid":"secret","id":1234567890,"host_id":"secret","host_email":"secret@gmail.com","topic":"Meeting on Saturday at UK time 10.30 am and Indian time 3.00 pm.","type":8,"status":"waiting","timezone":"Asia\/Kolkata","created_at":"2020-11-07T08:22:06Z","start_url":"ImHidingThisUrlForSecurityReasons","join_url":"ImHidingThisUrlForSecurityReasons","occurrences":[{"occurrence_id":"secret","start_time":"2020-11-07T09:30:00Z","duration":60,"status":"available"},{"occurrence_id":"secret","start_time":"2020-11-14T09:30:00Z","duration":60,"status":"available"},{"occurrence_id":"secret","start_time":"2020-11-21T09:30:00Z","duration":60,"status":"available"},{"occurrence_id":"secret","start_time":"2020-11-28T09:30:00Z","duration":60,"status":"available"},{"occurrence_id":"secret","start_time":"2020-12-05T09:30:00Z","duration":60,"status":"available"},{"occurrence_id":"secret","start_time":"2020-12-12T09:30:00Z","duration":60,"status":"available"},{"occurrence_id":"secret","start_time":"2020-12-19T09:30:00Z","duration":60,"status":"available"}],"settings":{"host_video":true,"participant_video":true,"cn_meeting":false,"in_meeting":false,"join_before_host":true,"mute_upon_entry":false,"watermark":false,"use_pmi":false,"approval_type":2,"audio":"both","auto_recording":"cloud","enforce_login":false,"enforce_login_domains":"","alternative_hosts":"","close_registration":false,"show_share_button":false,"allow_multiple_devices":false,"registrants_confirmation_email":true,"waiting_room":false,"request_permission_to_unmute_participants":false,"global_dial_in_countries":["US"],"global_dial_in_numbers":[{"country_name":"US","number":"secret","type":"toll","country":"US"},{"country_name":"US","number":"secret","type":"toll","country":"US"},{"country_name":"US","number":"secret","type":"toll","country":"US"},{"country_name":"US","number":"secret","type":"toll","country":"US"},{"country_name":"US","number":"secret","type":"toll","country":"US"},{"country_name":"US","number":"secret","type":"toll","country":"US"},{"country_name":"US","number":"secret","type":"toll","country":"US"}],"registrants_email_notification":true,"meeting_authentication":false,"encryption_type":"enhanced_encryption"},"recurrence":{"type":2,"repeat_interval":1,"weekly_days":"7","end_times":8}}}
Now this is an example from this month
The request was sent at 2021-01-17 18:32:10 Asia/Kolkata (+05:30)
( 2021-01-17 13:02:10.0 UTC (+00:00)
)
This is not working correctly, as instead of first occurence being at 2021-01-23T21:15:00
, it got scheduled for 2021-01-23T13:02:10
( 2021-01-23 18:32:10.0 Asia/Kolkata (+05:30)
)
Request
{"topic":"Meeting on Saturday at UK time 3.30 pm and Indian time 9.15 pm.","type":8,"start_time":"2020-12-05T21:15:00","duration":"60","timezone":"Asia\/Kolkata","settings":{"host_video":true,"participant_video":true,"join_before_host":true,"approval_type":2,"auto_recording":"cloud","meeting_authentication":false,"contact_name":"Jemil"},"recurrence":{"type":2,"weekly_days":"7","end_times":12}}
Response
{ "status": true, "info": { "uuid": "secret", "id": 987654321012, "host_id": "secret", "host_email": "secret@gmail.com", "topic": "Meeting on Saturday at UK time 3.30 pm and Indian time 9.15 pm.", "type": 8, "status": "waiting", "timezone": "Asia\/Kolkata", "created_at": "2021-01-17T13:02:10Z", "start_url": "secret", "join_url": "secret", "occurrences": [ { "occurrence_id": "secret", "start_time": "2021-01-23T13:02:00Z", "duration": 60, "status": "available" }, { "occurrence_id": "secret", "start_time": "2021-01-30T13:02:00Z", "duration": 60, "status": "available" }, { "occurrence_id": "secret", "start_time": "2021-02-06T13:02:00Z", "duration": 60, "status": "available" }, { "occurrence_id": "secret", "start_time": "2021-02-13T13:02:00Z", "duration": 60, "status": "available" }, { "occurrence_id": "secret", "start_time": "2021-02-20T13:02:00Z", "duration": 60, "status": "available" }, { "occurrence_id": "secret", "start_time": "2021-02-27T13:02:00Z", "duration": 60, "status": "available" }, { "occurrence_id": "secret", "start_time": "2021-03-06T13:02:00Z", "duration": 60, "status": "available" }, { "occurrence_id": "secret", "start_time": "2021-03-13T13:02:00Z", "duration": 60, "status": "available" }, { "occurrence_id": "secret", "start_time": "2021-03-20T13:02:00Z", "duration": 60, "status": "available" }, { "occurrence_id": "secret", "start_time": "2021-03-27T13:02:00Z", "duration": 60, "status": "available" }, { "occurrence_id": "secret", "start_time": "2021-04-03T13:02:00Z", "duration": 60, "status": "available" }, { "occurrence_id": "secret", "start_time": "2021-04-10T13:02:00Z", "duration": 60, "status": "available" } ], "settings": { "host_video": true, "participant_video": true, "cn_meeting": false, "in_meeting": false, "join_before_host": true, "jbh_time": 0, "mute_upon_entry": false, "watermark": false, "use_pmi": false, "approval_type": 2, "audio": "both", "auto_recording": "cloud", "enforce_login": false, "enforce_login_domains": "", "alternative_hosts": "", "close_registration": false, "show_share_button": false, "allow_multiple_devices": false, "registrants_confirmation_email": true, "waiting_room": false, "request_permission_to_unmute_participants": false, "global_dial_in_countries": [ "US" ], "global_dial_in_numbers": [ { "country_name": "US", "number": "secret", "type": "toll", "country": "US" }, { "country_name": "US", "number": "secret", "type": "toll", "country": "US" }, { "country_name": "US", "number": "secret", "type": "toll", "country": "US" }, { "country_name": "US", "number": "secret", "type": "toll", "country": "US" }, { "country_name": "US", "number": "secret", "type": "toll", "country": "US" }, { "country_name": "US", "number": "secret", "type": "toll", "country": "US" }, { "country_name": "US", "number": "secret", "type": "toll", "country": "US" } ], "registrants_email_notification": true, "meeting_authentication": false, "encryption_type": "enhanced_encryption", "approved_or_denied_countries_or_regions": { "enable": false } }, "recurrence": { "type": 2, "repeat_interval": 1, "weekly_days": "7", "end_times": 12 } } }