---
title: entities.appointmentSchedule
description: Read appointment schedule records with the appointmentSchedule repository, and change them with the appointment schedule mutations. Same records as the REST AppointmentSchedules entity.
canonical: https://developers.coevera.com/reference/graphql/appointment-schedule/
section: graphql
verification: schema
generatedFrom: schema f155746 (2026-10-20)
publisher: Coevera
---

# entities.appointmentSchedule

Read appointment schedule records with the appointmentSchedule repository, and change them with the appointment schedule mutations. Same records as the REST AppointmentSchedules entity.

REST: [AppointmentSchedules](https://developers.coevera.com/reference/rest/appointment-schedules.md).

## Queries

- `getById(entityId: ID!): AppointmentScheduleEntity` Returns the record with the given id, or null when there is none. Deleted records are returned as well.
- `getByIds(entityIds: [ID!]!): [AppointmentScheduleEntity!]!` Returns the records with the given ids; ids without a record are left out. Deleted records are returned as well.
- `getAll(limit: Int, offset: Int, filter: AppointmentScheduleFilterInput, orderBy: [AppointmentScheduleOrderByInput!], includeDeleted: Boolean): [AppointmentScheduleEntity!]!` Returns the records that match the filter, paged with limit and offset.
- `getByCriteria(filter: AppointmentScheduleFilterInput, orderBy: [AppointmentScheduleOrderByInput!], includeDeleted: Boolean, before: String, after: String, first: Int, last: Int): AppointmentScheduleEntityConnection` Returns the records that match the filter as a cursor-paginated connection.
- `getChangedFieldsSinceRevision(id: UUID!, revision: Int!): [UUID!]!` Returns the ids of the fields of a record that changed after the given revision. Returns an empty list for entities without change tracking.

## Mutations

- `createAppointmentSchedule(input: CreateAppointmentScheduleInput!, validationLevel: [ValidationLevel!]): CreateAppointmentSchedulePayload` Create one record.
- `updateAppointmentSchedule(input: UpdateAppointmentScheduleInput!, validationLevel: [ValidationLevel!], sessionIdToUpdate: String): UpdateAppointmentSchedulePayload` Update fields.
- `bulkUpdateAppointmentSchedule(input: [CreateOrUpdateAppointmentScheduleInput!]!, deleteInput: [DeleteAppointmentScheduleInput!], validationLevel: [ValidationLevel!], rollbackMethod: RollbackMethod, match: MatchingInput): BulkUpdateAppointmentSchedulePayload` Create or update many; per-item results.
- `deleteAppointmentSchedule(input: DeleteAppointmentScheduleInput!): DeleteAppointmentSchedulePayload` Soft-delete.

## Types

### AppointmentScheduleEntity (object)

Online booking link through which people book appointments with a user in the time slots the user has available.

- `isDeleteProtected: Boolean!` True when the record is protected against deletion because it must always exist in the space. Deleting a record that is not protected can still fail on other checks. Read-only.
- `id: ID!` Unique identifier of entity.
- `isDeleted: Boolean` Specifies if the entity is considered deleted.
- `modified: DateTime` Last modification time.
- `created: DateTime` Creation time.
- `appointmentOwner: ClientEntity` User assigned as the appointment owner when a booking is made through this schedule.
- `appointmentType: AppointmentTypeEntity` Appointment type used when a booking is created.
- `owner: ClientEntity` Owner of the schedule (typically the team member whose availability is exposed).
- `replyCompanyEmail: CompanyEmailEntity` Sender company email used as the From / Reply-To on schedule confirmation emails. Empty falls back to the team space default.
- `appointmentDescription: String!` Description applied to appointments booked through this schedule.
- `appointmentDuration: Float` Duration of each booked appointment.
- `appointmentLocation: String!` Location applied to appointments booked through this schedule.
- `appointmentLocationType: AppointmentScheduleLocationTypeEnum` Where booked appointments take place: the location given in appointmentLocation (Custom), or a Microsoft Teams (Microsoft) or Zoom (Zoom) online meeting.
- `appointmentOwnerId: ID!` Id of the user receiving the booking.
- `appointmentSubject: String!` Subject applied to appointments booked through this schedule.
- `appointmentSubjectUsesScheduleName: Boolean!` When true, booked appointments use the scheduleName as their subject instead of appointmentSubject.
- `appointmentTypeId: ID!` Id of the appointment type used for appointments booked through the schedule.
- `availabilityTzid: String` IANA timezone (e.g. "Europe/Bratislava") in which availability windows are defined.
- `bufferTimeAfter: Int!` Buffer in seconds kept free after each booked appointment (e.g. 900 = 15 minutes).
- `bufferTimeBefore: Int!` Buffer in seconds kept free before each booked appointment (e.g. 900 = 15 minutes).
- `confirmationPageType: AppointmentScheduleConfirmationPageTypeEnum` What is shown to the booker after confirming (e.g. default Coevera page or a custom redirect URL).
- `confirmationPageUrl: String` Custom URL the booker is redirected to after confirming. Used when confirmationPageType selects a custom redirect.
- `isEnabled: Boolean!` Master switch for the schedule. Disabled schedules do not accept new bookings.
- `minimumNoticeTime: Int!` Minimum notice in seconds required before a slot can be booked (e.g. 3600 = one hour).
- `name: String!` Admin-only name for the schedule, used in pickers and lists. Not shown to bookers; use scheduleName for the public-facing name.
- `ownerId: ID!` Id of the schedule owner.
- `planningDayOffset: Int!` With Offset planning, how many days ahead the schedule remains bookable.
- `planningPeriodFrom: Date` With Period planning, first date bookings are accepted for.
- `planningPeriodTo: Date` With Period planning, last date bookings are accepted for.
- `planningType: AppointmentSchedulePlanningTypeEnum` Time window in which the schedule accepts bookings: any future date (Infinite), up to planningDayOffset days ahead (Offset), or between planningPeriodFrom and planningPeriodTo (Period).
- `reminderEmailEnabled: Boolean!` True when a reminder email is sent to invitees ahead of the booked appointment.
- `reminderEmailOffset: Int!` Time before the appointment when the reminder email is sent. Interpreted using reminderEmailOffsetType.
- `reminderEmailOffsetType: AppointmentScheduleReminderOffsetTypeEnum` Time unit of reminderEmailOffset: Minute, Hour, Day or Week.
- `replyCompanyEmailId: ID` Id of the company email used as the From / Reply-To on schedule confirmation emails. Empty falls back to the team space default.
- `scheduleName: String!` Public-facing name of the schedule, shown to bookers on the booking page.
- `timeIncrement: Int!` Step in seconds between offered start times (e.g. 900 means slots at :00, :15, :30, :45).
- `type: AppointmentScheduleTypeEnum` Kind of meetings booked through the schedule: one-to-one (OneToOne) or group (Group) meetings.
- `url: String!` Public URL slug of the schedule, used to share the booking page.
- `additionalFieldsData: [AppointmentScheduleAdditionalField!]!` Custom fields the booker is asked to fill in on the booking page, in display order.
- `availabilityData: AppointmentScheduleAvailability!` Weekly availability windows (per weekday) used to compute bookable slots, in the schedule's availabilityTzid timezone.
- `appointmentInviteesData: [AppointmentScheduleInvitee!]!` Default invitees added to appointments booked through this schedule (Coevera users or external email addresses).
- `instancePermissions: [EntityPermsEnum!]! (1 args)` Permissions the current user has on this record, out of the requested ones.
- `availableSlots: [DateTime!]! (3 args)` Start times of the free booking slots the schedule offers between the two dates. Empty when the schedule is disabled.
- `createdAppointmentsCount: Int!` Number of appointments booked through this schedule.
- `upcomingAppointmentsCount: Int!` Number of appointments booked through this schedule that are not finished.
- `completedAppointmentsCount: Int!` Number of appointments booked through this schedule that were completed.
- `canceledAppointmentsCount: Int!` Number of appointments booked through this schedule that were canceled.

### AppointmentScheduleEntityConnection (object)

Paginated list of AppointmentSchedule records.

- `pageInfo: PageInfo!` Pagination data for this connection.
- `edges: [AppointmentScheduleEntityEdge]!` Contains the nodes in this connection.
- `totalCount: Int` Total number of items in the connection.

### AppointmentScheduleEntityEdge (object)

A Relay edge containing a `AppointmentScheduleEntity` and its cursor.

- `node: AppointmentScheduleEntity` The item at the end of the edge
- `cursor: String!` A cursor for use in pagination

### AppointmentScheduleConfirmationPageTypeEnumFilterInput (input)

Conditions on an enumeration field. Several conditions given together must all match.

- `eq: [AppointmentScheduleConfirmationPageTypeEnum!]` Matches any of the listed values.
- `NOT: AppointmentScheduleConfirmationPageTypeEnumFilterInput` Matches values that do not meet this condition.

### AppointmentScheduleFilterInput (input)

Filter conditions for AppointmentSchedule records. Conditions on different fields are combined with AND; use OR, AND and NOT for other combinations.

- `OR: [AppointmentScheduleFilterInput!]` Matches records that meet at least one of the listed filters.
- `AND: [AppointmentScheduleFilterInput!]` Matches records that meet all of the listed filters.
- `NOT: AppointmentScheduleFilterInput` Matches records that do not meet this filter.
- `globalSearchQuery: String` Search term matched against the fields that the global search covers for this entity.
- `id: EntityFilterStringField` Unique identifier of entity.
- `isDeleted: Boolean` Specifies if the entity is considered deleted.
- `modified: EntityFilterDateTimeField` Last modification time.
- `created: EntityFilterDateTimeField` Creation time.
- `appointmentDescription: EntityFilterStringField` Description applied to appointments booked through this schedule.
- `appointmentDuration: EntityFilterNumberField` Duration of each booked appointment.
- `appointmentLocation: EntityFilterStringField` Location applied to appointments booked through this schedule.
- `appointmentLocationType: AppointmentScheduleLocationTypeEnumFilterInput` Where booked appointments take place: the location given in appointmentLocation (Custom), or a Microsoft Teams (Microsoft) or Zoom (Zoom) online meeting.
- `appointmentOwnerId: EntityFilterStringField` Id of the user receiving the booking.
- `appointmentSubject: EntityFilterStringField` Subject applied to appointments booked through this schedule.
- `appointmentSubjectUsesScheduleName: Boolean` When true, booked appointments use the scheduleName as their subject instead of appointmentSubject.
- `appointmentTypeId: EntityFilterStringField` Id of the appointment type used for appointments booked through the schedule.
- `availabilityTzid: EntityFilterStringField` IANA timezone (e.g. "Europe/Bratislava") in which availability windows are defined.
- `bufferTimeAfter: EntityFilterNumberField` Buffer in seconds kept free after each booked appointment (e.g. 900 = 15 minutes).
- `bufferTimeBefore: EntityFilterNumberField` Buffer in seconds kept free before each booked appointment (e.g. 900 = 15 minutes).
- `confirmationPageType: AppointmentScheduleConfirmationPageTypeEnumFilterInput` What is shown to the booker after confirming (e.g. default Coevera page or a custom redirect URL).
- `confirmationPageUrl: EntityFilterStringField` Custom URL the booker is redirected to after confirming. Used when confirmationPageType selects a custom redirect.
- `isEnabled: Boolean` Master switch for the schedule. Disabled schedules do not accept new bookings.
- `minimumNoticeTime: EntityFilterNumberField` Minimum notice in seconds required before a slot can be booked (e.g. 3600 = one hour).
- `name: EntityFilterStringField` Admin-only name for the schedule, used in pickers and lists. Not shown to bookers; use scheduleName for the public-facing name.
- `ownerId: EntityFilterStringField` Id of the schedule owner.
- `planningDayOffset: EntityFilterNumberField` With Offset planning, how many days ahead the schedule remains bookable.
- `planningType: AppointmentSchedulePlanningTypeEnumFilterInput` Time window in which the schedule accepts bookings: any future date (Infinite), up to planningDayOffset days ahead (Offset), or between planningPeriodFrom and planningPeriodTo (Period).
- `reminderEmailEnabled: Boolean` True when a reminder email is sent to invitees ahead of the booked appointment.
- `reminderEmailOffset: EntityFilterNumberField` Time before the appointment when the reminder email is sent. Interpreted using reminderEmailOffsetType.
- `reminderEmailOffsetType: AppointmentScheduleReminderOffsetTypeEnumFilterInput` Time unit of reminderEmailOffset: Minute, Hour, Day or Week.
- `replyCompanyEmailId: EntityFilterStringField` Id of the company email used as the From / Reply-To on schedule confirmation emails. Empty falls back to the team space default.
- `scheduleName: EntityFilterStringField` Public-facing name of the schedule, shown to bookers on the booking page.
- `timeIncrement: EntityFilterNumberField` Step in seconds between offered start times (e.g. 900 means slots at :00, :15, :30, :45).
- `type: AppointmentScheduleTypeEnumFilterInput` Kind of meetings booked through the schedule: one-to-one (OneToOne) or group (Group) meetings.
- `url: EntityFilterStringField` Public URL slug of the schedule, used to share the booking page.
- `appointmentOwner: ClientFilterInput` User assigned as the appointment owner when a booking is made through this schedule. Matches records where a related record meets these conditions.
- `appointmentType: AppointmentTypeFilterInput` Appointment type used when a booking is created. Matches records where a related record meets these conditions.
- `owner: ClientFilterInput` Owner of the schedule (typically the team member whose availability is exposed). Matches records where a related record meets these conditions.
- `replyCompanyEmail: CompanyEmailFilterInput` Sender company email used as the From / Reply-To on schedule confirmation emails. Empty falls back to the team space default. Matches records where a related record meets these conditions.

### AppointmentScheduleLocationTypeEnumFilterInput (input)

Conditions on an enumeration field. Several conditions given together must all match.

- `eq: [AppointmentScheduleLocationTypeEnum!]` Matches any of the listed values.
- `NOT: AppointmentScheduleLocationTypeEnumFilterInput` Matches values that do not meet this condition.

### AppointmentScheduleOrderByInput (input)

Sorting of AppointmentSchedule records. Set exactly one field in each item; list several items to sort by more fields, in order of priority.

- `id: OrderByEnum` Unique identifier of entity.
- `isDeleted: OrderByEnum` Specifies if the entity is considered deleted.
- `modified: OrderByEnum` Last modification time.
- `created: OrderByEnum` Creation time.
- `appointmentOwner: [ClientOrderByNestedInput!]` User assigned as the appointment owner when a booking is made through this schedule. Sorts by fields of the related record, listed in order of priority.
- `appointmentType: [AppointmentTypeOrderByNestedInput!]` Appointment type used when a booking is created. Sorts by fields of the related record, listed in order of priority.
- `owner: [ClientOrderByNestedInput!]` Owner of the schedule (typically the team member whose availability is exposed). Sorts by fields of the related record, listed in order of priority.
- `replyCompanyEmail: [CompanyEmailOrderByNestedInput!]` Sender company email used as the From / Reply-To on schedule confirmation emails. Empty falls back to the team space default. Sorts by fields of the related record, listed in order of priority.
- `appointmentDescription: OrderByEnum` Description applied to appointments booked through this schedule.
- `appointmentDuration: OrderByEnum` Duration of each booked appointment.
- `appointmentLocation: OrderByEnum` Location applied to appointments booked through this schedule.
- `appointmentLocationType: OrderByEnum` Where booked appointments take place: the location given in appointmentLocation (Custom), or a Microsoft Teams (Microsoft) or Zoom (Zoom) online meeting.
- `appointmentOwnerId: OrderByEnum` Id of the user receiving the booking.
- `appointmentSubject: OrderByEnum` Subject applied to appointments booked through this schedule.
- `appointmentSubjectUsesScheduleName: OrderByEnum` When true, booked appointments use the scheduleName as their subject instead of appointmentSubject.
- `appointmentTypeId: OrderByEnum` Id of the appointment type used for appointments booked through the schedule.
- `bufferTimeAfter: OrderByEnum` Buffer in seconds kept free after each booked appointment (e.g. 900 = 15 minutes).
- `bufferTimeBefore: OrderByEnum` Buffer in seconds kept free before each booked appointment (e.g. 900 = 15 minutes).
- `confirmationPageType: OrderByEnum` What is shown to the booker after confirming (e.g. default Coevera page or a custom redirect URL).
- `confirmationPageUrl: OrderByEnum` Custom URL the booker is redirected to after confirming. Used when confirmationPageType selects a custom redirect.
- `isEnabled: OrderByEnum` Master switch for the schedule. Disabled schedules do not accept new bookings.
- `minimumNoticeTime: OrderByEnum` Minimum notice in seconds required before a slot can be booked (e.g. 3600 = one hour).
- `name: OrderByEnum` Admin-only name for the schedule, used in pickers and lists. Not shown to bookers; use scheduleName for the public-facing name.
- `ownerId: OrderByEnum` Id of the schedule owner.
- `planningDayOffset: OrderByEnum` With Offset planning, how many days ahead the schedule remains bookable.
- `planningPeriodFrom: OrderByEnum` With Period planning, first date bookings are accepted for.
- `planningPeriodTo: OrderByEnum` With Period planning, last date bookings are accepted for.
- `planningType: OrderByEnum` Time window in which the schedule accepts bookings: any future date (Infinite), up to planningDayOffset days ahead (Offset), or between planningPeriodFrom and planningPeriodTo (Period).
- `reminderEmailEnabled: OrderByEnum` True when a reminder email is sent to invitees ahead of the booked appointment.
- `reminderEmailOffset: OrderByEnum` Time before the appointment when the reminder email is sent. Interpreted using reminderEmailOffsetType.
- `reminderEmailOffsetType: OrderByEnum` Time unit of reminderEmailOffset: Minute, Hour, Day or Week.
- `replyCompanyEmailId: OrderByEnum` Id of the company email used as the From / Reply-To on schedule confirmation emails. Empty falls back to the team space default.
- `scheduleName: OrderByEnum` Public-facing name of the schedule, shown to bookers on the booking page.
- `timeIncrement: OrderByEnum` Step in seconds between offered start times (e.g. 900 means slots at :00, :15, :30, :45).
- `type: OrderByEnum` Kind of meetings booked through the schedule: one-to-one (OneToOne) or group (Group) meetings.
- `url: OrderByEnum` Public URL slug of the schedule, used to share the booking page.

### AppointmentSchedulePlanningTypeEnumFilterInput (input)

Conditions on an enumeration field. Several conditions given together must all match.

- `eq: [AppointmentSchedulePlanningTypeEnum!]` Matches any of the listed values.
- `NOT: AppointmentSchedulePlanningTypeEnumFilterInput` Matches values that do not meet this condition.

### AppointmentScheduleReminderOffsetTypeEnumFilterInput (input)

Conditions on an enumeration field. Several conditions given together must all match.

- `eq: [AppointmentScheduleReminderOffsetTypeEnum!]` Matches any of the listed values.
- `NOT: AppointmentScheduleReminderOffsetTypeEnumFilterInput` Matches values that do not meet this condition.

### AppointmentScheduleTypeEnumFilterInput (input)

Conditions on an enumeration field. Several conditions given together must all match.

- `eq: [AppointmentScheduleTypeEnum!]` Matches any of the listed values.
- `NOT: AppointmentScheduleTypeEnumFilterInput` Matches values that do not meet this condition.

### AppointmentScheduleAdditionalFieldParams (input)

Appointment field the booker fills in on the booking page of an appointment schedule.

- `fieldId: ID!` Id of the appointment field the booker fills in; the value is saved on the booked appointment.
- `label: String!` Label of the field on the booking page.
- `isRequired: Boolean!` True when the booker must fill in the field.

### AppointmentScheduleAvailabilityParams (input)

Weekly availability of an appointment schedule: the time windows in which appointments can be booked on each weekday.

- `monday: AppointmentScheduleDayAvailabilityParams!` Availability on Mondays.
- `tuesday: AppointmentScheduleDayAvailabilityParams!` Availability on Tuesdays.
- `wednesday: AppointmentScheduleDayAvailabilityParams!` Availability on Wednesdays.
- `thursday: AppointmentScheduleDayAvailabilityParams!` Availability on Thursdays.
- `friday: AppointmentScheduleDayAvailabilityParams!` Availability on Fridays.
- `saturday: AppointmentScheduleDayAvailabilityParams!` Availability on Saturdays.
- `sunday: AppointmentScheduleDayAvailabilityParams!` Availability on Sundays.

### AppointmentScheduleAvailabilitySlotParams (input)

Time window of a day in which appointments can be booked.

- `start: Int!` Start of the time window, in seconds after midnight (e.g. 32400 for 09:00) in the availabilityTzid timezone of the schedule.
- `end: Int!` End of the time window, in seconds after midnight. A booked appointment, including its buffer times, must fit inside one window.

### AppointmentScheduleDayAvailabilityParams (input)

Availability of an appointment schedule on one weekday.

- `isEnabled: Boolean!` True when bookings can be made on this weekday; when false, the slots are ignored.
- `slots: [AppointmentScheduleAvailabilitySlotParams!]!` Time windows of the day in which bookings can be made; overlapping windows are merged.

### AppointmentScheduleInviteeParams (input)

Default invitee of an appointment schedule: a Coevera user, a contact or an external email address.

- `type: AppointmentScheduleInviteeType!` Kind of invitee: a Coevera user (Client), a contact (Contact) or an external email address (Email). Only Client invitees are added to booked appointments.
- `email: String!` Email address of the invitee.
- `entityId: ID` Id of the user or contact; empty for an Email invitee.

### CreateAppointmentScheduleInput (input)

Field values of a new AppointmentSchedule record.

- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).
- `modified: DateTime` Last modification time.
- `created: DateTime` Creation time.
- `appointmentDescription: String!` Description applied to appointments booked through this schedule.
- `appointmentDuration: Float` Duration of each booked appointment.
- `appointmentLocation: String!` Location applied to appointments booked through this schedule.
- `appointmentLocationType: AppointmentScheduleLocationTypeEnum` Where booked appointments take place: the location given in appointmentLocation (Custom), or a Microsoft Teams (Microsoft) or Zoom (Zoom) online meeting.
- `appointmentOwnerId: ID!` Id of the user receiving the booking.
- `appointmentSubject: String!` Subject applied to appointments booked through this schedule.
- `appointmentSubjectUsesScheduleName: Boolean!` When true, booked appointments use the scheduleName as their subject instead of appointmentSubject.
- `appointmentTypeId: ID!` Id of the appointment type used for appointments booked through the schedule.
- `availabilityTzid: String` IANA timezone (e.g. "Europe/Bratislava") in which availability windows are defined.
- `bufferTimeAfter: Int!` Buffer in seconds kept free after each booked appointment (e.g. 900 = 15 minutes).
- `bufferTimeBefore: Int!` Buffer in seconds kept free before each booked appointment (e.g. 900 = 15 minutes).
- `confirmationPageType: AppointmentScheduleConfirmationPageTypeEnum` What is shown to the booker after confirming (e.g. default Coevera page or a custom redirect URL).
- `confirmationPageUrl: String` Custom URL the booker is redirected to after confirming. Used when confirmationPageType selects a custom redirect.
- `isEnabled: Boolean!` Master switch for the schedule. Disabled schedules do not accept new bookings.
- `minimumNoticeTime: Int!` Minimum notice in seconds required before a slot can be booked (e.g. 3600 = one hour).
- `name: String!` Admin-only name for the schedule, used in pickers and lists. Not shown to bookers; use scheduleName for the public-facing name.
- `ownerId: ID!` Id of the schedule owner.
- `planningDayOffset: Int!` With Offset planning, how many days ahead the schedule remains bookable.
- `planningPeriodFrom: Date` With Period planning, first date bookings are accepted for.
- `planningPeriodTo: Date` With Period planning, last date bookings are accepted for.
- `planningType: AppointmentSchedulePlanningTypeEnum` Time window in which the schedule accepts bookings: any future date (Infinite), up to planningDayOffset days ahead (Offset), or between planningPeriodFrom and planningPeriodTo (Period).
- `reminderEmailEnabled: Boolean!` True when a reminder email is sent to invitees ahead of the booked appointment.
- `reminderEmailOffset: Int!` Time before the appointment when the reminder email is sent. Interpreted using reminderEmailOffsetType.
- `reminderEmailOffsetType: AppointmentScheduleReminderOffsetTypeEnum` Time unit of reminderEmailOffset: Minute, Hour, Day or Week.
- `replyCompanyEmailId: ID` Id of the company email used as the From / Reply-To on schedule confirmation emails. Empty falls back to the team space default.
- `scheduleName: String!` Public-facing name of the schedule, shown to bookers on the booking page.
- `timeIncrement: Int!` Step in seconds between offered start times (e.g. 900 means slots at :00, :15, :30, :45).
- `type: AppointmentScheduleTypeEnum` Kind of meetings booked through the schedule: one-to-one (OneToOne) or group (Group) meetings.
- `url: String!` Public URL slug of the schedule, used to share the booking page.
- `additionalFieldsData: [AppointmentScheduleAdditionalFieldParams!]!` Custom fields the booker is asked to fill in on the booking page, in display order.
- `availabilityData: AppointmentScheduleAvailabilityParams!` Weekly availability windows (per weekday) used to compute bookable slots, in the schedule's availabilityTzid timezone.
- `appointmentInviteesData: [AppointmentScheduleInviteeParams!]!` Default invitees added to appointments booked through this schedule (Coevera users or external email addresses).

### CreateOrUpdateAppointmentScheduleInput (input)

Field values of an AppointmentSchedule record to create, or to update when its id is set.

- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).
- `id: ID` Unique identifier of entity.
- `modified: DateTime` Last modification time.
- `created: DateTime` Creation time.
- `appointmentDescription: String` Description applied to appointments booked through this schedule.
- `appointmentDuration: Float` Duration of each booked appointment.
- `appointmentLocation: String` Location applied to appointments booked through this schedule.
- `appointmentLocationType: AppointmentScheduleLocationTypeEnum` Where booked appointments take place: the location given in appointmentLocation (Custom), or a Microsoft Teams (Microsoft) or Zoom (Zoom) online meeting.
- `appointmentOwnerId: ID` Id of the user receiving the booking.
- `appointmentSubject: String` Subject applied to appointments booked through this schedule.
- `appointmentSubjectUsesScheduleName: Boolean` When true, booked appointments use the scheduleName as their subject instead of appointmentSubject.
- `appointmentTypeId: ID` Id of the appointment type used for appointments booked through the schedule.
- `availabilityTzid: String` IANA timezone (e.g. "Europe/Bratislava") in which availability windows are defined.
- `bufferTimeAfter: Int` Buffer in seconds kept free after each booked appointment (e.g. 900 = 15 minutes).
- `bufferTimeBefore: Int` Buffer in seconds kept free before each booked appointment (e.g. 900 = 15 minutes).
- `confirmationPageType: AppointmentScheduleConfirmationPageTypeEnum` What is shown to the booker after confirming (e.g. default Coevera page or a custom redirect URL).
- `confirmationPageUrl: String` Custom URL the booker is redirected to after confirming. Used when confirmationPageType selects a custom redirect.
- `isEnabled: Boolean` Master switch for the schedule. Disabled schedules do not accept new bookings.
- `minimumNoticeTime: Int` Minimum notice in seconds required before a slot can be booked (e.g. 3600 = one hour).
- `name: String` Admin-only name for the schedule, used in pickers and lists. Not shown to bookers; use scheduleName for the public-facing name.
- `ownerId: ID` Id of the schedule owner.
- `planningDayOffset: Int` With Offset planning, how many days ahead the schedule remains bookable.
- `planningPeriodFrom: Date` With Period planning, first date bookings are accepted for.
- `planningPeriodTo: Date` With Period planning, last date bookings are accepted for.
- `planningType: AppointmentSchedulePlanningTypeEnum` Time window in which the schedule accepts bookings: any future date (Infinite), up to planningDayOffset days ahead (Offset), or between planningPeriodFrom and planningPeriodTo (Period).
- `reminderEmailEnabled: Boolean` True when a reminder email is sent to invitees ahead of the booked appointment.
- `reminderEmailOffset: Int` Time before the appointment when the reminder email is sent. Interpreted using reminderEmailOffsetType.
- `reminderEmailOffsetType: AppointmentScheduleReminderOffsetTypeEnum` Time unit of reminderEmailOffset: Minute, Hour, Day or Week.
- `replyCompanyEmailId: ID` Id of the company email used as the From / Reply-To on schedule confirmation emails. Empty falls back to the team space default.
- `scheduleName: String` Public-facing name of the schedule, shown to bookers on the booking page.
- `timeIncrement: Int` Step in seconds between offered start times (e.g. 900 means slots at :00, :15, :30, :45).
- `type: AppointmentScheduleTypeEnum` Kind of meetings booked through the schedule: one-to-one (OneToOne) or group (Group) meetings.
- `url: String` Public URL slug of the schedule, used to share the booking page.
- `additionalFieldsData: [AppointmentScheduleAdditionalFieldParams!]` Custom fields the booker is asked to fill in on the booking page, in display order.
- `availabilityData: AppointmentScheduleAvailabilityParams` Weekly availability windows (per weekday) used to compute bookable slots, in the schedule's availabilityTzid timezone.
- `appointmentInviteesData: [AppointmentScheduleInviteeParams!]` Default invitees added to appointments booked through this schedule (Coevera users or external email addresses).

### DeleteAppointmentScheduleInput (input)

Id of the AppointmentSchedule record to delete.

- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).
- `id: ID!` Unique identifier of entity.

### UpdateAppointmentScheduleInput (input)

Id of an AppointmentSchedule record and the field values to change.

- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).
- `id: ID!` Unique identifier of entity.
- `modified: DateTime` Last modification time.
- `created: DateTime` Creation time.
- `appointmentDescription: String` Description applied to appointments booked through this schedule.
- `appointmentDuration: Float` Duration of each booked appointment.
- `appointmentLocation: String` Location applied to appointments booked through this schedule.
- `appointmentLocationType: AppointmentScheduleLocationTypeEnum` Where booked appointments take place: the location given in appointmentLocation (Custom), or a Microsoft Teams (Microsoft) or Zoom (Zoom) online meeting.
- `appointmentOwnerId: ID` Id of the user receiving the booking.
- `appointmentSubject: String` Subject applied to appointments booked through this schedule.
- `appointmentSubjectUsesScheduleName: Boolean` When true, booked appointments use the scheduleName as their subject instead of appointmentSubject.
- `appointmentTypeId: ID` Id of the appointment type used for appointments booked through the schedule.
- `availabilityTzid: String` IANA timezone (e.g. "Europe/Bratislava") in which availability windows are defined.
- `bufferTimeAfter: Int` Buffer in seconds kept free after each booked appointment (e.g. 900 = 15 minutes).
- `bufferTimeBefore: Int` Buffer in seconds kept free before each booked appointment (e.g. 900 = 15 minutes).
- `confirmationPageType: AppointmentScheduleConfirmationPageTypeEnum` What is shown to the booker after confirming (e.g. default Coevera page or a custom redirect URL).
- `confirmationPageUrl: String` Custom URL the booker is redirected to after confirming. Used when confirmationPageType selects a custom redirect.
- `isEnabled: Boolean` Master switch for the schedule. Disabled schedules do not accept new bookings.
- `minimumNoticeTime: Int` Minimum notice in seconds required before a slot can be booked (e.g. 3600 = one hour).
- `name: String` Admin-only name for the schedule, used in pickers and lists. Not shown to bookers; use scheduleName for the public-facing name.
- `ownerId: ID` Id of the schedule owner.
- `planningDayOffset: Int` With Offset planning, how many days ahead the schedule remains bookable.
- `planningPeriodFrom: Date` With Period planning, first date bookings are accepted for.
- `planningPeriodTo: Date` With Period planning, last date bookings are accepted for.
- `planningType: AppointmentSchedulePlanningTypeEnum` Time window in which the schedule accepts bookings: any future date (Infinite), up to planningDayOffset days ahead (Offset), or between planningPeriodFrom and planningPeriodTo (Period).
- `reminderEmailEnabled: Boolean` True when a reminder email is sent to invitees ahead of the booked appointment.
- `reminderEmailOffset: Int` Time before the appointment when the reminder email is sent. Interpreted using reminderEmailOffsetType.
- `reminderEmailOffsetType: AppointmentScheduleReminderOffsetTypeEnum` Time unit of reminderEmailOffset: Minute, Hour, Day or Week.
- `replyCompanyEmailId: ID` Id of the company email used as the From / Reply-To on schedule confirmation emails. Empty falls back to the team space default.
- `scheduleName: String` Public-facing name of the schedule, shown to bookers on the booking page.
- `timeIncrement: Int` Step in seconds between offered start times (e.g. 900 means slots at :00, :15, :30, :45).
- `type: AppointmentScheduleTypeEnum` Kind of meetings booked through the schedule: one-to-one (OneToOne) or group (Group) meetings.
- `url: String` Public URL slug of the schedule, used to share the booking page.
- `additionalFieldsData: [AppointmentScheduleAdditionalFieldParams!]` Custom fields the booker is asked to fill in on the booking page, in display order.
- `availabilityData: AppointmentScheduleAvailabilityParams` Weekly availability windows (per weekday) used to compute bookable slots, in the schedule's availabilityTzid timezone.
- `appointmentInviteesData: [AppointmentScheduleInviteeParams!]` Default invitees added to appointments booked through this schedule (Coevera users or external email addresses).

### BulkUpdateAppointmentSchedulePayload (object)

Result of the bulkUpdateAppointmentSchedule mutation.

- `result: BulkUpdateResults!` Ids of the created, updated and deleted records, and the items that failed.

### CreateAppointmentSchedulePayload (object)

Result of the createAppointmentSchedule mutation.

- `appointmentSchedule: AppointmentScheduleEntity` The created record.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### DeleteAppointmentSchedulePayload (object)

Result of the deleteAppointmentSchedule mutation.

- `appointmentSchedule: AppointmentScheduleEntity` The deleted record.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### UpdateAppointmentSchedulePayload (object)

Result of the updateAppointmentSchedule mutation.

- `appointmentSchedule: AppointmentScheduleEntity` The updated record.
- `clientMutationId: String` Optional client-supplied identifier passed on a mutation input and echoed back unchanged on its payload, so a client can correlate the response with its request (Relay convention).

### AppointmentScheduleAdditionalField (object)

Appointment field the booker fills in on the booking page of an appointment schedule.

- `fieldId: ID!` Id of the appointment field the booker fills in; the value is saved on the booked appointment.
- `label: String!` Label of the field on the booking page.
- `isRequired: Boolean!` True when the booker must fill in the field.

### AppointmentScheduleAvailability (object)

Weekly availability of an appointment schedule: the time windows in which appointments can be booked on each weekday.

- `monday: AppointmentScheduleDayAvailability!` Availability on Mondays.
- `tuesday: AppointmentScheduleDayAvailability!` Availability on Tuesdays.
- `wednesday: AppointmentScheduleDayAvailability!` Availability on Wednesdays.
- `thursday: AppointmentScheduleDayAvailability!` Availability on Thursdays.
- `friday: AppointmentScheduleDayAvailability!` Availability on Fridays.
- `saturday: AppointmentScheduleDayAvailability!` Availability on Saturdays.
- `sunday: AppointmentScheduleDayAvailability!` Availability on Sundays.

### AppointmentScheduleAvailabilitySlot (object)

Time window of a day in which appointments can be booked.

- `start: Int!` Start of the time window, in seconds after midnight (e.g. 32400 for 09:00) in the availabilityTzid timezone of the schedule.
- `end: Int!` End of the time window, in seconds after midnight. A booked appointment, including its buffer times, must fit inside one window.

### AppointmentScheduleConfirmationPageTypeEnum (enum)

What the booker sees after confirming a booking.

- `ConfirmationPage` The built-in confirmation page is shown.
- `ExternalUrl` The booker is redirected to confirmationPageUrl.

### AppointmentScheduleDayAvailability (object)

Availability of an appointment schedule on one weekday.

- `isEnabled: Boolean!` True when bookings can be made on this weekday; when false, the slots are ignored.
- `slots: [AppointmentScheduleAvailabilitySlot!]!` Time windows of the day in which bookings can be made; overlapping windows are merged.

### AppointmentScheduleInvitee (object)

Default invitee of an appointment schedule: a Coevera user, a contact or an external email address.

- `type: AppointmentScheduleInviteeType!` Kind of invitee: a Coevera user (Client), a contact (Contact) or an external email address (Email). Only Client invitees are added to booked appointments.
- `email: String!` Email address of the invitee.
- `entityId: ID` Id of the user or contact; empty for an Email invitee.

### AppointmentScheduleInviteeType (enum)

Kind of default invitee of an appointment schedule.

- `Client` Coevera user; entityId identifies the user.
- `Contact` Contact; entityId identifies the contact.
- `Email` External email address given in email.

### AppointmentScheduleLocationTypeEnum (enum)

Where meetings booked through an appointment schedule take place.

- `Custom` Location given in appointmentLocation.
- `Microsoft` Microsoft Teams online meeting.
- `Zoom` Zoom online meeting.

### AppointmentSchedulePlanningTypeEnum (enum)

Time window in which an appointment schedule accepts bookings.

- `Infinite` Bookings are accepted for any future date.
- `Offset` Bookings are accepted up to planningDayOffset days ahead.
- `Period` Bookings are accepted only between planningPeriodFrom and planningPeriodTo.

### AppointmentScheduleReminderOffsetTypeEnum (enum)

Time unit of the reminder email offset of an appointment schedule.

- `Minute` Offset measured in minutes.
- `Hour` Offset measured in hours.
- `Day` Offset measured in days.
- `Week` Offset measured in weeks.

### AppointmentScheduleTypeEnum (enum)

Kind of meeting booked through an appointment schedule.

- `OneToOne` The booker meets only the schedule owner.
- `Group` The booker meets the schedule owner together with their team members at the same time.

Types several repositories share, such as `PageInfo` and the filter fields, are in the [types index](https://developers.coevera.com/reference/graphql/types.md). The [SDL](https://developers.coevera.com/graphql/schema.graphql) has the whole schema in one file.

## Example

```graphql
query FirstAppointmentSchedules {
  entities {
    appointmentSchedule {
      getByCriteria(first: 3, orderBy: [{ modified: Desc }]) {
        totalCount
        edges { node { id name modified } }
      }
    }
  }
}
```

```bash
curl 'https://{region}.api.coevera.com/api/v100/app/space/{space_id}/graphql/public' \
  --user "$COEVERA_API_KEY:$COEVERA_API_SECRET" \
  --header 'Content-Type: application/json' \
  --data '{"query":"query FirstAppointmentSchedules { entities { appointmentSchedule { getByCriteria(first: 3, orderBy: [{ modified: Desc }]) { totalCount edges { node { id name modified } } } } } }"}'
```
