# Quick Start

SiteConnect connects your booking channel with SiteMinder's distribution platform. Through SiteConnect, your channel can provide room type and rate plan mapping configuration, receive availability, restrictions, and rates from SiteMinder, and push reservations, modifications, and cancellations.

**API Components:**

* **Configuration**: Rooms and Rates
* **Inventory**: Availability, Restrictions, Rates (PDP and OBP)
* **Reservations**: Push

{% hint style="success" %}
Explore all components in the [API Overview](/siteconnect-api/guides/api-overview.md).
{% endhint %}

***

## Before You Begin

### Partnership Required

Access to SiteConnect requires an active partnership agreement with SiteMinder. Once your agreement is in place, you will receive your test environment details.

<a href="https://www.siteminder.com/integrations/apply-now/" class="button primary">Become a SiteMinder Partner</a>

{% hint style="info" %}
**You don't need to wait for your test environment to start development.** You can begin building and testing immediately. See [Make Your First Call](#make-your-first-call) below or explore requests directly in the [Postman](#explore-with-postman) collection.
{% endhint %}

### What You'll Provide to SiteMinder

Before SiteMinder can set up your test environment, provide the following:

<table><thead><tr><th width="160.5185546875">Item</th><th>Details</th></tr></thead><tbody><tr><td>Inventory SOAP endpoint</td><td>Your HTTPS endpoint URL for Rooms and Rates, Availability and Restrictions, and Rates</td></tr><tr><td>Credentials</td><td><code>username</code> and <code>password</code> for SiteMinder to authenticate against your Inventory SOAP endpoint</td></tr><tr><td>Hotel Code</td><td><code>HotelCode</code></td></tr></tbody></table>

### What You'll Receive from SiteMinder

Once SiteMinder has received your details, we will provide:

<table><thead><tr><th width="174.0133056640625">Item</th><th>Details</th></tr></thead><tbody><tr><td>Reservation SOAP endpoint</td><td><a href="https://tpi-cm-apac.preprod.siteminderlabs.com/siteconnect/services">https://tpi-cm-apac.preprod.siteminderlabs.com/siteconnect/services</a></td></tr><tr><td>Credentials</td><td><code>username</code> and <code>password</code></td></tr><tr><td>Identifier</td><td><code>RequestorID</code> (Channel Code)</td></tr><tr><td>Hotel Test Account</td><td>Platform that includes pre-configured room types and rate plans, an inventory simulator to push availability, restrictions, and rates, and to verify pushed reservations.</td></tr></tbody></table>

***

## Set Up Your Environment

### Authentication

SiteConnect uses **channel-level authentication** — one set of credentials covers all properties. Credentials are passed via `wsse:UsernameToken` for SOAP requests.

{% code overflow="wrap" %}

```xml
<SOAP-ENV:Header>
  <wsse:Security SOAP-ENV:mustUnderstand="1"
    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <wsse:UsernameToken>
      <wsse:Username>USERNAME</wsse:Username>
      <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">PASSWORD</wsse:Password>
    </wsse:UsernameToken>
  </wsse:Security>
</SOAP-ENV:Header>
```

{% endcode %}

### API Specification Files

#### SOAP (WSDL)

* **Standard**: <https://tpi-cm-siteconn.preprod.siteminderlabs.com/reservation-gateway/services/siteconnect_v1.1.0.wsdl>
* **Inlined (recommended for .NET)**: <https://tpi-cm-siteconn.preprod.siteminderlabs.com/reservation-gateway/services/siteconnect_v1.1.0_inlined.wsdl>

{% hint style="warning" %}
Use the inlined WSDL for .NET clients — the standard version may cause issues with `wsdl.exe` or `svcutil.exe` due to OTA specifications.
{% endhint %}

***

## Make Your First Call

The first component every SiteConnect integration must implement is [Rooms and Rates](/siteconnect-api/reference/rooms-and-rates.md) — SiteMinder calls your endpoint to retrieve the room type and rate plan mapping configured in your system for a given property. This mapping is the foundation for all subsequent inventory and reservation operations.

{% hint style="info" %}
SiteMinder initiates this call — your endpoint must be live, accepting incoming requests, and returning a valid room and rate configuration in the response before we can set up your dedicated test environment.
{% endhint %}

{% stepper %}
{% step %}

### Prepare your endpoint

Your endpoint must accept `OTA_HotelAvailRQ` SOAP requests over HTTPS. SiteMinder will send the following request to retrieve room and rate mapping for a given property:

{% code overflow="wrap" expandable="true" %}

```xml
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Header>
    <wsse:Security SOAP-ENV:mustUnderstand="1"
      xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
      <wsse:UsernameToken>
        <wsse:Username>USERNAME</wsse:Username>
        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">PASSWORD</wsse:Password>
      </wsse:UsernameToken>
    </wsse:Security>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <OTA_HotelAvailRQ
      xmlns="http://www.opentravel.org/OTA/2003/05"
      EchoToken="ed8835ff-6198-4f38-b589-3058397f677c"
      TimeStamp="2024-07-06T15:27:41+00:00"
      Version="1.0"
      AvailRatesOnly="true">
      <AvailRequestSegments>
        <AvailRequestSegment AvailReqType="Room">
          <HotelSearchCriteria>
            <Criterion>
              <HotelRef HotelCode="HOTELCODE"/>
            </Criterion>
          </HotelSearchCriteria>
        </AvailRequestSegment>
      </AvailRequestSegments>
    </OTA_HotelAvailRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endcode %}
{% endstep %}

{% step %}

### Validate credentials

Your endpoint must validate the `wsse:UsernameToken` on every incoming request. If the credentials do not match, return the following error response:

{% code overflow="wrap" expandable="true" %}

```xml
<SOAP-ENV:Envelope
	xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
	<SOAP-ENV:Header/>
	<SOAP-ENV:Body>
		<OTA_HotelAvailRS
			xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
			<Errors>
				<Error Type="4" Code="448">Invalid Username and/or Password</Error>
			</Errors>
		</OTA_HotelAvailRS>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endcode %}

{% hint style="warning" %}
**Invalid Username and/or Password** — Return this error when the `wsse:Username` and `wsse:Password` in the incoming request do not match your configured credentials.
{% endhint %}
{% endstep %}

{% step %}

### Validate hotel code

Your endpoint must verify that the `HotelCode` in the request matches a property configured in your system. If not found, return the following error response:

{% code overflow="wrap" expandable="true" %}

```xml
<SOAP-ENV:Envelope
	xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
	<SOAP-ENV:Header/>
	<SOAP-ENV:Body>
		<OTA_HotelAvailRS xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
			<Errors>
				<Error Type="6" Code="392">Hotel not found for HotelCode=XXXXXX</Error>
			</Errors>
		</OTA_HotelAvailRS>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endcode %}

{% hint style="warning" %}
**Hotel not found for HotelCode=XXXXXX** — Return this error when the `HotelCode` in the incoming request does not match any property configured in your system.
{% endhint %}
{% endstep %}

{% step %}

### Return a Rooms and Rates response

Once credentials and hotel code are validated, return an `OTA_HotelAvailRS` response containing the room types and rate plans configured for the requested property.

SiteMinder requires at least **two room types**, each with at least **two rate plans**.

{% code overflow="wrap" expandable="true" %}

```xml
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Header/>
  <SOAP-ENV:Body>
    <OTA_HotelAvailRS xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
      <Success/>
      <RoomStays>
        <RoomStay>
          <RoomTypes>
            <RoomType RoomTypeCode="SGL">
              <RoomDescription Name="Single Room">
                <Text>Single bed for single occupancy.</Text>
              </RoomDescription>
              <Occupancy AgeQualifyingCode="10" MaxOccupancy="2"/>
            </RoomType>
          </RoomTypes>
          <RatePlans>
            <RatePlan RatePlanCode="BAR">
              <RatePlanDescription Name="Best Available Rate">
                <Text>Best Available Rate.</Text>
              </RatePlanDescription>
            </RatePlan>
          </RatePlans>
        </RoomStay>
        <!-- Additional RoomStay elements for each room type / rate plan combination -->
      </RoomStays>
    </OTA_HotelAvailRS>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endcode %}
{% endstep %}
{% endstepper %}

{% hint style="success" %}
**You're ready for the next step.** Once your endpoint handles the scenarios above, share with us your endpoint URL, credentials, and hotel code. We'll set up your dedicated test account to continue development.
{% endhint %}

## Explore with Postman

SiteMinder's SiteConnect Postman workspace contains collections and environments to help you build, test, and validate your integration for certification. Fork the collections and environments to your own Postman account to get started.

→ [SiteConnect Postman Workspace](https://www.postman.com/siteminder-apis/siteconnect/overview)

### Authentication Details

Update the environment variables with your credentials once your test environment is set up.

{% hint style="info" %}
For full certification scenario coverage, see [Testing and Certification](https://developer.siteminder.com/siteminder-apis/channels/introduction/siteconnect/testing-and-certification).
{% 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/siteconnect-api/guides/quick-start.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.
