# Testing and Certification

Use this guide to verify that all required integration capabilities are working correctly. Work through the scenarios independently, and when you're confident in your results, notify the Partner Integrations team. We'll review your readiness, prepare your account, and confirm when you can proceed to certification.

## Instructions

This guide provides a series of scenarios to test all required integration capabilities for this API. Some capabilities may be optional — if a scenario does not apply to your integration, skip it and proceed to the next one. Work through each scenario using the resources provided in the Initial Setup section, and use the results to verify your integration is working correctly before requesting certification.

Once all scenarios pass, notify the Partner Integrations team. We will review your results, and if everything looks good, confirm when you can proceed to the formal certification process.

## Initial Setup

Before working through the test scenarios, make sure the following are in place:

1. **Postman collection** — Download and import the [SMX Postman](https://www.postman.com/siteminder-apis/smx/overview) collection.
2. **Little Hotelier test account** — You will need access to our test platform to run Reservation scenarios.
3. **Active endpoint** — Ensure your endpoint is active and ready to receive requests.

{% hint style="info" %}
For Reservations, you will provide your own endpoint credentials. For Availability and Rates, retrieve your `Bearer Token` from the SMX Partner Portal. **Make sure to replace all variables in the Postman collection before running the scenarios**.
{% endhint %}

## Test Scenarios

### Reservations

{% hint style="success" %}
Your application must accept all `ResStatus` values and respond with `200 OK`:

`Reserved`, `Waitlisted`, `Cancelled`, `No-show`, `In-house`, `Checked-Out`.
{% endhint %}

### - Error Handling

<table><thead><tr><th width="60.01556396484375">#</th><th width="259.6632080078125">Scenario</th><th>Description</th></tr></thead><tbody><tr><td>1</td><td>Invalid Username / Password</td><td>Validates error response when incorrect credentials are sent via SMX</td></tr><tr><td>2</td><td>Hotel Not Found for HotelCode</td><td>Validates error response when an invalid HotelCode is sent via SMX</td></tr></tbody></table>

### - Minimum and Maximum Content

<table><thead><tr><th width="60.01556396484375">#</th><th width="259.6632080078125">Scenario</th><th>Description</th></tr></thead><tbody><tr><td>1</td><td>Minimum Content XML</td><td>A booking XML containing only the basic required fields handled by SMX</td></tr><tr><td>2</td><td>Maximum Content XML</td><td>A booking XML containing all possible fields handled by SMX</td></tr></tbody></table>

### - Reservation Lifecycle (Modify)

<table><thead><tr><th width="60.06768798828125">#</th><th width="149.89666748046875">Request</th><th>Description</th></tr></thead><tbody><tr><td>1.1</td><td>Initial Booking</td><td>2-night stay</td></tr><tr><td>1.2</td><td>Move Dates</td><td>Check-in and check-out dates changed; same 2-night stay duration</td></tr><tr><td>1.3</td><td>Add Room</td><td>Same stay dates; additional room added</td></tr><tr><td>1.4</td><td>Remove Room</td><td>Same stay dates; additional room removed</td></tr><tr><td>1.5</td><td>Add Guests</td><td>Same stay dates; new guest added to the booking</td></tr></tbody></table>

### - Reservation Lifecycle (Cancel)

<table><thead><tr><th width="59.61199951171875">#</th><th width="269.66839599609375">Request</th><th>Description</th></tr></thead><tbody><tr><td>2.1</td><td>Initial Booking</td><td>1-night stay</td></tr><tr><td>2.2</td><td>Add Rooms + Guests</td><td>Same stay dates; new room and guest added</td></tr><tr><td>2.3</td><td>Remove Rooms + Guests</td><td>Same stay dates; room and guest removed</td></tr><tr><td>2.4</td><td>Cancel</td><td>Full cancellation of the booking</td></tr></tbody></table>

### - Services

<table><thead><tr><th width="59.52947998046875">#</th><th width="270.0242919921875">Request</th><th>Description</th></tr></thead><tbody><tr><td>3.1</td><td>Reservation with Services</td><td>New booking created with extra services attached</td></tr></tbody></table>

### - Stay Status

<table><thead><tr><th width="59.7335205078125">#</th><th width="270.05902099609375">Request</th><th>Description</th></tr></thead><tbody><tr><td>4.1</td><td>Initial Booking</td><td>New booking created</td></tr><tr><td>4.2</td><td>Check-In</td><td>Same booking checked in</td></tr><tr><td>4.3</td><td>Check-Out</td><td>Same booking checked out</td></tr></tbody></table>

### &#x20;- Special Characters

<table><thead><tr><th width="60.13714599609375">#</th><th width="270.13543701171875">Request</th><th>Description</th></tr></thead><tbody><tr><td>5.1</td><td>Special Characters (No RoomID)</td><td>New booking with special characters across multiple fields</td></tr></tbody></table>

{% hint style="info" %}
Your application must respond to every `OTA_HotelResNotifRQ` with a valid `OTA_HotelResNotifRS`. Return `200` for application-level errors with a clear error description; use `500`/`503` only for server-level failures.&#x20;

If delivery fails, SMX retries every 30 seconds for up to 3 attempts before marking the reservation as failed. Review the [Error Handling](/smx-api/guides/error-handling.md) page for more details.
{% endhint %}

### Availability and Rates

{% hint style="info" %}
Rate limiting is not applied during testing. Limit requests to a maximum of 30 per minute per property.
{% endhint %}

### - Publisher and Hotel

<table><thead><tr><th width="60.02862548828125">#</th><th width="260.33941650390625">Scenario</th><th>Description</th></tr></thead><tbody><tr><td>P1</td><td>GET publishers</td><td>Retrieve all publishers (PMSs) connected to your application</td></tr><tr><td>P2</td><td>GET hotels</td><td>Retrieve all hotels connected to the selected publisher and your application</td></tr></tbody></table>

### - Room Types

<table><thead><tr><th width="59.58587646484375">#</th><th width="260.145751953125">Scenario</th><th>Description</th></tr></thead><tbody><tr><td>RT1</td><td>GET RoomType by Hotel</td><td>List all room types for a specific hotel and publisher</td></tr><tr><td>RT2</td><td>GET RoomType by Room Code</td><td>Repeat for each room type code. Note: some fields are optional and may not be returned by all PMSs</td></tr></tbody></table>

### - Rate Plans

<table><thead><tr><th width="60.37152099609375">#</th><th width="259.5928955078125">Scenario</th><th>Description</th></tr></thead><tbody><tr><td>RP1</td><td>GET RatePlans by Hotel</td><td>List all rate plans for a specific hotel and publisher</td></tr><tr><td>RP2</td><td>GET RatePlans by Rate Plan Code</td><td>Repeat for each rate plan code. Note: some fields are optional</td></tr><tr><td>RP3</td><td>GET Rates by Rate Plan Code</td><td>Repeat for each rate plan: once for current date, once for a future date</td></tr><tr><td>RP4</td><td>GET Rates by Rate Plan Code NumberOfDays</td><td>Repeat for each rate plan from current date with a range of 30, covering 1 full year</td></tr></tbody></table>

### - Availability and Restrictions

<table><thead><tr><th width="59.7421875">#</th><th width="259.5555419921875">Scenario</th><th>Description</th></tr></thead><tbody><tr><td>AV1</td><td>GET Availability by Hotel / Room Type</td><td>Repeat for multiple dates and each room type code</td></tr><tr><td>AV2</td><td>GET Availability by Hotel / Room Type NumberOfDays</td><td>Repeat from current date to cover 1 full year; repeat for each room type code</td></tr><tr><td>AV3</td><td>GET Availability by Hotel / Rate</td><td>Repeat for multiple dates and each rate plan code</td></tr><tr><td>AV4</td><td>GET Availability by Hotel / Rate NumberOfDays</td><td>Repeat from current date to cover 1 full year; repeat for each rate plan code</td></tr></tbody></table>

***

## Final Steps

Once all scenarios have passed, notify the Partner Integrations team. We will review your results and confirm when you can proceed to certification. If any issues are identified during the review, we will reach out to you directly to resolve them before moving forward.

{% 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/smx-api/guides/testing-and-certification.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.
