# Lock Reservation

## POST /properties/{uuid}/reservations

> Create a pending reservation to lock in rates and availabilities for a specific property. This endpoint allows you to temporarily hold a reservation before confirming it, ensuring the rates and room availability are secured for a short period.\
> \
> \*\*Pending Reservation Workflow:\*\*\
> 1\. Call this endpoint to create a pending reservation\
> 2\. The response includes a \`bookingReferenceId\` and \`expiresInMinutes\`\
> 3\. Complete payment collection from the guest\
> 4\. Call \`/reservations/{bookingReferenceId}/confirmation\` before expiration\
> 5\. If not confirmed within the expiration window, the reservation is automatically released\
> \
> \*\*Room Allocation Rules:\*\*\
> \- Maximum 10 rooms per reservation\
> \- Each room must specify \`roomRateUuid\`, \`adults\`, and \`children\` count\
> \- The \`roomRateUuid\` must correspond to a valid rate returned from property search endpoints\
> \- Occupancy (\`adults\` + \`children\`) should not exceed the room type's maximum capacity\
> \- Use \`applyDeal\` per room to selectively apply deal rates when a \`dealCode\` is specified\
> \
> \*\*Deal Application:\*\*\
> \- Set \`dealCode\` at the reservation level to apply a deal\
> \- Use \`applyDeal: true\` for specific rooms to apply the deal rate to those rooms\
> \- Rooms with \`applyDeal: false\` or \`null\` will use standard rates even if a deal code is specified\
> \- This allows mixed bookings with both deal and non-deal rooms

```json
{"openapi":"3.0.0","info":{"title":"Channels Plus Channel API","version":"0.0.1"},"paths":{"/properties/{uuid}/reservations":{"post":{"operationId":"createPendingReservation","description":"Create a pending reservation to lock in rates and availabilities for a specific property. This endpoint allows you to temporarily hold a reservation before confirming it, ensuring the rates and room availability are secured for a short period.\n\n**Pending Reservation Workflow:**\n1. Call this endpoint to create a pending reservation\n2. The response includes a `bookingReferenceId` and `expiresInMinutes`\n3. Complete payment collection from the guest\n4. Call `/reservations/{bookingReferenceId}/confirmation` before expiration\n5. If not confirmed within the expiration window, the reservation is automatically released\n\n**Room Allocation Rules:**\n- Maximum 10 rooms per reservation\n- Each room must specify `roomRateUuid`, `adults`, and `children` count\n- The `roomRateUuid` must correspond to a valid rate returned from property search endpoints\n- Occupancy (`adults` + `children`) should not exceed the room type's maximum capacity\n- Use `applyDeal` per room to selectively apply deal rates when a `dealCode` is specified\n\n**Deal Application:**\n- Set `dealCode` at the reservation level to apply a deal\n- Use `applyDeal: true` for specific rooms to apply the deal rate to those rooms\n- Rooms with `applyDeal: false` or `null` will use standard rates even if a deal code is specified\n- This allows mixed bookings with both deal and non-deal rooms","parameters":[{"$ref":"#/components/parameters/SmApiId"},{"$ref":"#/components/parameters/SmApiKey"},{"name":"uuid","description":"The unique identifier of the property for which the reservation is being made","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"checkin":{"type":"string","format":"date","description":"The arrival date. Must be within 500 days in the future and in the format yyyy-mm-dd."},"checkout":{"type":"string","format":"date","description":"The departure date. Must be later than checkin. Must be between 1 and 30 days after checkin. Must be within 500 days in the future and in the format yyyy-mm-dd."},"dealCode":{"type":"string","nullable":true,"description":"The code of any deal to be applied to the reservation. If null, no deal will be applied."},"netInvoicing":{"type":"boolean","default":false,"description":"Indicates whether net invoicing should be applied to the reservation. When set to true, the commission is deducted from the booking amount, and the property receives the net amount (total minus commission)."},"rooms":{"type":"array","description":"An array of room bookings for this reservation. Minimum 1, maximum 10 rooms.","items":{"type":"object","additionalProperties":false,"properties":{"roomRateUuid":{"type":"string","maxLength":36,"description":"The unique identifier for the specific room rate being booked."},"adults":{"type":"integer","minimum":0,"maximum":255,"description":"The number of adults for this room booking."},"children":{"type":"integer","minimum":0,"maximum":255,"description":"The number of children for this room booking."},"applyDeal":{"type":"boolean","nullable":true,"description":"Indicates whether to apply the deal (if any) to this specific room booking."}},"required":["roomRateUuid","adults","children"]},"minItems":1,"maxItems":10}},"required":["checkin","checkout","rooms"]}}}},"responses":{"200":{"description":"Successful response. A pending reservation has been created.","headers":{},"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"propertyUuid":{"type":"string","description":"The unique identifier of the property for which the reservation is made."},"propertyEmail":{"type":"string","description":"The contact email address for the property."},"propertyPhoneNumber":{"type":"string","description":"The contact phone number for the property."},"bookingReferenceId":{"type":"string","description":"The unique identifier for this pending reservation."},"expiresInMinutes":{"type":"number","description":"The number of minutes before the pending reservation expires and is no longer valid.","minimum":0},"currencyCode":{"type":"string","description":"The currency code for all monetary values in this response."},"paymentTotal":{"type":"number","description":"The total payment amount for the reservation, including all taxes and fees."},"paymentTotalLessCommission":{"type":"number","description":"The total payment amount minus the commission."},"taxes":{"type":"array","description":"An array of taxes applicable to this reservation.","items":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"The name or type of the tax."},"amount":{"type":"number","description":"The amount of the tax."}},"required":["name","amount"]}},"fees":{"type":"array","description":"An array of fees applicable to this reservation.","items":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"The name or type of the fee."},"amount":{"type":"number","description":"The amount of the fee."}},"required":["name","amount"]}},"rooms":{"type":"array","description":"An array of rooms included in this reservation.","items":{"additionalProperties":false,"properties":{"roomUuid":{"type":"string","description":"The unique identifier for this specific room."},"roomTypeName":{"type":"string","description":"The name of the room type."},"roomRateUuid":{"type":"string","minLength":1,"maxLength":36,"description":"The unique identifier for the rate plan applied to this room."},"adults":{"type":"integer","minimum":0,"description":"The number of adults for this room."},"children":{"type":"integer","minimum":0,"description":"The number of children for this room."},"paymentTotal":{"type":"number","description":"The total payment amount for this room."},"totalCommissionPercentage":{"type":"number","description":"The total commission percentage for this room booking."},"siteminderCommissionPercentage":{"type":"number","description":"SiteMinder's portion of the commission percentage for this room booking."},"channelCommissionPercentage":{"type":"number","description":"The channel partner's portion of the commission percentage for this room booking."}},"required":["roomUuid","roomTypeName","roomRateUuid","adults","children","paymentTotal","totalCommissionPercentage","siteminderCommissionPercentage","channelCommissionPercentage"]},"minItems":1,"maxItems":10},"licenses":{"type":"array","description":"An array of business licenses and permits applicable to this property or specific rooms. These may include hotel operating licenses, business registration numbers, or regulatory permits required in certain jurisdictions (e.g., Japan's inn operation licenses, Singapore hotel licenses). Display these to guests where legally required.","items":{"type":"object","additionalProperties":false,"properties":{"licenseType":{"type":"string","enum":["property","room"],"description":"Indicates whether the license applies to the entire property or to a specific room."},"licenseNumber":{"type":"string","description":"The official license or permit number issued by the regulatory authority."},"licenseIssueDate":{"type":"string","description":"The date when the license was issued, in YYYY-MM-DD format."}},"required":["licenseType","licenseNumber","licenseIssueDate"]}},"cancellationPolicy":{"$ref":"#/components/schemas/CancelationPolicy","description":"The cancellation policy applicable to this reservation."}},"required":["propertyUuid","propertyPhoneNumber","bookingReferenceId","expiresInMinutes","currencyCode","paymentTotal","paymentTotalLessCommission","rooms","cancellationPolicy"]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/ServerError"}}}}},"components":{"parameters":{"SmApiId":{"name":"x-sm-api-id","description":"The api id for channel","required":true,"in":"header","schema":{"type":"string"}},"SmApiKey":{"name":"x-sm-api-key","description":"The api key for channel","required":true,"in":"header","schema":{"type":"string"}}},"schemas":{"CancelationPolicy":{"type":"object","additionalProperties":false,"description":"Defines the cancellation policy for a reservation or rate. Policies can be either non-refundable or allow free cancellation up to a specified number of days before check-in.","properties":{"policyType":{"type":"string","enum":["non-refundable","free-cancellation"],"description":"The type of cancellation policy. 'non-refundable' means no refund will be provided regardless of when cancellation occurs. 'free-cancellation' allows cancellation without penalty up to the specified number of days before check-in."},"freeCancellationUntilDays":{"type":"number","nullable":true,"description":"Number of days before check-in when free cancellation is allowed. Only applicable when policyType is 'free-cancellation'. Null for non-refundable policies. For example, a value of 7 means guests can cancel up to 7 days before check-in without penalty."}},"required":["policyType"]},"Error":{"type":"object","required":["errors"],"properties":{"errors":{"minItems":1,"type":"array","description":"An array of error objects, for most errors, this array would only contain one error object. An errors array must contain at least one error object.","items":{"type":"object","required":["code"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"meta":{"type":"object"}}}}}}},"responses":{"BadRequest":{"description":"Invalid request","headers":{},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"The specified resource was not found","headers":{},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"ServerError":{"description":"Unexpected error occurred","headers":{},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}
```

{% hint style="warning" %}
If using a Virtual Credit Card you must adhere to the following rules:

* VCC Activation Date:
  * Must be on or before the last acceptable cancellation date
  * If the reservation is non refundable, must be on or before the booking date
  * Note: The last acceptable cancellation date is calculated by CheckinDate minus freeCancellationUntilDays
* VCC Deactivation Date:
  * Must be at least 7 days after checkout date
    {% endhint %}

{% hint style="success" icon="sparkles" %}

## Still have questions?

Use the <i class="fa-gitbook-assistant">:gitbook-assistant:</i> **Ask** button at the top of the page to chat with our AI assistant — it can help you navigate the guide, understand requirements, and troubleshoot issues.

If you need more support, visit [Integration Support](/integration-support/integration-support.md).
{% endhint %}


---

# Agent Instructions: 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:

```
GET https://developer.siteminder.com/channels-plus-api/reference/lock-reservation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
