To get results in a specific langauge, please use lang attribute in header. currently, values: en, ar are supported.
Many API endpoints that return lists of data support pagination to help manage large datasets efficiently. The pagination system uses the following parameters:
limit (optional): Number of items to return per page (default: 10)nextPageToken (optional): Token to retrieve the next page of resultsPaginated responses include a pagination object with the following structure:
{
"result": [
// ... array of items
],
"pagination": {
"nextPageToken": "eyJpZCI6IjYzZjA5...", // Token for next page (null if last page)
"hasMore": true // Boolean indicating if more pages are available
}
}
First request (get first page):
GET /management/resources?limit=5
Subsequent requests (get next pages):
GET /management/resources?limit=5&nextPageToken=eyJpZCI6IjYzZjA5...
nextPageToken is null or hasMore is false, you've reached the last pagenextPageToken from the previous response to get the next pagelimit parameter has a maximum value that varies by endpointYou can find Postman's collection here.
Enable Payments through Online Methods (Apple Pay, Visa, MasterCard, Mada, STC Pay) easily through simple steps:
Booking Type that has price on it, will become in a PENDING_PAYMENT status waiting for payment completion to finally become CONFIRMED.paymentLink's URL in payment object found inside scheduling response to prompt customer to pay (you can also use paymentWebViewLink URL to view a striped version of the payment page).Take a look at this Flutter's Dart implementation (using flutter_inappwebview package):
class PaymentWebview extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Payment'),
),
body: Center(
child: InAppWebView(
initialUrlRequest: URLRequest(
url: WebUri(
appointment.payment.paymentWebViewLink,
),
),
onWebViewCreated: (controller) async {
if (defaultTargetPlatform != TargetPlatform.android ||
await WebViewFeature.isFeatureSupported(
WebViewFeature.WEB_MESSAGE_LISTENER)) {
controller.addJavaScriptHandler(
handlerName: 'message',
callback: (args) {
print('Message from webview $args');
// args[0] is either
// {
// type: "paymentInitialized",
// bookingId: "<Booking ID>"
// }
// or
// {
// type: "paymentSuccess",
// bookingId: "<Booking ID>"
// }
// or
// {
// type: "paymentFailed",
// bookingId: "<Booking ID>"
// }
if (args.isNotEmpty &&
args[0]?["type"] == "paymentInitialized") {
print('payment initialized');
}
if (args.isNotEmpty && args[0]?["type"] == "paymentSuccess") {
print('payment success');
//do actions
//e.g. navigate to confirmation screen
}
if (args.isNotEmpty && args[0]?["type"] == "paymentFailed") {
print('payment failed');
//do actions
}
},
);
}
},
onLoadStop: (controller, url) async {
await controller.evaluateJavascript(source: '''
window.addEventListener("message", (event) => {
window.flutter_inappwebview.callHandler('message', event.data);
}, false);
''');
},
),
),
);
}
}
In addition to Scheduled Booking feature, Users can instantly book a service with the first available provider who accepts. This feature is called Instant Booking. No date or time is required — only a service type.

Customer creates an instant booking — Call PUT /customer/scheduling/new with assign: false and the desired type ID in the request body. No date or time fields are needed.
{
"type": "<TYPE ID>",
"assign": false
}
Booking status depends on payment configuration:
PENDING_ASSIGNMENT status immediately.PENDING_PAYMENT status. The customer must complete payment first (using the payment object in the response). After payment, the status transitions to PENDING_ASSIGNMENT.Response includes queue information:
{
"result": {
"id": "<BOOKING ID>",
"status": "PENDING_ASSIGNMENT",
"typeId": "<TYPE ID>",
"queuePosition": 1,
"estimatedWaitMinutes": 30
}
}
FCM broadcast to providers — Once the booking reaches PENDING_ASSIGNMENT status (immediately for free bookings, after payment for paid bookings), all matched resource providers receive an FCM notification:
{
"notification": { "title": "...", "body": "..." },
"data": {
"via": "scheduling-system",
"type": "NEW_PENDING_UNASSIGNED_BOOKING",
"bookingId": "<BOOKING ID>",
"resourceId": "<RESOURCE ID>"
}
}
Note: FCM notifications are NOT sent while the booking is in
PENDING_PAYMENTstatus. The broadcast only fires after payment is completed.
Provider accepts the booking — A provider calls POST /management/bookings/assign with bookingId and resourceId. The booking becomes CONFIRMED and is assigned to that resource.
{
"bookingId": "<BOOKING ID>",
"resourceId": "<RESOURCE ID>"
}
Customer receives assignment notification — An FCM notification is sent to the customer:
{
"notification": { "title": "...", "body": "..." },
"data": {
"via": "scheduling-system",
"type": "MY_BOOKING_ASSIGNED",
"bookingStatus": "CONFIRMED",
"bookingId": "<BOOKING ID>"
}
}
Booking is now CONFIRMED — Queue fields (queuePosition, estimatedWaitMinutes) are removed from the booking after assignment.
Instant bookings expire if not assigned within a configured timeout. You can control this with the optional assignmentTimeout parameter (in minutes) when creating the booking:
{
"type": "<TYPE ID>",
"assign": false,
"assignmentTimeout": 30
}
When the timeout expires:
REJECTED.{
"data": {
"via": "scheduling-system",
"type": "MY_BOOKING_EXPIRED",
"bookingId": "<BOOKING ID>",
"bookingStatus": "REJECTED"
}
}
BKS-110 (booking expired).When multiple providers try to accept the same booking simultaneously:
CONFIRMED status).400 response with error code SCH-ALREADY_ASSIGNED.MY_BOOKING_ASSIGNED FCM notification.A customer can cancel an instant booking at any point:
POST /customer/bookings/cancel with bookingId.A provider can end a confirmed instant booking early using POST /management/bookings/end with bookingId. This shortens the booking duration to the actual time served. After ending, if there are other pending unassigned bookings, a new FCM broadcast is sent to available providers.
| Scenario | Booking Status | Payment Required |
|---|---|---|
| Free service type (no price) | PENDING_ASSIGNMENT |
No |
| Paid service, no payment method enabled | PENDING_ASSIGNMENT |
No |
| Paid service with payment method enabled | PENDING_PAYMENT → PENDING_ASSIGNMENT (after payment) |
Yes |
| Paid service with deposit | PENDING_PAYMENT → PENDING_ASSIGNMENT (after deposit payment) |
Yes (deposit amount) |
The payment object in the response contains invoiceId, invoiceNumber, paymentLink, paymentWebViewLink, and amount details (subTotal, total, balance, discount).
Building on the Instant Booking feature, a Queue Booking system lets customers join a virtual queue and wait for the next available provider — without selecting a specific date or time. This is ideal for walk-in clinics, service counters, or any scenario where customers wait in line remotely.
Instant Booking and Queue Booking use the same API endpoint and mechanism (assign: false). The queue features (position tracking, estimated wait, pending count) are automatically included.

Customer checks queue length — Call POST /availability/types to see available service types. Each type includes a pendingCount field showing how many customers are currently waiting in the queue.
Customer joins the queue — Call PUT /customer/scheduling/new with assign: false in the request body. No date or time is required. A booking is created with PENDING_ASSIGNMENT status (or PENDING_PAYMENT if payment is required). The response includes:
queuePosition — the customer's position in the queue (1 = next to be served)estimatedWaitMinutes — estimated wait time based on position × service durationProviders get notified — All matched resource providers receive an FCM notification (after payment is completed, if applicable):
{
"notification": { "title": "...", "body": "..." },
"data": {
"via": "scheduling-system",
"type": "NEW_PENDING_UNASSIGNED_BOOKING",
"bookingId": "<BOOKING ID>",
"resourceId": "<RESOURCE ID>"
}
}
Queue position updates — When another customer is served, assigned, or leaves the queue, remaining customers receive an FCM notification with their updated position:
{
"data": {
"via": "scheduling-system",
"type": "QUEUE_POSITION_UPDATED",
"bookingId": "<BOOKING ID>",
"queuePosition": "2",
"estimatedWaitMinutes": "60"
}
}
Customers can also poll GET /customer/bookings?status=PENDING_ASSIGNMENT to see their current queuePosition and estimatedWaitMinutes.
Provider accepts — A provider calls POST /management/bookings/assign with bookingId and resourceId. The booking becomes CONFIRMED. The customer receives:
{
"data": {
"via": "scheduling-system",
"type": "MY_BOOKING_ASSIGNED",
"bookingStatus": "CONFIRMED",
"bookingId": "<BOOKING ID>"
}
}
Remaining customers in the queue automatically receive QUEUE_POSITION_UPDATED with their new positions.
Customer leaves the queue (optional) — A customer can leave the queue at any time by calling POST /customer/bookings/cancel with their bookingId. Remaining customers in the queue automatically receive updated positions via QUEUE_POSITION_UPDATED FCM notifications.
Booking expiration — If a booking is not assigned within the timeout period, it expires. The customer receives a MY_BOOKING_EXPIRED FCM notification with bookingStatus: "REJECTED", and remaining customers' queue positions are updated automatically.
Queues are independent per resource. If resources A and B serve different service types, bookings for type A and type B maintain separate queue positions. This means:
queuePosition: 1 even if there are 5 pending bookings for type B.pendingCount in /availability/types reflects the count per type across all matching resources.Providers can view their pending queue using GET /management/bookings/unassigned?resourceId=<RESOURCE ID>. This returns:
createdAt ascending (oldest first / FIFO).The resourceId query parameter is required.
pendingCount (e.g., "General Consultation — 3 people waiting").PUT /customer/scheduling/new with assign: false.QUEUE_POSITION_UPDATED FCM notifications and updates the display.POST /management/bookings/assign.MY_BOOKING_ASSIGNED notification — "A doctor has accepted your request".| Event | Notification Type | Recipient | Payload |
|---|---|---|---|
Booking reaches PENDING_ASSIGNMENT |
NEW_PENDING_UNASSIGNED_BOOKING |
All matched providers | bookingId, resourceId |
| Provider assigns booking | MY_BOOKING_ASSIGNED |
Customer | bookingId, bookingStatus: "CONFIRMED" |
| Queue position changes (cancel/assign/expire) | QUEUE_POSITION_UPDATED |
Remaining customers in queue | bookingId, queuePosition, estimatedWaitMinutes |
| Booking expires (timeout) | MY_BOOKING_EXPIRED |
Customer | bookingId, bookingStatus: "REJECTED" |
All FCM payloads include via: "scheduling-system" in the data field.
Use Customers APIs for the Patient's App and Management APIs for Doctor's App.
Booking flow varies from App to App, in our use case:
/availability/resourceCategories to fetch list of clinics./customFields/resourceFilters to fetch filters fields types and options./availability/resources to fetch doctors./availability/types to fetch doctor's appointment types./availability/times to fetch days and times./customFields/bookingInfo to fetch appoitnment type's information fields and /customFields/customer for customer's information fields and /customer/scheduling/new to create an appointment.
As for Doctor App, each Doctor is registered as an Organization User with limited permissions to allow only control of a single Booking Resource.

Display beautiful widgets for use on the web!
Do not forget to white list domain names in order for the widget to work through Settings page

| Attribute | Required | Description |
|---|---|---|
data-app-id |
Yes | Your application/page ID |
data-type |
No | Scheduling type ID to pre-select |
data-lang |
No | Language code (ar, en) |
data-resource |
No | Resource ID to pre-select |
data-button-text |
No | Custom button text - popup mode only (default: "Book Now") |
The widget dispatches custom events on the container element:
| Event | Description |
|---|---|
scheduling:ready |
Widget is loaded and ready |
scheduling:bookingComplete |
Booking completed successfully. If payment is required, this event is triggered after payment is completed. |
scheduling:paymentFailed |
Payment failed |
All events include a detail property with event-specific data:
container.addEventListener('scheduling:bookingComplete', function(e) {
console.log('Booking ID:', e.detail.bookingId);
});
<div
class="scheduling-button"
data-app-id="<APP ID>"
data-type="<TYPE ID>"
>
</div>
<script
async
src="https://FRONTEND_DOMAIN/scheduling-sdk.js"
charset="utf-8"
></script>
<div
class="scheduling-button"
data-app-id="h66w3DSEcsKlu8ReaclX"
data-type="guvmAoJ4tH1tkOTj7VEx"
data-lang="ar"
data-button-text="احجز الآن"
>
</div>
<script
async
src="https://FRONTEND_DOMAIN/scheduling-sdk.js"
charset="utf-8"
></script>
You can use your own button inside the container:
<div
class="scheduling-button"
data-app-id="h66w3DSEcsKlu8ReaclX"
data-type="guvmAoJ4tH1tkOTj7VEx"
>
<button class="my-custom-button">
Book Appointment
</button>
</div>
Create a popup button programmatically:
SchedulingSDK.createButton({
container: '#my-button',
appId: 'h66w3DSEcsKlu8ReaclX',
typeId: 'guvmAoJ4tH1tkOTj7VEx',
lang: 'ar',
buttonText: 'احجز الآن',
onReady: function() {
console.log('Widget ready');
},
onBookingComplete: function(data) {
console.log('Booking completed:', data);
},
onPaymentFailed: function(data) {
console.log('Payment failed:', data);
}
});
Or open the popup directly without a button:
SchedulingSDK.open({
appId: 'h66w3DSEcsKlu8ReaclX',
typeId: 'guvmAoJ4tH1tkOTj7VEx',
lang: 'ar',
onReady: function() {
console.log('Widget ready');
},
onBookingComplete: function(data) {
console.log('Booking completed:', data);
},
onPaymentFailed: function(data) {
console.log('Payment failed:', data);
}
});
See the Events section in the Introduction page for the full list of events dispatched by the widget.
const container = document.querySelector('.scheduling-button');
container.addEventListener('scheduling:bookingComplete', function(e) {
console.log('Booking completed:', e.detail);
});
<div
class="scheduling-native"
data-app-id="<APP ID>"
data-type="<TYPE ID>"
>
</div>
<script
async
src="https://FRONTEND_DOMAIN/scheduling-sdk.js"
charset="utf-8"
></script>
<div
class="scheduling-native"
data-app-id="h66w3DSEcsKlu8ReaclX"
data-type="guvmAoJ4tH1tkOTj7VEx"
data-lang="ar"
>
</div>
<script
async
src="https://FRONTEND_DOMAIN/scheduling-sdk.js"
charset="utf-8"
></script>
You can also create widgets programmatically using the JavaScript API:
// Create a widget programmatically
SchedulingSDK.create({
container: '#booking-widget',
appId: 'h66w3DSEcsKlu8ReaclX',
typeId: 'guvmAoJ4tH1tkOTj7VEx',
lang: 'ar',
onReady: function() {
console.log('Widget ready');
},
onBookingComplete: function(data) {
console.log('Booking completed:', data);
},
onPaymentFailed: function(data) {
console.log('Payment failed:', data);
}
});
| Method | Description |
|---|---|
SchedulingSDK.create(options) |
Create a widget programmatically |
SchedulingSDK.init(element) |
Initialize a specific container |
SchedulingSDK.initAll() |
Initialize all containers on the page |
{
container: '#my-widget', // Required: selector or element
appId: 'your-app-id', // Required: application ID
typeId: 'type-id', // Optional: scheduling type ID
lang: 'ar', // Optional: language code
onReady: fn, // Optional: callback when widget is ready
onBookingComplete: fn, // Optional: callback on success
onPaymentFailed: fn // Optional: callback on failure
}
See the Events section in the Introduction page for the full list of events dispatched by the widget.
const container = document.querySelector('.scheduling-native');
container.addEventListener('scheduling:bookingComplete', function(e) {
console.log('Booking completed:', e.detail);
});
Embed dashboard functionality into your external systems using Admin Widgets.
Note: Admin Widgets are different from Web Widgets. Web Widgets allow your customers to book appointments on your website. Admin Widgets allow you (the tenant) to embed dashboard pages in your internal systems.
Admin Widgets use iframes to embed authenticated dashboard pages:
┌─────────────────────────────────────┐
│ Your External System │
│ ┌───────────────────────────────┐ │
│ │ Admin Widget (iframe) │ │
│ │ │ │
│ │ ┌─────────────────────────┐ │ │
│ │ │ Scheduling Flow / │ │ │
│ │ │ Availability Settings │ │ │
│ │ └─────────────────────────┘ │ │
│ └───────────────────────────────┘ │
└─────────────────────────────────────┘
Admin Widgets require authentication via postMessage API. Your parent window must:
webview-ready messagepostMessagewindow.addEventListener('message', function(event) {
if (event.data.type === 'webview-ready') {
// Widget is ready, send refresh token
event.source.postMessage({
refreshToken: 'your-refresh-token'
}, '*');
}
});
Note: You can also send
accessTokeninstead ofrefreshToken, but refresh tokens are recommended as they handle expiration automatically.
event.origin before handling messageswindow.addEventListener('message', function(event) {
// Validate origin
if (event.origin !== 'https://FRONTEND_DOMAIN') {
return;
}
// Handle messages...
});
| Widget | Description | Page |
|---|---|---|
| Add Appointment | Create new appointments | Scheduling Flow |
| Time Rules | Configure working hours and schedules | Work Schedule |
| Off Rules | Configure vacations and time off | Vacations |
Admin Widgets dispatch events via postMessage:
| Event Type | Description |
|---|---|
webview-ready |
Widget loaded and awaiting authentication |
booking-created |
Appointment successfully created (Add Appointment widget) |
booking-error |
Error occurred during booking (Add Appointment widget) |
{
type: 'booking-created',
booking: {
// ... booking object data
}
}
Embed the appointment scheduling flow in your external system. Supports both creating new appointments and rescheduling existing ones.
<iframe
id="add-appointment-widget"
src="https://FRONTEND_DOMAIN/webviews/add-appointment?orgId=YOUR_ORG_ID&lang=en"
style="width: 100%; height: 600px; border: none;"
></iframe>
<script>
window.addEventListener('message', function(event) {
const iframe = document.getElementById('add-appointment-widget');
if (event.data.type === 'webview-ready') {
// Send refresh token to the widget
iframe.contentWindow.postMessage({
refreshToken: 'your-refresh-token'
}, '*');
}
if (event.data.type === 'booking-created') {
console.log('Booking created:', event.data.booking);
}
});
</script>
<iframe
id="reschedule-widget"
src="https://FRONTEND_DOMAIN/webviews/add-appointment?orgId=YOUR_ORG_ID&lang=en&rescheduleBookingId=BOOKING_ID"
style="width: 100%; height: 600px; border: none;"
></iframe>
<script>
window.addEventListener('message', function(event) {
const iframe = document.getElementById('reschedule-widget');
if (event.data.type === 'webview-ready') {
iframe.contentWindow.postMessage({
refreshToken: 'your-refresh-token'
}, '*');
}
if (event.data.type === 'booking-rescheduled') {
console.log('Booking rescheduled:', event.data.booking);
}
});
</script>
| Parameter | Required | Description |
|---|---|---|
orgId |
Yes | Your organization ID |
lang |
No | Language code (ar, en). Defaults to ar. |
rescheduleBookingId |
No | Booking ID to reschedule. When provided, the widget enters reschedule mode. |
schedulingTypeId |
No | Pre-selects a specific service/type by ID, skipping the type selection step. Only works when the website is configured with "select type first" or the booking policy doesn't require resource specification. |
<!DOCTYPE html>
<html>
<head>
<title>Book Appointment</title>
<style>
.widget-container {
max-width: 800px;
margin: 0 auto;
padding: 20px;
}
.widget-iframe {
width: 100%;
height: 700px;
border: 1px solid #e0e0e0;
border-radius: 8px;
}
.status {
padding: 10px;
margin-bottom: 10px;
border-radius: 4px;
}
.status.success { background: #d4edda; color: #155724; }
.status.error { background: #f8d7da; color: #721c24; }
.status.loading { background: #fff3cd; color: #856404; }
</style>
</head>
<body>
<div class="widget-container">
<h1>Book an Appointment</h1>
<div id="status" class="status loading">Loading widget...</div>
<!-- New appointment -->
<iframe
id="add-appointment-widget"
class="widget-iframe"
src="https://FRONTEND_DOMAIN/webviews/add-appointment?orgId=abc123&lang=en"
></iframe>
<!-- Or reschedule an existing appointment -->
<!--
<iframe
id="add-appointment-widget"
class="widget-iframe"
src="https://FRONTEND_DOMAIN/webviews/add-appointment?orgId=abc123&lang=en&rescheduleBookingId=booking456"
></iframe>
-->
</div>
<script>
const iframe = document.getElementById('add-appointment-widget');
const status = document.getElementById('status');
// Your refresh token (get from your auth system)
const refreshToken = 'YOUR_REFRESH_TOKEN';
window.addEventListener('message', function(event) {
// Handle widget events
switch (event.data.type) {
case 'webview-ready':
status.textContent = 'Widget ready';
status.className = 'status';
// Send refresh token
iframe.contentWindow.postMessage({
refreshToken: refreshToken
}, '*');
break;
case 'booking-created':
status.textContent = 'Appointment booked successfully!';
status.className = 'status success';
console.log('Booking details:', event.data.booking);
break;
case 'booking-rescheduled':
status.textContent = 'Appointment rescheduled successfully!';
status.className = 'status success';
console.log('Rescheduled booking:', event.data.booking);
break;
}
});
</script>
</body>
</html>
| Event Type | Description | Data |
|---|---|---|
webview-ready |
Widget loaded and ready | {} |
booking-created |
New appointment created successfully | { booking } |
booking-rescheduled |
Appointment rescheduled successfully | { booking } |
The widget respects your organization's theme settings. To customize the iframe appearance:
/* Container styling */
.widget-iframe {
width: 100%;
min-height: 600px;
max-height: 80vh;
border: none;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
/* Responsive */
@media (max-width: 768px) {
.widget-iframe {
height: 100vh;
border-radius: 0;
}
}
Availability configuration is split into two widgets:
| Widget | Description | Use Case |
|---|---|---|
| Time Rules | Configure working hours and schedules | Set when resources are available for bookings |
| Off Rules | Configure vacations and time off | Set when resources are unavailable |
Configure resource working hours, breaks, and recurring schedules.
<iframe
id="time-rules-widget"
src="https://FRONTEND_DOMAIN/settings/timeRules?webview=true&id=RESOURCE_ID&orgId=YOUR_ORG_ID&lang=en"
style="width: 100%; height: 700px; border: none;"
></iframe>
<script>
window.addEventListener('message', function(event) {
const iframe = document.getElementById('time-rules-widget');
if (event.data.type === 'webview-ready') {
iframe.contentWindow.postMessage({
refreshToken: 'your-refresh-token'
}, '*');
}
});
</script>
| Parameter | Required | Description |
|---|---|---|
webview |
Yes | Must be true to enable webview mode |
id |
Yes | Resource ID to configure |
orgId |
Yes | Your organization ID |
lang |
No | Language code (ar, en) |
Configure vacations, holidays, and time off periods.
<iframe
id="off-rules-widget"
src="https://FRONTEND_DOMAIN/settings/offRules?webview=true&id=RESOURCE_ID&orgId=YOUR_ORG_ID&lang=en"
style="width: 100%; height: 600px; border: none;"
></iframe>
<script>
window.addEventListener('message', function(event) {
const iframe = document.getElementById('off-rules-widget');
if (event.data.type === 'webview-ready') {
iframe.contentWindow.postMessage({
refreshToken: 'your-refresh-token'
}, '*');
}
});
</script>
| Parameter | Required | Description |
|---|---|---|
webview |
Yes | Must be true to enable webview mode |
id |
Yes | Resource ID to configure |
orgId |
Yes | Your organization ID |
lang |
No | Language code (ar, en) |
<!DOCTYPE html>
<html>
<head>
<title>Resource Availability Configuration</title>
<style>
.tabs { display: flex; gap: 10px; margin-bottom: 20px; }
.tab { padding: 10px 20px; cursor: pointer; border: 1px solid #ddd; border-radius: 4px; }
.tab.active { background: #007bff; color: white; border-color: #007bff; }
.widget-iframe { width: 100%; height: 600px; border: 1px solid #e0e0e0; border-radius: 8px; }
.hidden { display: none; }
</style>
</head>
<body>
<h1>Configure Availability</h1>
<div class="tabs">
<button class="tab active" onclick="showWidget('time-rules')">Working Hours</button>
<button class="tab" onclick="showWidget('off-rules')">Vacations</button>
</div>
<iframe
id="time-rules-widget"
class="widget-iframe"
src="https://FRONTEND_DOMAIN/settings/timeRules?webview=true&id=res456&orgId=abc123&lang=en"
></iframe>
<iframe
id="off-rules-widget"
class="widget-iframe hidden"
src="https://FRONTEND_DOMAIN/settings/offRules?webview=true&id=res456&orgId=abc123&lang=en"
></iframe>
<script>
const refreshToken = 'YOUR_REFRESH_TOKEN';
function showWidget(type) {
document.querySelectorAll('.tab').forEach(t => t.classList.remove('active'));
document.querySelectorAll('.widget-iframe').forEach(w => w.classList.add('hidden'));
event.target.classList.add('active');
document.getElementById(type + '-widget').classList.remove('hidden');
}
window.addEventListener('message', function(event) {
if (event.data.type === 'webview-ready') {
event.source.postMessage({ refreshToken: refreshToken }, '*');
}
});
</script>
</body>
</html>
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| method required | string
|
| phoneNumber | string |
string | |
| isOrgMember | boolean Default: false for org member/admins value is |
| turnstileToken | string Cloudflare Turnstile verification token. Required only when the server has Cloudflare Turnstile configured. |
| recaptchaToken | string Google reCAPTCHA v3 verification token. Required only when the server has Google reCAPTCHA configured. |
{- "method": "string",
- "phoneNumber": "string",
- "email": "string",
- "isOrgMember": false,
- "turnstileToken": "string",
- "recaptchaToken": "string"
}| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| method required | string
|
| phoneNumber | string |
string | |
| isOrgMember | boolean Default: false for org member/admins value is |
| turnstileToken | string Cloudflare Turnstile verification token. Required only when the server has Cloudflare Turnstile configured. |
| recaptchaToken | string Google reCAPTCHA v3 verification token. Required only when the server has Google reCAPTCHA configured. |
| code | string |
{- "method": "string",
- "phoneNumber": "string",
- "email": "string",
- "isOrgMember": false,
- "turnstileToken": "string",
- "recaptchaToken": "string",
- "code": "string"
}| refreshToken required | string |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| refreshToken | string |
| accessToken | string |
| accessTokenExpiresAt | string |
| user | object |
{- "refreshToken": "string",
- "accessToken": "string",
- "accessTokenExpiresAt": "string",
- "user": { }
}Get a list of available resources with optional filtering
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
object Key-value pairs where the key is the field ID and the value filters which resources are available.
Fetch available fields from These fields have Value format depends on the field type:
| ||||||||||
| showAll | boolean Default: false Whether to show all resources including those not available for web booking | |||||||||
object | ||||||||||
| type | string Booking type ID to filter by | |||||||||
| limit | number Number of items to return per page | |||||||||
| nextPageToken | string Token for pagination | |||||||||
| sortBy | string Field to sort by | |||||||||
| sortByDirection | string Enum: "asc" "desc" Sort direction |
Array of objects (ResourceBase) | |
object (Pagination) Pagination information for list responses |
{- "resourceFiltersCustomFields": {
- "specialty": "general",
- "department": [
- "surgery",
- "emergency"
]
}, - "showAll": false,
- "resourceFilters": {
- "category": "string",
- "resource": "string"
}, - "type": "string",
- "limit": 10,
- "nextPageToken": "string",
- "sortBy": "createdAt",
- "sortByDirection": "desc"
}{- "result": [
- {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z",
- "types": [
- {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z"
}
]
}
], - "pagination": {
- "currentPage": 0,
- "pageSize": 0,
- "total": 0,
- "nextPageToken": "string"
}
}Get detailed information about a specific resource
| resourceId required | string Resource ID |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
object (ResourceBase) Base properties for a booking resource |
{- "result": {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z",
- "types": [
- {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z"
}
]
}
}Get a list of resource categories with their associated resources
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
object Key-value pairs where the key is the field ID and the value filters which resources are available.
Fetch available fields from These fields have Value format depends on the field type:
| ||||||||||
| showAll | boolean Default: false Whether to show all resources including those not available for web booking | |||||||||
| limit | number Number of items to return per page | |||||||||
| nextPageToken | string Token for pagination |
Array of objects | |
object (Pagination) Pagination information for list responses |
{- "resourceFiltersCustomFields": {
- "specialty": "general",
- "department": [
- "surgery",
- "emergency"
]
}, - "showAll": false,
- "limit": 10,
- "nextPageToken": "string"
}{- "result": [
- {
- "id": "string",
- "name": "string",
- "resources": [
- {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z"
}
]
}
], - "pagination": {
- "currentPage": 0,
- "pageSize": 0,
- "total": 0,
- "nextPageToken": "string"
}
}Get a list of booking types with optional filtering
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
object Key-value pairs where the key is the field ID and the value filters which resources are available.
Fetch available fields from These fields have Value format depends on the field type:
| ||||||||||
| showAll | boolean Default: false Whether to show all resources including those not available for web booking | |||||||||
object | ||||||||||
| type | string Booking type ID to filter by | |||||||||
| limit | number Number of items to return per page | |||||||||
| nextPageToken | string Token for pagination |
Array of objects (BookingTypeBase) | |
object (Pagination) Pagination information for list responses |
{- "resourceFiltersCustomFields": {
- "specialty": "general",
- "department": [
- "surgery",
- "emergency"
]
}, - "showAll": false,
- "resourceFilters": {
- "category": "string",
- "resource": "string"
}, - "type": "string",
- "limit": 10,
- "nextPageToken": "string"
}{- "result": [
- {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z",
- "resources": [
- {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z"
}
]
}
], - "pagination": {
- "currentPage": 0,
- "pageSize": 0,
- "total": 0,
- "nextPageToken": "string"
}
}Get available booking time slots for a specific type
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| type required | string ID of the booking type | |||||||||
| from | string <date-time> Start date for availability search. The time component is ignored; the search starts from the beginning of the specified day (midnight). | |||||||||
| to | string <date-time> End date for availability search. Days up to and including this date are returned. | |||||||||
| showAll | boolean Default: false Whether to show all times including those not available for web booking | |||||||||
| limit | number Limits the number of days returned | |||||||||
| showInBetweenSlots | boolean Whether to show slots that don't fall on standard time boundaries | |||||||||
| showOclock | boolean Default: true Whether to show slots on the hour (e.g., 1:00, 2:00) | |||||||||
| showHalfHour | boolean Default: false Whether to show slots on the half hour (e.g., 1:30, 2:30) | |||||||||
| showThirdHour | boolean Default: false Whether to show slots on the third hour (e.g., 1:20, 1:40) | |||||||||
| showQuarterHour | boolean Default: false Whether to show slots on the quarter hour (e.g., 1:15, 1:45) | |||||||||
| showSixthHour | boolean Default: false Whether to show slots on the sixth hour (e.g., 1:10, 1:50) | |||||||||
| showAfterMidnight | boolean Default: true Whether to show slots after midnight | |||||||||
| showFixedTimes | string Comma-separated list of fixed times in military format (e.g., 800,1200) | |||||||||
| rescheduleBookingId | string Optional booking ID to reschedule. When provided, the time slots occupied by this booking will appear as available in the results, allowing the user to see their current booking time alongside other open slots. | |||||||||
object | ||||||||||
object Key-value pairs where the key is the field ID and the value filters which resources are available.
Fetch available fields from These fields have Value format depends on the field type:
| ||||||||||
object Key-value pairs where the key is the custom field's ID and the value is the field's input.
Fetch available fields from These fields affect the booking's duration and/or price:
Value format depends on the field type:
|
Array of objects | |
object |
{- "type": "string",
- "from": "2019-08-24T14:15:22Z",
- "to": "2019-08-24T14:15:22Z",
- "showAll": false,
- "limit": 0,
- "showInBetweenSlots": true,
- "showOclock": true,
- "showHalfHour": false,
- "showThirdHour": false,
- "showQuarterHour": false,
- "showSixthHour": false,
- "showAfterMidnight": true,
- "showFixedTimes": "string",
- "rescheduleBookingId": "string",
- "resourceFilters": {
- "category": "string",
- "resource": "string"
}, - "resourceFiltersCustomFields": {
- "specialty": "general",
- "department": [
- "surgery",
- "emergency"
]
}, - "timeAdjustersCustomFields": {
- "guests_count": 3,
- "service_level": "premium"
}
}{- "result": [
- {
- "display": "Monday, June 10, 2024",
- "date": "2024-06-10",
- "times": [
- {
- "display": "10:00 AM",
- "time": 1000
}
]
}
], - "pagination": {
- "left": 5
}
}Public endpoints for retrieving custom field definitions.
Custom fields are categorized into:
Get custom fields that are used to filter available resources.
These fields have info.filterResources: true and allow customers to narrow down
resource selection based on their preferences (e.g., selecting a doctor specialty,
choosing a specific skill level, etc.).
When to use: Call this endpoint before showing the resource/time selection to
collect filter criteria from the customer. Pass the collected values in
resourceFiltersCustomFields when querying availability.
Example Flow:
{ "specialty": "pediatrics" } to availability endpoint| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (FormField) |
{- "result": [
- {
- "id": "specialty",
- "name": "التخصص",
- "type": "options",
- "optional": false,
- "enabled": true,
- "visibility": "public",
- "info": {
- "filterResources": true
}, - "options": [
- {
- "value": "general",
- "label": "طب عام"
}, - {
- "value": "pediatrics",
- "label": "طب أطفال"
}
]
}
]
}Get custom fields that affect booking duration based on selected values.
These are fields that have:
minutes property (for number fields: adds time per unit)minutes property (for select fields: adds time based on selection)When to use: Call this endpoint to get fields that should be collected BEFORE showing available time slots, as they affect the booking duration and therefore which time slots are available.
Example Flow:
Note: The endpoint requires a type parameter to filter fields
relevant to the selected booking type.
| type required | string The booking type ID to get time adjuster fields for |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (FormField) |
{- "result": [
- {
- "id": "service_type",
- "name": "نوع الخدمة",
- "type": "options",
- "optional": false,
- "enabled": true,
- "options": [
- {
- "value": "standard",
- "label": "عادي",
- "minutes": 0
}, - {
- "value": "premium",
- "label": "مميز",
- "minutes": 30
}
]
}, - {
- "id": "guests_count",
- "name": "عدد الضيوف",
- "type": "number",
- "optional": false,
- "enabled": true,
- "minutes": 15
}
]
}Get custom fields for collecting additional appointment information.
These are fields that do NOT filter resources or adjust time, but collect supplementary information about the booking (e.g., reason for visit, special requests, notes).
When to use: Call this endpoint AFTER the customer has selected their time slot, to collect any remaining information before completing the booking.
Example Flow:
bookingInfoCustomFields when creating the bookingNote: The endpoint requires a type parameter to filter fields
relevant to the selected booking type.
| type required | string The booking type ID to get booking info fields for |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (FormField) |
{- "result": [
- {
- "id": "visit_reason",
- "name": "سبب الزيارة",
- "type": "textarea",
- "optional": true,
- "enabled": true,
- "visibility": "public"
}, - {
- "id": "special_requests",
- "name": "طلبات خاصة",
- "type": "text",
- "optional": true,
- "enabled": true,
- "visibility": "providerOnly"
}
]
}Get custom fields for collecting customer profile information.
These fields collect information about the customer themselves, not about a specific booking. Includes core fields like phone number, email, and name, plus any custom fields added by the organization.
Core Fields:
phoneNumber: Customer's phone number (required for authentication)firstName: Customer's first namelastName: Customer's last nameemail: Customer's email addressWhen to use: Call this endpoint when collecting customer information during checkout or registration.
Note: At least one of phone number or email must be required and enabled to ensure customer identification.
| type | string Optional booking type ID (not commonly used for customer fields) |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (FormField) |
{- "result": [
- {
- "id": "phoneNumber",
- "name": "رقم الجوال",
- "type": "text",
- "textType": "phone",
- "optional": false,
- "enabled": true,
- "core": true,
- "phoneAuthMethods": [
- "sms"
], - "smsSender": "app",
- "allowedCountries": "all"
}, - {
- "id": "firstName",
- "name": "الاسم الاول",
- "type": "text",
- "optional": false,
- "enabled": true,
- "core": true
}, - {
- "id": "lastName",
- "name": "الاسم الاخير",
- "type": "text",
- "optional": true,
- "enabled": false,
- "core": true
}, - {
- "id": "email",
- "name": "البريد الالكتروني",
- "type": "text",
- "textType": "email",
- "optional": true,
- "enabled": true,
- "core": true
}
]
}Schedule New Confirmed Booking or Unconfirmed Booking Request depending on the policy Organization's admins have set.
for example if admins have activated 'auto confirm' on the specified booking type, it will be CONFIRMED.
another example is when specified booking type has a price and a payment gateway is linked, it will return PENDING_PAYMENT status.
if either case is not true then it will be on PENDING_APPROVAL status
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| date | string Day's Date e.g. | ||||||||||||||||||||||||||||||
| time | number in military time format e.g. | ||||||||||||||||||||||||||||||
| type | string Scheduling Type ID | ||||||||||||||||||||||||||||||
object | |||||||||||||||||||||||||||||||
object Key-value pairs where the key is the field ID and the value filters which resources are available.
Fetch available fields from These fields have Value format depends on the field type:
| |||||||||||||||||||||||||||||||
| showAll | boolean Default: false Whether to show all resources including those not available for web booking | ||||||||||||||||||||||||||||||
object Key-value pairs where the key is the custom field's ID and the value is the field's input.
Fetch available fields from Value format depends on the field type:
Location value:
Photo value (
File value (
| |||||||||||||||||||||||||||||||
object Key-value pairs where the key is the custom field's ID and the value is the field's input.
Fetch available fields from These fields affect the booking's duration and/or price:
Value format depends on the field type:
|
object (Booking) |
{- "date": "string",
- "time": 0,
- "type": "string",
- "resourceFilters": {
- "category": "string",
- "resource": "string"
}, - "resourceFiltersCustomFields": {
- "specialty": "general",
- "department": [
- "surgery",
- "emergency"
]
}, - "showAll": false,
- "bookingInfoCustomFields": {
- "field_text_1": "some text",
- "field_number_1": 3,
- "field_options_1": "option_value",
- "field_location_1": {
- "position": {
- "latitude": 24.7136,
- "longitude": 46.6753
}, - "address": "Riyadh, Saudi Arabia"
}, - "field_photo_1": {
- "id": 4829371,
- "fileName": "image.jpg",
- "data": "data:image/jpeg;base64,/9j/4AAQ..."
}, - "field_files_1": [
- {
- "id": 5928471,
- "fileName": "document.pdf",
- "data": "data:application/pdf;base64,JVBERi..."
}
]
}, - "timeAdjustersCustomFields": {
- "guests_count": 3,
- "service_level": "premium"
}
}{- "result": {
- "id": "string",
- "status": "CONFIRMED",
- "queuePosition": 0,
- "estimatedWaitMinutes": 0,
- "unassignedUntil": "2019-08-24T14:15:22Z",
- "display": {
- "date": "string",
- "dayOfWeek": "string",
- "time": "string",
- "duration": "string"
}, - "startDateTime": "string",
- "endDateTime": "2019-08-24T14:15:22Z",
- "startTime": 0,
- "duration": 0,
- "typeId": "string",
- "info": {
- "data": { },
- "hasNote": true
}, - "type": {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z"
}, - "resourceId": "string",
- "resource": {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z"
}, - "payment": {
- "invoiceNumber": "string",
- "invoiceId": "string",
- "method": "string",
- "status": "paid",
- "price": 0,
- "tax": 0,
- "isTaxInclusive": true,
- "discount": 0,
- "coupon": "string",
- "rewardPointsUsed": 0,
- "rewardPointsUsedInRealMoney": 0,
- "total": 0,
- "deposit": 0,
- "left": 0,
- "gateway": "string",
- "gatewayReference": "string"
}, - "customerId": "string",
- "customer": {
- "blocked": "string",
- "id": "string",
- "phone": "string",
- "email": "string",
- "firstName": "string",
- "lastName": "string",
- "data": [
- {
- "id": "string",
- "name": "string",
- "value": "string"
}
], - "needsUpdate": true
}, - "providerId": "string",
- "provider": { }
}
}| from | string <date-time> |
| to | string <date-time> |
| resource | string |
| status | string statuses separated by comma: |
| includes | string Include related data, separated by comma: customer,type,resource,invoice |
| dateType | string Default: "dateTime" Enum: "createdAt" "dateTime" Type of date to filter by |
| orderDirection | string Default: "desc" Enum: "asc" "desc" Sorting direction for results |
| limit | integer Default: 10 Number of records to return |
| nextPageToken | string Token for pagination |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (Booking) | |
object (Pagination) Pagination information for list responses |
{- "result": [
- {
- "id": "string",
- "status": "CONFIRMED",
- "queuePosition": 0,
- "estimatedWaitMinutes": 0,
- "unassignedUntil": "2019-08-24T14:15:22Z",
- "display": {
- "date": "string",
- "dayOfWeek": "string",
- "time": "string",
- "duration": "string"
}, - "startDateTime": "string",
- "endDateTime": "2019-08-24T14:15:22Z",
- "startTime": 0,
- "duration": 0,
- "typeId": "string",
- "info": {
- "data": { },
- "hasNote": true
}, - "type": {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z"
}, - "resourceId": "string",
- "resource": {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z"
}, - "payment": {
- "invoiceNumber": "string",
- "invoiceId": "string",
- "method": "string",
- "status": "paid",
- "price": 0,
- "tax": 0,
- "isTaxInclusive": true,
- "discount": 0,
- "coupon": "string",
- "rewardPointsUsed": 0,
- "rewardPointsUsedInRealMoney": 0,
- "total": 0,
- "deposit": 0,
- "left": 0,
- "gateway": "string",
- "gatewayReference": "string"
}, - "customerId": "string",
- "customer": {
- "blocked": "string",
- "id": "string",
- "phone": "string",
- "email": "string",
- "firstName": "string",
- "lastName": "string",
- "data": [
- {
- "id": "string",
- "name": "string",
- "value": "string"
}
], - "needsUpdate": true
}, - "providerId": "string",
- "provider": { }
}
], - "pagination": {
- "currentPage": 0,
- "pageSize": 0,
- "total": 0,
- "nextPageToken": "string"
}
}| bookingId required | string |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
{- "result": {
- "id": "string",
- "status": "CONFIRMED",
- "queuePosition": 0,
- "estimatedWaitMinutes": 0,
- "unassignedUntil": "2019-08-24T14:15:22Z",
- "display": {
- "date": "string",
- "dayOfWeek": "string",
- "time": "string",
- "duration": "string"
}, - "startDateTime": "string",
- "endDateTime": "2019-08-24T14:15:22Z",
- "startTime": 0,
- "duration": 0,
- "typeId": "string",
- "info": {
- "data": { },
- "hasNote": true
}, - "type": {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z"
}, - "resourceId": "string",
- "resource": {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z"
}, - "payment": {
- "invoiceNumber": "string",
- "invoiceId": "string",
- "method": "string",
- "status": "paid",
- "price": 0,
- "tax": 0,
- "isTaxInclusive": true,
- "discount": 0,
- "coupon": "string",
- "rewardPointsUsed": 0,
- "rewardPointsUsedInRealMoney": 0,
- "total": 0,
- "deposit": 0,
- "left": 0,
- "gateway": "string",
- "gatewayReference": "string"
}, - "customerId": "string",
- "customer": {
- "blocked": "string",
- "id": "string",
- "phone": "string",
- "email": "string",
- "firstName": "string",
- "lastName": "string",
- "data": [
- {
- "id": "string",
- "name": "string",
- "value": "string"
}
], - "needsUpdate": true
}, - "providerId": "string",
- "provider": { }
}
}| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
object |
{- "result": {
- "data": {
- "id": "string",
- "phone": "string",
- "email": "string",
- "firstName": "string",
- "lastName": "string",
- "data": [
- {
- "id": "string",
- "name": "string",
- "value": "string"
}
], - "needsUpdate": true
}, - "needsUpdate": true
}
}| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| phone | string |
string | |
| firstName | string |
| lastName | string |
| note | string |
object Key-value pairs where the key is the custom field's ID and the value is the field's input. Only include this property when updating custom fields. |
object |
{- "phone": "string",
- "email": "string",
- "firstName": "string",
- "lastName": "string",
- "note": "string",
- "data": {
- "property1": "string",
- "property2": "string"
}
}{- "result": {
- "data": {
- "id": "string",
- "phone": "string",
- "email": "string",
- "firstName": "string",
- "lastName": "string",
- "data": [
- {
- "id": "string",
- "name": "string",
- "value": "string"
}
], - "needsUpdate": true
}, - "needsUpdate": true
}
}| nextPageToken | string for pagination |
| limit | string limit for returned results |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (Invoice) | |
object (Pagination) Pagination information for list responses |
{- "result": [
- {
- "id": "string",
- "invoiceNumber": "string",
- "customerId": "string",
- "items": [
- {
- "name": "string",
- "description": "string",
- "qty": 0,
- "price": 0
}
], - "discount": 0,
- "subTotal": 0,
- "tax": 0,
- "tax_rate": "string",
- "currency": "string",
- "invoiceDate": "2019-08-24T14:15:22Z",
- "invoiceFile": "string",
- "createdAt": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "currentPage": 0,
- "pageSize": 0,
- "total": 0,
- "nextPageToken": "string"
}
}| invoiceId required | string |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
{- "result": {
- "id": "string",
- "invoiceNumber": "string",
- "customerId": "string",
- "items": [
- {
- "name": "string",
- "description": "string",
- "qty": 0,
- "price": 0
}
], - "discount": 0,
- "subTotal": 0,
- "tax": 0,
- "tax_rate": "string",
- "currency": "string",
- "invoiceDate": "2019-08-24T14:15:22Z",
- "invoiceFile": "string",
- "createdAt": "2019-08-24T14:15:22Z"
}
}Get all resources for the current page with pagination
| limit | integer Default: 10 Number of resources to return |
| nextPageToken | string Token for pagination |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (ResourceForManagement) | |
object (Pagination) Pagination information for list responses |
{- "result": [
- {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z",
- "types": [
- {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z"
}
], - "provider": {
- "displayName": "string",
- "email": "string",
- "phoneNumber": "string"
}
}
], - "pagination": {
- "currentPage": 0,
- "pageSize": 0,
- "total": 0,
- "nextPageToken": "string"
}
}Create a new resource for the current page
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| id | string Unique identifier for the resource |
| name | string Name of the resource (localized based on the requested language) |
object (Translation) Multilingual translations for the resource name | |
| on | boolean Whether the resource is currently active and available for booking |
| description | string Description of the resource (localized based on the requested language) |
object (Translation) Multilingual translations for the resource description | |
| category | string Category the resource belongs to |
object (Photo) Primary photo for the resource | |
Array of objects (Photo) Collection of photos associated with the resource | |
| bookFromWebsite | boolean Whether this resource can be booked from the website |
| activated | boolean Whether the resource is activated in the system |
| meta | object Additional metadata for the resource |
| types | Array of strings Set List of booking types' ids available for this resource |
| providerEmail | string Provider email address (Only for setting provider using POST & PUT, not returned in GET) |
| providerPhone | string Provider phone number (Only for setting provider using POST & PUT, not returned in GET) |
object (ResourceForManagement) Base properties for a booking resource |
{- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
}, - "photos": [
- {
- "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
}
], - "bookFromWebsite": true,
- "activated": true,
- "meta": { },
- "types": [
- "type_12345abcde"
], - "providerEmail": "string",
- "providerPhone": "string"
}{- "result": {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z",
- "types": [
- {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z"
}
], - "provider": {
- "displayName": "string",
- "email": "string",
- "phoneNumber": "string"
}
}
}Get all resources where the authenticated user is the provider
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (ResourceForManagement) |
{- "result": [
- {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z",
- "types": [
- {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z"
}
], - "provider": {
- "displayName": "string",
- "email": "string",
- "phoneNumber": "string"
}
}
]
}Get all active resources that the authenticated user has permission to view confirmed appointments for
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (ResourceForManagement) |
{- "result": [
- {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z",
- "types": [
- {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z"
}
], - "provider": {
- "displayName": "string",
- "email": "string",
- "phoneNumber": "string"
}
}
]
}Get all active resources that the authenticated user has permission to view booking requests for
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (ResourceForManagement) |
{- "result": [
- {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z",
- "types": [
- {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z"
}
], - "provider": {
- "displayName": "string",
- "email": "string",
- "phoneNumber": "string"
}
}
]
}Get detailed information about a specific resource
| resourceId required | string Resource ID |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
object (ResourceForManagement) Base properties for a booking resource |
{- "result": {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z",
- "types": [
- {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z"
}
], - "provider": {
- "displayName": "string",
- "email": "string",
- "phoneNumber": "string"
}
}
}Update an existing resource
| resourceId required | string Resource ID |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| id | string Unique identifier for the resource |
| name | string Name of the resource (localized based on the requested language) |
object (Translation) Multilingual translations for the resource name | |
| on | boolean Whether the resource is currently active and available for booking |
| description | string Description of the resource (localized based on the requested language) |
object (Translation) Multilingual translations for the resource description | |
| category | string Category the resource belongs to |
object (Photo) Primary photo for the resource | |
Array of objects (Photo) Collection of photos associated with the resource | |
| bookFromWebsite | boolean Whether this resource can be booked from the website |
| activated | boolean Whether the resource is activated in the system |
| meta | object Additional metadata for the resource |
| types | Array of strings Set List of booking types' ids available for this resource |
| providerEmail | string Provider email address (Only for setting provider using POST & PUT, not returned in GET) |
| providerPhone | string Provider phone number (Only for setting provider using POST & PUT, not returned in GET) |
object (ResourceForManagement) Base properties for a booking resource |
{- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
}, - "photos": [
- {
- "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
}
], - "bookFromWebsite": true,
- "activated": true,
- "meta": { },
- "types": [
- "type_12345abcde"
], - "providerEmail": "string",
- "providerPhone": "string"
}{- "result": {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z",
- "types": [
- {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z"
}
], - "provider": {
- "displayName": "string",
- "email": "string",
- "phoneNumber": "string"
}
}
}Delete a resource and its associated managed types
| resourceId required | string Resource ID |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| message | string |
{- "message": "string"
}| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (BookingTypeForManagement) | |
object (Pagination) Pagination information for list responses |
{- "result": [
- {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z",
- "resources": [
- {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z"
}
]
}
], - "pagination": {
- "currentPage": 0,
- "pageSize": 0,
- "total": 0,
- "nextPageToken": "string"
}
}| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| name | string Name of the booking type |
object (Translation) Multilingual translations | |
| description | string Description of the booking type |
object (Translation) Multilingual translations | |
| minutes | number Duration in minutes |
| leaveMinutesBefore | number Buffer time before booking |
| leaveMinutesAfter | number Buffer time after booking |
| category | string Category the booking type belongs to |
| color | string Color code for displaying the booking type |
| on | boolean Whether the booking type is active |
| price | string Price with format d+.d{2} |
| oldPrice | string Old price with format d+.d{2} |
| priceIncrease | string Price increase percentage |
| priceIncreaseDays | number Days for price increase |
| depositAmount | string Deposit amount with format d+.d{2} |
| depositPercentage | string Deposit percentage with format d+.d{2} |
| schedule | object Availability schedule |
object (MechanismTimeOptions) Configuration options for time slot display and selection | |
Array of objects (Photo) Photos associated with the booking type | |
| autoConfirm | boolean Whether bookings are auto-confirmed |
| paymentMethods | Array of strings Items Enum: "manual" "creditCard" "tabby" "tamara" Available payment methods |
| bookFromWebsite | boolean Whether the type can be booked from website |
object (BookingTypeForManagement) Properties for creating or updating a booking type |
{- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true
}{- "result": {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z",
- "resources": [
- {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z"
}
]
}
}| id required | string Booking type ID |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
object (BookingTypeForManagement) Properties for creating or updating a booking type |
{- "result": {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z",
- "resources": [
- {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z"
}
]
}
}| id required | string Booking type ID |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| name | string Name of the booking type |
object (Translation) Multilingual translations | |
| description | string Description of the booking type |
object (Translation) Multilingual translations | |
| minutes | number Duration in minutes |
| leaveMinutesBefore | number Buffer time before booking |
| leaveMinutesAfter | number Buffer time after booking |
| category | string Category the booking type belongs to |
| color | string Color code for displaying the booking type |
| on | boolean Whether the booking type is active |
| price | string Price with format d+.d{2} |
| oldPrice | string Old price with format d+.d{2} |
| priceIncrease | string Price increase percentage |
| priceIncreaseDays | number Days for price increase |
| depositAmount | string Deposit amount with format d+.d{2} |
| depositPercentage | string Deposit percentage with format d+.d{2} |
| schedule | object Availability schedule |
object (MechanismTimeOptions) Configuration options for time slot display and selection | |
Array of objects (Photo) Photos associated with the booking type | |
| autoConfirm | boolean Whether bookings are auto-confirmed |
| paymentMethods | Array of strings Items Enum: "manual" "creditCard" "tabby" "tamara" Available payment methods |
| bookFromWebsite | boolean Whether the type can be booked from website |
object (BookingTypeForManagement) Properties for creating or updating a booking type |
{- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true
}{- "result": {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z",
- "resources": [
- {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z"
}
]
}
}| id required | string Booking type ID |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| message | string |
{- "message": "string"
}| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (CustomerBase) | |
object (Pagination) Pagination information for list responses |
{- "result": [
- {
- "id": "232fd3r2r34",
- "name": "John Doe",
- "types": [
- {
- "id": "32d8723g83d",
- "name": "101 Training Session",
- "minutes": 60
}
]
}
]
}| customerId required | string |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
object (CustomerBase) |
{- "result": {
- "blocked": "string",
- "id": "string",
- "phone": "string",
- "email": "string",
- "firstName": "string",
- "lastName": "string",
- "data": [
- {
- "id": "string",
- "name": "string",
- "value": "string"
}
], - "needsUpdate": true
}
}| customerId required | string |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| phone | string |
string | |
| firstName | string |
| lastName | string |
| note | string |
object Key-value pairs where the key is the custom field's ID and the value is the field's input. Only include this property when updating custom fields. |
{- "phone": "string",
- "email": "string",
- "firstName": "string",
- "lastName": "string",
- "note": "string",
- "data": {
- "property1": "string",
- "property2": "string"
}
}| from | string |
| to | string |
| resources | string |
| status | string |
| customerId | string |
| nextPageToken | string |
| includes | string Include related data, separated by comma |
| dateType | string Default: "dateTime" Enum: "createdAt" "dateTime" Type of date to filter by |
| orderDirection | string Default: "desc" Enum: "asc" "desc" Sorting direction for results |
| limit | integer Default: 100 Number of records to return |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (Booking) | |
object (Pagination) Pagination information for list responses |
{- "result": [
- {
- "id": "string",
- "status": "CONFIRMED",
- "queuePosition": 0,
- "estimatedWaitMinutes": 0,
- "unassignedUntil": "2019-08-24T14:15:22Z",
- "display": {
- "date": "string",
- "dayOfWeek": "string",
- "time": "string",
- "duration": "string"
}, - "startDateTime": "string",
- "endDateTime": "2019-08-24T14:15:22Z",
- "startTime": 0,
- "duration": 0,
- "typeId": "string",
- "info": {
- "data": { },
- "hasNote": true
}, - "type": {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z"
}, - "resourceId": "string",
- "resource": {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z"
}, - "payment": {
- "invoiceNumber": "string",
- "invoiceId": "string",
- "method": "string",
- "status": "paid",
- "price": 0,
- "tax": 0,
- "isTaxInclusive": true,
- "discount": 0,
- "coupon": "string",
- "rewardPointsUsed": 0,
- "rewardPointsUsedInRealMoney": 0,
- "total": 0,
- "deposit": 0,
- "left": 0,
- "gateway": "string",
- "gatewayReference": "string"
}, - "customerId": "string",
- "customer": {
- "blocked": "string",
- "id": "string",
- "phone": "string",
- "email": "string",
- "firstName": "string",
- "lastName": "string",
- "data": [
- {
- "id": "string",
- "name": "string",
- "value": "string"
}
], - "needsUpdate": true
}, - "providerId": "string",
- "provider": { }
}
], - "pagination": {
- "currentPage": 0,
- "pageSize": 0,
- "total": 0,
- "nextPageToken": "string"
}
}| bookingId required | string |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
object (Booking) |
{- "result": {
- "id": "string",
- "status": "CONFIRMED",
- "queuePosition": 0,
- "estimatedWaitMinutes": 0,
- "unassignedUntil": "2019-08-24T14:15:22Z",
- "display": {
- "date": "string",
- "dayOfWeek": "string",
- "time": "string",
- "duration": "string"
}, - "startDateTime": "string",
- "endDateTime": "2019-08-24T14:15:22Z",
- "startTime": 0,
- "duration": 0,
- "typeId": "string",
- "info": {
- "data": { },
- "hasNote": true
}, - "type": {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z"
}, - "resourceId": "string",
- "resource": {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z"
}, - "payment": {
- "invoiceNumber": "string",
- "invoiceId": "string",
- "method": "string",
- "status": "paid",
- "price": 0,
- "tax": 0,
- "isTaxInclusive": true,
- "discount": 0,
- "coupon": "string",
- "rewardPointsUsed": 0,
- "rewardPointsUsedInRealMoney": 0,
- "total": 0,
- "deposit": 0,
- "left": 0,
- "gateway": "string",
- "gatewayReference": "string"
}, - "customerId": "string",
- "customer": {
- "blocked": "string",
- "id": "string",
- "phone": "string",
- "email": "string",
- "firstName": "string",
- "lastName": "string",
- "data": [
- {
- "id": "string",
- "name": "string",
- "value": "string"
}
], - "needsUpdate": true
}, - "providerId": "string",
- "provider": { }
}
}| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| bookingId | string |
| resourceId | string |
{- "bookingId": "string",
- "resourceId": "string"
}Schedule New Confirmed Booking or Unconfirmed Booking Request
Rescheduling: To reschedule an existing booking, include the rescheduleBookingId parameter with the ID of the booking you want to reschedule. The existing booking will be cancelled and a new booking will be created with the new date/time specified.
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| date | string Day's Date e.g. | ||||||||||||||||||||||||||||||
| time | number in military time format e.g. | ||||||||||||||||||||||||||||||
| type | string Scheduling Type ID | ||||||||||||||||||||||||||||||
object | |||||||||||||||||||||||||||||||
object Key-value pairs where the key is the field ID and the value filters which resources are available.
Fetch available fields from These fields have Value format depends on the field type:
| |||||||||||||||||||||||||||||||
| showAll | boolean Default: false Whether to show all resources including those not available for web booking | ||||||||||||||||||||||||||||||
object Key-value pairs where the key is the custom field's ID and the value is the field's input.
Fetch available fields from Value format depends on the field type:
Location value:
Photo value (
File value (
| |||||||||||||||||||||||||||||||
object Key-value pairs where the key is the custom field's ID and the value is the field's input.
Fetch available fields from These fields affect the booking's duration and/or price:
Value format depends on the field type:
| |||||||||||||||||||||||||||||||
| note | string Optional note for the booking | ||||||||||||||||||||||||||||||
| rescheduleBookingId | string Optional. Provide an existing booking ID to reschedule that booking to the new date/time specified. When provided, the existing booking will be cancelled and a new booking will be created with the new schedule. | ||||||||||||||||||||||||||||||
object Need to provide either customer's phone or email or ID | |||||||||||||||||||||||||||||||
| assign | boolean Default: true When value is |
object (Booking) |
{- "date": "2023-01-11",
- "time": 1800,
- "type": "l68eESvkweJ4fkmn2Bbm",
- "customerIdentifier": {
- "email": "customer@example.com"
}, - "resourceFilters": {
- "category": "doctors"
}, - "note": "Regular appointment"
}{- "id": "djeWd83ncD3989RtebfiR",
- "status": "CONFIRMED",
- "display": {
- "date": "11 يناير 2023",
- "time": "6:00 مساءً",
- "duration": "30 دقيقة",
- "dayOfWeek": "الأربعاء"
}, - "startTime": 1800,
- "startDate": "2023-01-11",
- "startDateTime": "2023-01-11T18:00:00.000Z",
- "endDateTime": "2023-01-11T18:30:00.000Z",
- "duration": 30,
- "info": { },
- "typeId": "l68eESvkweJ4fkmn2Bbm",
- "type": {
- "id": "l68eESvkweJ4fkmn2Bbm",
- "name": "نوع حجز رقم 1"
}, - "resourceId": "CEIz0piQ3BMWSS2ggcK2",
- "resource": {
- "id": "CEIz0piQ3BMWSS2ggcK2",
- "name": "عبدالعزيز"
}
}create a Temporary Booking with a specific duration. The booking will be reserved for the specified number of minutes. If the booking is not confirmed within that time, it will be automatically deleted.
Rescheduling: To reschedule an existing booking, include the rescheduleBookingId parameter with the ID of the booking you want to reschedule. The existing booking will be cancelled and a new temporary booking will be created with the new date/time specified.
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| date | string Day's Date e.g. | ||||||||||||||||||||||||||||||
| time | number in military time format e.g. | ||||||||||||||||||||||||||||||
| type | string Scheduling Type ID | ||||||||||||||||||||||||||||||
object | |||||||||||||||||||||||||||||||
object Key-value pairs where the key is the field ID and the value filters which resources are available.
Fetch available fields from These fields have Value format depends on the field type:
| |||||||||||||||||||||||||||||||
| showAll | boolean Default: false Whether to show all resources including those not available for web booking | ||||||||||||||||||||||||||||||
object Key-value pairs where the key is the custom field's ID and the value is the field's input.
Fetch available fields from Value format depends on the field type:
Location value:
Photo value (
File value (
| |||||||||||||||||||||||||||||||
object Key-value pairs where the key is the custom field's ID and the value is the field's input.
Fetch available fields from These fields affect the booking's duration and/or price:
Value format depends on the field type:
| |||||||||||||||||||||||||||||||
| note | string Optional note for the booking | ||||||||||||||||||||||||||||||
| rescheduleBookingId | string Optional. Provide an existing booking ID to reschedule that booking to the new date/time specified. When provided, the existing booking will be cancelled and a new booking will be created with the new schedule. | ||||||||||||||||||||||||||||||
object Need to provide either customer's phone or email or ID | |||||||||||||||||||||||||||||||
| assign | boolean Default: true When value is | ||||||||||||||||||||||||||||||
| reservedForMinutes | number |
object (Booking) |
{- "date": "2023-01-11",
- "time": 1800,
- "type": "l68eESvkweJ4fkmn2Bbm",
- "reservedForMinutes": 15,
- "customerIdentifier": {
- "email": "customer@example.com"
}, - "resourceFilters": {
- "category": "doctors"
}, - "note": "Temporary reservation"
}{- "id": "djeWd83ncD3989RtebfiR",
- "status": "CONFIRMED",
- "display": {
- "date": "11 يناير 2023",
- "time": "6:00 مساءً",
- "duration": "30 دقيقة",
- "dayOfWeek": "الأربعاء"
}, - "startTime": 1800,
- "startDate": "2023-01-11",
- "startDateTime": "2023-01-11T18:00:00.000Z",
- "endDateTime": "2023-01-11T18:30:00.000Z",
- "duration": 30,
- "info": { },
- "typeId": "l68eESvkweJ4fkmn2Bbm",
- "type": {
- "id": "l68eESvkweJ4fkmn2Bbm",
- "name": "نوع حجز رقم 1"
}, - "resourceId": "CEIz0piQ3BMWSS2ggcK2",
- "resource": {
- "id": "CEIz0piQ3BMWSS2ggcK2",
- "name": "عبدالعزيز"
}
}| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| bookingId | string |
object (Booking) |
{- "bookingId": "string"
}{- "result": {
- "id": "string",
- "status": "CONFIRMED",
- "queuePosition": 0,
- "estimatedWaitMinutes": 0,
- "unassignedUntil": "2019-08-24T14:15:22Z",
- "display": {
- "date": "string",
- "dayOfWeek": "string",
- "time": "string",
- "duration": "string"
}, - "startDateTime": "string",
- "endDateTime": "2019-08-24T14:15:22Z",
- "startTime": 0,
- "duration": 0,
- "typeId": "string",
- "info": {
- "data": { },
- "hasNote": true
}, - "type": {
- "name": "string",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "description": "string",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "minutes": 0,
- "leaveMinutesBefore": 0,
- "leaveMinutesAfter": 0,
- "category": "string",
- "color": "string",
- "on": true,
- "price": "string",
- "oldPrice": "string",
- "priceIncrease": "string",
- "priceIncreaseDays": 0,
- "depositAmount": "string",
- "depositPercentage": "string",
- "schedule": { },
- "timeOptions": {
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true
}, - "photos": [
- {
- "id": "string",
}
], - "autoConfirm": true,
- "paymentMethods": [
- "manual"
], - "bookFromWebsite": true,
- "createdAt": "2023-05-15T08:30:00.000Z"
}, - "resourceId": "string",
- "resource": {
- "id": "res_12345abcde",
- "name": "Dr. Sarah Johnson",
- "name_translations": {
- "ar": "string",
- "en": "string"
}, - "on": true,
- "description": "Specialist in pediatric dentistry with 10 years of experience",
- "description_translations": {
- "ar": "string",
- "en": "string"
}, - "category": "doctors",
- "photo": {
- "id": "string",
}, - "photos": [
- {
- "id": "string",
}
], - "bookFromWebsite": true,
- "providerId": "user_789xyz",
- "matchedFilters": [
- {
- "id": "string",
- "value": [
- "string"
]
}
], - "activated": true,
- "meta": { },
- "createdAt": "2023-05-15T08:30:00.000Z"
}, - "payment": {
- "invoiceNumber": "string",
- "invoiceId": "string",
- "method": "string",
- "status": "paid",
- "price": 0,
- "tax": 0,
- "isTaxInclusive": true,
- "discount": 0,
- "coupon": "string",
- "rewardPointsUsed": 0,
- "rewardPointsUsedInRealMoney": 0,
- "total": 0,
- "deposit": 0,
- "left": 0,
- "gateway": "string",
- "gatewayReference": "string"
}, - "customerId": "string",
- "customer": {
- "blocked": "string",
- "id": "string",
- "phone": "string",
- "email": "string",
- "firstName": "string",
- "lastName": "string",
- "data": [
- {
- "id": "string",
- "name": "string",
- "value": "string"
}
], - "needsUpdate": true
}, - "providerId": "string",
- "provider": { }
}
}| resourceId required | string |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
object (TimeRules) |
{- "result": {
- "depthOfDays": 0,
- "rules": [
- {
- "fromHour": 0,
- "tillHour": 0,
- "recurringWeekDays": [
- 0
]
}
], - "scheduleAfterHoursFromNow": 0
}
}| resourceId required | string |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| depthOfDays | number |
Array of objects | |
| scheduleAfterHoursFromNow | number When to start accepting new scheduling requests:
|
object (TimeRules) |
{- "depthOfDays": 0,
- "rules": [
- {
- "fromHour": 0,
- "tillHour": 0,
- "recurringWeekDays": [
- 0
]
}
], - "scheduleAfterHoursFromNow": 0
}{- "result": {
- "depthOfDays": 0,
- "rules": [
- {
- "fromHour": 0,
- "tillHour": 0,
- "recurringWeekDays": [
- 0
]
}
], - "scheduleAfterHoursFromNow": 0
}
}Management endpoints for configuring custom fields.
Custom fields allow you to collect additional information during:
Some fields can affect resource filtering or booking duration.
Retrieve the list of custom fields configured for customer registration/profile.
These fields collect information about the customer themselves (phone, email, name, etc.).
Core fields like phoneNumber, firstName, lastName, and email are always present
but can be enabled/disabled or made optional.
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (FormField) |
{- "result": [
- {
- "id": "phoneNumber",
- "name": "رقم الجوال",
- "type": "text",
- "textType": "phone",
- "optional": false,
- "enabled": true,
- "core": true,
- "editable": false,
- "phoneAuthMethods": [
- "sms"
], - "smsSender": "app",
- "allowedCountries": "all"
}, - {
- "id": "firstName",
- "name": "الاسم الاول",
- "type": "text",
- "optional": false,
- "enabled": true,
- "core": true,
- "editable": true
}, - {
- "id": "lastName",
- "name": "الاسم الاخير (العائلة)",
- "type": "text",
- "optional": false,
- "enabled": false,
- "core": true,
- "editable": true
}, - {
- "id": "email",
- "name": "البريد الالكتروني",
- "type": "text",
- "textType": "email",
- "optional": true,
- "enabled": true,
- "core": true,
- "editable": true
}
]
}Update the list of custom fields for customer registration/profile.
Important Rules:
Subscription Required: This endpoint requires the customFields feature in your subscription plan.
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| id required | string Unique identifier for the field |
| name required | string Display name of the field |
| type required | string Enum: "text" "paragraph" "number" "options" "location" "photo" "photos" "file" "files" "paragraph-readonly" The type of field input:
|
| textType | string Enum: "phone" "email" Subtype for text fields:
|
| optional | boolean Default: false Whether the field is optional (true) or required (false) |
| enabled | boolean Default: true Whether the field is currently active and shown to users |
| visibility | string Default: "providerOnly" Enum: "public" "providerOnly" Who can see this field:
|
Array of objects Available options for | |
| types | Array of strings List of booking type IDs this field applies to. If empty or undefined, applies to all types. |
| minutes | integer For number fields, additional minutes per unit |
| price | string For number fields, additional price per unit |
object Additional field configuration | |
object Conditional display rules for this field | |
| phoneAuthMethods | Array of strings Items Enum: "sms" "whatsapp" For phone fields, allowed authentication methods |
| smsSender | string Default: "app" Enum: "app" "custom" For phone fields, SMS sender configuration |
| defaultCountry | string For phone fields, default country code |
| allowedCountries | string Default: "all" Enum: "all" "specific" "forbidden" For phone fields, allowed countries setting |
| allowedCountriesList | Array of strings For phone fields with allowedCountries="specific", list of allowed country codes |
| forbiddenCountriesList | Array of strings For phone fields with allowedCountries="forbidden", list of forbidden country codes |
Array of objects (FormField) |
[- {
- "id": "phoneNumber",
- "name": "رقم الجوال",
- "type": "text",
- "textType": "phone",
- "optional": false,
- "enabled": true,
- "phoneAuthMethods": [
- "sms",
- "whatsapp"
], - "smsSender": "app",
- "allowedCountries": "all"
}, - {
- "id": "firstName",
- "name": "الاسم الاول",
- "type": "text",
- "optional": false,
- "enabled": true
}, - {
- "id": "lastName",
- "name": "الاسم الاخير",
- "type": "text",
- "optional": true,
- "enabled": true
}, - {
- "id": "email",
- "name": "البريد الالكتروني",
- "type": "text",
- "textType": "email",
- "optional": true,
- "enabled": true
}
]{- "result": [
- {
- "id": "field_123",
- "name": "Number of Guests",
- "type": "options",
- "textType": "phone",
- "optional": false,
- "enabled": true,
- "core": false,
- "editable": true,
- "visibility": "public",
- "options": [
- {
- "value": "2-guests",
- "label": "2 Guests",
- "minutes": 30,
- "price": "50.00"
}
], - "types": [
- "type_abc",
- "type_xyz"
], - "minutes": 15,
- "price": "10.00",
- "info": {
- "filterResources": true
}, - "showRules": {
- "rules": [
- {
- "sourceField": "field_456",
- "operator": "equals",
- "value": "option_a"
}
]
}, - "phoneAuthMethods": [
- "sms"
], - "smsSender": "app",
- "defaultCountry": "SA",
- "allowedCountries": "all",
- "allowedCountriesList": [
- "SA",
- "AE",
- "KW"
], - "forbiddenCountriesList": [
- "XX",
- "YY"
]
}
]
}Retrieve all custom fields configured for booking forms.
Booking custom fields serve multiple purposes:
Resource Filters (info.filterResources: true): Fields that filter which resources
are available based on customer selection (e.g., selecting a doctor specialty filters
to only show doctors with that specialty)
Time Adjusters (fields with minutes or options with minutes): Fields that affect
the booking duration based on selected values (e.g., selecting "deep cleaning" adds 30
minutes to the appointment)
Booking Info: All other fields that collect additional information about the appointment (e.g., reason for visit, special requests)
Fields can be restricted to specific booking types using the types array.
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (FormField) |
{- "result": [
- {
- "id": "specialty",
- "name": "التخصص",
- "type": "options",
- "optional": false,
- "enabled": true,
- "visibility": "public",
- "info": {
- "filterResources": true
}, - "options": [
- {
- "value": "general",
- "label": "طب عام"
}, - {
- "value": "pediatrics",
- "label": "طب أطفال"
}, - {
- "value": "dermatology",
- "label": "جلدية"
}
]
}, - {
- "id": "service_type",
- "name": "نوع الخدمة",
- "type": "options",
- "optional": false,
- "enabled": true,
- "visibility": "public",
- "types": [
- "type_123"
], - "options": [
- {
- "value": "standard",
- "label": "خدمة عادية",
- "minutes": 0,
- "price": "0"
}, - {
- "value": "premium",
- "label": "خدمة مميزة",
- "minutes": 30,
- "price": "50.00"
}
]
}, - {
- "id": "guests_count",
- "name": "عدد الضيوف",
- "type": "number",
- "optional": false,
- "enabled": true,
- "visibility": "public",
- "minutes": 15,
- "price": "25.00"
}, - {
- "id": "notes",
- "name": "ملاحظات",
- "type": "paragraph",
- "optional": true,
- "enabled": true,
- "visibility": "providerOnly"
}
]
}Update the list of custom fields for booking forms.
Field Types and Their Uses:
| Type | Purpose | Special Properties |
|---|---|---|
text |
Single line text | textType: "phone" or "email" for validation |
paragraph |
Multi-line text | For longer notes |
number |
Numeric input | minutes, price for per-unit adjustments |
options |
Single/multiple select | Each option can have minutes, price |
location |
Map/location picker | For address collection |
photo |
Single photo upload | Photo file |
photos |
Multiple photos upload | Multiple photo files |
file |
Single file upload | Single file |
files |
Multiple files upload | Multiple files |
paragraph-readonly |
Display-only text block | Not a user input, content display only |
Resource Filtering:
Set info.filterResources: true to make a field filter available resources.
The field's value will be matched against resource custom data.
Time Adjustment:
number fields: Set minutes to add time per unitoptions fields: Set minutes on each optionType Restrictions:
Use the types array to restrict a field to specific booking types.
Subscription Required: This endpoint requires the customFields feature in your subscription plan.
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| id required | string Unique identifier for the field |
| name required | string Display name of the field |
| type required | string Enum: "text" "paragraph" "number" "options" "location" "photo" "photos" "file" "files" "paragraph-readonly" The type of field input:
|
| textType | string Enum: "phone" "email" Subtype for text fields:
|
| optional | boolean Default: false Whether the field is optional (true) or required (false) |
| enabled | boolean Default: true Whether the field is currently active and shown to users |
| visibility | string Default: "providerOnly" Enum: "public" "providerOnly" Who can see this field:
|
Array of objects Available options for | |
| types | Array of strings List of booking type IDs this field applies to. If empty or undefined, applies to all types. |
| minutes | integer For number fields, additional minutes per unit |
| price | string For number fields, additional price per unit |
object Additional field configuration | |
object Conditional display rules for this field | |
| phoneAuthMethods | Array of strings Items Enum: "sms" "whatsapp" For phone fields, allowed authentication methods |
| smsSender | string Default: "app" Enum: "app" "custom" For phone fields, SMS sender configuration |
| defaultCountry | string For phone fields, default country code |
| allowedCountries | string Default: "all" Enum: "all" "specific" "forbidden" For phone fields, allowed countries setting |
| allowedCountriesList | Array of strings For phone fields with allowedCountries="specific", list of allowed country codes |
| forbiddenCountriesList | Array of strings For phone fields with allowedCountries="forbidden", list of forbidden country codes |
Array of objects (FormField) |
[- {
- "id": "specialty",
- "name": "التخصص",
- "type": "options",
- "optional": false,
- "enabled": true,
- "visibility": "public",
- "info": {
- "filterResources": true
}, - "options": [
- {
- "value": "general",
- "label": "طب عام"
}, - {
- "value": "pediatrics",
- "label": "طب أطفال"
}
]
}, - {
- "id": "service_type",
- "name": "نوع الخدمة",
- "type": "options",
- "optional": false,
- "enabled": true,
- "visibility": "public",
- "types": [
- "type_123",
- "type_456"
], - "options": [
- {
- "value": "standard",
- "label": "Standard",
- "minutes": 0,
- "price": "0"
}, - {
- "value": "premium",
- "label": "Premium",
- "minutes": 30,
- "price": "50.00"
}
]
}, - {
- "id": "guests_count",
- "name": "Number of Guests",
- "type": "number",
- "optional": false,
- "enabled": true,
- "visibility": "public",
- "minutes": 15,
- "price": "25.00"
}
]{- "result": [
- {
- "id": "field_123",
- "name": "Number of Guests",
- "type": "options",
- "textType": "phone",
- "optional": false,
- "enabled": true,
- "core": false,
- "editable": true,
- "visibility": "public",
- "options": [
- {
- "value": "2-guests",
- "label": "2 Guests",
- "minutes": 30,
- "price": "50.00"
}
], - "types": [
- "type_abc",
- "type_xyz"
], - "minutes": 15,
- "price": "10.00",
- "info": {
- "filterResources": true
}, - "showRules": {
- "rules": [
- {
- "sourceField": "field_456",
- "operator": "equals",
- "value": "option_a"
}
]
}, - "phoneAuthMethods": [
- "sms"
], - "smsSender": "app",
- "defaultCountry": "SA",
- "allowedCountries": "all",
- "allowedCountriesList": [
- "SA",
- "AE",
- "KW"
], - "forbiddenCountriesList": [
- "XX",
- "YY"
]
}
]
}| limit | integer Default: 10 Number of organizations to return per page. |
| nextPageToken | string Token for pagination to fetch the next set of results. |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (Organization) | |
object |
{- "result": [
- {
- "id": "string",
- "tenantId": "string",
- "businessTypeId": "string",
- "businessCustomConfig": { },
- "name": "string",
- "timezone": "string",
- "customerForm": { },
- "bookingForm": { },
- "addons": [
- "string"
], - "platformId": "string",
- "meta": { },
- "createdAt": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "nextPageToken": "string"
}
}| id required | string |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
object (Organization) |
{- "result": {
- "id": "string",
- "tenantId": "string",
- "businessTypeId": "string",
- "businessCustomConfig": { },
- "name": "string",
- "timezone": "string",
- "customerForm": { },
- "bookingForm": { },
- "addons": [
- "string"
], - "platformId": "string",
- "meta": { },
- "createdAt": "2019-08-24T14:15:22Z"
}
}| id required | string |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| businessTypeId | string Business type identifier. |
| businessCustomConfig | object Custom business configuration (optional). |
| name required | string Organization display name. |
| timezone required | string Timezone of the organization (IANA format, e.g. 'Asia/Riyadh'). |
object (Organization) |
{- "businessTypeId": "string",
- "businessCustomConfig": { },
- "name": "string",
- "timezone": "string"
}{- "result": {
- "id": "string",
- "tenantId": "string",
- "businessTypeId": "string",
- "businessCustomConfig": { },
- "name": "string",
- "timezone": "string",
- "customerForm": { },
- "bookingForm": { },
- "addons": [
- "string"
], - "platformId": "string",
- "meta": { },
- "createdAt": "2019-08-24T14:15:22Z"
}
}Soft deletes an organization by default (marks as deleted). The organization will be hidden from all APIs and authentication will be rejected.
Hard delete (permanent deletion with cascade) is only allowed in development environment by passing hardDelete=true query parameter.
Soft Delete (default):
isDeleted=true)Hard Delete (development only):
appConfig.environment === "development"| id required | string The ID of the organization to delete |
| hardDelete | boolean Default: false If true, performs hard delete (only in development environment) |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
object |
{- "result": {
- "success": true
}
}| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| businessTypeId | string Business type identifier. |
| businessCustomConfig | object Custom business configuration (optional). |
| name required | string Organization display name. |
| timezone required | string Timezone of the organization (IANA format, e.g. 'Asia/Riyadh'). |
object (Organization) |
{- "businessTypeId": "string",
- "businessCustomConfig": { },
- "name": "string",
- "timezone": "string"
}{- "result": {
- "id": "string",
- "tenantId": "string",
- "businessTypeId": "string",
- "businessCustomConfig": { },
- "name": "string",
- "timezone": "string",
- "customerForm": { },
- "bookingForm": { },
- "addons": [
- "string"
], - "platformId": "string",
- "meta": { },
- "createdAt": "2019-08-24T14:15:22Z"
}
}Organization-scoped API keys for managing resources within a specific organization only
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (OrganizationApiKey) |
{- "result": [
- {
- "name": "string",
- "key": "string"
}
]
}| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| name required | string Human-readable name for the API key. |
object (OrganizationApiKey) |
{- "name": "string"
}{- "result": {
- "name": "string",
- "key": "string"
}
}| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| name required | string Name of the API key to delete. |
object |
{- "name": "string"
}{- "result": {
- "message": "string"
}
}Account-wide API keys with full access to create organizations and manage every organization linked to the account (acts as account impersonation)
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (AccountApiKey) |
{- "result": [
- {
- "name": "string",
- "key": "string"
}
]
}| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| name required | string Human-readable name for the API key. |
object (AccountApiKey) |
{- "name": "string"
}{- "result": {
- "name": "string",
- "key": "string"
}
}| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| name required | string Name of the API key to delete. |
object |
{- "name": "string"
}{- "result": {
- "message": "string"
}
}| nextPageToken | string |
| limit | number |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
Array of objects (Invoice) | |
object (Pagination) Pagination information for list responses |
{- "result": [
- {
- "id": "string",
- "invoiceNumber": "string",
- "customerId": "string",
- "items": [
- {
- "name": "string",
- "description": "string",
- "qty": 0,
- "price": 0
}
], - "discount": 0,
- "subTotal": 0,
- "tax": 0,
- "tax_rate": "string",
- "currency": "string",
- "invoiceDate": "2019-08-24T14:15:22Z",
- "invoiceFile": "string",
- "createdAt": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "currentPage": 0,
- "pageSize": 0,
- "total": 0,
- "nextPageToken": "string"
}
}This webhook fires when a customer submits a new booking that requires provider approval. This event only occurs when the system is configured to require manual approval. The booking remains in a pending state until the provider takes action. Skip this state if auto-approval is enabled or payment confirms the booking immediately. The triggerID for this webhook will be "newBooking".
Information about a new booking in the system
| id | string Unique identifier for the booking |
| trigger | string Unique identifier for the webhook event type |
object Information about the customer who made the booking | |
object Information about the service provider | |
object The resource being booked (e.g., room, equipment) | |
object Information about the booking page | |
object Details about the booking type/service | |
| dateTime | string JSON string containing datetime information for the booking |
object Additional booking information | |
| data | object Additional custom data provided in the webhook request |
{- "id": "booking-123456",
- "trigger": "newBooking",
- "customer": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "data": [
- { }
]
}, - "provider": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "email": "string"
}, - "resource": {
- "id": "string",
- "name": "string"
}, - "page": {
- "id": "string",
- "name": "string"
}, - "type": {
- "id": "string",
- "name": "string",
- "minutes": 0
}, - "dateTime": "\"2023-11-15T14:30:00.000Z\"",
- "info": {
- "data": { }
}, - "data": { }
}This webhook fires when a booking becomes officially confirmed, either through provider approval, automatic confirmation (if enabled), or immediate confirmation after payment. This represents the transition of a booking to an active/confirmed state. For manually approved bookings, this follows the newBooking event. For auto-approved bookings, this may be the initial event. The triggerID for this webhook will be "newAppointment".
Information about a new Appointment in the system
| id | string Unique identifier for the booking |
| trigger | string Unique identifier for the webhook event type |
object Information about the customer who made the booking | |
object Information about the service provider | |
object The resource being booked (e.g., room, equipment) | |
object Information about the booking page | |
object Details about the booking type/service | |
| dateTime | string JSON string containing datetime information for the booking |
object Additional booking information | |
| data | object Additional custom data provided in the webhook request |
{- "id": "booking-123456",
- "trigger": "newBooking",
- "customer": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "data": [
- { }
]
}, - "provider": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "email": "string"
}, - "resource": {
- "id": "string",
- "name": "string"
}, - "page": {
- "id": "string",
- "name": "string"
}, - "type": {
- "id": "string",
- "name": "string",
- "minutes": 0
}, - "dateTime": "\"2023-11-15T14:30:00.000Z\"",
- "info": {
- "data": { }
}, - "data": { }
}This webhook fires when an existing confirmed appointment is rescheduled to a new date or time. The rescheduling is typically initiated by the service provider or admin. The payload includes the updated booking details with the new schedule. The triggerID for this webhook will be "appointmentRescheduled".
Information about a rescheduled booking in the system
| id | string Unique identifier for the booking |
| trigger | string Unique identifier for the webhook event type |
object Information about the customer who made the booking | |
object Information about the service provider | |
object The resource being booked (e.g., room, equipment) | |
object Information about the booking page | |
object Details about the booking type/service | |
| dateTime | string JSON string containing datetime information for the booking |
object Additional booking information | |
| data | object Additional custom data provided in the webhook request |
{- "id": "booking-123456",
- "trigger": "newBooking",
- "customer": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "data": [
- { }
]
}, - "provider": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "email": "string"
}, - "resource": {
- "id": "string",
- "name": "string"
}, - "page": {
- "id": "string",
- "name": "string"
}, - "type": {
- "id": "string",
- "name": "string",
- "minutes": 0
}, - "dateTime": "\"2023-11-15T14:30:00.000Z\"",
- "info": {
- "data": { }
}, - "data": { }
}This webhook fires only when a service provider rejects a pending booking request. This event can only occur after a newBooking event and before any confirmation. Note that this event will never trigger in cases where the system is configured for auto-confirmation, as booking requests are automatically confirmed without going through the pending state. The triggerID for this webhook will be "bookingRejected".
Information about a booking in the system
| id | string Unique identifier for the booking |
| trigger | string Unique identifier for the webhook event type |
object Information about the customer who made the booking | |
object Information about the service provider | |
object The resource being booked (e.g., room, equipment) | |
object Information about the booking page | |
object Details about the booking type/service | |
| dateTime | string JSON string containing datetime information for the booking |
object Additional booking information | |
| data | object Additional custom data provided in the webhook request |
{- "id": "booking-123456",
- "trigger": "newBooking",
- "customer": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "data": [
- { }
]
}, - "provider": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "email": "string"
}, - "resource": {
- "id": "string",
- "name": "string"
}, - "page": {
- "id": "string",
- "name": "string"
}, - "type": {
- "id": "string",
- "name": "string",
- "minutes": 0
}, - "dateTime": "\"2023-11-15T14:30:00.000Z\"",
- "info": {
- "data": { }
}, - "data": { }
}This webhook fires when a customer initiates a cancellation of their existing booking or appointment. It includes details about the canceled booking and the cancellation timestamp. The triggerID for this webhook will be "customerCanceled".
Information about a booking in the system
| id | string Unique identifier for the booking |
| trigger | string Unique identifier for the webhook event type |
object Information about the customer who made the booking | |
object Information about the service provider | |
object The resource being booked (e.g., room, equipment) | |
object Information about the booking page | |
object Details about the booking type/service | |
| dateTime | string JSON string containing datetime information for the booking |
object Additional booking information | |
| data | object Additional custom data provided in the webhook request |
{- "id": "booking-123456",
- "trigger": "newBooking",
- "customer": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "data": [
- { }
]
}, - "provider": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "email": "string"
}, - "resource": {
- "id": "string",
- "name": "string"
}, - "page": {
- "id": "string",
- "name": "string"
}, - "type": {
- "id": "string",
- "name": "string",
- "minutes": 0
}, - "dateTime": "\"2023-11-15T14:30:00.000Z\"",
- "info": {
- "data": { }
}, - "data": { }
}This webhook fires when a service provider needs to cancel an already confirmed appointment. This might happen due to emergencies, unexpected provider unavailability, or other service-related issues. The triggerID for this webhook will be "providerCanceled".
Information about a booking in the system
| id | string Unique identifier for the booking |
| trigger | string Unique identifier for the webhook event type |
object Information about the customer who made the booking | |
object Information about the service provider | |
object The resource being booked (e.g., room, equipment) | |
object Information about the booking page | |
object Details about the booking type/service | |
| dateTime | string JSON string containing datetime information for the booking |
object Additional booking information | |
| data | object Additional custom data provided in the webhook request |
{- "id": "booking-123456",
- "trigger": "newBooking",
- "customer": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "data": [
- { }
]
}, - "provider": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "email": "string"
}, - "resource": {
- "id": "string",
- "name": "string"
}, - "page": {
- "id": "string",
- "name": "string"
}, - "type": {
- "id": "string",
- "name": "string",
- "minutes": 0
}, - "dateTime": "\"2023-11-15T14:30:00.000Z\"",
- "info": {
- "data": { }
}, - "data": { }
}This webhook fires when a new booking is created without a specific resource assignment and is advertised to all available providers. This occurs when the booking policy allows the system to find an available provider rather than requiring the customer to select one. The triggerID for this webhook will be "bookingUnassigned".
Information about a booking in the system
| id | string Unique identifier for the booking |
| trigger | string Unique identifier for the webhook event type |
object Information about the customer who made the booking | |
object Information about the service provider | |
object The resource being booked (e.g., room, equipment) | |
object Information about the booking page | |
object Details about the booking type/service | |
| dateTime | string JSON string containing datetime information for the booking |
object Additional booking information | |
| data | object Additional custom data provided in the webhook request |
{- "id": "booking-123456",
- "trigger": "newBooking",
- "customer": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "data": [
- { }
]
}, - "provider": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "email": "string"
}, - "resource": {
- "id": "string",
- "name": "string"
}, - "page": {
- "id": "string",
- "name": "string"
}, - "type": {
- "id": "string",
- "name": "string",
- "minutes": 0
}, - "dateTime": "\"2023-11-15T14:30:00.000Z\"",
- "info": {
- "data": { }
}, - "data": { }
}This webhook fires when a resource or provider is assigned to a previously unassigned booking. This typically follows a bookingUnassigned event when a provider accepts or is manually assigned to the booking. The triggerID for this webhook will be "bookingAssigned".
Information about a booking in the system
| id | string Unique identifier for the booking |
| trigger | string Unique identifier for the webhook event type |
object Information about the customer who made the booking | |
object Information about the service provider | |
object The resource being booked (e.g., room, equipment) | |
object Information about the booking page | |
object Details about the booking type/service | |
| dateTime | string JSON string containing datetime information for the booking |
object Additional booking information | |
| data | object Additional custom data provided in the webhook request |
{- "id": "booking-123456",
- "trigger": "newBooking",
- "customer": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "data": [
- { }
]
}, - "provider": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "email": "string"
}, - "resource": {
- "id": "string",
- "name": "string"
}, - "page": {
- "id": "string",
- "name": "string"
}, - "type": {
- "id": "string",
- "name": "string",
- "minutes": 0
}, - "dateTime": "\"2023-11-15T14:30:00.000Z\"",
- "info": {
- "data": { }
}, - "data": { }
}This webhook fires when an unassigned booking times out without being accepted by any provider. The booking is automatically canceled by the system. This can only occur after a bookingUnassigned event. The triggerID for this webhook will be "bookingExpired".
Information about a booking in the system
| id | string Unique identifier for the booking |
| trigger | string Unique identifier for the webhook event type |
object Information about the customer who made the booking | |
object Information about the service provider | |
object The resource being booked (e.g., room, equipment) | |
object Information about the booking page | |
object Details about the booking type/service | |
| dateTime | string JSON string containing datetime information for the booking |
object Additional booking information | |
| data | object Additional custom data provided in the webhook request |
{- "id": "booking-123456",
- "trigger": "newBooking",
- "customer": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "data": [
- { }
]
}, - "provider": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "email": "string"
}, - "resource": {
- "id": "string",
- "name": "string"
}, - "page": {
- "id": "string",
- "name": "string"
}, - "type": {
- "id": "string",
- "name": "string",
- "minutes": 0
}, - "dateTime": "\"2023-11-15T14:30:00.000Z\"",
- "info": {
- "data": { }
}, - "data": { }
}This webhook fires when the queue position of a waiting booking is updated. This can happen when other bookings ahead in the queue are completed, canceled, or rescheduled, causing the position to shift. The triggerID for this webhook will be "queuePositionUpdated".
Information about a booking in the system
| id | string Unique identifier for the booking |
| trigger | string Unique identifier for the webhook event type |
object Information about the customer who made the booking | |
object Information about the service provider | |
object The resource being booked (e.g., room, equipment) | |
object Information about the booking page | |
object Details about the booking type/service | |
| dateTime | string JSON string containing datetime information for the booking |
object Additional booking information | |
| data | object Additional custom data provided in the webhook request |
{- "id": "booking-123456",
- "trigger": "newBooking",
- "customer": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "data": [
- { }
]
}, - "provider": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "email": "string"
}, - "resource": {
- "id": "string",
- "name": "string"
}, - "page": {
- "id": "string",
- "name": "string"
}, - "type": {
- "id": "string",
- "name": "string",
- "minutes": 0
}, - "dateTime": "\"2023-11-15T14:30:00.000Z\"",
- "info": {
- "data": { }
}, - "data": { }
}This webhook fires automatically 24 hours before the scheduled start time of an appointment. It can be used for sending day-before reminders to both customers and service providers. The triggerID for this webhook will be "oneDayBeforeAppointment".
Information about a booking in the system
| id | string Unique identifier for the booking |
| trigger | string Unique identifier for the webhook event type |
object Information about the customer who made the booking | |
object Information about the service provider | |
object The resource being booked (e.g., room, equipment) | |
object Information about the booking page | |
object Details about the booking type/service | |
| dateTime | string JSON string containing datetime information for the booking |
object Additional booking information | |
| data | object Additional custom data provided in the webhook request |
{- "id": "booking-123456",
- "trigger": "newBooking",
- "customer": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "data": [
- { }
]
}, - "provider": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "email": "string"
}, - "resource": {
- "id": "string",
- "name": "string"
}, - "page": {
- "id": "string",
- "name": "string"
}, - "type": {
- "id": "string",
- "name": "string",
- "minutes": 0
}, - "dateTime": "\"2023-11-15T14:30:00.000Z\"",
- "info": {
- "data": { }
}, - "data": { }
}This webhook fires automatically 60 minutes before the scheduled start time of an appointment. It's typically used for sending reminders to both customers and service providers. The triggerID for this webhook will be "oneHourBeforeAppointment".
Information about a booking in the system
| id | string Unique identifier for the booking |
| trigger | string Unique identifier for the webhook event type |
object Information about the customer who made the booking | |
object Information about the service provider | |
object The resource being booked (e.g., room, equipment) | |
object Information about the booking page | |
object Details about the booking type/service | |
| dateTime | string JSON string containing datetime information for the booking |
object Additional booking information | |
| data | object Additional custom data provided in the webhook request |
{- "id": "booking-123456",
- "trigger": "newBooking",
- "customer": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "data": [
- { }
]
}, - "provider": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "email": "string"
}, - "resource": {
- "id": "string",
- "name": "string"
}, - "page": {
- "id": "string",
- "name": "string"
}, - "type": {
- "id": "string",
- "name": "string",
- "minutes": 0
}, - "dateTime": "\"2023-11-15T14:30:00.000Z\"",
- "info": {
- "data": { }
}, - "data": { }
}This webhook fires automatically 10 minutes before the scheduled start time of an appointment. It can be used for last-minute reminders or preparation notifications. The triggerID for this webhook will be "tenMinutesBeforeAppointment".
Information about a booking in the system
| id | string Unique identifier for the booking |
| trigger | string Unique identifier for the webhook event type |
object Information about the customer who made the booking | |
object Information about the service provider | |
object The resource being booked (e.g., room, equipment) | |
object Information about the booking page | |
object Details about the booking type/service | |
| dateTime | string JSON string containing datetime information for the booking |
object Additional booking information | |
| data | object Additional custom data provided in the webhook request |
{- "id": "booking-123456",
- "trigger": "newBooking",
- "customer": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "data": [
- { }
]
}, - "provider": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "email": "string"
}, - "resource": {
- "id": "string",
- "name": "string"
}, - "page": {
- "id": "string",
- "name": "string"
}, - "type": {
- "id": "string",
- "name": "string",
- "minutes": 0
}, - "dateTime": "\"2023-11-15T14:30:00.000Z\"",
- "info": {
- "data": { }
}, - "data": { }
}This webhook fires exactly when an appointment is scheduled to begin. It can be used to notify both parties that the service should now be starting, mark the appointment as in-progress, or initiate any start-of-service workflows. The triggerID for this webhook will be "beforeAppointment".
Information about a booking in the system
| id | string Unique identifier for the booking |
| trigger | string Unique identifier for the webhook event type |
object Information about the customer who made the booking | |
object Information about the service provider | |
object The resource being booked (e.g., room, equipment) | |
object Information about the booking page | |
object Details about the booking type/service | |
| dateTime | string JSON string containing datetime information for the booking |
object Additional booking information | |
| data | object Additional custom data provided in the webhook request |
{- "id": "booking-123456",
- "trigger": "newBooking",
- "customer": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "data": [
- { }
]
}, - "provider": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "email": "string"
}, - "resource": {
- "id": "string",
- "name": "string"
}, - "page": {
- "id": "string",
- "name": "string"
}, - "type": {
- "id": "string",
- "name": "string",
- "minutes": 0
}, - "dateTime": "\"2023-11-15T14:30:00.000Z\"",
- "info": {
- "data": { }
}, - "data": { }
}This webhook fires after an appointment's scheduled end time has passed. It can be used for sending feedback requests, thank you messages, or initiating post-service follow-ups. The triggerID for this webhook will be "afterAppointment".
Information about a booking in the system
| id | string Unique identifier for the booking |
| trigger | string Unique identifier for the webhook event type |
object Information about the customer who made the booking | |
object Information about the service provider | |
object The resource being booked (e.g., room, equipment) | |
object Information about the booking page | |
object Details about the booking type/service | |
| dateTime | string JSON string containing datetime information for the booking |
object Additional booking information | |
| data | object Additional custom data provided in the webhook request |
{- "id": "booking-123456",
- "trigger": "newBooking",
- "customer": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "data": [
- { }
]
}, - "provider": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "email": "string"
}, - "resource": {
- "id": "string",
- "name": "string"
}, - "page": {
- "id": "string",
- "name": "string"
}, - "type": {
- "id": "string",
- "name": "string",
- "minutes": 0
}, - "dateTime": "\"2023-11-15T14:30:00.000Z\"",
- "info": {
- "data": { }
}, - "data": { }
}This webhook fires automatically 24 hours after the scheduled end time of an appointment. It can be used for follow-up messages, feedback requests, or post-service workflows. The triggerID for this webhook will be "oneDayAfterAppointment".
Information about a booking in the system
| id | string Unique identifier for the booking |
| trigger | string Unique identifier for the webhook event type |
object Information about the customer who made the booking | |
object Information about the service provider | |
object The resource being booked (e.g., room, equipment) | |
object Information about the booking page | |
object Details about the booking type/service | |
| dateTime | string JSON string containing datetime information for the booking |
object Additional booking information | |
| data | object Additional custom data provided in the webhook request |
{- "id": "booking-123456",
- "trigger": "newBooking",
- "customer": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "data": [
- { }
]
}, - "provider": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "email": "string"
}, - "resource": {
- "id": "string",
- "name": "string"
}, - "page": {
- "id": "string",
- "name": "string"
}, - "type": {
- "id": "string",
- "name": "string",
- "minutes": 0
}, - "dateTime": "\"2023-11-15T14:30:00.000Z\"",
- "info": {
- "data": { }
}, - "data": { }
}Creates or updates a webhook configuration for the current page
| trigger required | string The event trigger ID for the webhook |
| url required | string The URL to which webhook data will be sent |
| reference | string Optional reference identifier for this webhook |
| result | string |
{- "trigger": "newBooking",
- "reference": "my-webhook-id"
}{- "result": "success"
}Removes a webhook configuration from the current page
| trigger required | string The event trigger ID for the webhook |
| url required | string The webhook URL to delete |
| reference | string Reference identifier for the webhook to delete |
| result | string |
{- "trigger": "newBooking",
- "reference": "my-webhook-id"
}{- "result": "success"
}Creates a sample webhook payload for testing based on the requested trigger
| trigger required | string The event trigger ID to generate a sample for |
| id | string Unique identifier for the booking |
| trigger | string Unique identifier for the webhook event type |
object Information about the customer who made the booking | |
object Information about the service provider | |
object The resource being booked (e.g., room, equipment) | |
object Information about the booking page | |
object Details about the booking type/service | |
| dateTime | string JSON string containing datetime information for the booking |
object Additional booking information | |
| data | object Additional custom data provided in the webhook request |
{- "trigger": "newBooking"
}[- {
- "id": "booking-123456",
- "trigger": "newBooking",
- "customer": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "data": [
- { }
]
}, - "provider": {
- "id": "string",
- "name": "string",
- "phone": "string",
- "email": "string"
}, - "resource": {
- "id": "string",
- "name": "string"
}, - "page": {
- "id": "string",
- "name": "string"
}, - "type": {
- "id": "string",
- "name": "string",
- "minutes": 0
}, - "dateTime": "\"2023-11-15T14:30:00.000Z\"",
- "info": {
- "data": { }
}, - "data": { }
}
]| version | string Default: "default" Website version (default or draft) |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
object (Website) |
{- "result": {
- "id": "string",
- "orgId": "string",
- "tenantId": "string",
- "businessTypeId": "string",
- "businessCustomConfig": { },
- "name": "string",
- "timezone": "string",
- "addons": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "on": true,
- "logo": {
- "id": "string",
}, - "logoFavIcon": {
- "id": "string",
}, - "displayName": "string",
- "description": "string",
- "terms": "string",
- "bookingSuccessMessage": "string",
- "shortCode": "string",
- "bookingPolicy": "specify",
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true,
- "selectTypeFirst": true,
- "selectResourceCategory": true,
- "hideResource": true,
- "theme": {
- "data": { }
}, - "callSupport": "string",
- "whatsapp": "string",
- "emailSupport": "user@example.com",
- "twitter": "string",
- "instagram": "string",
- "facebook": "string",
- "tiktok": "string",
- "snapchat": "string",
- "map": { },
- "maroof": "string",
- "saudiBusinessCenter": "string",
- "customDomain": "string",
- "googleAnalyticsPropertyId": "string",
- "facebookPixelId": "string",
- "snapPixelId": "string",
- "tiktokPixelId": "string"
}
}| version | string Default: "default" Website version (default or draft) |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
| name | string Business name |
| timezone | string Website timezone |
| on | boolean Whether the website is enabled |
object (Photo) Business logo image | |
object (Photo) Favicon image for the website | |
| displayName | string Display name for the business |
| description | string Business description |
| terms | string Terms and conditions |
| bookingSuccessMessage | string Message displayed after successful booking |
| bookingPolicy | string Enum: "specify" "leastFirst" "specifyAndLeastFirst" Booking policy configuration. "specify" allows users to choose booking resource first, "leastFirst" automatically selects the least busy type. "specifyAndLeastFirst" allows both options. |
| bookingTimePolicy | string Enum: "displayAll" "suggest" "first" Time slot display policy |
| suggestedTimes | integer Number of suggested time slots |
| bookingTimeSplitting | string Enum: "optimize" "oclock" "oclockAndHalf" "20" "15" "10" "fixed" Time slot interval configuration |
| fixedTimes | Array of integers Custom fixed time slots (in minutes from midnight) |
| bookingTimeSplittingOptimize | boolean Whether to optimize time slot intervals |
| bookingTimeShowMidnight | boolean Whether to show midnight slots |
| selectTypeFirst | boolean Whether to select booking type before resource |
| selectResourceCategory | boolean Whether to show resource categories |
| hideResource | boolean Whether to hide resource selection |
object | |
| callSupport | string Support phone number |
string WhatsApp contact number | |
| emailSupport | string <email> Support email address |
string Twitter handle | |
string Instagram handle | |
string Facebook page name | |
| tiktok | string TikTok handle |
| snapchat | string Snapchat username |
| map | object Map location configuration |
| maroof | string Maroof registration number |
| saudiBusinessCenter | string Saudi business center certification number |
object (Website) |
{- "name": "string",
- "timezone": "string",
- "on": true,
- "logo": {
- "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
}, - "logoFavIcon": {
- "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
}, - "displayName": "string",
- "description": "string",
- "terms": "string",
- "bookingSuccessMessage": "string",
- "bookingPolicy": "specify",
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true,
- "selectTypeFirst": true,
- "selectResourceCategory": true,
- "hideResource": true,
- "theme": {
- "data": { }
}, - "callSupport": "string",
- "whatsapp": "string",
- "emailSupport": "user@example.com",
- "twitter": "string",
- "instagram": "string",
- "facebook": "string",
- "tiktok": "string",
- "snapchat": "string",
- "map": { },
- "maroof": "string",
- "saudiBusinessCenter": "string"
}{- "result": {
- "id": "string",
- "orgId": "string",
- "tenantId": "string",
- "businessTypeId": "string",
- "businessCustomConfig": { },
- "name": "string",
- "timezone": "string",
- "addons": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "on": true,
- "logo": {
- "id": "string",
}, - "logoFavIcon": {
- "id": "string",
}, - "displayName": "string",
- "description": "string",
- "terms": "string",
- "bookingSuccessMessage": "string",
- "shortCode": "string",
- "bookingPolicy": "specify",
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true,
- "selectTypeFirst": true,
- "selectResourceCategory": true,
- "hideResource": true,
- "theme": {
- "data": { }
}, - "callSupport": "string",
- "whatsapp": "string",
- "emailSupport": "user@example.com",
- "twitter": "string",
- "instagram": "string",
- "facebook": "string",
- "tiktok": "string",
- "snapchat": "string",
- "map": { },
- "maroof": "string",
- "saudiBusinessCenter": "string",
- "customDomain": "string",
- "googleAnalyticsPropertyId": "string",
- "facebookPixelId": "string",
- "snapPixelId": "string",
- "tiktokPixelId": "string"
}
}| url required | string <uri> URL of the website to look up |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
object (Website) |
{- "result": {
- "id": "string",
- "orgId": "string",
- "tenantId": "string",
- "businessTypeId": "string",
- "businessCustomConfig": { },
- "name": "string",
- "timezone": "string",
- "addons": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "on": true,
- "logo": {
- "id": "string",
}, - "logoFavIcon": {
- "id": "string",
}, - "displayName": "string",
- "description": "string",
- "terms": "string",
- "bookingSuccessMessage": "string",
- "shortCode": "string",
- "bookingPolicy": "specify",
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true,
- "selectTypeFirst": true,
- "selectResourceCategory": true,
- "hideResource": true,
- "theme": {
- "data": { }
}, - "callSupport": "string",
- "whatsapp": "string",
- "emailSupport": "user@example.com",
- "twitter": "string",
- "instagram": "string",
- "facebook": "string",
- "tiktok": "string",
- "snapchat": "string",
- "map": { },
- "maroof": "string",
- "saudiBusinessCenter": "string",
- "customDomain": "string",
- "googleAnalyticsPropertyId": "string",
- "facebookPixelId": "string",
- "snapPixelId": "string",
- "tiktokPixelId": "string"
}
}Get details for the website associated with the app ID
| version | string Default: "default" Website version (default or draft) |
| X-APP-ID required | string App ID |
| lang | string Display fields language (en,ar) |
object (Website) |
{- "result": {
- "id": "string",
- "orgId": "string",
- "tenantId": "string",
- "businessTypeId": "string",
- "businessCustomConfig": { },
- "name": "string",
- "timezone": "string",
- "addons": { },
- "createdAt": "2019-08-24T14:15:22Z",
- "on": true,
- "logo": {
- "id": "string",
}, - "logoFavIcon": {
- "id": "string",
}, - "displayName": "string",
- "description": "string",
- "terms": "string",
- "bookingSuccessMessage": "string",
- "shortCode": "string",
- "bookingPolicy": "specify",
- "bookingTimePolicy": "displayAll",
- "suggestedTimes": 0,
- "bookingTimeSplitting": "optimize",
- "fixedTimes": [
- 0
], - "bookingTimeSplittingOptimize": true,
- "bookingTimeShowMidnight": true,
- "selectTypeFirst": true,
- "selectResourceCategory": true,
- "hideResource": true,
- "theme": {
- "data": { }
}, - "callSupport": "string",
- "whatsapp": "string",
- "emailSupport": "user@example.com",
- "twitter": "string",
- "instagram": "string",
- "facebook": "string",
- "tiktok": "string",
- "snapchat": "string",
- "map": { },
- "maroof": "string",
- "saudiBusinessCenter": "string",
- "customDomain": "string",
- "googleAnalyticsPropertyId": "string",
- "facebookPixelId": "string",
- "snapPixelId": "string",
- "tiktokPixelId": "string"
}
}