API endpoints for managing Microsoft Bookings integration
/api/bookings
Retrieve a list of all booking businesses.
{
"status": "success",
"data": [
{
"id": "string",
"displayName": "string",
"businessType": "string",
"phone": "string",
"email": "string",
"webSiteUrl": "string",
"defaultCurrencyIso": "string",
"address": {
"street": "string",
"city": "string",
"state": "string",
"postalCode": "string",
"countryOrRegion": "string"
}
}
]
}
/api/bookings/{business_id}/appointments
Retrieve all appointments for a specific business.
Parameter | Type | Description |
---|---|---|
include_customer_data |
boolean | Include customer information in the response (default: false) |
{
"status": "success",
"data": [
{
"id": "string",
"startDateTime": {
"dateTime": "string",
"timeZone": "string"
},
"endDateTime": {
"dateTime": "string",
"timeZone": "string"
},
"serviceId": "string",
"serviceName": "string",
"duration": "string",
"price": "number",
"staffMemberIds": ["string"],
"customerName": "string", // Only if include_customer_data=true
"customerEmail": "string", // Only if include_customer_data=true
"customerPhone": "string" // Only if include_customer_data=true
}
]
}
/api/bookings/{business_id}/appointments
Create a new appointment for a specific business.
{
"customerName": "string",
"customerEmail": "string", // Optional
"customerPhone": "string", // Optional
"startDateTime": "string", // ISO 8601 format
"serviceId": "string",
"staffMemberIds": ["string"],
"smsNotificationsEnabled": boolean, // Optional, defaults to false
"reminders": [ // Optional, defaults to standard reminder set if not provided
{
"message": "string",
"offset": "string", // Duration format e.g. P1D (1 day), P2D (2 days), PT2H (2 hours)
"recipients": "string" // One of: Customer, Staff, AllAttendees. Defaults to Customer
}
]
}
// Note: If reminders are not provided, the following default set is used:
// - 2 hours before appointment
// - 1 day before appointment
// - 2 days before appointment
// - 5 days before appointment
{
"status": "success",
"data": {
"id": "string",
"startDateTime": {
"dateTime": "string", // ISO 8601 format in UTC
"timeZone": "UTC"
},
"endDateTime": {
"dateTime": "string", // ISO 8601 format in UTC
"timeZone": "UTC"
},
"serviceId": "string",
"serviceName": "string",
"staffMemberIds": ["string"],
"smsNotificationsEnabled": boolean,
"customerName": "string",
"customerEmailAddress": "string",
"customerPhone": "string",
"reminders": [{
"message": "string",
"offset": "string", // Duration format e.g. P1D, PT2H
"recipients": "customer"
}]
}
}
/api/bookings/{business_id}/services
Retrieve all services offered by a specific business.
{
"status": "success",
"data": [
{
"id": "string",
"displayName": "string",
"description": "string",
"duration": "string",
"price": "number",
"staffMemberIds": ["string"]
}
]
}
/api/bookings/{business_id}/staff
Retrieve all staff members for a specific business.
{
"status": "success",
"data": [
{
"id": "string",
"displayName": "string",
"emailAddress": "string",
"role": "string",
"workingHours": [
{
"day": "string",
"timeSlots": [
{
"startTime": "string",
"endTime": "string"
}
]
}
]
}
]
}
/qr/generate
Generate a QR code with optional logo embedding and advanced styling options.
Name | Type | Required | Description |
---|---|---|---|
data | string | Yes | Text or URL to encode in the QR code |
logo | file | No | Image file to use as logo |
effect | string | No | Visual effect to apply (solid, gradient, rainbow, metallic, neon, pattern) |
colors | string[] | No | Colors in hex format (#RRGGBB). For gradient, specify 2+ colors |
gradient_direction | string | No | For gradient effect (vertical, horizontal, diagonal, radial, spiral, diamond) |
pattern_type | string | No | For pattern effect (checkerboard, dots, stripes, waves, triangles, hexagons) |
Effect | Description | Required Parameters |
---|---|---|
solid | Single color QR code | colors (one color) |
gradient | Smooth transition between colors | colors (2+ colors), gradient_direction |
rainbow | Colorful rainbow pattern | None |
metallic | Shiny metallic effect | colors (one color) |
neon | Bright neon glow effect | colors (one color) |
pattern | Geometric patterns | colors (1+ colors), pattern_type |
# Rainbow QR code
curl -X POST -F "data=test" -F "effect=rainbow" \
https://services.thesmileportal.com/api/qr/generate -o qr.png
# Blue-green diagonal gradient
curl -X POST -F "data=test" -F "effect=gradient" \
-F "colors=#0000FF,#00FF00" -F "gradient_direction=diagonal" \
https://services.thesmileportal.com/api/qr/generate -o qr.png
# Gold metallic effect
curl -X POST -F "data=test" -F "effect=metallic" \
-F "colors=#FFD700" https://services.thesmileportal.com/api/qr/generate -o qr.png
Content-Type: image/png
Binary image data of the generated QR code
Code | Description |
---|---|
200 | QR code successfully generated |
400 | Invalid request data |
500 | Server error |
/api/messages
Rate Limited
Creates a new message in the system.
{
"name": "string",
"phone": "string",
"email": "string",
"message_details": "string"
}
Name | Type | Required | Description |
---|---|---|---|
name | string | Yes | Full name of the sender |
phone | string | Yes | Contact phone number |
string | Yes | Valid email address | |
message_details | string | Yes | Content of the message |
Code | Description |
---|---|
201 | Message successfully created and notification sent |
207 | Partial success (e.g., email sent but database storage failed) |
400 | Invalid request data |
429 | Rate limit exceeded |
500 | Server error |
{
"error": false,
"partial_success": false,
"message": "Message successfully processed",
"steps": [
{
"step": "email_notification",
"success": true,
"error": null
},
{
"step": "database_storage",
"success": true,
"error": null
}
]
}
{
"error": true,
"partial_success": true,
"message": "Message partially processed",
"steps": [
{
"step": "email_notification",
"success": true,
"error": null
},
{
"step": "database_storage",
"success": false,
"error": "Database connection failed"
}
]
}
{
"status": "error",
"message": "Validation errors",
"errors": {
"field_name": ["error message"]
}
}
{
"status": "error",
"message": "Failed to process message",
"error": "error message"
}
{
"error": true,
"message": "Rate limit exceeded",
"status": "error"
}
{
"error": true,
"message": "Message processing failed",
"steps": [
{
"step": "email_notification",
"success": false,
"error": "error message"
},
{
"step": "database_storage",
"success": false,
"error": "error message"
}
]
}
}
curl -X POST https://services.thesmileportal.com/api/messages \
-H "Content-Type: application/json" \
-d '{
"name": "John Doe",
"phone": "+1-555-123-4567",
"email": "[email protected]",
"message_details": "Hello, I would like to schedule an appointment."
}'
Endpoints for accessing legal documents across all Smile Portal applications
/terms
Access the Terms of Service document.
Returns an HTML page containing the full terms of service for Starks & Associates, PC DBA The Smile Portal. This endpoint should be used across all applications, landing pages, and portals to ensure consistent terms of service delivery.
Returns an HTML document with:
/privacy
Access the Privacy Policy document.
Returns an HTML page containing the full privacy policy. This endpoint should be used across all applications, landing pages, and portals to ensure consistent privacy policy delivery.
Returns an HTML document detailing: