{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-bookings/json-schema/microsoft-bookings-microsoft-graph-booking-business-schema.json",
  "title": "microsoft.graph.bookingBusiness",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/microsoft-bookings-graph-openapi.yml#/components/schemas/microsoft.graph.bookingBusiness",
  "allOf": [
    {
      "$ref": "#/$defs/microsoft.graph.entity"
    },
    {
      "title": "bookingBusiness",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "address": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.physicalAddress"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The street address of the business. The address property, together with phone and webSiteUrl, appear in the footer of a business scheduling page. The attribute type of physicalAddress is not supported in v1.0. Internally we map the addresses to the type others."
        },
        "bookingPageSettings": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.bookingPageSettings"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "Settings for the published booking page."
        },
        "businessHours": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.bookingWorkHours"
          },
          "description": "The hours of operation for the business."
        },
        "businessType": {
          "type": [
            "string",
            "null"
          ],
          "description": "The type of business."
        },
        "createdDateTime": {
          "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
          "type": [
            "string",
            "null"
          ],
          "description": "The date, time, and time zone when the booking business was created. The timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.",
          "format": "date-time"
        },
        "defaultCurrencyIso": {
          "type": [
            "string",
            "null"
          ],
          "description": "The code for the currency that the business operates in on Microsoft Bookings."
        },
        "displayName": {
          "type": "string",
          "description": "The name of the business, which interfaces with customers. This name appears at the top of the business scheduling page."
        },
        "email": {
          "type": [
            "string",
            "null"
          ],
          "description": "The email address for the business."
        },
        "isPublished": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "The scheduling page has been made available to external customers. Use the publish and unpublish actions to set this property. Read-only.",
          "readOnly": true
        },
        "languageTag": {
          "type": [
            "string",
            "null"
          ],
          "description": "The language of the self-service booking page."
        },
        "lastUpdatedDateTime": {
          "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
          "type": [
            "string",
            "null"
          ],
          "description": "The date, time, and time zone when the booking business was last updated. The timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.",
          "format": "date-time"
        },
        "phone": {
          "type": [
            "string",
            "null"
          ],
          "description": "The telephone number for the business. The phone property, together with address and webSiteUrl, appear in the footer of a business scheduling page."
        },
        "publicUrl": {
          "type": [
            "string",
            "null"
          ],
          "description": "The URL for the scheduling page, which is set after you publish or unpublish the page. Read-only.",
          "readOnly": true
        },
        "schedulingPolicy": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.bookingSchedulingPolicy"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "Specifies how bookings can be created for this business."
        },
        "webSiteUrl": {
          "type": [
            "string",
            "null"
          ],
          "description": "The URL of the business web site. The webSiteUrl property, together with address, phone, appear in the footer of a business scheduling page."
        },
        "appointments": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.bookingAppointment"
          },
          "description": "All the appointments of this business. Read-only. Nullable.",
          "x-ms-navigationProperty": true
        },
        "calendarView": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.bookingAppointment"
          },
          "description": "The set of appointments of this business in a specified date range. Read-only. Nullable.",
          "x-ms-navigationProperty": true
        },
        "customers": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.bookingCustomerBase"
          },
          "description": "All the customers of this business. Read-only. Nullable.",
          "x-ms-navigationProperty": true
        },
        "customQuestions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.bookingCustomQuestion"
          },
          "description": "All the custom questions of this business. Read-only. Nullable.",
          "x-ms-navigationProperty": true
        },
        "services": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.bookingService"
          },
          "description": "All the services offered by this business. Read-only. Nullable.",
          "x-ms-navigationProperty": true
        },
        "staffMembers": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.bookingStaffMemberBase"
          },
          "description": "All the staff members that provide services in this business. Read-only. Nullable.",
          "x-ms-navigationProperty": true
        },
        "@odata.type": {
          "type": "string"
        }
      },
      "description": "Represents a Microsoft Bookings Business."
    }
  ],
  "x-ms-discriminator-value": "#microsoft.graph.bookingBusiness",
  "$defs": {
    "ReferenceNumeric": {
      "enum": [
        "-INF",
        "INF",
        "NaN"
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "microsoft.graph.answerInputType": {
      "title": "answerInputType",
      "enum": [
        "text",
        "radioButton",
        "unknownFutureValue"
      ],
      "type": "string"
    },
    "microsoft.graph.bookingAppointment": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "bookingAppointment",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "additionalInformation": {
              "type": [
                "string",
                "null"
              ],
              "description": "Additional information that is sent to the customer when an appointment is confirmed."
            },
            "anonymousJoinWebUrl": {
              "type": [
                "string",
                "null"
              ],
              "description": "The URL of the meeting to join anonymously."
            },
            "appointmentLabel": {
              "type": [
                "string",
                "null"
              ],
              "description": "The custom label that can be stamped on this appointment by users."
            },
            "createdDateTime": {
              "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
              "type": [
                "string",
                "null"
              ],
              "description": "The date, time, and time zone when the appointment was created. The timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.",
              "format": "date-time"
            },
            "customerEmailAddress": {
              "type": [
                "string",
                "null"
              ],
              "description": "The SMTP address of the bookingCustomer who books the appointment."
            },
            "customerName": {
              "type": [
                "string",
                "null"
              ],
              "description": "The customer's name."
            },
            "customerNotes": {
              "type": [
                "string",
                "null"
              ],
              "description": "Notes from the customer associated with this appointment. You can get the value only when you read this bookingAppointment by its ID. You can set this property only when you initially create an appointment with a new customer."
            },
            "customerPhone": {
              "type": [
                "string",
                "null"
              ],
              "description": "The customer's phone number."
            },
            "customers": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.bookingCustomerInformationBase"
              },
              "description": "A collection of customer properties for an appointment. An appointment contains a list of customer information and each unit will indicate the properties of a customer who is part of that appointment. Optional."
            },
            "customerTimeZone": {
              "type": [
                "string",
                "null"
              ],
              "description": "The time zone of the customer. For a list of possible values, see dateTimeTimeZone."
            },
            "duration": {
              "pattern": "^-?P([0-9]+D)?(T([0-9]+H)?([0-9]+M)?([0-9]+([.][0-9]+)?S)?)?$",
              "type": "string",
              "description": "The length of the appointment, denoted in ISO8601 format.",
              "format": "duration",
              "readOnly": true
            },
            "endDateTime": {
              "$ref": "#/$defs/microsoft.graph.dateTimeTimeZone"
            },
            "filledAttendeesCount": {
              "maximum": 2147483647,
              "minimum": -2147483648,
              "type": "number",
              "description": "The current number of customers in the appointment.",
              "format": "int32",
              "readOnly": true
            },
            "isCustomerAllowedToManageBooking": {
              "type": [
                "boolean",
                "null"
              ],
              "description": "Indicates that the customer can manage bookings created by the staff. The default value is false."
            },
            "isLocationOnline": {
              "type": "boolean",
              "description": "Indicates that the appointment is held online. The default value is false."
            },
            "joinWebUrl": {
              "type": [
                "string",
                "null"
              ],
              "description": "The URL of the online meeting for the appointment."
            },
            "lastUpdatedDateTime": {
              "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
              "type": [
                "string",
                "null"
              ],
              "description": "The date, time, and time zone when the booking business was last updated. The timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.",
              "format": "date-time"
            },
            "maximumAttendeesCount": {
              "maximum": 2147483647,
              "minimum": -2147483648,
              "type": "number",
              "description": "The maximum number of customers allowed in an appointment. If maximumAttendeesCount of the service is greater than 1, pass valid customer IDs while creating or updating an appointment. To create a customer, use the Create bookingCustomer operation.",
              "format": "int32"
            },
            "optOutOfCustomerEmail": {
              "type": "boolean",
              "description": "If true indicates that the bookingCustomer for this appointment doesn't wish to receive a confirmation for this appointment."
            },
            "postBuffer": {
              "pattern": "^-?P([0-9]+D)?(T([0-9]+H)?([0-9]+M)?([0-9]+([.][0-9]+)?S)?)?$",
              "type": "string",
              "description": "The amount of time to reserve after the appointment ends, for cleaning up, as an example. The value is expressed in ISO8601 format.",
              "format": "duration"
            },
            "preBuffer": {
              "pattern": "^-?P([0-9]+D)?(T([0-9]+H)?([0-9]+M)?([0-9]+([.][0-9]+)?S)?)?$",
              "type": "string",
              "description": "The amount of time to reserve before the appointment begins, for preparation, as an example. The value is expressed in ISO8601 format.",
              "format": "duration"
            },
            "price": {
              "oneOf": [
                {
                  "type": [
                    "number",
                    "null"
                  ],
                  "format": "double"
                },
                {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                {
                  "$ref": "#/$defs/ReferenceNumeric"
                }
              ],
              "description": "The regular price for an appointment for the specified bookingService."
            },
            "priceType": {
              "$ref": "#/$defs/microsoft.graph.bookingPriceType"
            },
            "reminders": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.bookingReminder"
              },
              "description": "The collection of customer reminders sent for this appointment. The value of this property is available only when reading this bookingAppointment by its ID."
            },
            "selfServiceAppointmentId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Another tracking ID for the appointment, if the appointment was created directly by the customer on the scheduling page, as opposed to by a staff member on behalf of the customer."
            },
            "serviceId": {
              "type": [
                "string",
                "null"
              ],
              "description": "The ID of the bookingService associated with this appointment."
            },
            "serviceLocation": {
              "anyOf": [
                {
                  "$ref": "#/$defs/microsoft.graph.location"
                },
                {
                  "type": [
                    "object",
                    "null"
                  ]
                }
              ],
              "description": "The location where the service is delivered."
            },
            "serviceName": {
              "type": "string",
              "description": "The name of the bookingService associated with this appointment.This property is optional when creating a new appointment. If not specified, it's computed from the service associated with the appointment by the serviceId property."
            },
            "serviceNotes": {
              "type": [
                "string",
                "null"
              ],
              "description": "Notes from a bookingStaffMember. The value of this property is available only when reading this bookingAppointment by its ID."
            },
            "smsNotificationsEnabled": {
              "type": "boolean",
              "description": "If true, indicates SMS notifications will be sent to the customers for the appointment. Default value is false."
            },
            "staffMemberIds": {
              "type": "array",
              "items": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "description": "The ID of each bookingStaffMember who is scheduled in this appointment."
            },
            "startDateTime": {
              "$ref": "#/$defs/microsoft.graph.dateTimeTimeZone"
            },
            "@odata.type": {
              "type": "string"
            }
          },
          "description": "Represents a booked appointment of a service by a customer in a business."
        }
      ],
      "x-ms-discriminator-value": "#microsoft.graph.bookingAppointment"
    },
    "microsoft.graph.bookingCustomQuestion": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "bookingCustomQuestion",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "answerInputType": {
              "anyOf": [
                {
                  "$ref": "#/$defs/microsoft.graph.answerInputType"
                },
                {
                  "type": [
                    "object",
                    "null"
                  ]
                }
              ],
              "description": "The expected answer type. The possible values are: text, radioButton, unknownFutureValue."
            },
            "answerOptions": {
              "type": "array",
              "items": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "description": "List of possible answer values."
            },
            "createdDateTime": {
              "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
              "type": [
                "string",
                "null"
              ],
              "description": "The date, time, and time zone when the custom question was created. The timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.",
              "format": "date-time"
            },
            "displayName": {
              "type": "string",
              "description": "The question."
            },
            "lastUpdatedDateTime": {
              "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
              "type": [
                "string",
                "null"
              ],
              "description": "The date, time, and time zone when the custom question was last updated. The timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.",
              "format": "date-time"
            },
            "@odata.type": {
              "type": "string"
            }
          },
          "description": "Represents a custom question of the business."
        }
      ],
      "x-ms-discriminator-value": "#microsoft.graph.bookingCustomQuestion"
    },
    "microsoft.graph.bookingCustomerBase": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "bookingCustomerBase",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "@odata.type": {
              "type": "string"
            }
          },
          "description": "Booking entities that provide a display name."
        }
      ]
    },
    "microsoft.graph.bookingCustomerInformationBase": {
      "title": "bookingCustomerInformationBase",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.bookingPageAccessControl": {
      "title": "bookingPageAccessControl",
      "enum": [
        "unrestricted",
        "restrictedToOrganization",
        "unknownFutureValue"
      ],
      "type": "string"
    },
    "microsoft.graph.bookingPageSettings": {
      "title": "bookingPageSettings",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "accessControl": {
          "$ref": "#/$defs/microsoft.graph.bookingPageAccessControl"
        },
        "bookingPageColorCode": {
          "type": "string",
          "description": "Custom color for the booking page. The value should be in Hex format. For example, #123456."
        },
        "businessTimeZone": {
          "type": "string",
          "description": "The time zone of the customer. For a list of possible values, see dateTimeTimeZone."
        },
        "customerConsentMessage": {
          "type": "string",
          "description": "The personal data collection and usage consent message in the booking page."
        },
        "enforceOneTimePassword": {
          "type": "boolean",
          "description": "Determines whether the one-time password is required to create an appointment. The default value is false."
        },
        "isBusinessLogoDisplayEnabled": {
          "type": "boolean",
          "description": "Indicates whether the business logo is displayed on the booking page. The default value is false."
        },
        "isCustomerConsentEnabled": {
          "type": "boolean",
          "description": "Enables personal data collection and the usage consent toggle on the booking page. The default value is false."
        },
        "isSearchEngineIndexabilityDisabled": {
          "type": "boolean",
          "description": "Indicates whether web crawlers index this page. The defaults value is false."
        },
        "isTimeSlotTimeZoneSetToBusinessTimeZone": {
          "type": "boolean",
          "description": "Indicates whether the time zone of the time slot is set to the time zone of the business. The default value is false."
        },
        "privacyPolicyWebUrl": {
          "type": "string",
          "description": "URL of a webpage that provides the terms and conditions of the business. If a privacy policy isn't included, the following text appears on the booking page as default: 'The policies and practices of {bookingbusinessname} apply to the use of your data.'"
        },
        "termsAndConditionsWebUrl": {
          "type": "string",
          "description": "URL of a webpage that provides the terms and conditions of the business."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.bookingPriceType": {
      "title": "bookingPriceType",
      "enum": [
        "undefined",
        "fixedPrice",
        "startingAt",
        "hourly",
        "free",
        "priceVaries",
        "callUs",
        "notSet",
        "unknownFutureValue"
      ],
      "type": "string",
      "description": "Represents the type of pricing of a booking service.",
      "x-ms-enum": {
        "name": "bookingPriceType",
        "modelAsString": false,
        "values": [
          {
            "value": "undefined",
            "description": "The price of the service is not defined.",
            "name": "undefined"
          },
          {
            "value": "fixedPrice",
            "description": "The price of the service is fixed.",
            "name": "fixedPrice"
          },
          {
            "value": "startingAt",
            "description": "The price of the service starts with a particular value, but can be higher based on the final services performed.",
            "name": "startingAt"
          },
          {
            "value": "hourly",
            "description": "The price of the service depends on the number of hours a staff member works on the service.",
            "name": "hourly"
          },
          {
            "value": "free",
            "description": "The service is free.",
            "name": "free"
          },
          {
            "value": "priceVaries",
            "description": "The price of the service varies.",
            "name": "priceVaries"
          },
          {
            "value": "callUs",
            "description": "The price of the service is not listed.",
            "name": "callUs"
          },
          {
            "value": "notSet",
            "description": "The price of the service is not set.",
            "name": "notSet"
          }
        ]
      }
    },
    "microsoft.graph.bookingQuestionAssignment": {
      "title": "bookingQuestionAssignment",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "isRequired": {
          "type": "boolean",
          "description": "Indicates whether it's mandatory to answer the custom question."
        },
        "questionId": {
          "type": "string",
          "description": "The ID of the custom question."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.bookingReminder": {
      "title": "bookingReminder",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "The message in the reminder."
        },
        "offset": {
          "pattern": "^-?P([0-9]+D)?(T([0-9]+H)?([0-9]+M)?([0-9]+([.][0-9]+)?S)?)?$",
          "type": "string",
          "description": "The amount of time before the start of an appointment that the reminder should be sent. It's denoted in ISO 8601 format.",
          "format": "duration"
        },
        "recipients": {
          "$ref": "#/$defs/microsoft.graph.bookingReminderRecipients"
        },
        "@odata.type": {
          "type": "string"
        }
      },
      "description": "This type represents when and to whom to send an e-mail reminder."
    },
    "microsoft.graph.bookingReminderRecipients": {
      "title": "bookingReminderRecipients",
      "enum": [
        "allAttendees",
        "staff",
        "customer",
        "unknownFutureValue"
      ],
      "type": "string"
    },
    "microsoft.graph.bookingSchedulingPolicy": {
      "title": "bookingSchedulingPolicy",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "allowStaffSelection": {
          "type": "boolean",
          "description": "True to allow customers to choose a specific person for the booking."
        },
        "customAvailabilities": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.bookingsAvailabilityWindow"
          },
          "description": "Custom availability of the service in a given time frame."
        },
        "generalAvailability": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.bookingsAvailability"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "General availability of the service defined by the scheduling policy."
        },
        "isMeetingInviteToCustomersEnabled": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Indicates whether the meeting invite is sent to the customers. The default value is false."
        },
        "maximumAdvance": {
          "pattern": "^-?P([0-9]+D)?(T([0-9]+H)?([0-9]+M)?([0-9]+([.][0-9]+)?S)?)?$",
          "type": "string",
          "description": "Maximum number of days in advance that a booking can be made. It follows the ISO 8601 format.",
          "format": "duration"
        },
        "minimumLeadTime": {
          "pattern": "^-?P([0-9]+D)?(T([0-9]+H)?([0-9]+M)?([0-9]+([.][0-9]+)?S)?)?$",
          "type": "string",
          "description": "The minimum amount of time before which bookings and cancellations must be made. It follows the ISO 8601 format.",
          "format": "duration"
        },
        "sendConfirmationsToOwner": {
          "type": "boolean",
          "description": "True to notify the business via email when a booking is created or changed. Use the email address specified in the email property of the bookingBusiness entity for the business."
        },
        "timeSlotInterval": {
          "pattern": "^-?P([0-9]+D)?(T([0-9]+H)?([0-9]+M)?([0-9]+([.][0-9]+)?S)?)?$",
          "type": "string",
          "description": "Duration of each time slot, denoted in ISO 8601 format.",
          "format": "duration"
        },
        "@odata.type": {
          "type": "string"
        }
      },
      "description": "This type represents the set of policies that dictate how bookings can be created in a Booking Calendar."
    },
    "microsoft.graph.bookingService": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "bookingService",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "additionalInformation": {
              "type": [
                "string",
                "null"
              ],
              "description": "Additional information that is sent to the customer when an appointment is confirmed."
            },
            "createdDateTime": {
              "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
              "type": [
                "string",
                "null"
              ],
              "description": "The date, time, and time zone when the service was created. The timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.",
              "format": "date-time"
            },
            "customQuestions": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.bookingQuestionAssignment"
              },
              "description": "Contains the set of custom questions associated with a particular service."
            },
            "defaultDuration": {
              "pattern": "^-?P([0-9]+D)?(T([0-9]+H)?([0-9]+M)?([0-9]+([.][0-9]+)?S)?)?$",
              "type": "string",
              "description": "The default length of the service, represented in numbers of days, hours, minutes, and seconds. For example, P11D23H59M59.999999999999S.",
              "format": "duration"
            },
            "defaultLocation": {
              "anyOf": [
                {
                  "$ref": "#/$defs/microsoft.graph.location"
                },
                {
                  "type": [
                    "object",
                    "null"
                  ]
                }
              ],
              "description": "The default physical location for the service."
            },
            "defaultPrice": {
              "oneOf": [
                {
                  "type": [
                    "number",
                    "null"
                  ],
                  "format": "double"
                },
                {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                {
                  "$ref": "#/$defs/ReferenceNumeric"
                }
              ],
              "description": "The default monetary price for the service."
            },
            "defaultPriceType": {
              "$ref": "#/$defs/microsoft.graph.bookingPriceType"
            },
            "defaultReminders": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.bookingReminder"
              },
              "description": "The default set of reminders for an appointment of this service. The value of this property is available only when reading this bookingService by its ID."
            },
            "description": {
              "type": [
                "string",
                "null"
              ],
              "description": "A text description for the service."
            },
            "displayName": {
              "type": "string",
              "description": "A service name."
            },
            "isAnonymousJoinEnabled": {
              "type": "boolean",
              "description": "Indicates if an anonymousJoinWebUrl(webrtcUrl) is generated for the appointment booked for this service. The default value is false."
            },
            "isCustomerAllowedToManageBooking": {
              "type": [
                "boolean",
                "null"
              ],
              "description": "Indicates that the customer can manage bookings created by the staff. The default value is false."
            },
            "isHiddenFromCustomers": {
              "type": "boolean",
              "description": "True indicates that this service isn't available to customers for booking."
            },
            "isLocationOnline": {
              "type": "boolean",
              "description": "Indicates that the appointments for the service are held online. The default value is false."
            },
            "languageTag": {
              "type": "string",
              "description": "The language of the self-service booking page."
            },
            "lastUpdatedDateTime": {
              "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
              "type": [
                "string",
                "null"
              ],
              "description": "The date, time, and time zone when the service was last updated. The timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.",
              "format": "date-time"
            },
            "maximumAttendeesCount": {
              "maximum": 2147483647,
              "minimum": -2147483648,
              "type": "number",
              "description": "The maximum number of customers allowed in a service. If maximumAttendeesCount of the service is greater than 1, pass valid customer IDs while creating or updating an appointment. To create a customer, use the Create bookingCustomer operation.",
              "format": "int32"
            },
            "notes": {
              "type": [
                "string",
                "null"
              ],
              "description": "Additional information about this service."
            },
            "postBuffer": {
              "pattern": "^-?P([0-9]+D)?(T([0-9]+H)?([0-9]+M)?([0-9]+([.][0-9]+)?S)?)?$",
              "type": "string",
              "description": "The time to buffer after an appointment for this service ends, and before the next customer appointment can be booked.",
              "format": "duration"
            },
            "preBuffer": {
              "pattern": "^-?P([0-9]+D)?(T([0-9]+H)?([0-9]+M)?([0-9]+([.][0-9]+)?S)?)?$",
              "type": "string",
              "description": "The time to buffer before an appointment for this service can start.",
              "format": "duration"
            },
            "schedulingPolicy": {
              "anyOf": [
                {
                  "$ref": "#/$defs/microsoft.graph.bookingSchedulingPolicy"
                },
                {
                  "type": [
                    "object",
                    "null"
                  ]
                }
              ],
              "description": "The set of policies that determine how appointments for this type of service should be created and managed."
            },
            "smsNotificationsEnabled": {
              "type": "boolean",
              "description": "True indicates SMS notifications can be sent to the customers for the appointment of the service. Default value is false."
            },
            "staffMemberIds": {
              "type": "array",
              "items": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "description": "Represents those staff members who provide this service."
            },
            "webUrl": {
              "type": [
                "string",
                "null"
              ],
              "description": "The URL a customer uses to access the service.",
              "readOnly": true
            },
            "@odata.type": {
              "type": "string"
            }
          },
          "description": "Represents a particular service offered by a booking business."
        }
      ],
      "x-ms-discriminator-value": "#microsoft.graph.bookingService"
    },
    "microsoft.graph.bookingStaffMemberBase": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "bookingStaffMemberBase",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "@odata.type": {
              "type": "string"
            }
          },
          "description": "Booking entities that provide a display name."
        }
      ]
    },
    "microsoft.graph.bookingWorkHours": {
      "title": "bookingWorkHours",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "day": {
          "$ref": "#/$defs/microsoft.graph.dayOfWeek"
        },
        "timeSlots": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.bookingWorkTimeSlot"
          },
          "description": "A list of start/end times during a day."
        },
        "@odata.type": {
          "type": "string"
        }
      },
      "description": "This type represents the set of working hours in a single day of the week."
    },
    "microsoft.graph.bookingWorkTimeSlot": {
      "title": "bookingWorkTimeSlot",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "endTime": {
          "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?$",
          "type": "string",
          "description": "The time of the day when work stops. For example, 17:00:00.0000000.",
          "format": "time"
        },
        "startTime": {
          "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?$",
          "type": "string",
          "description": "The time of the day when work starts. For example, 08:00:00.0000000.",
          "format": "time"
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.bookingsAvailability": {
      "title": "bookingsAvailability",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "availabilityType": {
          "$ref": "#/$defs/microsoft.graph.bookingsServiceAvailabilityType"
        },
        "businessHours": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.bookingWorkHours"
          },
          "description": "The hours of operation in a week. The business hours value is set to null if the availability type isn't customWeeklyHours."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.bookingsAvailabilityWindow": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.bookingsAvailability"
        },
        {
          "title": "bookingsAvailabilityWindow",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "endDate": {
              "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$",
              "type": [
                "string",
                "null"
              ],
              "description": "End date of the availability window.",
              "format": "date"
            },
            "startDate": {
              "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$",
              "type": [
                "string",
                "null"
              ],
              "description": "Start date of the availability window.",
              "format": "date"
            },
            "@odata.type": {
              "type": "string",
              "default": "#microsoft.graph.bookingsAvailabilityWindow"
            }
          }
        }
      ],
      "x-ms-discriminator-value": "#microsoft.graph.bookingsAvailabilityWindow"
    },
    "microsoft.graph.bookingsServiceAvailabilityType": {
      "title": "bookingsServiceAvailabilityType",
      "enum": [
        "bookWhenStaffAreFree",
        "notBookable",
        "customWeeklyHours",
        "unknownFutureValue"
      ],
      "type": "string"
    },
    "microsoft.graph.dateTimeTimeZone": {
      "title": "dateTimeTimeZone",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "dateTime": {
          "type": "string",
          "description": "A single point of time in a combined date and time representation ({date}T{time}; for example, 2017-08-29T04:00:00.0000000)."
        },
        "timeZone": {
          "type": [
            "string",
            "null"
          ],
          "description": "Represents a time zone, for example, 'Pacific Standard Time'. See below for more possible values."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.dayOfWeek": {
      "title": "dayOfWeek",
      "enum": [
        "sunday",
        "monday",
        "tuesday",
        "wednesday",
        "thursday",
        "friday",
        "saturday"
      ],
      "type": "string"
    },
    "microsoft.graph.entity": {
      "title": "entity",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The unique identifier for an entity. Read-only."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.location": {
      "title": "location",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "address": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.physicalAddress"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The street address of the location."
        },
        "coordinates": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.outlookGeoCoordinates"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The geographic coordinates and elevation of the location."
        },
        "displayName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name associated with the location."
        },
        "locationEmailAddress": {
          "type": [
            "string",
            "null"
          ],
          "description": "Optional email address of the location."
        },
        "locationType": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.locationType"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The type of location. The possible values are: default, conferenceRoom, homeAddress, businessAddress,geoCoordinates, streetAddress, hotel, restaurant, localBusiness, postalAddress. Read-only."
        },
        "locationUri": {
          "type": [
            "string",
            "null"
          ],
          "description": "Optional URI representing the location."
        },
        "uniqueId": {
          "type": [
            "string",
            "null"
          ],
          "description": "For internal use only."
        },
        "uniqueIdType": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.locationUniqueIdType"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "For internal use only."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.locationType": {
      "title": "locationType",
      "enum": [
        "default",
        "conferenceRoom",
        "homeAddress",
        "businessAddress",
        "geoCoordinates",
        "streetAddress",
        "hotel",
        "restaurant",
        "localBusiness",
        "postalAddress"
      ],
      "type": "string"
    },
    "microsoft.graph.locationUniqueIdType": {
      "title": "locationUniqueIdType",
      "enum": [
        "unknown",
        "locationStore",
        "directory",
        "private",
        "bing"
      ],
      "type": "string"
    },
    "microsoft.graph.outlookGeoCoordinates": {
      "title": "outlookGeoCoordinates",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "accuracy": {
          "oneOf": [
            {
              "type": [
                "number",
                "null"
              ],
              "format": "double"
            },
            {
              "type": [
                "string",
                "null"
              ]
            },
            {
              "$ref": "#/$defs/ReferenceNumeric"
            }
          ],
          "description": "The accuracy of the latitude and longitude. As an example, the accuracy can be measured in meters, such as the latitude and longitude are accurate to within 50 meters."
        },
        "altitude": {
          "oneOf": [
            {
              "type": [
                "number",
                "null"
              ],
              "format": "double"
            },
            {
              "type": [
                "string",
                "null"
              ]
            },
            {
              "$ref": "#/$defs/ReferenceNumeric"
            }
          ],
          "description": "The altitude of the location."
        },
        "altitudeAccuracy": {
          "oneOf": [
            {
              "type": [
                "number",
                "null"
              ],
              "format": "double"
            },
            {
              "type": [
                "string",
                "null"
              ]
            },
            {
              "$ref": "#/$defs/ReferenceNumeric"
            }
          ],
          "description": "The accuracy of the altitude."
        },
        "latitude": {
          "oneOf": [
            {
              "type": [
                "number",
                "null"
              ],
              "format": "double"
            },
            {
              "type": [
                "string",
                "null"
              ]
            },
            {
              "$ref": "#/$defs/ReferenceNumeric"
            }
          ],
          "description": "The latitude of the location."
        },
        "longitude": {
          "oneOf": [
            {
              "type": [
                "number",
                "null"
              ],
              "format": "double"
            },
            {
              "type": [
                "string",
                "null"
              ]
            },
            {
              "$ref": "#/$defs/ReferenceNumeric"
            }
          ],
          "description": "The longitude of the location."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.physicalAddress": {
      "title": "physicalAddress",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "city": {
          "type": [
            "string",
            "null"
          ],
          "description": "The city."
        },
        "countryOrRegion": {
          "type": [
            "string",
            "null"
          ],
          "description": "The country or region. It's a free-format string value, for example, 'United States'."
        },
        "postalCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The postal code."
        },
        "state": {
          "type": [
            "string",
            "null"
          ],
          "description": "The state."
        },
        "street": {
          "type": [
            "string",
            "null"
          ],
          "description": "The street."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    }
  }
}