{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/nylas/main/json-schema/nylas-group-configuration-schema.json", "title": "group-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/group-configuration", "type": "object", "required": [ "group_booking", "name", "type" ], "properties": { "appearance": { "$ref": "#/$defs/configuration_appearance" }, "group_booking": { "type": "object", "description": "Settings for the group booking.", "required": [ "calendar_id" ], "properties": { "booking_type": { "type": "string", "description": "The booking type. Group Configurations support `booking` only, and follow the\n[standard booking flow](/docs/v3/scheduler/customize-booking-flows/).", "default": "booking" }, "calendar_id": { "type": "string", "description": "The ID of the calendar on which the group event is created. Nylas doesn't support read-only\ncalendars." }, "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 }, "reminders": { "type": "array", "description": "A list of reminders for the event.", "items": { "type": "object", "required": [ "minutes_before_event", "type" ], "properties": { "email_subject": { "type": "string", "description": "(Email reminders only) The subject line for 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 email reminder.", "enum": [ "host", "guest" ] }, "type": { "type": "string", "description": "The reminder type.", "enum": [ "email", "webhook" ] } } } } } }, "name": { "type": "string", "description": "The name of the Scheduling Page." }, "requires_session_auth": { "type": [ "boolean", "null" ], "description": "When `true`, the [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." }, "type": { "type": "string", "description": "The type of event supported by the Configuration. When set to `group`, enables access to the\n[Group Events endpoints](/docs/reference/api/group-events/) and functionality.\nDefaults to empty (`\"\"`) for all existing Configurations." } }, "$defs": { "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_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." } } }, "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 } } } } }