Testing and Certification
Follow the testing and certification process for the Channels Plus API to validate your integration and prepare for go-live with SiteMinder.
This guide helps you test and certify that all required integration features are working. You can use it on your own for testing, and once you are confident in the results, the Partner Integrations team will review your readiness.
Instructions
To use this guide, make sure you have access to the Partner Portal. The Deals feature is required, so create a deal using the portal. After the deal is approved by a test property, use the deal code to send requests. This guide includes a series of scenarios to test all Channels Plus API features.
Test Scenarios
This outlines the use cases that a partner must successfully complete in order to achieve certification for the Channels Plus Channel API.
The purpose of this endpoint is to allow the partner to retrieve a list of properties on Channels Plus within a certain lat, long & radius boundary that matches their search criteria.
The following are mandatory query parameters for the "Get Properties" request:
latitude
longitude
checkin
checkout
number of rooms and occupancy details. There are two options. You can only use one of the following options in the request, not both:
totalRooms, totalAdults, and totalChildren
rooms (see sample in scenario 3)
1. Mandatory fields with 1-night room stay for total occupancy Call the get properties endpoint with mandatory elements only to retrieve a list of properties within the default radius of a lat/long boundary for a stay of more than 1 night. For this scenario use just the total adults and children for the entire reservation.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/properties?latitude=-33.9&longitude=151.18&checkin=2025-04-09&checkout=2025-04-11&totalRooms=1&totalAdults=2&totalChildren=1
View Sample Request and Response: https://www.postman.com/siteminder-apis/channels/example/31209038-53e236cb-58be-425d-be11-4c868d2c05db
2. Mandatory fields with more than 1 night with pagination Call the get properties endpoint with mandatory elements only to retrieve a list of properties within the default radius of a lat/long boundary for a stay of more than 1 night. For this scenario use just the total adults and children for the entire reservation. Request for the second page of this response.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/properties?latitude=-33.9&longitude=151.18&checkin=2025-04-12&checkout=2025-04-14&totalRooms=1&totalAdults=2&totalChildren=1&perPage=10&page=1
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-4f59a37c-98ff-4e29-a724-de6b375efba0
3. Mandatory fields with 2 room stay Call the get properties endpoint with mandatory elements only to retrieve a list of properties within the default radius of a lat/long boundary for a stay of more than 1 night. For this scenario provide a breakdown of adult & child occupancy for a 2 room stay.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/properties?latitude=-33.9&longitude=151.18&checkin=2025-04-12&checkout=2025-04-14&rooms[0][adults]=2&rooms[0][children]=1&rooms[1][adults]=2&rooms[1][children]=1
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-d02dc4af-59df-475f-96dd-efb9617da2a2
4. Mandatory fields within a set radius Call the get properties endpoint with mandatory elements only to retrieve a list of properties within a specified radius of a lat/long boundary for a stay of more than 1 night. For this scenario use just the total adults and children for the entire reservation.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/properties?latitude=-33.9&longitude=151.18&checkin=2025-04-12&checkout=2025-04-14&totalRooms=1&totalAdults=2&totalChildren=1&radius=50
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-82c3aa91-7aaa-4b56-8ab2-f7d6a8bc115b
5. Mandatory fields and specific deals only Call the get properties endpoint with mandatory elements only to retrieve a list of properties within the default radius of a lat/long boundary for a stay of more than 1 night. For this scenario use just the total adults and children for the entire reservation. Additionally specify a deal code and set the deal only flag to receive rates that are part of a deal only.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/properties?latitude=-33.9&longitude=151.18&checkin=2025-04-12&checkout=2025-04-14&totalRooms=1&totalAdults=2&totalChildren=1&dealCodes=bd06c1c5-7efb-47f8-b269-454f48b0fa0e&dealOnly=true
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-a35d1b9c-e1b4-433c-b26c-92bd139b7f87
6. Invalid latitude and longitude Call the get properties endpoint with an invalid lat/long and receive an error.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/properties?latitude=33.9test&longitude=151.18test&checkin=2025-04-12&checkout=2025-04-14&totalRooms=1&totalAdults=2&totalChildren=1
Error:
{"errors":[{"code":"InvalidInputError","message":"should be number","meta":{"type":"number","params":{"type":"number"},"keyword":"type","dataPath":".query.latitude","schemaPath":"#/properties/query/properties/latitude/type"}},{"code":"InvalidInputError","message":"should be number","meta":{"type":"number","params":{"type":"number"},"keyword":"type","dataPath":".query.longitude","schemaPath":"#/properties/query/properties/longitude/type"}}]}
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-eaa9dbfc-7a06-4896-a2fb-b4b1b89d2241
The purpose of this endpoint is to allow the partner to retrieve detailed information and room rates on Channels Plus for a specific property.
Mandatory Query Parameters for the Get Property Request:
uuid: Unique identifier for the property
checkin
checkout
number of rooms and occupancy details
1. Mandatory fields with total occupancy set Call the get property endpoint with mandatory elements only to retrieve a list of room rates at the property for a stay of more than 1 night. For this scenario, use the entire reservation's total number of adults and children.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/properties/160efac8-7e63-43b2-a1f3-6dbe2cdcfd8b?checkin=2025-01-11&checkout=2025-01-13&totalRooms=1&totalAdults=2&totalChildren=1
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-94e41b09-e0dd-4067-97a8-cbfbd2dc48ce
2. Mandatory fields with room occupancy set Call the get property endpoint with mandatory elements only to retrieve a list of room rates at the property for a stay of more than 1 night. For this scenario, provide a breakdown of adult & child occupancy for a 2-room stay.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/properties/160efac8-7e63-43b2-a1f3-6dbe2cdcfd8b?checkin=2025-03-04&checkout=2025-03-06&rooms[0][adults]=2&rooms[0][children]=0&rooms[1][adults]=2&rooms[1][children]=1
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-3f03419b-f7a7-4c6b-9f7b-9c11cb929a35
3. Mandatory fields with deal only Call the get property endpoint with mandatory elements only to retrieve a list of room rates at the property for a stay of more than 1 night. For this scenario, use the entire reservation's total number of adults and children. Additionally, specify a deal code to receive rates that are part of the deal only.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/properties/160efac8-7e63-43b2-a1f3-6dbe2cdcfd8b?checkin=2025-04-19&checkout=2025-04-21&totalRooms=1&totalAdults=2&totalChildren=1&dealCode=90508fbd-2b33-44dd-9eb0-948ec4ea086e
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-27ceaa97-18d3-4f5a-bf17-6b633c9333f6
4. Invalid Property Call the get property endpoint with an invalid property uuid and receive an error.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/properties/invalid?checkin=2025-04-19&checkout=2025-04-21&totalRooms=1&totalAdults=2&totalChildren=1
Error:
{"errors":[{"code":"PropertyNotFoundError","message":"property with spid=invalid not found"}]}
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-310e52f9-5225-4a8b-b6d6-87fd4d4b956b
The purpose of this endpoint is to allow the partner to temporarily lock a reservation for a 15-minute window, so the inventory is not booked by another Channels Plus Channel.
1. Valid room rate Call the lock a reservation endpoint with a valid array of room rate bookings. Do not set the deal code and deal flag.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/properties/160efac8-7e63-43b2-a1f3-6dbe2cdcfd8b/reservations
Sample Body:
{
"checkin": "2025-04-19",
"checkout": "2025-04-21",
"rooms": [
{
"roomRateUuid": "2298f8f6-fb91-4095-b225-9290b6d3c231",
"adults": 2,
"children": 1
}
]
}
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-3d079952-a5b6-406f-8180-8ce40a3bccc1
2. Valid room rate with deal code Call the lock a reservation endpoint with a valid array of room rate bookings. Set the deal code and deal flag.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/properties/160efac8-7e63-43b2-a1f3-6dbe2cdcfd8b/reservations
Sample Body:
{
"checkin": "2025-04-19",
"checkout": "2025-04-21",
"dealCode": "90508fbd-2b33-44dd-9eb0-948ec4ea086e",
"rooms": [
{
"roomRateUuid": "2298f8f6-fb91-4095-b225-9290b6d3c231",
"adults": 2,
"children": 1,
"applyDeal":true
}
]
}
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-d13b537c-69e5-4f9b-9818-0d8745ba5f76
3. Invalid room rate Call the lock a reservation endpoint with an invalid room rate UUID and receive an error.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/properties/160efac8-7e63-43b2-a1f3-6dbe2cdcfd8b/reservations
Sample Body:
{
"checkin": "2025-04-19",
"checkout": "2025-04-21",
"rooms": [
{
"roomRateUuid": "invalid",
"adults": 2,
"children": 1
}
]
}
Error:
{"errors":[{"code":"RoomRateNotFoundError","message":"Some room rates in roomRateUuids=[invalid] not found"}]}
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-efffbbd3-cea2-4877-adcb-10c1db54ace0
4. Valid room rate with netInvoicing Note: This is available to partners with a Net Invoicing agreement only, not available to partners operating under a Gross Invoicing model. Call the lock a reservation endpoint with a valid array of room rate bookings. Set the netInvoicing to true
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/properties/160efac8-7e63-43b2-a1f3-6dbe2cdcfd8b/reservations
Sample Body:
{
"checkin": "2025-04-19",
"checkout": "2025-04-21",
"netInvoicing": true,
"rooms": [
{
"roomRateUuid": "2298f8f6-fb91-4095-b225-9290b6d3c231",
"adults": 2,
"children": 1
}
]
}
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-dbc75b5c-1865-497d-868a-ce9b9d0a02a5
The purpose of this endpoint is to allow the partner to confirm a temporarily locked reservation so the inventory is not booked by another non-Channels Plus Channel.
1. Confirm reservation using credit card information Call the confirm reservation endpoint with a credit card payment type with valid card type, card metadata and guest information.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/reservations/48609eca-3/confirmation
Sample Body:
{
"paymentMethod":"CreditCard",
"cardNumber": 4444333322221111,
"cardholderName": "FirstName LastName",
"cardExpiry": "04/2027",
"cardType": "VI",
"cardCvv": "123",
"guestTitle": "Mr",
"guestFirstName": "FirstName",
"guestLastName": "LastName",
"guestEmail": "[email protected]",
"guestPhoneNumber": "708-406-5153",
"guestAddress": "612 Rusty Glens",
"guestCity": "Fayetteville",
"guestState": "Ava Orchard",
"guestPostcode": "1234",
"guestCountry": "Norfolk Island",
"guestRemarks": "This is for testing purposes",
"rooms": [
{
"roomUuid": "96b1f3bf-eb08-4f85-b059-09e1f3259bab",
"guestTitle": "Mr",
"guestFirstName": "FirstName",
"guestLastName": "LastName",
"guestRemarks": "This is a test"
}
]
}
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-733e1736-5df0-4d36-b7fe-c7cc870574f9
2. Confirm reservation with a Virtual Credit Card Call the confirm reservation endpoint with a virtual credit card payment type with valid card type, card metadata and guest information.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/reservations/55bfe5bd-3/confirmation
Sample Body:
{
"paymentMethod":"VirtualCreditCard",
"vccActivationDateTime": "2024-04-25T13:58:56.450Z",
"vccDeactivationDateTime": "2025-05-06T13:58:56.450Z",
"vccCurrency": "AUD",
"vccBalance": 200.2,
"cardNumber": 4444333322221111,
"cardholderName": "FirstName LastName",
"cardExpiry": "07/2025",
"cardType": "VI",
"cardCvv": "123",
"guestTitle": "Mr",
"guestFirstName": "FirstName",
"guestLastName": "LastName",
"guestEmail": "[email protected]",
"guestPhoneNumber": "<string>",
"guestAddress": "1 Sydney St",
"guestCity": "Sydney",
"guestState": "NSW",
"guestPostcode": "2000",
"guestCountry": "Australia",
"guestRemarks": "Test remarks",
"rooms": [
{
"roomUuid": "f88d7264-1c12-4aaa-9347-a6cf676a8ba7",
"guestTitle": "Mr",
"guestFirstName": "FirstName",
"guestLastName": "LastName",
"guestRemarks": "Test remarks"
}
]
}
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-1c0e4a47-d190-4ad7-b9d3-af288c81ab8d
3. Expired Reservation Call the confirm reservation endpoint with a valid reservation UUID that has now timed out to receive error.
Note: The timeout window is 15 minutes
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/reservations/6c250a6a-3/confirmation
Sample Body:
{
"paymentMethod":"VirtualCreditCard",
"vccActivationDateTime": "2024-06-29T19:09:56.450Z",
"vccDeactivationDateTime": "2025-05-10T19:09:56.450Z",
"vccCurrency": "AUD",
"vccBalance": 100.1,
"cardNumber": 4444333322221111,
"cardholderName": "Test Test",
"cardExpiry": "07/2025",
"cardType": "VI",
"cardCvv": "123",
"guestTitle": "Mr",
"guestFirstName": "Test",
"guestLastName": "Test",
"guestEmail": "[email protected]",
"guestPhoneNumber": "<string>",
"guestAddress": "1 Sydney St",
"guestCity": "Sydney",
"guestState": "NSW",
"guestPostcode": "2000",
"guestCountry": "Australia",
"guestRemarks": "Test remarks",
"rooms": [
{
"roomUuid": "365568b1-b7e1-4195-9d6d-9db6bffcea44",
"guestTitle": "Mr",
"guestFirstName": "Test",
"guestLastName": "Test",
"guestRemarks": "Test remarks"
}
]
}
Error:
{
"errors": [
{
"code": "ReservationNotFoundError",
"message": "pending reservation not found"
}
]
}
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-37f9e854-c1aa-414a-ad0a-e3d0b6f1878e
4. Non-existing Reservation Call the confirm reservation endpoint with an invalid reservation UUID.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/reservations/invalidbookingRef/confirmation
Sample Body:
{
"paymentMethod":"VirtualCreditCard",
"vccActivationDateTime": "2024-06-29T19:09:56.450Z",
"vccDeactivationDateTime": "2025-05-10T19:09:56.450Z",
"vccCurrency": "AUD",
"vccBalance": 100.1,
"cardNumber": 4444333322221111,
"cardholderName": "Test Test",
"cardExpiry": "07/2025",
"cardType": "VI",
"cardCvv": "123",
"guestTitle": "Mr",
"guestFirstName": "Test",
"guestLastName": "Test",
"guestEmail": "[email protected]",
"guestPhoneNumber": "<string>",
"guestAddress": "1 Sydney St",
"guestCity": "Sydney",
"guestState": "NSW",
"guestPostcode": "2000",
"guestCountry": "Australia",
"guestRemarks": "Test remarks",
"rooms": [
{
"roomUuid": "365568b1-b7e1-4195-9d6d-9db6bffcea44",
"guestTitle": "Mr",
"guestFirstName": "Test",
"guestLastName": "Test",
"guestRemarks": "Test remarks"
}
]
}
Error:
{
"errors": [
{
"code": "ReservationNotFoundError",
"message": "pending reservation not found"
}
]
}
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-9aaf1801-cd60-4f3e-98ef-2b0f8df37323
The purpose of this endpoint is to allow the partner to modify the guest details on a confirmed reservation.
1. Valid modify guest details Call the modify reservation endpoint with a valid reservation UUID and valid guest details.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/reservations/48609eca-3
Sample Body:
{
"guestTitle": "Ms",
"guestFirstName": "new_FirstName",
"guestLastName": "new_LastName",
"guestEmail": "[email protected]",
"guestPhoneNumber": "337-861-3753",
"guestAddress": "27314 Leann Tunnel",
"guestCity": "new_city",
"guestState": "new_state",
"guestPostcode": "new_Postcode",
"guestCountry": "new_country",
"guestRemarks": "new_guestRemarks",
"rooms": [
{
"roomUuid": "4b0e1df9-f49d-4655-92e3-eac619299c3d",
"guestTitle": "Ms",
"guestFirstName": "new_FirstName",
"guestLastName": "new_LastName",
"guestRemarks": "new_guestRemarks"
}
]
}
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-6b68057e-4433-4974-afd2-f4f491aad059
2. Modify guest details whilst guest checked-in Call the modify reservation endpoint with a valid reservation UUID for a reservation that has already been checked in.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/reservations/48609eca-3
Sample Body:
{
"guestTitle": "Ms",
"guestFirstName": "new_FirstName",
"guestLastName": "new_LastName",
"guestEmail": "[email protected]",
"guestPhoneNumber": "337-861-3753",
"guestAddress": "27314 Leann Tunnel",
"guestCity": "new_city",
"guestState": "new_state",
"guestPostcode": "new_Postcode",
"guestCountry": "new_country",
"guestRemarks": "new_guestRemarks",
"rooms": [
{
"roomUuid": "4b0e1df9-f49d-4655-92e3-eac619299c3d",
"guestTitle": "Ms",
"guestFirstName": "new_FirstName",
"guestLastName": "new_LastName",
"guestRemarks": "new_guestRemarks"
}
]
}
Error:
{
"errors": [
{
"code": "CannotModifyAfterCheckInError",
"message": "cannot modify on or after the check-in date",
"meta": {
"traceToken": "5012c8c8-0c7d-480f-9604-c30944ea548f"
}
}
]
}
3. Non-existing reservation Call the modify reservation endpoint with an invalid reservation UUID.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/reservations/d05492f1-x
Sample Body:
{
"guestTitle": "Ms",
"guestFirstName": "new_FirstName",
"guestLastName": "new_LastName",
"guestEmail": "[email protected]",
"guestPhoneNumber": "337-861-3753",
"guestAddress": "27314 Leann Tunnel",
"guestCity": "new_city",
"guestState": "new_state",
"guestPostcode": "new_Postcode",
"guestCountry": "new_country",
"guestRemarks": "new_guestRemarks",
"rooms": [
{
"roomUuid": "4b0e1df9-f49d-4655-92e3-eac619299c3d",
"guestTitle": "Ms",
"guestFirstName": "new_FirstName",
"guestLastName": "new_LastName",
"guestRemarks": "new_guestRemarks"
}
]
}
Error:
{
"errors": [
{
"code": "ReservationNotFoundError",
"message": "reservation not found"
}
]
}
The purpose of this endpoint is to allow the partner to cancel a confirmed reservation within the cancellable period.
1. Cancelled Reservation Call the cancel reservation endpoint with a valid reservation UUID
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/reservations/55bfe5bd-3/cancellation
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-d316e0ae-7074-44ed-aa6d-001604a04067
2. Reservation does not exist Call the cancel a reservation endpoint with an invalid reservation UUID.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/reservations/55bfe5bd-3/cancellation
Error:
{
"errors": [
{
"code": "ReservationNotFoundError",
"message": "reservation not found"
}
]
}
View Sample Request & Response: https://www.postman.com/siteminder-apis/channels/example/31209038-ac3cc23d-d38c-4d11-9588-cd4aeaa39b75
3. Cancelling outside the cancellation period Call the cancel a reservation endpoint with a valid reservation UUID for a reservation that is no longer in a free cancellation period.
Sample Request:
https://tpi-channel-api.preprod.smchannelsplus.com/reservations/328e88f2-3/cancellation
Error:
{
"errors": [
{
"code": "OutsideCancellationPeriodError",
"message": "cannot cancel outside of cancellation period",
"meta": {
"traceToken": "aec1c423-cab9-47ed-9939-636e6e759c8d"
}
}
]
}
View Sample Request & Respons: https://www.postman.com/siteminder-apis/channels/example/31209038-155bf97b-4804-420a-979c-3291ae3d049e
Final Steps
If you are using this guide as a testing checklist and are now ready to begin certification, please contact the Partner Integrations team to confirm your readiness. If you are already in the certification process, complete the form provided via email, ensuring that all required information is accurately included for final review.
Last updated
Was this helpful?