### GET /customers Source: https://www.bookeo.com/apiref/openapi.json Get a list of customers. ```markdown ### Parameters - **currentMembers** (boolean, query, optional): if true, include customers that are current members. this is the default - **currentNonMembers** (boolean, query, optional): if true, include customers that are not current members. this is the default - **createdSince** (string (date-time), query, optional): if present, only include customers created since the given time - **searchField** (string (name|firstName|lastName|emailAddress), query, optional): a field on which to apply the search filter. Used only if searchText is specified - **searchText** (string, query, optional): the text to search for. If not present, all customers are returned - **itemsPerPage** (integer (int32), query, optional): number of items per page - **pageNavigationToken** (string, query, optional): if present, continues navigation after a previous call. pageNavigationToken is included in the response of the first call, if there are more results than itemsPerPage - **pageNumber** (integer (int32), query, optional): if present, and pageNavigationToken is present, indicates what page to navigate to. Ignored unless pageNavigationToken is present ### Responses #### 200 - The call was completed successfully. **CustomersList** - **info** (object) (required) - **totalItems** (integer (int32)) (required) - **totalPages** (integer (int32)) (required) - **currentPage** (integer (int32)) (required) - **pageNavigationToken** (string): If there are more than 1 pages of items available, you can use this token in more calls (combined with pageNumber) to navigate the results. When navigating pages, you do not need to include the search parameters again - just pageNavigationToken and pageNumber. If there is only one page, this field is not present in the response. - **data** (array (Customer)) (required) Array items: - **id** (string) (required): Globally unique ID that identifies this person - **firstName** (string) - **middleName** (string) - **lastName** (string) - **emailAddress** (string) - **phoneNumbers** (array (PhoneNumber)) Array items: - **number** (string) (required) - **type** (string (mobile|work|home|fax)) (required) ("mobile"|"work"|"home"|"fax") - **streetAddress** (object) - **address1** (string) - **address2** (string) - **city** (string) - **countryCode** (string): Country code in ISO 3166-1 format (alpha-2) - **state** (string) - **postcode** (string) - **creationTime** (string (date-time)) (required) - **startTimeOfNextBooking** (string (date-time)): The start time of the next booking. null if there are no bookings starting after 'now'. - **startTimeOfPreviousBooking** (string (date-time)): The start time of the last booking that occurred before 'now'. It is updated only after that booking's stop time - **dateOfBirth** (string (date)) - **customFields** (array (CustomField)) Array items: - **id** (string): The id of the field. It must match the id of an existing customer custom field, as returned by a call to GET /settings/customercustomfields When creating or updating a customer, either the id or the name property are required. If both are supplied, Bookeo will only consider the id property. - **name** (string): The name of the field. It must match the name of an existing customer custom field, as returned by a call to GET /settings/customercustomfields When creating or updating a customer, either the id or the name property are required. If both are supplied, Bookeo will only consider the id property. - **value** (string) (required): The value of the field. For checkbox-type options, possible values are "true" and "false" For choice fields, this is the name (i.e. plain text) of the chosen value, not the id - **gender** (string (male|female|unknown)): The gender of this person. ("male"|"female"|"unknown") - **facebookId** (string) - **credit** (object) - **amount** (string) (required): The amount. It is expressed as a string type to avoid the risk of rounding issues with floating point arithmetic when used to handle decimal amounts. Ex.: "16.50" - **currency** (string) (required): Currency code in ISO 4217 format. Ex.: "USD" - **languageCode** (string): The language code that is preferred by the customer. It is set only if the customer has selected a specific language when creating or reviewing the booking, otherwise it is not set and the default language is assumed. The format is a modified version of the Internet standard rfc5646, replacing the - character (dash) with a _ character (underscore). Example: en_US - **acceptSmsReminders** (boolean) - **numBookings** (integer (int32)): Number of bookings that this customer has made - **numCancelations** (integer (int32)): Number of booking cancellations that were tracked for this customer - **numNoShows** (integer (int32)): Number of no-shows for this customer - **member** (boolean): Whether this customer is currently a member - **membershipEnd** (string (date)): When the membership expires. If the membership is not set to expire, this field is not set. ### Example Usage ```bash curl -X GET "https://api.bookeo.com/v2/customers?currentMembers=true¤tNonMembers=true&createdSince=2023-01-01T00:00:00Z&searchField=name&searchText=string&itemsPerPage=50&pageNavigationToken=string&pageNumber=1" ``` ``` -------------------------------- ### GET /settings/business Source: https://www.bookeo.com/apiref/openapi.json API endpoint for GET /settings/business ```markdown ### Responses #### 200 - The call was completed successfully. **Business** - **id** (string) (required): The unique id for this business (Bookeo account) - **name** (string) (required) - **legalIdentifiers** (string): Tax ID, Vat ID, other legal identifiers - **phoneNumbers** (array (PhoneNumber)) (required) Array items: - **number** (string) (required) - **type** (string (mobile|work|home|fax)) (required) ("mobile"|"work"|"home"|"fax") - **websiteURL** (string) - **emailAddress** (string) - **streetAddress** (object) (required) - **address1** (string) - **address2** (string) - **city** (string) - **countryCode** (string): Country code in ISO 3166-1 format (alpha-2) - **state** (string) - **postcode** (string) - **logo** (object) - **url** (string) (required): The URL of the image - **description** (string): A description of the business, provided by the business itself. The content is in HTML. ### Example Usage ```bash curl -X GET "https://api.bookeo.com/v2/settings/business" ``` ``` -------------------------------- ### POST /subaccounts/{subaccountId}/apikeys Source: https://www.bookeo.com/apiref/openapi.json Install this application in a subaccount. Note that the API key used in this call must be that of the portal manager account. The application installed in the subaccount will be the same as this one, with the same permissions. If this application was already installed in the subaccount, its API key will be replaced by the one created in this call. ```markdown ### Parameters - **subaccountId** (string, path, required): the id of the subaccount where to install this application ### Responses #### 201 - The resource was created successfully. The HTTP response contains a Location header whose value is the resource URI. Empty response body ### Example Usage ```bash curl -X POST "https://api.bookeo.com/v2/subaccounts/{subaccountId}/apikeys" ``` ``` -------------------------------- ### GET /settings/resources Source: https://www.bookeo.com/apiref/openapi.json API endpoint for GET /settings/resources ```markdown ### Parameters - **itemsPerPage** (integer (int32), query, optional) - **pageNavigationToken** (string, query, optional) - **pageNumber** (integer (int32), query, optional) ### Responses #### 200 - The call was completed successfully. **ResourceTypesList** - **info** (object) (required) - **totalItems** (integer (int32)) (required) - **totalPages** (integer (int32)) (required) - **currentPage** (integer (int32)) (required) - **pageNavigationToken** (string): If there are more than 1 pages of items available, you can use this token in more calls (combined with pageNumber) to navigate the results. When navigating pages, you do not need to include the search parameters again - just pageNavigationToken and pageNumber. If there is only one page, this field is not present in the response. - **data** (array (ResourceType)) (required) Array items: - **name** (string) - **id** (string) - **isPublic** (boolean): Whether this type of resources should be shown to customers, and can be used as filter to search for availability - **resources** (array (Resource)) Array items: - **name** (string) (required): The name of the resource. - **id** (string) (required) ### Example Usage ```bash curl -X GET "https://api.bookeo.com/v2/settings/resources?itemsPerPage=50&pageNavigationToken=string&pageNumber=1" ``` ``` -------------------------------- ### GET /customers/{id}/authenticate Source: https://www.bookeo.com/apiref/openapi.json The customer's email address is the "username" used by Bookeo to authenticate customers. So to authenticate a customer your application would typically use GET /customers to search for customers with a given email address, and then GET /customers/{id}/authenticate to authenticate. Remember that there may be duplicate customer records with the same email address, ex. due to duplicate importing or manual record creation. ```markdown ### Parameters - **id** (string, path, required) - **password** (string, query, required): remember to use URL encoding ### Responses #### 200 - Correct password Empty response body #### 403 - Invalid password Invalid password ### Example Usage ```bash curl -X GET "https://api.bookeo.com/v2/customers/{id}/authenticate?password=string" ``` ``` -------------------------------- ### GET /settings/apikeyinfo Source: https://www.bookeo.com/apiref/openapi.json API endpoint for GET /settings/apikeyinfo ```markdown ### Responses #### 200 - The call was completed successfully. **ApiKeyInfo** - **accountId** (string) (required): The unique identifier of the business (Bookeo account) that has installed this key. If the application is uninstalled, and then installed again for the same business, the api key would change, but the accountId would not. - **permissions** (array (string)) (required) - **creationTime** (string (date-time)) (required) ### Example Usage ```bash curl -X GET "https://api.bookeo.com/v2/settings/apikeyinfo" ``` ``` -------------------------------- ### GET /customers/{id}/bookings Source: https://www.bookeo.com/apiref/openapi.json Get a customer's bookings. ```markdown ### Parameters - **id** (string, path, required) - **beginDate** (string (date), query, optional): if specified, only bookings on or after this date will be included - **endDate** (string (date), query, optional): if specified, only bookings on or before this date will be included - **expandParticipants** (boolean, query, optional): if true, full details of the participants are included (provided the application has read permission over the participant) - **itemsPerPage** (integer (int32), query, optional) - **pageNavigationToken** (string, query, optional) - **pageNumber** (integer (int32), query, optional) ### Responses #### 200 - The call was completed successfully. **BookingsList** - **info** (object) (required) - **totalItems** (integer (int32)) (required) - **totalPages** (integer (int32)) (required) - **currentPage** (integer (int32)) (required) - **pageNavigationToken** (string): If there are more than 1 pages of items available, you can use this token in more calls (combined with pageNumber) to navigate the results. When navigating pages, you do not need to include the search parameters again - just pageNavigationToken and pageNumber. If there is only one page, this field is not present in the response. - **data** (array (Booking)) (required) Array items: - **bookingNumber** (string): The unique booking number. Always treat as string - **eventId** (string): When the booking is for a product of type fixed or fixedCourse, this is the id of the slot (see /availability/slots). Note that for fixedCourse, Bookeo always returns the eventId of the first class in a course, even if the customer is enrolled starting from a later class. In this case, firstCourseEnrolledEvent will be set. - **firstCourseEnrolledEventId** (string): If the product is of type fixedCourse, and it is possible to accept late enrolment, this is the id of the event (class) where the actual enrolment starts. - **dropinCourseEnrolledEventId** (string): If the product is of type fixedCourse, and it is possible to accept bookings for a single class in the course (drop-in), this is the id of the event (class) actually enrolled in. - **startTime** (string (date-time)): The start time of the booking. When creating a booking, either this or eventId must be specified - **endTime** (string (date-time)): The end time of the booking. When creating a new booking of type flexibleTime, you can specify this field to force an end time. Or you can omit this field, in which case Bookeo will calculate the end time based on product and options chosen. - **customerId** (string): The id of the customer this booking is for. When creating a booking, use this to create a booking for an existing customer. - **customer** (object): Represents a customer - **id** (string) (required): Globally unique ID that identifies this person - **firstName** (string) - **middleName** (string) - **lastName** (string) - **emailAddress** (string) - **phoneNumbers** (array (PhoneNumber)) Array items: - **number** (string) (required) - **type** (string (mobile|work|home|fax)) (required) ("mobile"|"work"|"home"|"fax") - **streetAddress** (object) - **address1** (string) - **address2** (string) - **city** (string) - **countryCode** (string): Country code in ISO 3166-1 format (alpha-2) - **state** (string) - **postcode** (string) - **creationTime** (string (date-time)) (required) - **startTimeOfNextBooking** (string (date-time)): The start time of the next booking. null if there are no bookings starting after 'now'. - **startTimeOfPreviousBooking** (string (date-time)): The start time of the last booking that occurred before 'now'. It is updated only after that booking's stop time - **dateOfBirth** (string (date)) - **customFields** (array (CustomField)) Array items: - **id** (string): The id of the field. It must match the id of an existing customer custom field, as returned by a call to GET /settings/customercustomfields When creating or updating a customer, either the id or the name property are required. If both are supplied, Bookeo will only consider the id property. - **name** (string): The name of the field. It must match the name of an existing customer custom field, as returned by a call to GET /settings/customercustomfields When creating or updating a customer, either the id or the name property are required. If both are supplied, Bookeo will only consider the id property. - **value** (string) (required): The value of the field. For checkbox-type options, possible values are "true" and "false" For choice fields, this is the name (i.e. plain text) of the chosen value, not the id - **gender** (string (male|female|unknown)): The gender of this person. ("male"|"female"|"unknown") - **facebookId** (string) - **credit** (object) - **amount** (string) (required): The amount. It is expressed as a string type to avoid the risk of rounding issues with floating point arithmetic when used to handle decimal amounts. Ex.: "16.50" - **currency** (string) (required): Currency code in ISO 4217 format. Ex.: "USD" - **languageCode** (string): The language code that is preferred by the customer. It is set only if the customer has selected a specific language when creating or reviewing the booking, otherwise it is not set and the default language is assumed. The format is a modified version of the Internet standard rfc5646, replacing the - character (dash) with a _ character (underscore). Example: en_US - **acceptSmsReminders** (boolean) - **numBookings** (integer (int32)): Number of bookings that this customer has made - **numCancelations** (integer (int32)): Number of booking cancellations that were tracked for this customer - **numNoShows** (integer (int32)): Number of no-shows for this customer - **member** (boolean): Whether this customer is currently a member - **membershipEnd** (string (date)): When the membership expires. If the membership is not set to expire, this field is not set. - **title** (string) (required): The title of this booking, same as the one displayed by Bookeo in the calendar - **externalRef** (string): An external reference number that identifies this booking in an external system. The maximum length is 64 characters. - **participants** (object) (required) - **numbers** (array (PeopleNumber)) (required): The number of participants in the booking, for each PeopleCategory. When reading a booking, this field is always present. This field is required when creating or updating a booking Array items: - **peopleCategoryId** (string) (required): The id of the PeopleCategory to which these participants belong to. See /settings/peoplecategories - **number** (integer (int32)) (required): Indicates how many people of this category are in the booking - **details** (array (Participant)): Details about the participants in the booking, if available. When reading a booking, this field is present only if the parameter expandParticipants is set to true. When creating or updating a booking, this field is optional Array items: - **personId** (string) (required): This field can be: - PSELF if this participant is the customer that made the booking. - PNEW if this is a new person. This value is never set by Bookeo, but can be set by the application to create new participants. - PUNKNOWN if no information about the participant is recorded. - id of an existing LinkedPerson - **peopleCategoryId** (string) (required): The id of the PeopleCategory to which this participant belongs to. See /settings/peoplecategories - **categoryIndex** (integer (int32)) (required): Index in the category, starting from 1. Ex. the first adult will be Adult 1 - **personDetails** (object) - **resources** (array (Resource)): Resources involved in a booking, if the booking is for a product of type "flexibleTime". If the booking is for a different type of product, this field is empty/ignored. When creating or updating a booking, only the id of a resource is required. Any name passed is ignored. If not specified when creating or updating a booking, Bookeo will automatically assign available resources. Array items: - **name** (string) (required): The name of the resource. - **id** (string) (required) - **canceled** (boolean): Whether this booking is canceled - **cancelationTime** (string (date-time)): If the booking is cancelled, this is the time when it was cancelled - **cancelationAgent** (string): If the booking is cancelled, this is the person who cancelled - **accepted** (boolean): Whether this booking was accepted. If no accept/deny was applicable to the booking, the booking is considered accepted as created. - **sourceIp** (string): The IP address from where this booking was created - **creationTime** (string (date-time)) (required): The time when the booking was created - **creationAgent** (string) (required): The person that created the booking - **lastChangeTime** (string (date-time)): The time when the booking was last updated. If the booking was never changed after creation, this field is not present. - **lastChangeAgent** (string): The person who last updated this booking. If the booking was never changed after creation, this field is not present. - **productName** (string): The name of the product this booking is for - **productId** (string) (required): The id of the product this booking is for. For a full list of products and their ids, see /settings/products - **options** (array (BookingOption)) Array items: - **privateEvent** (boolean): Whether this booking reserves the entire event. Only available for products that allow it. - **priceAdjustments** (array (PriceAdjustment)): Custom items added to the booking, which can be used to alter the final price. For example an additional service, or a custom discount, and so on. Array items: - **unitPrice** (object) (required) - **quantity** (integer (int32)) (required): The quantity of the adjustment. It will be multiplied by unitPrice to calculate the total amount of this adjustment - **description** (string) (required) - **totalPrice** (object) (required) - **taxIds** (array (string)): The ids of taxes that apply to this adjustment. See GET /settings/taxes - **promotionCodeInput** (string): Optional promotion code input, can be used when creating or updating a booking It could be a single code, or a list of codes separated by comma (ex. multiple coupon codes) In general, applications creating bookings can simply ask the customer to input a promotion code (like they would on Bookeo's web interface) and pass the input in this field. Bookeo will then parse and validate any text entered - **promotionName** (string): The name of the promotion that was applied to this booking. - **couponCodes** (array (string)): If a promotion of type "multiple coupon codes" was applied to this booking, this is the list of coupon codes used - **giftVoucherCodeInput** (string): A gift voucher code applicable to this booking. This field is only set by the application, when creating or updating a booking. It is possible to specify multiple codes, separated by commas. No more than one specific (as opposed to "generic", value-based) gift voucher can be used per booking. - **specificVoucherCode** (string): When the booking used a service specific voucher (i.e. as opposed to a "generic" voucher, based on a fixed amount), the code of the voucher is reported here. - **initialPayments** (array (Payment)): When creating a new booking, an application can also record one or more payment associated to the booking (ex. if the customer has paid a deposit or the full amount online) This field is never set by Bookeo, and is ignored unless this is a new booking being created. Array items: - **id** (string) (required) - **creationTime** (string (date-time)) (required): When this record was created - **receivedTime** (string (date-time)) (required): When this payment was received - **reason** (string) (required): Reason for the payment. Shown to customer where appropriate. Ex. "Deposit", "Balance payment", "Additional fee", etc - **description** (string): Indicates what the payment was for (ex. "Booking 1234", "Prepaid package ABC", "Gift voucher XYZ") - **comment** (string): An optional comment tracked with the payment. Not shown to customers. - **amount** (object) (required) - **paymentMethod** (string (creditCard|paypal|bankTransfer|cash|checque|debitCard|existingCredit|accountCredit|moneyVoucher|other)) (required) ("creditCard"|"paypal"|"bankTransfer"|"cash"|"checque"|"debitCard"|"existingCredit"|"accountCredit"|"moneyVoucher"|"other") - **paymentMethodOther** (string): If paymentMethod is 'other', this field is required, and it specifies what other method was used - **agent** (string): Who registered this payment. If this field is not present, it means that the customer paid online on Bookeo's booking page - **customerId** (string): The id of customer associated with this payment - **gatewayName** (string): The name of the payment gateway that processed the payment (if it was processed by a payment gateway) - **transactionId** (string): The transaction number/id as provided by the payment gateway that processed the payment - if any - **noShow** (boolean): Whether this booking was marked as no show - **price** (object) - **totalGross** (object) (required) - **totalNet** (object) (required) - **totalTaxes** (object) (required) - **totalPaid** (object) (required) - **taxes** (array (PriceTax)) (required): A breakdown of all taxes paid. Array items: - **taxId** (string) (required): The unique id of the tax. See GET /settings/taxes to obtain a list of taxes - **amount** (object) (required) - **source** (string): The "source" of this booking when it was created. This can be the name of a partner, ad campaign, etc. This property can only be set when the booking is being created. ### Example Usage ```bash curl -X GET "https://api.bookeo.com/v2/customers/{id}/bookings?beginDate=2023-01-01&endDate=2023-01-01&expandParticipants=false&itemsPerPage=50&pageNavigationToken=string&pageNumber=1" ``` ``` -------------------------------- ### GET /webhooks/{webhookId} Source: https://www.bookeo.com/apiref/openapi.json Retrieve a webhook ```markdown ### Parameters - **webhookId** (string, path, required) ### Responses #### 200 - The call was completed successfully. **Webhook** - **id** (string) (required) - **url** (string) (required): The URL that Bookeo will request when an event triggers the webhook. The protocol must be https - **domain** (string (bookings|seatblocks|resourceblocks|customers|payments)) (required): What type of object this webhook applies to ("bookings"|"seatblocks"|"resourceblocks"|"customers"|"payments") - **type** (string (created|updated|deleted)) (required): What type of operation triggers this webhook ("created"|"updated"|"deleted") - **blockedTime** (string (date-time)): If this field is present, it indicates that the webhook was blocked at this time. The blockedReason will indicate the reason for the block. Typically, a webhook gets blocked when too many consecutive notifications are dropped due to repeat conection errors. Once a webhook is blocked, no more notifications will be sent to it. Your application will need to fix the cause of the block, and then create a new webhook. - **blockedReason** (string): The reason why the webhook was blocked. - **noDeliveryBefore** (string (date-time)): If this field is present, it indicates that Bookeo encountered errors while attempting to deliver webhook messages for this API key, and that it will not try delivery again at least until this time. "at least" means that the next delivery attempt will occur at that time or later. See deliveryDelayReason for a description of the last error. Since webhook messages are delivered in sequence, delivery errors for one webhook will affect all webhooks registered under the same API key, even if those webhooks did not cause any errors. - **deliveryDelayReason** (string): If this field is present, it indicates that Bookeo encountered errors while attempting to deliver webhook messages for this API key. This field will describe the last error. Delivery of webhook messages will not occur until at least the time specified in noDeliveryBefore. Since webhook messages are delivered in sequence, delivery errors for one webhook will affect all webhooks registered under the same API key, even if those webhooks did not cause any errors. ### Example Usage ```bash curl -X GET "https://api.bookeo.com/v2/webhooks/{webhookId}" ``` ``` -------------------------------- ### GET /availability/matchingslots/{pageNavigationToken} Source: https://www.bookeo.com/apiref/openapi.json API endpoint for GET /availability/matchingslots/{pageNavigationToken} ```markdown ### Parameters - **pageNavigationToken** (string, path, required) - **pageNumber** (integer (int32), query, optional) ### Responses #### 200 - The call was completed successfully. **MatchingSlotList** - **info** (object) (required) - **totalItems** (integer (int32)) (required) - **totalPages** (integer (int32)) (required) - **currentPage** (integer (int32)) (required) - **pageNavigationToken** (string): If there are more than 1 pages of items available, you can use this token in more calls (combined with pageNumber) to navigate the results. When navigating pages, you do not need to include the search parameters again - just pageNavigationToken and pageNumber. If there is only one page, this field is not present in the response. - **data** (array (MatchingSlot)) Array items: - **startTime** (string (date-time)) (required) - **endTime** (string (date-time)) (required) - **price** (object) - **amount** (string) (required): The amount. It is expressed as a string type to avoid the risk of rounding issues with floating point arithmetic when used to handle decimal amounts. Ex.: "16.50" - **currency** (string) (required): Currency code in ISO 4217 format. Ex.: "USD" - **courseSchedule** (object) - **events** (array (CourseEvent)) (required) Array items: - **eventNumber** (integer (int32)) (required): The index of the event in the course. The first event is number 1. - **eventId** (string) (required): The eventId of the event. The eventId of the first event in the course uniquely identifies the course - **startTime** (string (date-time)) (required) - **endTime** (string (date-time)) (required) - **title** (string) (required) - **eventId** (string) (required): Unique id that identifies the slot, it can be used to create bookings for this slot - **resources** (array (Resource)): Resources involved in this slot. This field is only included for products of type fixed or fixedCourse. Only resources whose type is "public" are listed here. Array items: - **name** (string) (required): The name of the resource. - **id** (string) (required) ### Example Usage ```bash curl -X GET "https://api.bookeo.com/v2/availability/matchingslots/{pageNavigationToken}?pageNumber=1" ``` ``` -------------------------------- ### GET /webhooks Source: https://www.bookeo.com/apiref/openapi.json Retrieve all the webhooks for this api key ```markdown ### Responses #### 200 - The call was completed successfully. **WebhooksList** - **info** (object) (required) - **totalItems** (integer (int32)) (required) - **totalPages** (integer (int32)) (required) - **currentPage** (integer (int32)) (required) - **pageNavigationToken** (string): If there are more than 1 pages of items available, you can use this token in more calls (combined with pageNumber) to navigate the results. When navigating pages, you do not need to include the search parameters again - just pageNavigationToken and pageNumber. If there is only one page, this field is not present in the response. - **data** (array (Webhook)) (required) Array items: - **id** (string) (required) - **url** (string) (required): The URL that Bookeo will request when an event triggers the webhook. The protocol must be https - **domain** (string (bookings|seatblocks|resourceblocks|customers|payments)) (required): What type of object this webhook applies to ("bookings"|"seatblocks"|"resourceblocks"|"customers"|"payments") - **type** (string (created|updated|deleted)) (required): What type of operation triggers this webhook ("created"|"updated"|"deleted") - **blockedTime** (string (date-time)): If this field is present, it indicates that the webhook was blocked at this time. The blockedReason will indicate the reason for the block. Typically, a webhook gets blocked when too many consecutive notifications are dropped due to repeat conection errors. Once a webhook is blocked, no more notifications will be sent to it. Your application will need to fix the cause of the block, and then create a new webhook. - **blockedReason** (string): The reason why the webhook was blocked. - **noDeliveryBefore** (string (date-time)): If this field is present, it indicates that Bookeo encountered errors while attempting to deliver webhook messages for this API key, and that it will not try delivery again at least until this time. "at least" means that the next delivery attempt will occur at that time or later. See deliveryDelayReason for a description of the last error. Since webhook messages are delivered in sequence, delivery errors for one webhook will affect all webhooks registered under the same API key, even if those webhooks did not cause any errors. - **deliveryDelayReason** (string): If this field is present, it indicates that Bookeo encountered errors while attempting to deliver webhook messages for this API key. This field will describe the last error. Delivery of webhook messages will not occur until at least the time specified in noDeliveryBefore. Since webhook messages are delivered in sequence, delivery errors for one webhook will affect all webhooks registered under the same API key, even if those webhooks did not cause any errors. ### Example Usage ```bash curl -X GET "https://api.bookeo.com/v2/webhooks" ``` ``` -------------------------------- ### GET /subaccounts Source: https://www.bookeo.com/apiref/openapi.json API endpoint for GET /subaccounts ```markdown ### Parameters - **itemsPerPage** (integer (int32), query, optional) - **pageNavigationToken** (string, query, optional) - **pageNumber** (integer (int32), query, optional) ### Responses #### 200 - The call was completed successfully. **PortalSubaccountsList** - **info** (object) (required) - **totalItems** (integer (int32)) (required) - **totalPages** (integer (int32)) (required) - **currentPage** (integer (int32)) (required) - **pageNavigationToken** (string): If there are more than 1 pages of items available, you can use this token in more calls (combined with pageNumber) to navigate the results. When navigating pages, you do not need to include the search parameters again - just pageNavigationToken and pageNumber. If there is only one page, this field is not present in the response. - **data** (array (PortalSubaccount)) (required) Array items: - **id** (string) (required): The unique id for this subaccount - **name** (string) (required): The unique account name ### Example Usage ```bash curl -X GET "https://api.bookeo.com/v2/subaccounts?itemsPerPage=100&pageNavigationToken=string&pageNumber=1" ``` ``` -------------------------------- ### GET /settings/products Source: https://www.bookeo.com/apiref/openapi.json Get information about all the products (things that can be booked) offered. 3 types of product are available: - fixed are products with a fixed schedule and a given number of seats. Ex a group tour, a class, a workshop - fixedCourse are fixed products that are defined as a course, i.e. comprise of a series of dates - flexibleTime are products that describe private appointments, i.e. when one booking uses one resource (teacher, consultant, etc) Although Bookeo applies a minimum amount of caching, it is recommended to cache these results for 10-15 minutes to improve the performance of your application, as product settings change rarely. ```markdown ### Parameters - **type** (string (fixed|fixedCourse|flexibleTime), query, optional): if not specified, get all products - **itemsPerPage** (integer (int32), query, optional) - **pageNavigationToken** (string, query, optional) - **pageNumber** (integer (int32), query, optional) - **lang** (string, query, optional) ### Responses #### 200 - The call was completed successfully. **ProductList** - **info** (object) (required) - **totalItems** (integer (int32)) (required) - **totalPages** (integer (int32)) (required) - **currentPage** (integer (int32)) (required) - **pageNavigationToken** (string): If there are more than 1 pages of items available, you can use this token in more calls (combined with pageNumber) to navigate the results. When navigating pages, you do not need to include the search parameters again - just pageNavigationToken and pageNumber. If there is only one page, this field is not present in the response. - **data** (array (Product)) (required) Array items: - **name** (string) (required) - **description** (string) - **images** (array (Image)) Array items: - **url** (string) (required): The URL of the image - **productId** (string) (required): A unique, never changing id that identifies this product - **productCode** (string) (required): The product code chosen for this product by the account manager. It can (but rarely does) change - **bookingLimits** (array (BookingLimit)) (required): Defines, for each people category, how many people can be present in a single booking. If a people category is not included here, it means it is not supported in this product. Array items: - **peopleCategoryId** (string): If not present, this limit represents the limit for the total number of people in the booking. If present, this limit represents how many people in the given category can be included in a single booking. To obtain a list of people categories for an account, call /settings/peoplecategories - **min** (integer (int32)) (required) - **max** (integer (int32)) (required) - **defaultRates** (array (PriceRate)): Define the STANDARD rates (prices) for each people category. These are the headline rates only. The business may have set special prices/rules, which will be calculated by Bookeo. To get the final price of a booking, with all the correct price calculations applied, call POST /holds . If a product does not have any price, this field is not included. Array items: - **peopleCategoryId** (string): If no peopleCategoryId is present, this means that the price is PER BOOKING, regardless of the number of participants. To obtain a list of people category ids for an account, call GET /settings/peoplecategories - **price** (object) - **amount** (string) (required): The amount. It is expressed as a string type to avoid the risk of rounding issues with floating point arithmetic when used to handle decimal amounts. Ex.: "16.50" - **currency** (string) (required): Currency code in ISO 4217 format. Ex.: "USD" - **duration** (object) (required) - **days** (integer (int32)) (required): If this is greater than 0, it means that the product's duration is meant to be "full day", i.e. until the end of the last day. In this case, hours and minutes will always be 0. - **hours** (integer (int32)) (required) - **minutes** (integer (int32)) (required) - **type** (string (fixed|fixedCourse|flexibleTime)) (required) ("fixed"|"fixedCourse"|"flexibleTime") - **membersOnly** (boolean) (required): Whether this product can only be booked by current members - **prepaidOnly** (boolean) (required): Whether this product can only be booked by customers who have purchased prepaid credits for it. - **acceptDeny** (boolean) (required): Whether the business has reserved the faculty to accept/deny any booking for this product. If this field is true, any booking submitted MAY not be confirmed immediately, but instead tracked as a 'pending request'. - **apiBookingsAllowed** (boolean) (required): Whether API applications can create bookings for this product. The account manager can block some products from being booked via the API. - **dropInOnly** (boolean) (required): For products of type fixedCourse, this property is true if an application can only make drop-in (single class) bookings for the course. An application can book multiple (even all) classes in the course by making multiple separate bookings. The endpoint GET /availability/slots will contain a list of all classes in the course, in the CourseSchedule schema of the response. - **allowPrivateEvents** (boolean): Whether a booking for this product can ask to reserve the entire event (i.e. all seats available) - **choiceOptions** (array (ChoiceOption)): A list of ChoiceOption that are available for this product. The field is not present if there are no ChoiceOption Array items: - **id** (string) (required): A unique, never changing id that identifies this option - **name** (string) (required) - **index** (integer (int32)) (required): All options have an "order" in which they should be presented to customers. The index is the position of the option in the sequence. The first option has index 0. Note that options of different type (choice, number, text, onoff) are part of the same sequence. Therefore index 0 may be a "choice" option, index 1 may be a "text" option, index 2 another "choice" option and so on. - **description** (string) - **shownToCustomers** (boolean) (required): Some options may only be accessible to users/staff. If this field is false, applications should not show this option to customers, or ask them to input a value for this option. - **enabled** (boolean) (required): If an option is not enabled, it should not be used for new bookings. It may still be present in old bookings, created when the option was enabled. - **values** (array (ChoiceOptionValue)) (required): The possible values for this option Array items: - **id** (string) (required) - **name** (string) (required) - **description** (string) (required) - **defaultValueId** (string): The id of the default ChoiceOptionValue, if a default value is set. Empty otherwise - **numberOptions** (array (NumberOption)): A list of NumberOption that are available for this product. The field is not present if there are no NumberOption Array items: - **onOffOptions** (array (OnOffOption)): A list of OnOffOption that are available for this product. The field is not present if there are no OnOffOption Array items: - **textOptions** (array (TextOption)): A list of TextOption that are available for this product. The field is not present if there are no TextOption Array items: ### Example Usage ```bash curl -X GET "https://api.bookeo.com/v2/settings/products?type=fixed&itemsPerPage=50&pageNavigationToken=string&pageNumber=1&lang=string" ``` ```