Get one booking
Full booking detail including status, pinCode, payment/billing summaries, and histories. Poll this after directing a user to webPaymentUrl until status leaves "unpaid".
Authorization
bearerAuth Access token from POST /auth/accessToken
In: header
Path Parameters
MongoDB ObjectId
Response Body
application/json
application/json
curl -X GET "https://example.com/meetings/string"{ "code": "KS000", "success": true, "message": "string", "data": { "_id": "string", "status": "unpaid", "meetingRoomId": "string", "meetingRoomName": "string", "deskId": "string", "title": "string", "body": "string", "startDateTime": "2019-08-24T14:15:22Z", "endDateTime": "2019-08-24T14:15:22Z", "pinCode": "string", "organizer": { "userId": "string", "email": "string", "name": "string", "displayName": "string", "checkInDateTime": "2019-08-24T14:15:22Z", "checkOutDateTime": "2019-08-24T14:15:22Z" }, "attendees": [ { "userId": "string", "email": "string", "name": "string", "type": "required", "responseStatus": "accepted", "checkInDateTime": "2019-08-24T14:15:22Z" } ], "payment": { "paymentId": "string", "invoiceNo": "string", "amount": 0, "summary": { "subtotal": 0, "total": 0, "discounts": [ { "code": "string", "value": "string", "name": "string" } ] }, "webPaymentUrl": "http://example.com", "webPaymentQr": "string" }, "paymentDueAt": "2019-08-24T14:15:22Z", "bookedVia": "webview", "bookedByUserId": "string", "billingSummaries": [ { "kind": "quote", "payment_id": "string", "amount": 0, "total": 0, "invoice_no": "string", "status": "string", "expiredAt": "2019-08-24T14:15:22Z" } ], "histories": [ { "action": "create", "at": "2019-08-24T14:15:22Z", "by": "string" } ], "seriesMasterId": "string", "occurrenceEventId": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }}Create a room or desk booking POST
Exactly one of meetingRoomId / deskId. Desk bookings: exactly one of endDateTime / timePeriod. A response with status "unpaid" requires the end user to complete payment at payment.webPaymentUrl within ~5 minutes (billingSummaries[].expiredAt) or the booking auto-cancels — do NOT automate payment. Back-office bookings (organizerId set by a caller holding MEETING_UPDATE) mint nothing at create: there is no webPaymentUrl, the organizer pays later from their own device, and the booking is held until paymentDueAt (paymentDueMinutes → the project's backofficePaymentDueMinutes → 1440 minutes; clamped to 7 days and to the meeting start). No-show auto-cancel: unless disabled per asset (config.meetingConfig.postStartExpireMinutes = -1), an active booking nobody checks in to is automatically cancelled ~15 minutes after start. No idempotency mechanism: never blind-retry a timed-out create; reconcile via GET /meetings. Slot races surface as 409 KS012. An organizer an admin has blocked from booking is refused 403 MEETING_049 — an authorization refusal, not a slot problem: do not offer another slot.
Update or extend a booking PATCH
Only active or checked-in bookings. Start time cannot change after check-in. Extending a paid booking can return status "unpaid" with a payment object — same handling as a paid create. pinCode required when the caller is not the organizer. A change to startDateTime/endDateTime by a blocked organizer is refused 403 MEETING_049; an edit that keeps the time (title, body, attendees) is not.