> For the complete documentation index, see [llms.txt](https://help.realviewhub.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.realviewhub.com/realview-hub-api.md).

# RealView Hub API

## GET /analytics

> get-analytics

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/analytics":{"get":{"operationId":"get_analytics","summary":"get-analytics","parameters":[{"name":"days","in":"query","required":false,"description":"Last N days (1-366)","schema":{"type":"integer"}},{"name":"from","in":"query","required":false,"description":"Range start","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"description":"Range end","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## POST /auth/login

> post-auth-login

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/auth/login":{"post":{"operationId":"post_auth_login","summary":"post-auth-login","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email","password"],"properties":{"email":{"type":"string","description":"User email address"},"password":{"type":"string","description":"User password"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /abandoned-carts

> get-abandoned-carts

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/abandoned-carts":{"get":{"operationId":"get_abandoned_carts","summary":"get-abandoned-carts","parameters":[{"name":"page","in":"query","required":false,"description":"Page number (default 1)","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Items per page (default 20, max 100)","schema":{"type":"integer"}},{"name":"status","in":"query","required":false,"description":"Filter by status: active, converted, dismissed. Omit for all statuses.","schema":{"type":"string"}},{"name":"source","in":"query","required":false,"description":"Filter by source: public, customer_portal, tenant","schema":{"type":"string"}},{"name":"customer_id","in":"query","required":false,"description":"Filter by customer","schema":{"type":"string","format":"uuid"}},{"name":"is_abandoned","in":"query","required":false,"description":"Filter by inactivity threshold (active carts only)","schema":{"type":"boolean"}},{"name":"sort","in":"query","required":false,"description":"Sort column: last_activity_at, created_at, updated_at, estimated_total","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sort order: asc or desc","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /batch-invoices

> get-batch-invoices

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/batch-invoices":{"get":{"operationId":"get_batch_invoices","summary":"get-batch-invoices","parameters":[{"name":"page","in":"query","required":false,"description":"Page number","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Items per page","schema":{"type":"integer"}},{"name":"status","in":"query","required":false,"description":"Filter by status","schema":{"type":"string"}},{"name":"customer_id","in":"query","required":false,"description":"Filter by customer","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /batch-invoices/{id}

> get-batch-invoice

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/batch-invoices/{id}":{"get":{"operationId":"get_batch_invoice","summary":"get-batch-invoice","parameters":[{"name":"id","in":"path","required":true,"description":"Batch invoice ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /booking-status

> get-booking-status

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/booking-status":{"get":{"operationId":"get_booking_status","summary":"get-booking-status","parameters":[{"name":"booking_id","in":"query","required":false,"description":"Filter to single booking","schema":{"type":"string","format":"uuid"}},{"name":"status","in":"query","required":false,"description":"Filter by status: draft, scheduled, pending, rescheduled, tbd, completed, cancelled","schema":{"type":"string"}},{"name":"customer_id","in":"query","required":false,"description":"Filter by customer","schema":{"type":"string","format":"uuid"}},{"name":"from_date","in":"query","required":false,"description":"created_at >= from_date","schema":{"type":"string","format":"date"}},{"name":"to_date","in":"query","required":false,"description":"created_at <= to_date","schema":{"type":"string","format":"date"}},{"name":"delivery_status","in":"query","required":false,"description":"Filter by delivery_status: ready, pending","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /bookings

> get-bookings

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/bookings":{"get":{"operationId":"get_bookings","summary":"get-bookings","parameters":[{"name":"page","in":"query","required":false,"description":"Page number","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Items per page","schema":{"type":"integer"}},{"name":"status","in":"query","required":false,"description":"Filter by status","schema":{"type":"string"}},{"name":"customer_id","in":"query","required":false,"description":"Filter by customer","schema":{"type":"string","format":"uuid"}},{"name":"staff_id","in":"query","required":false,"description":"Filter by staff","schema":{"type":"string","format":"uuid"}},{"name":"start_date","in":"query","required":false,"description":"Start date","schema":{"type":"string","format":"date"}},{"name":"end_date","in":"query","required":false,"description":"End date","schema":{"type":"string","format":"date"}},{"name":"sort","in":"query","required":false,"description":"Sort field","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sort order","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /bookings/{id}

> get-booking-by-id

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/bookings/{id}":{"get":{"operationId":"get_booking_by_id","summary":"get-booking-by-id","parameters":[{"name":"id","in":"path","required":true,"description":"Booking ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /bookings/{id}/assignments

> get-booking-assignments

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/bookings/{id}/assignments":{"get":{"operationId":"get_booking_assignments","summary":"get-booking-assignments","parameters":[{"name":"id","in":"path","required":true,"description":"Booking ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /bookings/{id}/balance-lock

> get-booking-balance-lock

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/bookings/{id}/balance-lock":{"get":{"operationId":"get_booking_balance_lock","summary":"get-booking-balance-lock","parameters":[{"name":"id","in":"path","required":true,"description":"Booking ID (full UUID or 8-char prefix when unambiguous)","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /bookings/{id}/landing-pages

> get-booking-landing-pages

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/bookings/{id}/landing-pages":{"get":{"operationId":"get_booking_landing_pages","summary":"get-booking-landing-pages","parameters":[{"name":"id","in":"path","required":true,"description":"Booking ID (full UUID or 8-char prefix when unambiguous)","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## POST /bookings/{id}/listing-tools

> post-booking-listing-tools

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/bookings/{id}/listing-tools":{"post":{"operationId":"post_booking_listing_tools","summary":"post-booking-listing-tools","parameters":[{"name":"id","in":"path","required":true,"description":"Booking ID (full UUID or 8-char prefix when unambiguous)","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /bookings/{id}/media

> get-booking-media

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/bookings/{id}/media":{"get":{"operationId":"get_booking_media","summary":"get-booking-media","parameters":[{"name":"id","in":"path","required":true,"description":"Booking ID","schema":{"type":"string","format":"uuid"}},{"name":"media_type","in":"query","required":false,"description":"Filter: photo|video|3d_tour|document|floor_plan","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /bookings/{id}/notes

> get-booking-notes

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/bookings/{id}/notes":{"get":{"operationId":"get_booking_notes","summary":"get-booking-notes","parameters":[{"name":"id","in":"path","required":true,"description":"Booking ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## POST /bookings/{id}/notes

> post-booking-notes

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/bookings/{id}/notes":{"post":{"operationId":"post_booking_notes","summary":"post-booking-notes","parameters":[{"name":"id","in":"path","required":true,"description":"Booking ID","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["note_type","note_content"],"properties":{"note_type":{"type":"string","description":"customer or internal"},"note_content":{"type":"string","description":"Note content"},"created_by":{"type":"string","description":"Optional creator identifier"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## POST /bookings/{id}/payment

> post-booking-payment

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/bookings/{id}/payment":{"post":{"operationId":"post_booking_payment","summary":"post-booking-payment","parameters":[{"name":"id","in":"path","required":true,"description":"Booking ID","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["amount","payment_method"],"properties":{"amount":{"type":"number","description":"Payment amount"},"payment_method":{"type":"string","description":"cash|bank_transfer|cheque|other"},"bank_name":{"type":"string","description":"Bank name (for bank_transfer)"},"bank_ref":{"type":"string","description":"Bank reference"},"check_number":{"type":"string","description":"Check number (for cheque)"},"check_bank_name":{"type":"string","description":"Check bank name"},"check_date":{"type":"string","description":"Check date"},"other_description":{"type":"string","description":"Description (for other)"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /bookings/{id}/payments

> get-booking-payments

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/bookings/{id}/payments":{"get":{"operationId":"get_booking_payments","summary":"get-booking-payments","parameters":[{"name":"id","in":"path","required":true,"description":"Booking ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /bookings/{id}/tasks

> get-booking-tasks

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/bookings/{id}/tasks":{"get":{"operationId":"get_booking_tasks","summary":"get-booking-tasks","parameters":[{"name":"id","in":"path","required":true,"description":"Booking ID","schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","required":false,"description":"Page number","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Items per page","schema":{"type":"integer"}},{"name":"sort","in":"query","required":false,"description":"Sort field","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sort order","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /branding

> get-branding

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/branding":{"get":{"operationId":"get_branding","summary":"get-branding","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /calendar

> get-calendar

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/calendar":{"get":{"operationId":"get_calendar","summary":"get-calendar","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /coupons

> get-coupons

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/coupons":{"get":{"operationId":"get_coupons","summary":"get-coupons","parameters":[{"name":"page","in":"query","required":false,"description":"Page number","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Items per page","schema":{"type":"integer"}},{"name":"is_active","in":"query","required":false,"description":"Filter by active","schema":{"type":"boolean"}},{"name":"search","in":"query","required":false,"description":"Search by code","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## POST /coupons

> post-coupons

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/coupons":{"post":{"operationId":"post_coupons","summary":"post-coupons","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["code","discount_type","discount_value"],"properties":{"code":{"type":"string","description":"Coupon code"},"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"},"discount_type":{"type":"string","description":"percentage|fixed_amount"},"discount_value":{"type":"number","description":"Discount value"},"applies_to":{"type":"string","description":"entire_order|selected_services|..."},"applicable_service_ids":{"type":"string","description":"Service IDs"},"applicable_package_ids":{"type":"string","description":"Package IDs"},"customer_eligibility":{"type":"string","description":"all|specific_groups|specific_customers"},"eligible_customer_group_ids":{"type":"string","description":"Group IDs"},"eligible_customer_ids":{"type":"string","description":"Customer IDs"},"is_active":{"type":"boolean","description":"Active (default: true)"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## POST /coupons/validate

> post-coupons-validate

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/coupons/validate":{"post":{"operationId":"post_coupons_validate","summary":"post-coupons-validate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["code"],"properties":{"code":{"type":"string","description":"Coupon code to validate"},"optional":{"type":"string","description":"Optional context"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## POST /create-order

> post-create-order

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/create-order":{"post":{"operationId":"post_create_order","summary":"post-create-order","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["org_id","address","city","state","zip_code","country","customer_id"],"properties":{"org_id":{"type":"string","format":"uuid","description":"Organization ID"},"address":{"type":"string","description":"Property address"},"city":{"type":"string","description":"City"},"state":{"type":"string","description":"State"},"zip_code":{"type":"string","description":"Zip code"},"country":{"type":"string","description":"Country"},"customer_id":{"type":"string","format":"uuid","description":"Customer ID"},"selected_services":{"type":"string","description":"Service IDs (comma-separated)"},"selected_package":{"type":"string","description":"Package ID"},"selected_staff":{"type":"string","description":"Staff ID"},"selected_date":{"type":"string","description":"Date"},"selected_time":{"type":"string","description":"Time"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /customer-groups

> get-customer-groups

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customer-groups":{"get":{"operationId":"get_customer_groups","summary":"get-customer-groups","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## POST /customer-groups

> post-customer-groups

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customer-groups":{"post":{"operationId":"post_customer_groups","summary":"post-customer-groups","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Group name"},"group_code":{"type":"string","description":"Group code"},"description":{"type":"string","description":"Description"},"net_days":{"type":"integer","description":"Net payment days"},"additional_discount_percentage":{"type":"number","description":"Discount %"},"allow_access_with_balance":{"type":"boolean","description":"Allow access with balance"},"allow_customer_photo_preview":{"type":"boolean","description":"Allow photo preview"},"allow_customer_uploads":{"type":"boolean","description":"Allow uploads"},"take_deposit":{"type":"boolean","description":"Take deposit"},"group_manager_id":{"type":"string","format":"uuid","description":"Manager ID"},"deposit_percentage":{"type":"number","description":"Deposit %"},"use_custom_order_form":{"type":"boolean","description":"Use custom form"},"customer_portal_order_form_id":{"type":"string","format":"uuid","description":"Form ID"},"auto_assign":{"type":"boolean","description":"Auto assign"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /customer-groups/{id}

> get-customer-group

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customer-groups/{id}":{"get":{"operationId":"get_customer_group","summary":"get-customer-group","parameters":[{"name":"id","in":"path","required":true,"description":"Group ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## PATCH /customer-groups/{id}

> patch-customer-group

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customer-groups/{id}":{"patch":{"operationId":"patch_customer_group","summary":"patch-customer-group","parameters":[{"name":"id","in":"path","required":true,"description":"Group ID","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Group name"},"group_code":{"type":"string","description":"Group code"},"description":{"type":"string","description":"Description"},"net_days":{"type":"integer","description":"Net days"},"additional_discount_percentage":{"type":"number","description":"Discount %"},"allow_access_with_balance":{"type":"boolean","description":"Allow with balance"},"allow_customer_photo_preview":{"type":"boolean","description":"Allow preview"},"allow_customer_uploads":{"type":"boolean","description":"Allow uploads"},"take_deposit":{"type":"boolean","description":"Take deposit"},"group_manager_id":{"type":"string","format":"uuid","description":"Manager ID"},"deposit_percentage":{"type":"number","description":"Deposit %"},"use_custom_order_form":{"type":"boolean","description":"Use custom form"},"customer_portal_order_form_id":{"type":"string","format":"uuid","description":"Form ID"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /customer-groups/{id}/customers

> get-customer-group-customers

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customer-groups/{id}/customers":{"get":{"operationId":"get_customer_group_customers","summary":"get-customer-group-customers","parameters":[{"name":"id","in":"path","required":true,"description":"Group ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /customers

> get-customers

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers":{"get":{"operationId":"get_customers","summary":"get-customers","parameters":[{"name":"page","in":"query","required":false,"description":"Page number (default: 1)","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Items per page (default: 20, max: 100)","schema":{"type":"integer"}},{"name":"search","in":"query","required":false,"description":"Search by name/email/phone","schema":{"type":"string"}},{"name":"customer_group_id","in":"query","required":false,"description":"Filter by customer group","schema":{"type":"string","format":"uuid"}},{"name":"sort","in":"query","required":false,"description":"Sort field (default: created_at)","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sort order: asc|desc (default: desc)","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## POST /customers

> post-customers

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers":{"post":{"operationId":"post_customers","summary":"post-customers","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Customer name"},"email":{"type":"string","description":"Customer email"},"phone":{"type":"string","description":"Customer phone"},"company":{"type":"string","description":"Customer company"},"title":{"type":"string","description":"Customer title"},"customer_group_id":{"type":"string","format":"uuid","description":"Customer group ID"},"create_login":{"type":"boolean","description":"Create portal login"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /customers/{id}

> get-customer-by-id

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers/{id}":{"get":{"operationId":"get_customer_by_id","summary":"get-customer-by-id","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## DELETE /customers/{id}

> delete-customer

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers/{id}":{"delete":{"operationId":"delete_customer","summary":"delete-customer","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## PATCH /customers/{id}

> patch-customer

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers/{id}":{"patch":{"operationId":"patch_customer","summary":"patch-customer","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Customer name"},"phone":{"type":"string","description":"Customer phone"},"company":{"type":"string","description":"Customer company"},"address":{"type":"string","description":"Address"},"city":{"type":"string","description":"City"},"state":{"type":"string","description":"State"},"zip_code":{"type":"string","description":"Zip code"},"country":{"type":"string","description":"Country"},"customer_group_id":{"type":"string","format":"uuid","description":"Customer group ID"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /customers/{id}/bookings

> get-customer-bookings

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers/{id}/bookings":{"get":{"operationId":"get_customer_bookings","summary":"get-customer-bookings","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","required":false,"description":"Page number","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Items per page","schema":{"type":"integer"}},{"name":"sort","in":"query","required":false,"description":"Sort field","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sort order","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /customers/{id}/credits

> get-customer-credits

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers/{id}/credits":{"get":{"operationId":"get_customer_credits","summary":"get-customer-credits","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## POST /customers/{id}/credits/add

> post-customer-credits-add

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers/{id}/credits/add":{"post":{"operationId":"post_customer_credits_add","summary":"post-customer-credits-add","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["amount"],"properties":{"amount":{"type":"number","description":"Amount to add"},"reason":{"type":"string","description":"Reason for credit"},"note":{"type":"string","description":"Additional note"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## POST /customers/{id}/credits/remove

> post-customer-credits-remove

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers/{id}/credits/remove":{"post":{"operationId":"post_customer_credits_remove","summary":"post-customer-credits-remove","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["amount"],"properties":{"amount":{"type":"number","description":"Amount to remove"},"reason":{"type":"string","description":"Reason"},"note":{"type":"string","description":"Note"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /customers/{id}/effective-settings

> get-customer-effective-settings

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers/{id}/effective-settings":{"get":{"operationId":"get_customer_effective_settings","summary":"get-customer-effective-settings","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /customers/{id}/light

> get-customer-light

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers/{id}/light":{"get":{"operationId":"get_customer_light","summary":"get-customer-light","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /customers/{id}/listings

> get-customer-listings

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers/{id}/listings":{"get":{"operationId":"get_customer_listings","summary":"get-customer-listings","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","required":false,"description":"Page number","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Items per page","schema":{"type":"integer"}},{"name":"sort","in":"query","required":false,"description":"Sort field","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sort order","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /customers/{id}/notes

> get-customer-notes

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers/{id}/notes":{"get":{"operationId":"get_customer_notes","summary":"get-customer-notes","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## POST /customers/{id}/notes

> post-customer-note

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers/{id}/notes":{"post":{"operationId":"post_customer_note","summary":"post-customer-note","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["note"],"properties":{"note":{"type":"string","description":"Note text (max 2000 chars)"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## DELETE /customers/{id}/notes/{noteId}

> delete-customer-note

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers/{id}/notes/{noteId}":{"delete":{"operationId":"delete_customer_note","summary":"delete-customer-note","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}},{"name":"noteId","in":"path","required":true,"description":"Note ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## PATCH /customers/{id}/notes/{noteId}

> patch-customer-note

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers/{id}/notes/{noteId}":{"patch":{"operationId":"patch_customer_note","summary":"patch-customer-note","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}},{"name":"noteId","in":"path","required":true,"description":"Note ID","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["note"],"properties":{"note":{"type":"string","description":"Updated note text (max 2000 chars)"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /customers/{id}/payment-method

> get-customer-payment-method

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers/{id}/payment-method":{"get":{"operationId":"get_customer_payment_method","summary":"get-customer-payment-method","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /customers/{id}/stats

> get-customer-stats

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers/{id}/stats":{"get":{"operationId":"get_customer_stats","summary":"get-customer-stats","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}},{"name":"days","in":"query","required":false,"description":"Last N days (1-366)","schema":{"type":"integer"}},{"name":"from","in":"query","required":false,"description":"Range start","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"description":"Range end","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /customers/{id}/tasks

> get-customer-tasks

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/customers/{id}/tasks":{"get":{"operationId":"get_customer_tasks","summary":"get-customer-tasks","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","required":false,"description":"Page number","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Items per page","schema":{"type":"integer"}},{"name":"start_date","in":"query","required":false,"description":"Start date","schema":{"type":"string","format":"date"}},{"name":"end_date","in":"query","required":false,"description":"End date","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## POST /deliver-order

> post-deliver-order

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/deliver-order":{"post":{"operationId":"post_deliver_order","summary":"post-deliver-order","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customer_email":{"type":"string","description":"Override customer email for delivery"},"delivery_notes":{"type":"string","description":"Delivery notes"},"additional_recipient_email":{"type":"string","description":"Additional recipient email"},"send_email_only":{"type":"boolean","description":"Only send email, do not update status (default: false)"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /listings

> get-listings

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/listings":{"get":{"operationId":"get_listings","summary":"get-listings","parameters":[{"name":"page","in":"query","required":false,"description":"Page number","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Items per page","schema":{"type":"integer"}},{"name":"include_customer_id","in":"query","required":false,"description":"Include customer IDs","schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /media-revisions

> get-media-revisions

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/media-revisions":{"get":{"operationId":"get_media_revisions","summary":"get-media-revisions","parameters":[{"name":"booking_id","in":"query","required":false,"description":"Filter by booking (full UUID or first 8-character segment)","schema":{"type":"string"}},{"name":"team_member_id","in":"query","required":false,"description":"Filter by assigned team member","schema":{"type":"string","format":"uuid"}},{"name":"status","in":"query","required":false,"description":"Filter by revision status: pending, in_progress, completed, declined","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Page number (default 1)","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Items per page (default 20, max 100)","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /notifications

> get-notifications

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/notifications":{"get":{"operationId":"get_notifications","summary":"get-notifications","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## POST /notification-tokens

> post-notification-tokens

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/notification-tokens":{"post":{"operationId":"post_notification_tokens","summary":"post-notification-tokens","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["action","fcm_token"],"properties":{"action":{"type":"string","description":"upsert or delete"},"fcm_token":{"type":"string","description":"FCM device token"},"customer_id":{"type":"string","format":"uuid","description":"Customer ID (required for upsert)"},"device_type":{"type":"string","description":"ios or android (required for upsert)"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /order-forms

> get-order-forms

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/order-forms":{"get":{"operationId":"get_order_forms","summary":"get-order-forms","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /order-forms/{id}

> get-order-form

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/order-forms/{id}":{"get":{"operationId":"get_order_form","summary":"get-order-form","parameters":[{"name":"id","in":"path","required":true,"description":"Order form ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /organization

> get-organization

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/organization":{"get":{"operationId":"get_organization","summary":"get-organization","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /packages

> get-packages

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/packages":{"get":{"operationId":"get_packages","summary":"get-packages","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /reports/coupons

> get-report-coupons

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/reports/coupons":{"get":{"operationId":"get_report_coupons","summary":"get-report-coupons","parameters":[{"name":"from","in":"query","required":true,"description":"Range start (required)","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"description":"Range end (required)","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /reports/customers/{id}

> get-report-customer

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/reports/customers/{id}":{"get":{"operationId":"get_report_customer","summary":"get-report-customer","parameters":[{"name":"id","in":"path","required":true,"description":"Customer ID","schema":{"type":"string","format":"uuid"}},{"name":"from","in":"query","required":true,"description":"Range start (required)","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"description":"Range end (required)","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /reports/groups/{id}

> get-report-group

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/reports/groups/{id}":{"get":{"operationId":"get_report_group","summary":"get-report-group","parameters":[{"name":"id","in":"path","required":true,"description":"Customer group ID","schema":{"type":"string","format":"uuid"}},{"name":"from","in":"query","required":true,"description":"Range start (required)","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"description":"Range end (required)","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /reports/jobs

> get-report-jobs

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/reports/jobs":{"get":{"operationId":"get_report_jobs","summary":"get-report-jobs","parameters":[{"name":"from","in":"query","required":true,"description":"Range start (required)","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"description":"Range end (required)","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /reports/mileage

> get-report-mileage

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/reports/mileage":{"get":{"operationId":"get_report_mileage","summary":"get-report-mileage","parameters":[{"name":"from","in":"query","required":true,"description":"Range start (required)","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"description":"Range end (required)","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /reports/mileage/{id}

> get-report-mileage-staff

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/reports/mileage/{id}":{"get":{"operationId":"get_report_mileage_staff","summary":"get-report-mileage-staff","parameters":[{"name":"id","in":"path","required":true,"description":"Staff ID","schema":{"type":"string","format":"uuid"}},{"name":"from","in":"query","required":true,"description":"Range start (required)","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"description":"Range end (required)","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /reports/payments

> get-report-payments

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/reports/payments":{"get":{"operationId":"get_report_payments","summary":"get-report-payments","parameters":[{"name":"from","in":"query","required":true,"description":"Range start (required)","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"description":"Range end (required)","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /reports/sales

> get-report-sales

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/reports/sales":{"get":{"operationId":"get_report_sales","summary":"get-report-sales","parameters":[{"name":"from","in":"query","required":true,"description":"Range start (required)","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"description":"Range end (required)","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /reports/staff

> get-report-staff

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/reports/staff":{"get":{"operationId":"get_report_staff","summary":"get-report-staff","parameters":[{"name":"from","in":"query","required":true,"description":"Range start (required)","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"description":"Range end (required)","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /reports/tax

> get-report-tax

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/reports/tax":{"get":{"operationId":"get_report_tax","summary":"get-report-tax","parameters":[{"name":"from","in":"query","required":true,"description":"Range start (required)","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"description":"Range end (required)","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /reviews

> get-reviews

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/reviews":{"get":{"operationId":"get_reviews","summary":"get-reviews","parameters":[{"name":"page","in":"query","required":false,"description":"Page number (default 1)","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Items per page (default 20, max 100)","schema":{"type":"integer"}},{"name":"booking_id","in":"query","required":false,"description":"Full booking UUID or 8-char prefix","schema":{"type":"string"}},{"name":"staff_id","in":"query","required":false,"description":"Filter by photographer staff_id on the review","schema":{"type":"string","format":"uuid"}},{"name":"from_date","in":"query","required":false,"description":"created_at >= from_date","schema":{"type":"string","format":"date"}},{"name":"to_date","in":"query","required":false,"description":"created_at <= to_date","schema":{"type":"string","format":"date"}},{"name":"sort","in":"query","required":false,"description":"Sort column: created_at, overall_rating (default created_at)","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sort order: asc or desc (default desc)","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## POST /reschedule-order

> post-reschedule-order

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/reschedule-order":{"post":{"operationId":"post_reschedule_order","summary":"post-reschedule-order","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /services

> get-services

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/services":{"get":{"operationId":"get_services","summary":"get-services","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /staff

> get-staff

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/staff":{"get":{"operationId":"get_staff","summary":"get-staff","parameters":[{"name":"is_active","in":"query","required":false,"description":"Filter: true|false","schema":{"type":"string"}},{"name":"search","in":"query","required":false,"description":"Search by name/email","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /staff/{id}

> get-staff-by-id

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/staff/{id}":{"get":{"operationId":"get_staff_by_id","summary":"get-staff-by-id","parameters":[{"name":"id","in":"path","required":true,"description":"Staff ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /staff/{id}/bookings

> get-staff-bookings

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/staff/{id}/bookings":{"get":{"operationId":"get_staff_bookings","summary":"get-staff-bookings","parameters":[{"name":"id","in":"path","required":true,"description":"Staff ID","schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","required":false,"description":"Page number","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Items per page","schema":{"type":"integer"}},{"name":"sort","in":"query","required":false,"description":"Sort field","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sort order","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /tasks

> get-tasks

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/tasks":{"get":{"operationId":"get_tasks","summary":"get-tasks","parameters":[{"name":"page","in":"query","required":false,"description":"Page number","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Items per page","schema":{"type":"integer"}},{"name":"sort","in":"query","required":false,"description":"Sort field","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sort order","schema":{"type":"string"}},{"name":"start_date","in":"query","required":false,"description":"Start date","schema":{"type":"string","format":"date"}},{"name":"end_date","in":"query","required":false,"description":"End date","schema":{"type":"string","format":"date"}},{"name":"staff_id","in":"query","required":false,"description":"Filter by staff","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /team-members

> get-team-members

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/team-members":{"get":{"operationId":"get_team_members","summary":"get-team-members","parameters":[{"name":"is_active","in":"query","required":false,"description":"Filter: true|false","schema":{"type":"string"}},{"name":"search","in":"query","required":false,"description":"Search by name/email","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /team-members/{id}

> get-team-member-by-id

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/team-members/{id}":{"get":{"operationId":"get_team_member_by_id","summary":"get-team-member-by-id","parameters":[{"name":"id","in":"path","required":true,"description":"Team member ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /team-members/{id}/assignments

> get-team-member-assignments

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/team-members/{id}/assignments":{"get":{"operationId":"get_team_member_assignments","summary":"get-team-member-assignments","parameters":[{"name":"id","in":"path","required":true,"description":"Team member ID","schema":{"type":"string","format":"uuid"}},{"name":"status","in":"query","required":false,"description":"Filter: assigned|in_progress|completed|cancelled","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Page number","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Items per page","schema":{"type":"integer"}},{"name":"sort","in":"query","required":false,"description":"Sort: scheduled_at|created_at","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sort order: asc|desc","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /territories

> get-territories

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/territories":{"get":{"operationId":"get_territories","summary":"get-territories","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /territories/{id}

> get-territory

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/territories/{id}":{"get":{"operationId":"get_territory","summary":"get-territory","parameters":[{"name":"id","in":"path","required":true,"description":"Territory ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /territories/{id}/zones

> get-territory-zones

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/territories/{id}/zones":{"get":{"operationId":"get_territory_zones","summary":"get-territory-zones","parameters":[{"name":"id","in":"path","required":true,"description":"Territory ID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /tracking

> get-tracking

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/tracking":{"get":{"operationId":"get_tracking","summary":"get-tracking","parameters":[{"name":"mode","in":"query","required":false,"description":"today|upcoming|past (required when booking_id absent; optional when booking_id provided)","schema":{"type":"string"}},{"name":"staff_id","in":"query","required":false,"description":"Filter by staff","schema":{"type":"string","format":"uuid"}},{"name":"customer_id","in":"query","required":false,"description":"Filter by customer","schema":{"type":"string","format":"uuid"}},{"name":"booking_id","in":"query","required":false,"description":"Full UUID or 8-char prefix; when set, mode is optional and fetches that booking regardless of date","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /trends

> get-trends

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/trends":{"get":{"operationId":"get_trends","summary":"get-trends","parameters":[{"name":"metric_type","in":"query","required":false,"description":"bookings|revenue|customers|payments","schema":{"type":"string"}},{"name":"days","in":"query","required":false,"description":"Last N days","schema":{"type":"integer"}},{"name":"from","in":"query","required":false,"description":"Range start","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"description":"Range end","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```

## GET /unpaid

> get-unpaid

```json
{"openapi":"3.0.3","info":{"title":"RealView Hub API","version":"1.0.0"},"servers":[{"url":"https://api.realviewhub.com/api/v1","description":"Production"},{"url":"http://localhost:3000/api/v1","description":"Local development"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Authorization Bearer API key or JWT"}},"schemas":{"SuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{}}},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"$ref":"#/components/schemas/ErrorObject"}}},"ErrorObject":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/unpaid":{"get":{"operationId":"get_unpaid","summary":"get-unpaid","parameters":[{"name":"from","in":"query","required":false,"description":"Range start","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"description":"Range end","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.realviewhub.com/realview-hub-api.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
