Scheduler v2 Round Robin behavior
Schedule Page events with multiple participants behave differently using these two configurations.
Inviting the Page Owner
This configuration results in the page owner invited to all events from that page. When the <ACCESS_TOKEN>
value only contains the page owner's, all created events use that person's <CALENDAR_ID>
.
POST Create a Scheduling Page with Page Owner Request Example
This example uses a single <ACCESS_TOKEN
. That value is used to populate the Scheduling Page's access_token_infos
field.
curl --request POST \
--url https://api.schedule.nylas.com/manage/pages \
--header 'Accept: application/json, application/gzip' \
--header 'authorization: Bearer ACCESS_TOKEN' \
--data '{
"access_tokens": [
"<ACCESS_TOKEN>"
],
"config": {
"appearance": {
"color": "#0068D3",
"company_name": "",
"logo": "",
"privacy_policy_redirect": "string",
"show_autoschedule": true,
"show_nylas_branding": false,
"show_timezone_options": true,
"show_week_view": true,
"submit_text": "Submit"
},
"booking": {
"additional_fields": [],
"additional_guests_hidden": true,
"available_days_in_future": 14,
"calendar_invite_to_guests": true,
"confirmation_emails_to_guests": true,
"confirmation_emails_to_host": true,
"confirmation_method": "automatic",
"min_booking_notice": 120,
"min_buffer": 30,
"min_cancellation_notice": 180,
"name_field_hidden": false,
"opening_hours": [{
"account_id": "3aols9hb9fkqtso7zkzcmwgwv",
"days": [
"M",
"T",
"W",
"R",
"F"
],
"end": "17:00",
"start": "09:00"
}],
"scheduling_method": "round-robin-maximize-fairness"
},
"calendar_ids": {
"<ACCOUNT_ID>": {
"availability": [
"<CALENDAR_ID>",
"<CALENDAR_ID>"
],
"booking": "<CALENDAR_ID>"
}
},
"event": {
"capacity": -1,
"duration": 45,
"location": "Coffee Shop",
"participants": [
{
"email": "kat@example.com",
"name": "Katherine Johnson"
},
{
"email": "dorothy@example.com",
"name": "Dorothy Vaughan"
},
{
"email": "mae@example.com",
"name": "Mae Jemison"
}
],
"title": "30-min Coffee Meeting"
},
"expire_after": {
"date": 1633446000,
"uses": 5
},
"locale": "en",
"reminders": [{
"delivery_method": "email",
"delivery_recipient": "customer",
"email_subject": "Your meeting is coming up!",
"minutes_before_event": 30,
"webhook_url": "https://your-webhook-url.com"
}],
"timezone": "America/Chicago"
},
"name": "Coffee Meeting",
"slug": "dorothy-vaughan-30min"
}'
GET Return a Scheduling Page with Page Owner Response Example
This example response is for the Page Owner sample Scheduling Page.
{
"access_token_infos": [{
"account_email": "sally@example.com",
"account_name": "Sally Ride"
}],
"app_client_id": "8gllz10jsrqdlwqwiyri33ryj",
"app_organization_id": 1,
"config": {
"appearance": {
"color": "#0068D3",
"company_name": "",
"logo": "",
"show_autoschedule": true,
"show_nylas_branding": false,
"show_timezone_options": true,
"show_week_view": true,
"submit_text": "Submit"
},
"booking": {
"additional_fields": [],
"additional_guests_hidden": false,
"available_days_in_future": 14,
"calendar_invite_to_guests": true,
"confirmation_emails_to_guests": true,
"confirmation_emails_to_host": true,
"confirmation_method": "automatic",
"min_booking_notice": 120,
"min_buffer": 30,
"min_cancellation_notice": 180,
"name_field_hidden": false,
"opening_hours": [{
"days": [
"M",
"T",
"W",
"R",
"F"
],
"end": "17:00",
"start": "09:00"
}],
"scheduling_method": "round-robin-maximize-availability"
},
"calendar_ids": {
"<ACCOUNT_ID>": {
"availability": [
"<CALENDAR_ID>"
],
"booking": "<CALENDAR_ID>"
}
},
"event": {
"capacity": -1,
"duration": 45,
"location": "Location TBD",
"participants": [
{
"confirmation_method": "calendar",
"email": "kat@example.com",
"name": "Katherine Johnson"
},
{
"confirmation_method": "calendar",
"email": "dorothy@example.com",
"name": "Dorothy Vaughan"
},
{
"confirmation_method": "calendar",
"email": "mae@example.com",
"name": "Mae Jemison"
}
],
"title": "Meeting!"
},
"features": {
"collective_meetings": true,
"group_meetings": false
},
"locale": "en",
"reminders": [],
"timezone": "America/Los_Angeles"
},
"created_at": "2021-12-03",
"edit_token": "W9nfhXxNllWf2STRDfTXRqvJIA13z_qK",
"id": 42,
"modified_at": "2021-12-03",
"name": "Meeting!",
"slug": "slug-number-123"
}
Omit Page Owner from Invites
To remove the page owner automatically being added to all event invites, use the configuration below. Include the <ACCESS_TOKEN>
value for all potential participants in order to avoid the page owner receiving all invites.
POST Create a Scheduling Page Request No Page Owner Example
This example uses multiple <ACCESS_TOKEN>
values. These are used to populate the Scheduling Page's access_token_infos
field with potential participants and not just the page owner.
curl --request POST \
--url https://api.schedule.nylas.com/manage/pages \
--header 'Accept: application/json, application/gzip' \
--header 'authorization: Bearer ACCESS_TOKEN' \
--data '{
"access_tokens": [
"<ACCESS_TOKEN_ONE>",
"<ACCESS_TOKEN_TWO>",
"<ACCESS_TOKEN_THREE>",
"<ACCESS_TOKEN_FOUR>"
],
"config": {
"appearance": {
"color": "#0068D3",
"company_name": "",
"logo": "",
"privacy_policy_redirect": "string",
"show_autoschedule": true,
"show_nylas_branding": false,
"show_timezone_options": true,
"show_week_view": true,
"submit_text": "Submit"
},
"booking": {
"additional_fields": [],
"additional_guests_hidden": true,
"available_days_in_future": 14,
"calendar_invite_to_guests": true,
"confirmation_emails_to_guests": true,
"confirmation_emails_to_host": true,
"confirmation_method": "automatic",
"min_booking_notice": 120,
"min_buffer": 30,
"min_cancellation_notice": 180,
"name_field_hidden": false,
"opening_hours": [{
"account_id": "3aols9hb9fkqtso7zkzcmwgwv",
"days": [
"M",
"T",
"W",
"R",
"F"
],
"end": "17:00",
"start": "09:00"
}],
"scheduling_method": "round-robin-maximize-fairness"
},
"calendar_ids": {
"<ACCOUNT_ID>": {
"availability": [
"<CALENDAR_ID>",
"<CALENDAR_ID>"
],
"booking": "<CALENDAR_ID>"
}
},
"event": {
"capacity": -1,
"duration": 45,
"location": "Coffee Shop",
"participants": [
{
"email": "kat@example.com",
"name": "Katherine Johnson"
},
{
"email": "dorothy@example.com",
"name": "Dorothy Vaughan"
},
{
"email": "mae@example.com",
"name": "Mae Jemison"
}
],
"title": "30-min Coffee Meeting"
},
"expire_after": {
"date": 1633446000,
"uses": 5
},
"locale": "en",
"reminders": [{
"delivery_method": "email",
"delivery_recipient": "customer",
"email_subject": "Your meeting is coming up!",
"minutes_before_event": 30,
"webhook_url": "https://your-webhook-url.com"
}],
"timezone": "America/Chicago"
},
"name": "Coffee Meeting",
"slug": "dorothy-vaughan-30min"
}'
GET Return a Scheduling Page No Page Owner Response
This example response is for the No Page Owner sample Scheduling Page. When multiple participants are added, the access_token_infos
, calendar_ids
, and participants
fields are updated. Including all potential participants allows for direct invitations for an event.
{
"access_token_infos": [
{
"account_email": "sally@example.com",
"account_name": "Sally Ride"
},
{
"account_email": "kat@example.com",
"account_name": "Katherine Johnson"
},
{
"account_email": "dorothy@example.com",
"account_name": "Dorothy Vaughan"
},
{
"account_email": "mae@example.com",
"account_name": "Mae Jemison"
}
],
"app_client_id": "8gllz10jsrqdlwqwiyri33ryj",
"app_organization_id": 1,
"config": {
"appearance": {
"color": "#0068D3",
"company_name": "",
"logo": "",
"show_autoschedule": true,
"show_nylas_branding": false,
"show_timezone_options": true,
"show_week_view": true,
"submit_text": "Submit"
},
"booking": {
"additional_fields": [],
"additional_guests_hidden": false,
"available_days_in_future": 14,
"calendar_invite_to_guests": true,
"confirmation_emails_to_guests": true,
"confirmation_emails_to_host": true,
"confirmation_method": "automatic",
"min_booking_notice": 120,
"min_buffer": 30,
"min_cancellation_notice": 180,
"name_field_hidden": false,
"opening_hours": [{
"days": [
"M",
"T",
"W",
"R",
"F"
],
"end": "17:00",
"start": "09:00"
}],
"scheduling_method": "round-robin-maximize-availability"
},
"calendar_ids": {
"<ACCOUNT_ID>": {
"availability": [
"<CALENDAR_ID>"
],
"booking": "<CALENDAR_ID>"
},
"<ACCOUNT_ID>": {
"availability": [
"<CALENDAR_ID>"
],
"booking": "<CALENDAR_ID>"
},
"<ACCOUNT_ID>": {
"availability": [
"<CALENDAR_ID>"
],
"booking": "<CALENDAR_ID>"
},
"<ACCOUNT_ID>": {
"availability": [
"<CALENDAR_ID>"
],
"booking": "<CALENDAR_ID>"
}
},
"event": {
"capacity": -1,
"duration": 45,
"location": "Location TBD",
"participants": [],
"title": "Meeting!"
},
"features": {
"collective_meetings": true,
"group_meetings": false
},
"locale": "en",
"reminders": [],
"timezone": "America/Los_Angeles"
},
"created_at": "2021-12-03",
"edit_token": "W9nfhXxNllWf2STRDfTXRqvJIA13z_qK",
"id": 42,
"modified_at": "2021-12-03",
"name": "Meeting!",
"slug": "slug-number-123"
}
Best Practices
Using a single <ACCESS_TOKEN>
value results in that account receiving all invites to a Scheduling Page's events. Using multiple <ACCESS_TOKEN>
values for potential participants results in direct invites each for an event.