{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/nylas/main/json-schema/nylas-configuration-schema.json", "title": "configuration", "x-generated": "2026-10-02", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/nylas-configurations-api-openapi.yml#/components/schemas/configuration", "type": "object", "required": [ "participants", "availability", "event_booking" ], "properties": { "appearance": { "description": "An object that defines the appearance settings for the Scheduling Page. This field\nmay be `null` if no appearance customization has been set.", "anyOf": [ { "$ref": "#/$defs/configuration_appearance" }, { "type": "null" } ] }, "availability": { "$ref": "#/$defs/configuration_availability" }, "event_booking": { "$ref": "#/$defs/configuration_event_booking" }, "name": { "type": "string", "description": "The name of the Scheduling Page. If not defined, Nylas defaults to the organizer's name." }, "participants": { "type": "array", "description": "A list of participants to be included in the scheduled event.\n\nParticipants that provide availability (through an `availability` or `booking` block) must be\nassociated with a valid Nylas grant, or the request fails. Participants supplied by email only\ndon't require a grant. They're notification-only invitees who receive scheduling emails but don't\naffect availability calculation and can't be selected as a round-robin host.\n\nThis field isn't accepted for group or round-robin configurations, which are anchored to the\norganizer's own grant and calendar instead.", "items": { "$ref": "#/$defs/configuration_participants" } }, "requires_session_auth": { "type": [ "boolean", "null" ], "description": "When `true`, the scheduling [Availability](/docs/reference/api/availability/) and\n[Bookings](/docs/reference/api/bookings/) endpoints require a valid session ID to\nauthenticate requests using the specified Configuration. This field may be `null`\nif not explicitly set on the configuration; treat `null` the same as `false`\n(the default behavior).", "default": false }, "scheduler": { "$ref": "#/$defs/configuration_scheduler" }, "slug": { "type": [ "string", "null" ], "description": "The slug for the Configuration object. This is an optional, unique identifier. You can use the\nslug instead of the `configuration_id` when making requests to the Nylas Scheduling endpoints.\nSlugs are unique to each Nylas application. This field may be `null` if no slug has been set." } }, "$defs": { "availability_buffer": { "title": "buffer", "type": "object", "properties": { "before": { "type": "integer", "description": "The amount of buffer time to add before meetings, in increments of five minutes. For example,\nif an account has a meeting scheduled from 10:00–11:00a.m., and you set a `before` buffer of\n30 minutes, Nylas treats 9:30–11:00a.m. as busy.\n\nThis value must be between 0 and 120, and must be divisible by 5.", "default": 0, "minimum": 0, "maximum": 120 }, "after": { "type": "integer", "description": "The amount of buffer time to add after meetings, in increments of five minutes. For example, if\nan account has a meeting scheduled from 10:00–11:00a.m., and you set an `after` buffer of 15\nminutes, Nylas treats 10:00–11:15a.m. as busy.\n\nThis value must be between 0 and 120, and must be divisible by 5.", "default": 0, "minimum": 0, "maximum": 120 } } }, "configuration_appearance": { "title": "appearance", "type": "object", "description": "Appearance settings definitions for the Scheduling Page.", "properties": { "your-key": { "type": "string", "description": "A key-value pair. For pre-defined keys for hosted Scheduling Pages, see [Styling options for hosted Scheduling Pages](/docs/v3/scheduler/customize-scheduler/#styling-options-for-hosted-scheduling-pages).", "maxLength": 550 } } }, "configuration_availability": { "type": "object", "description": "The rules that determine the available time slots for the event.", "required": [ "duration_minutes" ], "properties": { "duration_minutes": { "type": "integer", "description": "The total number of minutes the event should last." }, "interval_minutes": { "type": "integer", "description": "The interval between meetings. Nylas checks from the nearest interval of the passed `start_time`. For example, you schedule 30-minute meetings (`duration_minutes`) with 15 minutes between them (`interval_minutes`). If you have a meeting starting at 9:59, the API returns times starting at 10:00 (10:00-10:30, 10:15-10:45)." }, "round_to": { "type": "integer", "default": 15, "description": "Nylas rounds each time slot to the nearest `round_to` value. For example, if a time slot starts at 9:05a.m. and `round_to` is set to `15`, Nylas rounds it to 9:15a.m. Must be a multiple of 5 minutes." }, "availability_rules": { "$ref": "#/$defs/configuration_availability_rules" } } }, "configuration_availability_open_hours": { "description": "Open hours settings for a participant.", "type": "object", "title": "Open Hours", "properties": { "days": { "type": "array", "description": "The days of the week that the open hour settings are applied to. Sunday corresponds to `0`, and Saturday corresponds to `6`.", "items": { "type": "integer" } }, "start": { "type": "string", "minLength": 1, "description": "The start time in 24-hour time format. Single-digit hours doesn't have a leading zero. The earliest start time is `0:00`, and the latest start time is `23:49`." }, "end": { "type": "string", "minLength": 1, "description": "The end time in a 24-hour time format. Single-digit hours doesn't have a leading zero." }, "timezone": { "type": "string", "minLength": 1, "description": "The timezone for this open-hours block, as an [IANA-formatted](https://en.wikipedia.org/wiki/Tz_database) string.\n\nFor participant `open_hours`, this value applies only to the open-hours block where you define it and overrides the participant's `timezone`. If you omit it, Scheduler uses the participant's `timezone`, then `event_booking.timezone`.\n\nFor `default_open_hours` in Scheduler configurations, set `event_booking.timezone` to control the timezone that Scheduler uses when evaluating default open hours." }, "exdates": { "type": "array", "description": "A list of dates that are excluded from the open hours. Dates should be formatted as `YYYY-MM-DD`.", "items": { "type": "string" } } } }, "configuration_availability_rules": { "description": "Availability rules for the scheduling configuration. These rules define how Nylas calculates availability for all participants.", "type": "object", "properties": { "availability_method": { "description": "The method that Nylas uses to calculate availability for all participants. For one-on-one\nmeetings, the `availability_method` is always `collective`.\n\nThe round-robin methods, `max-fairness` and `max-availability`, don't support\n[Agent Account](/docs/v3/scheduler/agent-accounts/) participants. Use connected grants for\nround-robin pools.", "type": "string", "default": "collective", "enum": [ "collective", "max-fairness", "max-availability" ] }, "buffer": { "type": "object", "description": "The amount of buffer time to add around existing meetings, in minutes. For example, if an account has a meeting scheduled from 10–11a.m., and you set a buffer of 30 minutes, Nylas treats 9:30–11:30a.m. as busy.", "$ref": "#/$defs/availability_buffer" }, "default_open_hours": { "type": "array", "description": "A default set of open hours to apply to participants that don't define participant-level `open_hours`. You can overwrite these open hours for individual participants by specifying `open_hours` on the participant object. In Scheduler configurations, set `event_booking.timezone` to control the timezone used when Scheduler evaluates default open hours.", "items": { "$ref": "#/$defs/configuration_availability_open_hours" } }, "default_specific_time_availability": { "type": "array", "description": "Default specific date and time availability that applies to ALL participants in this configuration.\nThese are merged with participant-specific entries, with participant entries taking precedence\nfor the same date. Use this to define organization-wide special hours (e.g., holidays, events).", "items": { "type": "object", "required": [ "date", "start", "end" ], "properties": { "date": { "type": "string", "description": "The date in YYYY-MM-DD format." }, "start": { "type": "string", "description": "The start time in HH:MM format (24-hour clock).\nUse \"00:00\" with end \"00:00\" to mark the date as closed/unavailable." }, "end": { "type": "string", "description": "The end time in HH:MM format (24-hour clock)." }, "timezone": { "type": "string", "description": "The timezone for this specific date entry (e.g., \"America/New_York\").\nRequired when using default_specific_time_availability to ensure proper timezone conversion\nacross participants. When specified, `event_booking.timezone` must also be set." } } } }, "only_specific_time_availability": { "type": "boolean", "description": "When `true`, ALL participants will ONLY be available at times defined in `default_specific_time_availability`\nand their individual `specific_time_availability` entries. Regular `open_hours` and `default_open_hours`\nare completely ignored.\n\nThis is useful for:\n- Temporary availability windows (e.g., hiring events, special booking periods)\n- Disabling all availability by setting to `true` with no specific dates defined\n\n**Note**: When set at the config level, individual participants cannot override this to `false`.", "default": false } } }, "configuration_event_booking": { "type": "object", "required": [ "title" ], "properties": { "booking_type": { "type": "string", "description": "The booking type. If set to `booking`, Scheduler follows the\n[standard booking flow](/docs/v3/scheduler/customize-booking-flows/).\n\nIf set to `organizer-confirmation`, Scheduler creates an event marked \"Pending\" in the organizer's\ncalendar and sends a confirmation request email to the organizer. The confirmation request email\nincludes a link to a page where the organizer can confirm or cancel the booking.", "enum": [ "booking", "organizer-confirmation" ], "default": "booking" }, "conferencing": { "$ref": "#/$defs/event_conferencing_request" }, "description": { "type": "string", "description": "The description of the event." }, "disable_emails": { "type": [ "boolean", "null" ], "description": "When `true`, Nylas doesn't send email notifications when an event is booked, cancelled, or\nrescheduled. When `null`, the default behavior applies (emails are sent).", "default": false }, "hide_participants": { "type": [ "boolean", "null" ], "description": "When `true`, Nylas creates the event with `hide_participants=true`, so the host can see who's on the event but the guests cannot. When `null`, the default behavior applies (participants are visible).", "default": false }, "location": { "type": "string", "description": "The location of the event." }, "notify_participants": { "type": [ "boolean", "null" ], "description": "When `true`, the calendar provider sends notifications to participants when the\nevent is created, updated, or deleted. Microsoft grants ignore this flag and\nalways notify participants. This field may be `null` if not explicitly set on\nthe configuration; treat `null` the same as `false` (the default behavior).", "default": false }, "reminders": { "type": "array", "required": [ "minutes_before_event", "type" ], "items": { "type": "object", "properties": { "email_subject": { "type": "string", "description": "(Email reminders only) The subject line of the email reminder." }, "minutes_before_event": { "type": "integer", "description": "The number of minutes before the event to send the reminder.", "minimum": 1 }, "recipient": { "type": "string", "description": "(Email reminders only) Who should receive the reminder.", "enum": [ "all", "host", "guest" ], "default": "all" }, "type": { "type": "string", "description": "The reminder type.", "enum": [ "email", "webhook" ] } } } }, "timezone": { "type": "string", "description": "The timezone Nylas uses to display times in confirmation messages and reminders. This must be\nan [IANA-formatted string](https://en.wikipedia.org/wiki/Tz_database).", "minLength": 1 }, "title": { "type": "string", "description": "The title of the event." } } }, "configuration_participants": { "type": "object", "description": "List of participants for the scheduling Configuration.", "required": [ "availability", "booking", "email" ], "properties": { "availability": { "$ref": "#/$defs/configuration_participants_availability" }, "booking": { "$ref": "#/$defs/configuration_participants_booking" }, "email": { "type": "string", "description": "The participant's email address.\n\nIf the participant provides an `availability` or `booking` block, this email address must be\nassociated with a valid Nylas grant, or the request fails. Participants supplied by email only\n(no `availability` or `booking` block) don't require a grant. They're treated as notification-only\ninvitees: they still receive scheduling emails, but they don't affect availability or free-busy\ncalculation and can't be selected as a round-robin host." }, "grant_id": { "type": "string", "description": "The participant's grant ID." }, "is_organizer": { "type": "boolean", "description": "When `true`, indicates that the participant is the organizer of the event.\n\nFor non-round-robin meetings, one of the participants must be specified as the organizer. For\nround-robin meetings, remove the `is_organizer` key/value pair or set `is_organizer` to `false`\nfor all participants.", "default": false }, "name": { "type": "string", "description": "The participant's name." }, "specific_time_availability": { "$ref": "#/$defs/configuration_participants_specific_time_availability" }, "only_specific_time_availability": { "type": "boolean", "description": "When `true`, this participant will ONLY be available at times defined in their\n`specific_time_availability` entries. Their regular `open_hours` are ignored.\n\nIf the config-level `availability_rules.only_specific_time_availability` is `true`,\nthis participant-level setting cannot override it to `false`.\n\nSetting to `true` with an empty `specific_time_availability` array results in\nzero availability for this participant (useful for temporarily disabling someone).", "default": false }, "timezone": { "type": "string", "description": "The timezone in which the participant is located, as an\n[IANA-formatted](https://en.wikipedia.org/wiki/Tz_database) string. Nylas uses this when\ncalculating the participant's open hours, and in email notifications.\n\nIf a participant `open_hours` block includes its own `timezone`, the open-hours timezone\noverrides this participant timezone for that block. If participant `open_hours` doesn't include\na `timezone`, Scheduler uses this participant timezone, then `event_booking.timezone`." } } }, "configuration_participants_availability": { "description": "The availability data for the participant. If omitted, the participant is considered to be available at all times. At least one participant must have availability data.", "type": "object", "required": [ "calendar_ids" ], "properties": { "calendar_ids": { "type": "array", "description": "A list of calendar IDs associated with the participant's email address. These calendars are\nused to check the participant's availability.\n\nFor an [Agent Account](/docs/v3/scheduler/agent-accounts/) participant, set this to\n`[\"primary\"]`. Scheduler reads busy time from an Agent Account's primary calendar only.", "items": { "type": "string" } }, "open_hours": { "type": "array", "description": "An array of objects for the participant's open hours. Nylas searches for free time slots within these open hours.", "items": { "$ref": "#/$defs/configuration_availability_open_hours" } } } }, "configuration_participants_booking": { "description": "The booking data for the participant. If omitted, the participant is not included in the booked event. At least one participant must have booking data.", "type": "object", "required": [ "calendar_id" ], "properties": { "calendar_id": { "type": "string", "description": "The calendar ID that the event is created in.\n\nFor an [Agent Account](/docs/v3/scheduler/agent-accounts/) participant, set this to\n`primary`. Scheduler creates booking events on an Agent Account's primary calendar only." } } }, "configuration_participants_specific_time_availability": { "description": "A specific date and time range when the participant is available.\nUse \"00:00\" for both start and end to explicitly mark a date as unavailable.", "type": "array", "items": { "type": "object", "required": [ "date", "start", "end" ], "properties": { "date": { "type": "string", "description": "The date in YYYY-MM-DD format." }, "start": { "type": "string", "description": "The start time in HH:MM format (24-hour clock).\nUse \"00:00\" with end \"00:00\" to explicitly mark this date as unavailable." }, "end": { "type": "string", "description": "The end time in HH:MM format (24-hour clock)." }, "timezone": { "type": "string", "description": "The timezone for this specific date (e.g., \"America/New_York\").\nOptional for participant-level entries. Uses the participant's timezone if not specified." } } } }, "configuration_scheduler": { "type": "object", "properties": { "additional_fields": { "type": "object", "additionalProperties": { "$ref": "#/$defs/configuration_scheduler_additional_fields" } }, "available_days_in_future": { "type": "integer", "description": "The number of days in the future that Scheduler is available for scheduling events.", "default": 30 }, "min_booking_notice": { "type": [ "integer", "null" ], "description": "The minimum number of minutes in the future that a user can make a new booking. This field may be `null` if not explicitly set on the configuration; treat `null` the same as `60` (the default behavior).", "default": 60 }, "min_cancellation_notice": { "type": "integer", "description": "The minimum number of minutes before a booking can be cancelled.", "default": 0 }, "cancellation_policy": { "type": "string", "description": "A message about the cancellation policy to display to users when booking an event." }, "rescheduling_url": { "type": "string", "description": "The URL used to reschedule bookings. This URL is included in confirmation messages." }, "cancellation_url": { "type": "string", "description": "The URL used to cancel bookings. This URL is included in confirmation messages." }, "organizer_confirmation_url": { "type": "string", "description": "The URL used to confirm or cancel pending bookings. This URL is included in booking request\nmessages." }, "confirmation_redirect_url": { "type": "string", "description": "The URL that Nylas redirects the user to when the booking is confirmed." }, "hide_rescheduling_options": { "type": "boolean", "description": "If `true`, the option to reschedule an event is hidden in booking confirmations and email notifications.", "default": false }, "hide_cancellation_options": { "type": "boolean", "description": "If `true`, the option to cancel an event is hidden in booking confirmations and email notifications.", "default": false }, "hide_additional_guests": { "type": "boolean", "description": "Whether to hide the **Additional guests** field on the Scheduling Page. If `true`, guests cannot invite additional guests to the event.", "default": false }, "notetaker_settings": { "type": "object", "description": "Settings for automatically adding a Notetaker bot to bookings created with this configuration.\nWhen enabled, Notetaker joins the meeting to record, transcribe, and optionally generate\nsummaries and action items. Requires `event_booking.conferencing` to be configured.", "properties": { "enabled": { "type": "boolean", "description": "When `true`, automatically creates a Notetaker bot for bookings made with this configuration.\nThe bot joins the meeting at the scheduled time to record and transcribe.", "default": false }, "show_ui_consent_message": { "type": "boolean", "description": "When `true`, displays a consent message in the Scheduler UI informing guests that the\nmeeting will be recorded.", "default": true }, "notetaker_name": { "type": "string", "description": "The display name for the Notetaker bot that joins the meeting.\nMaximum 255 characters.", "default": "Nylas Notetaker" }, "meeting_settings": { "$ref": "#/$defs/meeting_settings" } } }, "email_template": { "$ref": "#/$defs/configuration_scheduler_email_template" } } }, "configuration_scheduler_additional_fields": { "description": "The definitions for additional fields to be displayed in the Scheduler UI. Guest will see the additional fields on the Scheduling Page when they book an event.", "type": "object", "required": [ "label", "type", "required" ], "properties": { "label": { "type": "string", "description": "The text label to be displayed in the Scheduler UI." }, "type": { "type": "string", "description": "The field type. If set to `metadata`, the field does not appear on email notifications and booking forms.", "enum": [ "text", "multi_line_text", "email", "phone_number", "dropdown", "date", "checkbox", "radio_button", "metadata" ] }, "required": { "type": "boolean", "description": "Whether the field is required to be filled out by the guest when booking an event." }, "default": { "type": "string", "description": "The default value for the field. \n\n- For the `metadata` type, this field stores the default metadata value.\n- For other types, this field sets the default value in the form, which is pre-filled when a guest books an event." }, "pattern": { "type": "string", "description": "A regular expression pattern that the value of the field must match." }, "order": { "type": "integer", "description": "The order in which the field will be displayed in the Scheduler UI. Fields with lower order values will be displayed first." }, "options": { "type": "array", "description": "A list of options for the `dropdown` or `radio_button` types. This field is required for the `dropdown` and `radio_button` types.", "items": { "type": "string" } } } }, "configuration_scheduler_email_template": { "type": "object", "description": "Configurable settings for booking emails.", "properties": { "booking_confirmed": { "$ref": "#/$defs/configuration_scheduler_email_template_booking_confirmed" }, "logo": { "type": "string", "description": "The URL of a custom logo that is displayed at the top of the booking email. Replaces the default\nNylas logo. The URL needs to be publicly accessible." }, "show_nylas_branding": { "type": "boolean", "default": true, "description": "When `true`, displays Nylas branding in the booking email." } } }, "configuration_scheduler_email_template_booking_confirmed": { "description": "Configurable settings specifically for booking confirmed emails.", "type": "object", "properties": { "title": { "type": "string", "description": "The title to replace the default 'Booking Confirmed' title. This doesn't change the email subject line. Only visible in emails sent to guests." }, "body": { "type": "string", "description": "The additional body to be appended after the default body. Only visible in emails sent to guests." } } }, "event_conferencing_request": { "title": "Event with conferencing", "type": "object", "description": "An object that lets you automatically create a conference, or enter conferencing details manually.\n\nYou can't use `autocreate` and `details` in the same request. If you do, Nylas returns an error.\n\nNylas stores conference information in the event description. To remove conference details, set\n`conferencing` to `{}` and remove the corresponding conference information from the description in\nthe same request.", "oneOf": [ { "title": "Auto-conferencing", "type": "object", "description": "Let Nylas autocreate the conference link.", "properties": { "provider": { "type": "string", "description": "The conferencing provider that Nylas uses to create the conference.", "enum": [ "Google Meet", "Zoom Meeting", "Microsoft Teams" ] }, "autocreate": { "type": "object", "description": "When you include `autocreate` in your request, Nylas automatically creates the conference\nfor the event and appends the conferencing details to the event description.\n\nIf the `provider` is `Zoom Meeting`, your Zoom OAuth app must include the following\n[granular scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-granular/)\nfor Nylas to manage meetings on behalf of the user:\n\n- `meeting:write:meeting` — required to **create** Zoom meetings.\n- `meeting:update:meeting` — required to **update** Zoom meetings (for example, when event time or title changes).\n- `meeting:delete:meeting` — required to **delete** Zoom meetings (when events are removed).\n\nIf any of these scopes are missing, the Zoom API rejects the request. After adding scopes\nto your Zoom app, affected users must re-authenticate their grant so their access tokens\ninclude the new scopes.", "properties": { "conf_grant_id": { "type": "string", "description": "The grant ID of the account that hosts the conference. The user that belongs to this\ngrant acts as the conference host: they join the conference at the scheduled time and\nadmit other participants during the meeting.\n\nInclude `conf_grant_id` when the conferencing `provider` isn't available on the user's\nown account — for example, when the `provider` is `Google Meet` but the user\nauthenticated with a Microsoft account (cross-provider autocreation). When the\n`provider` is `Zoom Meeting`, `conf_grant_id` is always required." }, "conf_settings": { "type": "object", "additionalProperties": true, "description": "Optional provider-specific settings that Nylas passes through when it creates the\nconference. For `Zoom Meeting`, each key is sent as a top-level parameter to\n[Zoom's Create a Meeting API](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/meetingCreate)\n— for example, `agenda`, `password`, or Zoom's own `settings` object. Nylas does _not_\nvalidate these values. They can make your Zoom integration more accessible but\npotentially less secure, so review your organization's security requirements." } } } } }, { "title": "Google Meet", "type": "object", "description": "Manually attach Google Meet details to the event.", "properties": { "provider": { "type": "string", "enum": [ "Google Meet" ], "description": "The conferencing provider for the event." }, "details": { "type": "object", "description": "An object that contains Google Meet conferencing details.", "required": [ "url" ], "properties": { "url": { "type": "string", "description": "The URL for the Google Meet conference." }, "phone": { "type": "array", "items": { "type": "string" }, "description": "The phone number associated with the Google Meet conference. This array accepts only\none phone number." }, "pin": { "type": "string", "description": "The PIN associated with the Google Meet conference, if applicable." } } } } }, { "title": "Zoom Meeting", "type": "object", "description": "Manually attach Zoom Meeting details to the event.", "properties": { "provider": { "type": "string", "enum": [ "Zoom Meeting" ], "description": "The conferencing provider for the event." }, "details": { "type": "object", "description": "An object that contains Zoom conferencing details.", "required": [ "url" ], "properties": { "url": { "type": "string", "description": "The URL for the Zoom conference." }, "meeting_code": { "type": [ "string", "null" ], "description": "A unique ID associated with the Zoom conference." }, "password": { "type": [ "string", "null" ], "description": "The password for the Zoom conference, if applicable." } } } } }, { "title": "Microsoft Teams", "type": "object", "description": "Manually attach Microsoft Teams details to the event.", "properties": { "provider": { "type": "string", "enum": [ "Microsoft Teams" ], "description": "The conferencing provider for the event." }, "details": { "type": "object", "description": "An object that contains Microsoft Teams conferencing details.", "required": [ "url" ], "properties": { "url": { "type": "string", "description": "The URL for the Microsoft Teams conference." } } } } }, { "title": "Teams for Business", "type": "object", "description": "Manually attach Teams for Business details to the event.", "properties": { "provider": { "type": "string", "enum": [ "Teams for Business" ], "description": "The conferencing provider for the event." }, "details": { "type": "object", "description": "An object that contains Microsoft Teams for Enterprise conferencing details.", "required": [ "url" ], "properties": { "url": { "type": "string", "description": "The URL for the Microsoft Teams for Enterprise conference." } } } } }, { "title": "Skype for Consumer", "type": "object", "description": "Manually attach Skype for Consumer details to the event.", "properties": { "provider": { "type": "string", "enum": [ "Skype for Consumer" ], "description": "The conferencing provider for the event." }, "details": { "type": "object", "description": "An object that contains Skype for Consumer conferencing details.", "required": [ "url" ], "properties": { "url": { "type": "string", "description": "The URL for the Skype for Consumer conference." } } } } }, { "title": "Skype for Business", "type": "object", "description": "Manually attach Skype for Business details to the event.", "properties": { "provider": { "type": "string", "enum": [ "Skype for Business" ], "description": "The conferencing provider for the event." }, "details": { "type": "object", "description": "An object that contains Skype for Business conferencing details.", "required": [ "url" ], "properties": { "url": { "type": "string", "description": "The URL for the Skype for Business conference." } } } } }, { "title": "WebEx", "type": "object", "description": "Manually attach WebEx details to the event.", "properties": { "provider": { "type": "string", "enum": [ "WebEx" ], "description": "The conferencing provider for the event." }, "details": { "type": "object", "description": "An object that contains WebEx conferencing details.", "required": [ "url" ], "properties": { "url": { "type": "string", "description": "The URL for the WebEx conference." }, "password": { "type": "string", "description": "The password for the WebEx conference, if applicable." }, "pin": { "type": "string", "description": "The PIN for the WebEx conference, if applicable." }, "phone": { "type": "array", "items": { "type": "string" }, "description": "The phone number associated with the WebEx conference." } } } } }, { "title": "GoToMeeting", "type": "object", "description": "Manually attach GoToMeeting details to the event.", "properties": { "provider": { "type": "string", "enum": [ "GoToMeeting" ], "description": "The conferencing provider for the event." }, "details": { "type": "object", "description": "An object that contains GoToMeeting conferencing details.", "required": [ "url" ], "properties": { "url": { "type": "string", "description": "The URL for the GoToMeeting conference." }, "meeting_code": { "type": "string", "description": "A unique ID associated with the GoToMeeting conference." }, "password": { "type": "string", "description": "The password for the GoToMeeting conference, if applicable." }, "phone": { "type": "array", "items": { "type": "string" }, "description": "The phone number associated with the GoToMeeting conference." } } } } } ] }, "meeting_settings": { "allOf": [ { "$ref": "#/$defs/meeting_settings_common" }, { "type": "object", "properties": { "transcription_settings": { "type": [ "object", "null" ], "description": "Optional settings that tune how Notetaker transcribes audio. `transcription` must be\n`true` for these settings to take effect. Provide any combination of the fields below.\n\nThe fields fall into two independent groups:\n\n- **Language hints** (`expected_languages`, `fallback_language`) constrain automatic\n language detection. This declares the languages you expect; it does not translate\n transcripts or force the recording into a specific language.\n- **Keyword hints** (`keywords`, `use_speaker_names_as_keywords`) bias recognition toward\n domain-specific terms such as names, acronyms, and product names.\n\nSet on individual Notetakers, on calendar sync, or on event sync. When set on a calendar,\nevents inherit the value unless the event's own request overrides it. Send `null` or `{}`\nto clear inherited settings and return to default transcription behavior.\n\nSee [Set transcription languages](/docs/v3/notetaker/#set-transcription-languages) for\nsupported language codes and validation rules.", "properties": { "expected_languages": { "type": "array", "description": "Language codes the audio is expected to contain. Optional. When provided, it must\ncontain at least one supported code and cannot be `null` or empty. When omitted,\ntranscription considers all supported languages.", "minItems": 1, "items": { "type": "string" } }, "fallback_language": { "type": "string", "description": "Language to use if Notetaker does not detect one of the `expected_languages`. Optional.\nWhen `expected_languages` is set, the fallback must be one of those codes. When\n`expected_languages` is omitted, transcription considers all supported languages and\nthe fallback may be any supported code. When `fallback_language` is omitted, the\ntranscriber auto-detects the language. The field is not stored, so responses do not\nreturn it." }, "keywords": { "type": "array", "description": "Domain-specific terms that bias transcription toward recognizing them correctly, such\nas names, acronyms, and product names. Optional. Up to 200 terms; each term must be\n1 to 200 characters and cannot contain control characters. Cannot be `null`.", "maxItems": 200, "items": { "type": "string", "maxLength": 200 } }, "use_speaker_names_as_keywords": { "type": "boolean", "description": "When `true`, Notetaker adds known speaker names to the keyword set so they are\ntranscribed accurately. Optional. Cannot be `null`." } } } } } ] }, "meeting_settings_common": { "type": "object", "description": "A collection of settings for the Notetaker bot.", "properties": { "action_items": { "type": "boolean", "description": "When `true`, Notetaker generates a list of action items from the meeting. If `action_items` is\n`true`, `video_recording`, `audio_recording`, and `transcription` must also be `true`.", "default": true }, "action_items_settings": { "type": "object", "properties": { "custom_instructions": { "type": "string", "description": "A custom prompt to pass to Nylas' AI model and specify settings for the list of action items\nit generates. `action_items` must be `true` to use this field." } } }, "audio_recording": { "type": "boolean", "description": "When `true`, Notetaker records the meeting's audio.", "default": true }, "leave_after_silence_seconds": { "type": "integer", "description": "The number of seconds of silence after which the Notetaker bot automatically leaves\nthe meeting. This helps end recordings when meetings have concluded but participants\nhaven't disconnected the call. Must be between 10 and 3600 seconds (1 hour).", "minimum": 10, "maximum": 3600, "default": 300 }, "summary": { "type": "boolean", "description": "When `true`, Notetaker generates a summary of the meeting. If `summary` is `true`,\n`video_recording`, `audio_recording`, and `transcription` must also be `true`.", "default": true }, "summary_settings": { "type": "object", "properties": { "custom_instructions": { "type": "string", "description": "A custom prompt to pass to Nylas' AI model and specify settings for the summary it generates.\n`summary` must be `true` to use this field." } } }, "transcription": { "type": "boolean", "description": "When `true`, Notetaker transcribes the meeting's audio. If `transcription` is `true`,\n`video_recording` and `audio_recording` must also be `true`.", "default": true }, "video_recording": { "type": "boolean", "description": "When `true`, Notetaker records the meeting's video.", "default": true } } } } }