Microsoft Bookings · Schema

microsoft.graph.bookingService

BookingSchedulingAppointmentsMicrosoft GraphCalendarMicrosoft 365

Properties

Name Type Description
id string The unique identifier for an entity. Read-only.
@odata.type string
additionalInformation stringnull Additional information that is sent to the customer when an appointment is confirmed.
createdDateTime stringnull 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
customQuestions array Contains the set of custom questions associated with a particular service.
defaultDuration string The default length of the service, represented in numbers of days, hours, minutes, and seconds. For example, P11D23H59M59.999999999999S.
defaultLocation object The default physical location for the service.
defaultPrice object The default monetary price for the service.
defaultPriceType object
defaultReminders array 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 stringnull A text description for the service.
displayName string A service name.
isAnonymousJoinEnabled boolean Indicates if an anonymousJoinWebUrl(webrtcUrl) is generated for the appointment booked for this service. The default value is false.
isCustomerAllowedToManageBooking booleannull Indicates that the customer can manage bookings created by the staff. The default value is false.
isHiddenFromCustomers boolean True indicates that this service isn't available to customers for booking.
isLocationOnline boolean Indicates that the appointments for the service are held online. The default value is false.
languageTag string The language of the self-service booking page.
lastUpdatedDateTime stringnull 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,
maximumAttendeesCount number 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
notes stringnull Additional information about this service.
postBuffer string The time to buffer after an appointment for this service ends, and before the next customer appointment can be booked.
preBuffer string The time to buffer before an appointment for this service can start.
schedulingPolicy object The set of policies that determine how appointments for this type of service should be created and managed.
smsNotificationsEnabled boolean True indicates SMS notifications can be sent to the customers for the appointment of the service. Default value is false.
staffMemberIds array Represents those staff members who provide this service.
webUrl stringnull The URL a customer uses to access the service.
View JSON Schema on GitHub

JSON Schema

microsoft-bookings-microsoft-graph-booking-service-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-bookings/json-schema/microsoft-bookings-microsoft-graph-booking-service-schema.json",
  "title": "microsoft.graph.bookingService",
  "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.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",
  "$defs": {
    "ReferenceNumeric": {
      "enum": [
        "-INF",
        "INF",
        "NaN"
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "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.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.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"
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/microsoft-bookings-microsoft-graph-booking-service"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.