# Certification tests

## Contents

* [Inventory Push Tests](#inventory-push-tests)
* [Reservation Tests](#reservation-tests)
* [Error Tests](#error-tests)

## Inventory Push Tests

| Test                                                  | Requirement | Scenario                                                                                                                                                                                                                                                                                                                                                                                                                                  | Expected Result                                                                                       | Notes                                                                                                                                                                                          |
| ----------------------------------------------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Receive multi-space, multi-rate availability push** | Required    | 5+ Spaces (3 Rooms, 1 Dorm and 1 Bed) and 5+ Rates are mapped from the [Get configuration](/channel-manager-api/mews-operations/configuration.md#get-configuration) response and data is pushed to the [Update availability](/channel-manager-api/channel-manager-operations/inventory.md#update-availability) endpoint.                                                                                                                  | The channel manager returns `{ "success": true}` and data is updated in the channel manager extranet. | Mapping bed and dorm space types is recommended, not required.                                                                                                                                 |
| **Receive multi-space, multi-rate gross rate push**   | Required    | 5+ Spaces (3 Rooms, 1 Dorm and 1 Bed) and 5+ Rates are mapped and pushed to the [Update prices](/channel-manager-api/channel-manager-operations/inventory.md#update-prices) endpoint.                                                                                                                                                                                                                                                     | The channel manager returns `{ "success": true}` and data is updated in the channel manager extranet. | Mapping bed and dorm space types is recommended, not required.                                                                                                                                 |
| **Receive multi-space, multi-rate net rate push**     | Required    | 5+ Spaces (3 Rooms, 1 Dorm and 1 Bed) and 5+ Rates are mapped and pushed to the [Update prices](/channel-manager-api/channel-manager-operations/inventory.md#update-prices) endpoint.                                                                                                                                                                                                                                                     | The channel manager returns `{ "success": true}` and data is updated in the channel manager extranet. | Mapping bed and dorm space types is recommended, not required.                                                                                                                                 |
| **Receive multi-space, multi-rate restriction push**  | Required    | 5+ Spaces (3 Rooms, 1 Dorm and 1 Bed) and 5+ Rates are mapped and pushed to the [Update restrictions](/channel-manager-api/channel-manager-operations/inventory.md#update-restrictions) endpoint.                                                                                                                                                                                                                                         | The channel manager returns `{ "success": true}` and data is updated in the channel manager extranet. | Mapping bed and dorm space types is recommended, not required.                                                                                                                                 |
| **Receive product (package) rates**                   | Required    | Package Rate and Breakfast product are manually mapped in the test property. Then, a rate push with a package Rate plan code is sent to the [Update prices](/channel-manager-api/channel-manager-operations/inventory.md#update-prices) endpoint.                                                                                                                                                                                         | The channel manager returns `{ "success": true}` and data is updated in the channel manager extranet. | The per night or per person per night price of the product is added to the `grossAmount`or `netAmount` of each `ratePrice` collection in the push. Product prices are not itemized separately. |
| **Receive a full inventory push from Mews**           | Required    | The connection is enabled and Mews sends the maximum update to the [Update availability](/channel-manager-api/channel-manager-operations/inventory.md#update-availability), [Update prices](/channel-manager-api/channel-manager-operations/inventory.md#update-prices) and [Update restrictions](/channel-manager-api/channel-manager-operations/inventory.md#update-restrictions) endpoints. A minimum full inventory push is 365 days. | The channel manager returns `{ "success": true}` and data is updated in the channel manager extranet. | Being able to accept this data is required but push size or frequency can be decreased if necessary.                                                                                           |

## Reservation Tests

| Test                                                                                     | Requirement | Scenario                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Expected Result                                                                                                                                                                                                                                                                                                                                                                                                                                    | Notes                                                                                                                                                                                |
| ---------------------------------------------------------------------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Send a single gross priced reservation**                                               | Required    | A reservation push with [Test credit card](/channel-manager-api/guidelines/environments.md#test-credit-cards) information in the [`paymentCard`](/channel-manager-api/mews-operations/reservations.md#payment-card) object, an [`adultCount`](/channel-manager-api/mews-operations/reservations.md#reservation) of 2, a [`childCount`](/channel-manager-api/mews-operations/reservations.md#reservation) of 1, and a companion in the `guests` property of the booking and a booked [`channel`](/channel-manager-api/mews-operations/configuration.md#channel) code is sent to the [Process group](/channel-manager-api/mews-operations/reservations.md#process-group) endpoint. | The channel manager receives a `{ "clientToken":"[Mews Client Token]", "connectionToken":"[Token of a concrete connection]", "channelManagerId":"[Id sent in the reservation push]", "reservations":[ {"code":"[Code sent in the reservation push]", "confirmationNumber":"[Mews confirmation number]"}]}` push to the [Confirm booking](/channel-manager-api/channel-manager-operations/reservations.md#confirm-booking) endpoint.                | The [`paymentCard`](/channel-manager-api/mews-operations/reservations.md#payment-card) object is required for all reservation pushes in the live environment.                        |
| **Modify the single gross priced reservation**                                           | Required    | A modification push with the same `channelManagerId`, the same Reservation [`code`](/channel-manager-api/mews-operations/reservations.md#reservation) for each booking and at least 1 change to the [`reservations`](/channel-manager-api/mews-operations/reservations.md#reservation) collection is sent to the [Process group](/channel-manager-api/mews-operations/reservations.md#process-group) endpoint.                                                                                                                                                                                                                                                                   | The channel manager receives a `{ "clientToken":"[Mews Client Token]", "connectionToken":"[Token of a concrete connection]", "channelManagerId":"[Same id as the original push]", "reservations":[ {"code":"[Same code as the original push]", "confirmationNumber":"[Same confirmation number as the original push]"}]}` push to the [Confirm booking](/channel-manager-api/channel-manager-operations/reservations.md#confirm-booking) endpoint. |                                                                                                                                                                                      |
| **Cancel the single gross priced reservation**                                           | Required    | An cancellation push with the same `channelManagerId` as the original reservation and no additional data is sent to the [Process group](/channel-manager-api/mews-operations/reservations.md#process-group) endpoint.                                                                                                                                                                                                                                                                                                                                                                                                                                                            | The channel manager receives a `{ "clientToken":"[Mews Client Token]", "connectionToken":"[Token of a concrete connection]", "channelManagerId":"[Same id as the original push]", "reservations":[ {"code":"[Same code as the original push]", "confirmationNumber":"[Same confirmation number as the original push]"}]}` push to the [Confirm booking](/channel-manager-api/channel-manager-operations/reservations.md#confirm-booking) endpoint. |                                                                                                                                                                                      |
| **Send a single net priced reservation**                                                 | Required    | A reservation push with [Test credit card](/channel-manager-api/guidelines/environments.md#test-credit-cards) information in the [`paymentCard`](/channel-manager-api/mews-operations/reservations.md#payment-card) object, an [`adultCount`](/channel-manager-api/mews-operations/reservations.md#reservation) of 2, a [`childCount`](/channel-manager-api/mews-operations/reservations.md#reservation) of 1, and a companion in the `guests` property of the booking is sent to the [Process group](/channel-manager-api/mews-operations/reservations.md#process-group) endpoint.                                                                                              | The channel manager receives a `{ "clientToken":"[Mews Client Token]", "connectionToken":"[Token of a concrete connection]", "channelManagerId":"[Id sent in the reservation push]", "reservations":[ {"code":"[Code sent in the reservation push]", "confirmationNumber":"[Mews confirmation number]"}]}` push to the [Confirm booking](/channel-manager-api/channel-manager-operations/reservations.md#confirm-booking) endpoint.                | The [`paymentCard`](/channel-manager-api/mews-operations/reservations.md#payment-card) object is required for all reservation pushes in the live environment.                        |
| **Modify the single net priced reservation**                                             | Required    | A modification push with the same `channelManagerId`, the same Reservation [`code`](/channel-manager-api/mews-operations/reservations.md#reservation) for each booking and at least 1 change to the [`reservations`](/channel-manager-api/mews-operations/reservations.md#reservation) collection is sent to the [Process group](/channel-manager-api/mews-operations/reservations.md#process-group) endpoint.                                                                                                                                                                                                                                                                   | The channel manager receives a `{ "clientToken":"[Mews Client Token]", "connectionToken":"[Token of a concrete connection]", "channelManagerId":"[Same id as the original push]", "reservations":[ {"code":"[Same code as the original push]", "confirmationNumber":"[Same confirmation number as the original push]"}]}` push to the [Confirm booking](/channel-manager-api/channel-manager-operations/reservations.md#confirm-booking) endpoint. |                                                                                                                                                                                      |
| **Cancel the single net priced reservation**                                             | Required    | An cancellation push with the same `channelManagerId` as the original reservation and no additional data is sent to the [Process group](/channel-manager-api/mews-operations/reservations.md#process-group) endpoint.                                                                                                                                                                                                                                                                                                                                                                                                                                                            | The channel manager receives a `{ "clientToken":"[Mews Client Token]", "connectionToken":"[Token of a concrete connection]", "channelManagerId":"[Same id as the original push]", "reservations":[ {"code":"[Same code as the original push]", "confirmationNumber":"[Same confirmation number as the original push]"}]}` push to the [Confirm booking](/channel-manager-api/channel-manager-operations/reservations.md#confirm-booking) endpoint. |                                                                                                                                                                                      |
| **Send a gross priced reservation with 3 spaces on 2 rate plans and varied daily rates** | Required    | A reservation push with three bookings in the [`reservations`](/channel-manager-api/mews-operations/reservations.md#reservation) collection, unique `ratePlanCode` properties and different daily rates for each date is sent to the [Process group](/channel-manager-api/mews-operations/reservations.md#process-group) endpoint.                                                                                                                                                                                                                                                                                                                                               | The channel manager receives a `{ "clientToken":"[Mews Client Token]", "connectionToken":"[Token of a concrete connection]", "channelManagerId":"[Id sent in the reservation push]", "reservations":[ {"code":"[Code sent in the reservation push]", "confirmationNumber":"[Mews confirmation number]"}]}` push to the [Confirm booking](/channel-manager-api/channel-manager-operations/reservations.md#confirm-booking) endpoint.                | Multi-booking reservations must be sent as 1 reservation collection in all cases.                                                                                                    |
| **Add/remove a space and add/remove dates from the multi-room gross priced reservation** | Required    | A modification push with the same `channelManagerId` and Reservation [`code`](/channel-manager-api/mews-operations/reservations.md#reservation)s as the original reservation, and changes to 2 of the 3 bookings in the [`reservations`](/channel-manager-api/mews-operations/reservations.md#reservation) collection.                                                                                                                                                                                                                                                                                                                                                           | The channel manager receives a `{ "clientToken":"[Mews Client Token]", "connectionToken":"[Token of a concrete connection]", "channelManagerId":"[Same id as the original push]", "reservations":[ {"code":"[Same code as the original push]", "confirmationNumber":"[Same confirmation number as the original push]"}]}` push to the [Confirm booking](/channel-manager-api/channel-manager-operations/reservations.md#confirm-booking) endpoint. |                                                                                                                                                                                      |
| **Cancel the multi-room gross priced reservation**                                       | Required    | An cancellation push with the same `channelManagerId` as the original reservation and no additional data is sent to the [Process group](/channel-manager-api/mews-operations/reservations.md#process-group) endpoint.                                                                                                                                                                                                                                                                                                                                                                                                                                                            | The channel manager receives a `{ "clientToken":"[Mews Client Token]", "connectionToken":"[Token of a concrete connection]", "channelManagerId":"[Same id as the original push]", "reservations":[ {"code":"[Same code as the original push]", "confirmationNumber":"[Same confirmation number as the original push]"}]}` push to the [Confirm booking](/channel-manager-api/channel-manager-operations/reservations.md#confirm-booking) endpoint. |                                                                                                                                                                                      |
| **Send a net priced reservation with 3 spaces on 2 rate plans and varied daily rates**   | Required    | A reservation push with three bookings in the [`reservations`](/channel-manager-api/mews-operations/reservations.md#reservation) collection, unique `ratePlanCode` properties and different daily rates for each date is sent to the [Process Group](/channel-manager-api/mews-operations/reservations.md#process-group) endpoint.                                                                                                                                                                                                                                                                                                                                               | The channel manager receives a `{ "clientToken":"[Mews Client Token]", "connectionToken":"[Token of a concrete connection]", "channelManagerId":"[Id sent in the reservation push]", "reservations":[ {"code":"[Code sent in the reservation push]", "confirmationNumber":"[Mews confirmation number]"}]}` push to the [Confirm booking](/channel-manager-api/channel-manager-operations/reservations.md#confirm-booking) endpoint.                | Multi-booking reservations must be sent as 1 reservation collection in all cases.                                                                                                    |
| **Add/remove a space and add/remove dates from the multi-room net priced reservation**   | Required    | A modification push with the same `channelManagerId` and Reservation [`code`](/channel-manager-api/mews-operations/reservations.md#reservation)s as the original reservation, and changes to 2 of the 3 bookings in the [`reservations`](/channel-manager-api/mews-operations/reservations.md#reservation) collection.                                                                                                                                                                                                                                                                                                                                                           | The channel manager receives a `{ "clientToken":"[Mews Client Token]", "connectionToken":"[Token of a concrete connection]", "channelManagerId":"[Same id as the original push]", "reservations":[ {"code":"[Same code as the original push]", "confirmationNumber":"[Same confirmation number as the original push]"}]}` push to the [Confirm booking](/channel-manager-api/channel-manager-operations/reservations.md#confirm-booking) endpoint. |                                                                                                                                                                                      |
| **Cancel the multi-room net priced reservation**                                         | Required    | An cancellation push with the same `channelManagerId` as the original reservation and no additional data is sent to the [Process group](/channel-manager-api/mews-operations/reservations.md#process-group) endpoint.                                                                                                                                                                                                                                                                                                                                                                                                                                                            | The channel manager receives a `{ "clientToken":"[Mews Client Token]", "connectionToken":"[Token of a concrete connection]", "channelManagerId":"[Same id as the original push]", "reservations":[ {"code":"[Same code as the original push]", "confirmationNumber":"[Same confirmation number as the original push]"}]}` push to the [Confirm booking](/channel-manager-api/channel-manager-operations/reservations.md#confirm-booking) endpoint. |                                                                                                                                                                                      |
| **Send a reservation with a product attached**                                           | Optional    | A reservation push with a least 1 mapped product in the [`Extra` collection](/channel-manager-api/mews-operations/reservations.md#extra) is sent to the [Process group](/channel-manager-api/mews-operations/reservations.md#process-group) endpoint.                                                                                                                                                                                                                                                                                                                                                                                                                            | The channel manager receives a `{ "clientToken":"[Mews Client Token]", "connectionToken":"[Token of a concrete connection]", "channelManagerId":"[Id sent in the reservation push]", "reservations":[ {"code":"[Code sent in the reservation push]", "confirmationNumber":"[Mews confirmation number]"}]}` push to the [Confirm booking](/channel-manager-api/channel-manager-operations/reservations.md#confirm-booking) endpoint.                | These products must be manually mapped before certification. This test can be combined with the single reservation test. If supported, needs to be tested with gross and net prices. |

## Error Tests

All error messages from the channel manager to Mews must use the error codes listed in [Synchronous error response](/channel-manager-api/guidelines/responses.md#synchronous-error-response) and clearly state in the error `message` field a full description of the error. Ideally, advice on how to solve the error should also be included, because these messages are forwarded directly to the property via email.

| Test                                        | Requirement | Scenario                                                                                                                                                                                                   | Expected Result                                                                                                                                                                                                                                                             | Notes                                                                                                                                                                                                                                                        |
| ------------------------------------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **System errors**                           | Required    |                                                                                                                                                                                                            | A list of the error response `codes` and `messages` for all potential system errors, including timeout errors, maintenance errors, and general downtime errors.                                                                                                             | These must comply with the [synchronous simple response](/channel-manager-api/guidelines/responses.md#synchronous-simple-response) requirements including the correct error `code` and a clear error `message`.                                              |
| **Unknown reservation error**               | Required    | Mews will push an invalid reservation and send a confirmation to the channel manager.                                                                                                                      | The channel manager returns `{ "success": false, "errors":[{ "code": 2, "message": "Reservation {mewsConfirmationNumber} is not recorded in the channel manager." }]}`.                                                                                                     | These must comply with the [synchronous simple response](/channel-manager-api/guidelines/responses.md#synchronous-simple-response) requirements including the correct error `code` and a clear error `message`.                                              |
| **Unmapped Space code error**               | Required    | An availability push with an unmapped Space type code is sent from the test hotel to the [Update availability](/channel-manager-api/channel-manager-operations/inventory.md#update-availability) endpoint. | The channel manager returns `{ "success": false, "errors":[ { "code": 10, "message": "e.g. Unknown space type category code.", "categoryCode": "ABC" } ] }` as per [synchronous simple response](/channel-manager-api/guidelines/responses.md#synchronous-simple-response). | The response must have the unmapped Space type code and comply with the [synchronous simple response](/channel-manager-api/guidelines/responses.md#synchronous-simple-response) requirements including the correct error `code` and a clear error `message`. |
| **Unmapped Rate code error**                | Required    | A rate push with an unmapped Rate plan code is sent from the test hotel to the [Update prices](/channel-manager-api/channel-manager-operations/inventory.md#update-prices) endpoint.                       | The channel manager returns `{ "success": false, "errors":[{ "code": 9, "message": "e.g. Unknown rate code.", "rateCode": "ABC" }]}` as per [synchronous simple response](/channel-manager-api/guidelines/responses.md#simple-response)                                     | The response must have the unmapped Rate code and comply with the [synchronous simple response](/channel-manager-api/guidelines/responses.md#synchronous-simple-response) requirements including the correct error `code` and a clear error `message`.       |
| **Connection inactive or not set up error** | Required    | The channel manager integration for this property is deactivated on the channel manager side and then a full inventory push is sent from the test property to the channel manager's endpoints.             | The channel manager returns `{ "success": false, "errors":[{ "code": 3, "message": "e.g. The property connection is missing or inactive." }]}`                                                                                                                              | These must comply with the [synchronous simple response](/channel-manager-api/guidelines/responses.md#synchronous-simple-response) requirements including the correct error `code`, either 3 or 8, and a clear error `message`.                              |
| **Invalid reservations**                    | Required    | The channel manager sends an invalid reservation, e.g. one that fails basic business rules such as having a start date later than the end date.                                                            | Mews returns an appropriate processing error (error code 7), which explains why the reservation cannot be created in Mews.                                                                                                                                                  | The channel manager logs the error and does not re-send the invalid reservation. If possible, the channel manager fixes the error on its own and re-sends a valid reservation.                                                                               |


---

# 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://docs.mews.com/channel-manager-api/your-journey/certification-tests.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.
