/api/v1/tenantGet tenant metadata
TenantMetadata
curl -X GET \
"https://api.lumbu.pt/api/v1/tenant" \
-H "Authorization: Bearer {YOUR_API_KEY}"/api/v1/onboarding/checkCheck tenant setup completeness
Returns a structured readiness check for the tenant's salon setup. Validates services, staff, hours, locations, payments, branding, locale, and notification templates.
SetupCheckResult
curl -X GET \
"https://api.lumbu.pt/api/v1/onboarding/check" \
-H "Authorization: Bearer {YOUR_API_KEY}"/api/v1/booking/slotsRetrieve available booking slots
SlotsRequest
curl -X POST \
"https://api.lumbu.pt/api/v1/booking/slots" \
-H "Authorization: Bearer {YOUR_API_KEY}" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/booking/bookCreate a new booking
BookRequest
BookResponse
curl -X POST \
"https://api.lumbu.pt/api/v1/booking/book" \
-H "Authorization: Bearer {YOUR_API_KEY}" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/booking/cancelCancel an existing booking
CancelRequest
OkResponse
curl -X POST \
"https://api.lumbu.pt/api/v1/booking/cancel" \
-H "Authorization: Bearer {YOUR_API_KEY}" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/booking/rescheduleReschedule a booking to a new time
RescheduleRequest
RescheduleResponse
curl -X POST \
"https://api.lumbu.pt/api/v1/booking/reschedule" \
-H "Authorization: Bearer {YOUR_API_KEY}" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/servicesList services
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| string | no | — | ||
| string | no | — | ||
| active | query | string | no | Filter by active status[true, false] |
| booking_enabled | query | string | no | Filter by booking-enabled flag[true, false] |
| updated_since | query | string (date-time) | no | Only return services updated on or after this timestamp |
PaginatedServiceList
curl -X GET \
"https://api.lumbu.pt/api/v1/services" \
-H "Authorization: Bearer {YOUR_API_KEY}"/api/v1/service-categoriesList service categories with nested services
/api/v1/checkoutCreate a Stripe checkout session
CheckoutRequest
CheckoutResponse
curl -X POST \
"https://api.lumbu.pt/api/v1/checkout" \
-H "Authorization: Bearer {YOUR_API_KEY}" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/customer/appointmentsGet appointment detail and customer history
object
CustomerAppointmentsResponse
curl -X POST \
"https://api.lumbu.pt/api/v1/customer/appointments" \
-H "Authorization: Bearer {YOUR_API_KEY}" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/staffList staff members
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| string | no | — | ||
| string | no | — | ||
| active | query | string | no | Filter by active status[true, false] |
| location_id | query | string (uuid) | no | Filter by location (team) ID |
| updated_since | query | string (date-time) | no | Only return staff updated on or after this timestamp |
PaginatedStaffList
curl -X GET \
"https://api.lumbu.pt/api/v1/staff" \
-H "Authorization: Bearer {YOUR_API_KEY}"/api/v1/team-membersList team member assignments
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| string | no | — | ||
| string | no | — | ||
| location_id | query | string (uuid) | no | Filter by location (team) ID |
| staff_id | query | string (uuid) | no | Filter by staff ID |
| joined_since | query | string (date-time) | no | Only return memberships created on or after this timestamp |
PaginatedTeamMemberList
curl -X GET \
"https://api.lumbu.pt/api/v1/team-members" \
-H "Authorization: Bearer {YOUR_API_KEY}"/api/v1/staff-availabilityGet computed staff availability
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| from | query | string | yes | Start date (YYYY-MM-DD) |
| staff_id | query | string (uuid) | no | Filter by staff ID |
| days | query | integer | no | Number of days to look ahead |
curl -X GET \
"https://api.lumbu.pt/api/v1/staff-availability" \
-H "Authorization: Bearer {YOUR_API_KEY}"/api/v1/staff-hoursList staff recurring weekly hours
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| string | no | — | ||
| string | no | — | ||
| staff_id | query | string (uuid) | no | Filter by staff ID |
| location_id | query | string (uuid) | no | Filter by location (team) ID |
PaginatedStaffHoursList
curl -X GET \
"https://api.lumbu.pt/api/v1/staff-hours" \
-H "Authorization: Bearer {YOUR_API_KEY}"/api/v1/staff-time-offList staff time-off periods
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| string | no | — | ||
| string | no | — | ||
| staff_id | query | string (uuid) | no | Filter by staff ID |
| location_id | query | string (uuid) | no | Filter by location (team) ID |
| start_at_gte | query | string (date-time) | no | Filter time-off starting on or after this timestamp |
| start_at_lte | query | string (date-time) | no | Filter time-off starting on or before this timestamp |
PaginatedStaffTimeOffList
curl -X GET \
"https://api.lumbu.pt/api/v1/staff-time-off" \
-H "Authorization: Bearer {YOUR_API_KEY}"/api/v1/auth/signinSign in with email and password
SignInRequest
SignInResponse
curl -X POST \
"https://api.lumbu.pt/api/v1/auth/signin" \
-H "Authorization: Bearer {YOUR_API_KEY}" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/auth/signupCreate a new customer account
SignUpRequest
SignUpResponse
curl -X POST \
"https://api.lumbu.pt/api/v1/auth/signup" \
-H "Authorization: Bearer {YOUR_API_KEY}" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/auth/magic-linkSend a passwordless magic link email
MagicLinkRequest
OkResponse
curl -X POST \
"https://api.lumbu.pt/api/v1/auth/magic-link" \
-H "Authorization: Bearer {YOUR_API_KEY}" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/auth/refreshRefresh an authentication token
RefreshRequest
RefreshResponse
curl -X POST \
"https://api.lumbu.pt/api/v1/auth/refresh" \
-H "Authorization: Bearer {YOUR_API_KEY}" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/productsList products
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| string | no | — | ||
| string | no | — | ||
| active | query | string | no | Filter by active_for_sale status (defaults to true)[true, false] |
| category_id | query | string (uuid) | no | Filter by product category |
| updated_since | query | string (date-time) | no | Only return products updated on or after this timestamp |
PaginatedProductList
curl -X GET \
"https://api.lumbu.pt/api/v1/products" \
-H "Authorization: Bearer {YOUR_API_KEY}"/api/v1/products/{id}Get product detail by ID or slug
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Product UUID or slug |
ProductDetail
curl -X GET \
"https://api.lumbu.pt/api/v1/products/{id}" \
-H "Authorization: Bearer {YOUR_API_KEY}"/api/v1/product-categoriesList product categories with product counts
/api/v1/appointmentsList appointments
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| string | no | — | ||
| string | no | — | ||
| start_at_gte | query | string (date-time) | no | Filter appointments starting on or after this timestamp |
| start_at_lte | query | string (date-time) | no | Filter appointments starting on or before this timestamp |
| status | query | string | no | Filter by appointment status[requested, confirmed, cancelled, completed, no_show] |
| location_id | query | string (uuid) | no | Filter by location (team) ID |
| staff_id | query | string (uuid) | no | Filter by staff ID |
| service_id | query | string (uuid) | no | Filter by service ID |
| updated_since | query | string (date-time) | no | Only return appointments updated on or after this timestamp |
PaginatedAppointmentList
curl -X GET \
"https://api.lumbu.pt/api/v1/appointments" \
-H "Authorization: Bearer {YOUR_API_KEY}"/api/v1/appointment-feedbackList appointment feedback entries
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| string | no | — | ||
| string | no | — | ||
| appointment_id | query | string (uuid) | no | Filter by appointment ID |
| updated_since | query | string (date-time) | no | Only return feedback updated on or after this timestamp |
PaginatedFeedbackList
curl -X GET \
"https://api.lumbu.pt/api/v1/appointment-feedback" \
-H "Authorization: Bearer {YOUR_API_KEY}"/api/v1/locationsList locations
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| string | no | — | ||
| string | no | — | ||
| is_active | query | string | no | Filter by active status[true, false] |
| updated_since | query | string (date-time) | no | Only return locations updated on or after this timestamp |
PaginatedLocationList
curl -X GET \
"https://api.lumbu.pt/api/v1/locations" \
-H "Authorization: Bearer {YOUR_API_KEY}"/api/v1/waitlistList waitlist entries
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| string | no | — | ||
| string | no | — | ||
| location_id | query | string (uuid) | no | Filter by location (team) ID |
| service_id | query | string (uuid) | no | Filter by service ID |
| staff_id | query | string (uuid) | no | Filter by staff ID |
| created_at_gte | query | string (date-time) | no | Filter entries created on or after this timestamp |
| created_at_lte | query | string (date-time) | no | Filter entries created on or before this timestamp |
PaginatedWaitlistList
curl -X GET \
"https://api.lumbu.pt/api/v1/waitlist" \
-H "Authorization: Bearer {YOUR_API_KEY}"/api/v1/gift-cards/validateValidate a gift card code
object
GiftCardValidationResponse
curl -X POST \
"https://api.lumbu.pt/api/v1/gift-cards/validate" \
-H "Authorization: Bearer {YOUR_API_KEY}" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/referral/validateValidate a referral code format
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| code | query | string | yes | Referral code to validate (alphanumeric, 3-50 chars, hyphens/underscores allowed) |
ReferralValidationResponse
curl -X GET \
"https://api.lumbu.pt/api/v1/referral/validate" \
-H "Authorization: Bearer {YOUR_API_KEY}"/api/v1/orders/lookupLook up an order by session ID or access token
OrderLookupRequest
Order
curl -X POST \
"https://api.lumbu.pt/api/v1/orders/lookup" \
-H "Authorization: Bearer {YOUR_API_KEY}" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/webhooksList webhook subscriptions
/api/v1/webhooksRegister a new webhook subscription
CreateWebhookRequest
WebhookSubscriptionCreated
curl -X POST \
"https://api.lumbu.pt/api/v1/webhooks" \
-H "Authorization: Bearer {YOUR_API_KEY}" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/webhooks/{id}Delete a webhook subscription
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string (uuid) | yes | Webhook subscription ID |
OkResponse
curl -X DELETE \
"https://api.lumbu.pt/api/v1/webhooks/{id}" \
-H "Authorization: Bearer {YOUR_API_KEY}"