Recurrence end_date_time timezone

Description
I have the following code to create recurrence meetings from 14/08/2020 (Lima time) to 28/08/2020 each 7 days… so I hope 3 created meetings (14/08/2020, 21/08/2020 and 28/08/2020) :

$response = $this->client->request(‘POST’, ‘/v2/users/me/meetings’, [
“headers” => [
“Authorization” => “Bearer $accessToken”
],
‘json’ => [
“topic” => “Borrar Recurrencia”,
“type” => 8,
“start_time” => ‘2020-08-14T21:30:00’,
“timezone” => “America/Lima”,
“duration” => 30,
“password” => substr(base64_encode(date(‘HisYmd’)), 0, 8),
“recurrence” => [
“type” => 1,
“repeat_interval” => 7,
“end_date_time” => ‘2020-08-28T23:59:59’,
]
],
]);

        $data = json_decode($response->getBody(), true);
        return $data;

But this only create one meeting: 14/08/2020

Error
And the response is this:

Array ( [uuid] => … [id] => *********** [host_id] => … [topic] => Borrar Recurrencia [type] => 8 [status] => waiting [timezone] => America/Lima [created_at] => 2020-08-07T22:06:10Z [start_url] => … [join_url] => h… [password] => … [h323_password] => … [pstn_password] => … [encrypted_password] => … [occurrences] => Array ( [0] => Array ( [occurrence_id] => 1597458600000 [start_time] => 2020-08-15T02:30:00Z [duration] => 30 [status] => available ) ) [settings] => Array ( [host_video] => [participant_video] => [cn_meeting] => [in_meeting] => [join_before_host] => [mute_upon_entry] => 1 [watermark] => [use_pmi] => [approval_type] => 2 [audio] => both [auto_recording] => none [enforce_login] => [enforce_login_domains] => [alternative_hosts] => [close_registration] => [registrants_confirmation_email] => 1 [waiting_room] => 1 [request_permission_to_unmute_participants] => [global_dial_in_countries] => Array ( [0] => US ) [global_dial_in_numbers] => Array ( [0] => Array ( [country_name] => US [number] => +1 9294362866 [type] => toll [country] => US ) [1] => Array ( [country_name] => US [number] => +1 2532158782 [type] => toll [country] => US ) [2] => Array ( [country_name] => US [number] => +1 3017158592 [type] => toll [country] => US ) [3] => Array ( [country_name] => US [number] => +1 3126266799 [type] => toll [country] => US ) [4] => Array ( [country_name] => US [number] => +1 3462487799 [type] => toll [country] => US ) [5] => Array ( [country_name] => US [number] => +1 6699006833 [type] => toll [country] => US ) ) [registrants_email_notification] => 1 [meeting_authentication] => ) [recurrence] => Array ( [type] => 1 [repeat_interval] => 7 [end_date_time] => 2020-08-15T03:06:00Z ) )

Which App Type (OAuth / Chatbot / JWT / Webhook)?
OAuth

How To Reproduce (If applicable)
Steps to reproduce the behavior:
2. See error

Screenshots (If applicable)

Additional context
I’ve tested the following timezone:

‘json’ => [
“topic” => “Borrar Recurrencia”,
“type” => 8,
“start_time” => ‘2020-08-14T21:30:00Z’,
“timezone” => “America/Lima”,
“duration” => 30,
“password” => substr(base64_encode(date(‘HisYmd’)), 0, 8),
“recurrence” => [
“type” => 1,
“repeat_interval” => 7,
“end_date_time” => ‘2020-08-28T23:59:59Z’,
]
],

With the “Z” at the final, it generates the 3 meetings but with 4:30PM, no 9:30PM … why?

Regards

*This post has been edited to remove any meeting / webinar IDs

Hey @csotelo,

Can you please share the response body in full JSON format so I can debug?

Thanks,
Tommy

Hi Tommy,

With these parameters:

$response = $this->client->request('POST', '/v2/users/me/meetings', [
                "headers" => [
                    "Authorization" => "Bearer $accessToken"
                ],
                'json' => [
                    "topic" => $input['topic'],
                    "type" => 8,
                    "start_time" => '2020-08-14T21:30:00',
					"timezone" => "America/Lima",
                    "duration" => $input['duration'], // 30 mins
                    "password" => substr(base64_encode(date('HisYmd')), 0, 8),
					"recurrence" => [
						"type" => 1,
						"repeat_interval" => 7,
						"end_date_time" => '2020-08-28T23:59:59',
                    ]
                ],
            ]);

This is the JSON response:

{“uuid”:“JtZqCnTASG6Lwr/ukNkf0Q==”,“id”:***********,“host_id”:“Bp4nGKo7SqWwCxnBhGvHrw”,“topic”:“Borrar Recurrencia”,“type”:8,“status”:“waiting”,“timezone”:“America/Lima”,“created_at”:“2020-08-10T13:45:29Z”,“start_url”:“https://sansilvestre-edu-pe.zoom.us/s/99990011850?zak=eyJ6bV9za20iOiJ6bV9vMm0iLCJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJjbGllbnQiLCJ1aWQiOiJCcDRuR0tvN1NxV3dDeG5CaEd2SHJ3IiwiaXNzIjoid2ViIiwic3R5IjoxLCJ3Y2QiOiJhdzEiLCJjbHQiOjAsInN0ayI6ImpsOXVRZG5USmhXLWt1bDFsb2lDbHhPNHlFR3FsbWhwcUJ5eVl5LUpVWFkuRWdJQUFBRnoySjV6cGdBQUhDQWdNbVZUUW1obFowSXdhMUJMUW1rMFNFVnVRbWRqVFhwVWJtdzBZV0ZhVWtzQURETkRRa0YxYjJsWlV6TnpQUU5oZHpFIiwiZXhwIjoxNTk3MDc0MzI5LCJpYXQiOjE1OTcwNjcxMjksImFpZCI6IllOQTRsLWp5U0VXLXVaQ3hjTzAzN1EiLCJjaWQiOiIifQ.9IYscT21g2UHpTapJBI0jCxRY7J9FqKgxEWii_fqVMQ”,“join_url”:“https://sansilvestre-edu-pe.zoom.us/j/99990011850?pwd=b0hQNGFmd0dyT1pFSTZDZ0lIWEVCZz09”,“password”:“MDg0NTI5”,“h323_password”:“17266990”,“pstn_password”:“17266990”,“encrypted_password”:“b0hQNGFmd0dyT1pFSTZDZ0lIWEVCZz09”,“occurrences”:[{“occurrence_id”:“1597458600000”,“start_time”:“2020-08-15T02:30:00Z”,“duration”:30,“status”:“available”}],“settings”:{“host_video”:false,“participant_video”:false,“cn_meeting”:false,“in_meeting”:false,“join_before_host”:false,“mute_upon_entry”:true,“watermark”:false,“use_pmi”:false,“approval_type”:2,“audio”:“both”,“auto_recording”:“none”,“enforce_login”:false,“enforce_login_domains”:“”,“alternative_hosts”:“”,“close_registration”:false,“registrants_confirmation_email”:true,“waiting_room”:true,“request_permission_to_unmute_participants”:false,“global_dial_in_countries”:[“US”],“global_dial_in_numbers”:[{“country_name”:“US”,“number”:“+1 2532158782”,“type”:“toll”,“country”:“US”},{“country_name”:“US”,“number”:“+1 3017158592”,“type”:“toll”,“country”:“US”},{“country_name”:“US”,“number”:“+1 3126266799”,“type”:“toll”,“country”:“US”},{“country_name”:“US”,“number”:“+1 3462487799”,“type”:“toll”,“country”:“US”},{“country_name”:“US”,“number”:“+1 6699006833”,“type”:“toll”,“country”:“US”},{“country_name”:“US”,“number”:“+1 9294362866”,“type”:“toll”,“country”:“US”}],“registrants_email_notification”:true,“meeting_authentication”:false},“recurrence”:{“type”:1,“repeat_interval”:7,“end_date_time”:“2020-08-17T18:45:00Z”}}

*This post has been edited to remove any meeting / webinar IDs

Hey @csotelo,

I just tested without setting the timezone and with the Z at the end of the start_time and end_date_time and it worked. You can convert GMT time to Peru time here: https://www.google.com/search?q=gmt+time+to+peru

Let me know if this creates 3 occurrences on the dates you want:

{
  "topic":"Recurring Test",
  "type":8,
  "start_time":"2020-08-14T21:30:00Z",
  "duration":30,
  "recurrence": {
    "type": 1,
    "repeat_interval": 7,
    "end_date_time": "2020-08-28T23:59:59Z"
  }
}

There might be a bug with the setting the timezone, I will ask our engineering team to look into this.

Thanks,
Tommy

1 Like

Thank you, works converting America/Lima time to GMT explicitly.

1 Like

You are welcome! :slight_smile:

Thanks for building with Zoom!

-Tommy

Hi @tommy,
I am running into this same issue. If we create a recurring meeting in the America/New York timezone that starts at 20:00 or later, the last occurrence is not created on the day of the end_date_time field. Did you find anything with the engineering team on this?
Thank you,
Jeff.

Hey @AVJeff,

Can you please share your request body JSON and your expected occurrence date output so I can debug?

Thanks,
Tommy

Hi @tommy,
If you send the following JSON, you will find that it creates a recurring meeting with 12 occurrences, the last one on December 2. However, if you then edit that meeting in the normal Zoom web site, don’t change anything, and then simply hit Save, it will change to the desired 13 occurrences with the last one on December 9. There is an example meeting ID on my account if you can see that.

{“topic”:“ZOOM-5001H-WEB Wed Lectures”,“type”:8,“start_time”:“2020-09-10T20:00:00”,“duration”:50,“timezone”:“America/New_York”,“recurrence”:{“type”:2,“repeat_interval”:1,“weekly_days”:“4”,“end_date_time”:“2020-12-09T23:59:59Z”},“settings”:{“host_video”:true,“participant_video”:false,“join_before_host”:false,“mute_upon_entry”:true,“auto_recording”:“cloud”}}

I’m wondering, since the end_date_time field has to be in UTC according to the documentation, how do I create a recurring meeting with the API in Eastern Time that creates all the appropriate occurrences and doesn’t require me to go into the web site and edit/save that meeting to get the last occurrence to appear?
Thanks for looking into this for us!
Take care,
Jeff.

Hi @AVJeff,

Thanks for providing that JSON sample and clarifying the steps to reproduce. I’ve gone ahead and shared this with our Engineering team so that they can take a closer look. I’ll be in touch shortly! (ZOOM-194477)

Best,
Will

Thank you, @will.zoom!

@AVJeff No problem—I hope to have an update for you shortly!

Hi @AVJeff,

I heard back from our team on this, and they were able to clarify that the API uses UTC time, while the web portal converts this to local time client side, which is why you’re seeing this slight difference.

For example, the ‘end_date_time’ gets converted to the local time (example for America/New_York), (i.e., ‘2020-12-09T23:59:59Z’ -> ‘2020-12-09T18:59:59’, so it wouldn’t include December 9th in this example).

I hope this helps to clarify!

Best,
Will

Thanks, @will.zoom. That does clarify the issue. It sounds like the only fix would be to roll the UTC end_date_time to the next day if the start time is after 17:00.

Hey @AVJeff,

Glad we were able to clarify—your suggestion sounds like a reasonable solution to me, for your use case!

Best,
Will

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.