# Import

{% hint style="warning" %}
It is a prerequisite to develop to the SiteMinder [**Reservations Upload**](/pmsxchange-api/reference/reservations/upload.md) to gain access to the **Reservation Import**. To discuss further, reach out to our Ecosystems team via <ecosystem.team@siteminder.com>.
{% endhint %}

## What is Reservation Import?

**Reservation Import** is a one-time bulk retrieval method where the Property Management System (PMS) triggers an import job to receive all active reservations from the SiteMinder Platform. This integration is essential during initial PMS setup, allowing hotels to migrate their existing reservation data from SiteMinder into the new PMS without manual re-entry. Once triggered, SiteMinder processes all active future reservations and delivers them to the PMS using the standard reservation delivery method.

{% hint style="warning" %}
To implement **Reservations Import**, the PMS must certify for [Reservations PUSH](https://developer.siteminder.com/siteminder-apis/pms-rms/introduction/pmsxchange/api-reference/reservations/reservations-push) or [Reservations PULL](https://developer.siteminder.com/siteminder-apis/pms-rms/introduction/pmsxchange/api-reference/reservations/reservations-pull).
{% endhint %}

#### Considerations

* **Delivery Method**: Reservations will be delivered to the PMS using the normal reservation delivery method following the import trigger.
* **Failure Notifications**: The hotel will receive standard email reservation notifications if a reservation fails to deliver during the import process.
* **Reservation Scope**: Only active reservations and modifications are included in the import; cancellations are ignored. Active reservations are defined as future reservations that have not checked in yet.
* **Import Duration**: The import duration depends on several factors, including the total number of reservations to process and the volume of live reservations at the hotel.
* **Duplicate Handling**: The import may create duplicate entries in the hotel's PMS if some reservations have already been manually entered. It is not possible to exclude specific reservations from the import.
* **Completion Verification**: Currently, there is no direct way to confirm when the import has completed. A return to the normal frequency of live reservation deliveries typically indicates that the import has finished.

**Usage Note**: This function is intended for use when a hotel integrates with a new PMS. It should not be used to re-deliver reservations that may have failed due to an outage or other issues.

{% hint style="warning" %}
**Authentication Requirements**: The REST components of the pmsXchange API only support PMS-level authentication, which means using the same credentials across all properties. If you’re currently using hotel-level authentication (credentials per property), we recommend switching to PMS-level to ensure compatibility with the REST endpoints.
{% endhint %}

## POST /core-api/pmses/{pmsCode}/hotels/{hotelCode}/reservation-import

> Triggers the import active reservations job for requested hotel.

```json
{"openapi":"3.0.3","info":{"title":"pmsx/core-api","version":"1.0.2"},"servers":[{"url":"https://tpi-pmsx.preprod.siteminderlabs.com"}],"security":[{"basicAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"}},"parameters":{"traceToken":{"name":"X-SM-TRACE-TOKEN","in":"header","description":"traceToken is logged with every log messages for this request","required":true,"schema":{"type":"string"}},"pmsCode":{"in":"path","name":"pmsCode","description":"pmsCode used to identify the pmsx partner","schema":{"type":"string","minLength":1,"maxLength":255},"required":true},"hotelCode":{"in":"path","name":"hotelCode","description":"hotelCode used to identify the hotelier","required":true,"schema":{"type":"string","minLength":1,"maxLength":255}}},"headers":{"X-SM-TRACE-TOKEN":{"schema":{"type":"string"},"description":"trace token"}},"responses":{"BadRequest":{"description":"Invalid request","headers":{"X-SM-TRACE-TOKEN":{"$ref":"#/components/headers/X-SM-TRACE-TOKEN"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"Unauthorized":{"description":"Unauthorized","headers":{"X-SM-TRACE-TOKEN":{"$ref":"#/components/headers/X-SM-TRACE-TOKEN"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"AccessDenied":{"description":"Access denied","headers":{},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"Not Found","headers":{"X-SM-TRACE-TOKEN":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"TooManyRequests":{"description":"Too Many Requests","headers":{"X-SM-TRACE-TOKEN":{"$ref":"#/components/headers/X-SM-TRACE-TOKEN"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"ServerError":{"description":"Unexpected error occurred","headers":{"X-SM-TRACE-TOKEN":{"$ref":"#/components/headers/X-SM-TRACE-TOKEN"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"ServiceUnavailableError":{"description":"Service Unavailable","headers":{"X-SM-TRACE-TOKEN":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}}},"schemas":{"Errors":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/Error"}}}},"Error":{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string","description":"- `invalid` is a generic code indicating an integration property does not match the constraints required by an integration. For more details on the specific property consult `meta.field` and `meta.propertyName`\n- `min` indicates either the field value (numeric) or string length is too small for given integration property. For more details on the specific property consult `meta.field` and `meta.propertyName`\n- `max` indicates either the field value (numeric) or string length is too large for given integration property. For more details on the specific property consult `meta.field` and `meta.propertyName`\n- `required` indicates that a given property that was required, was not specified in the request. Typically used for integration properties. For more details on the specific property consult `meta.field` and `meta.propertyName`\n- `conflict` indicates you are trying to create a resource e.g. pmsHotel which is already present. You will typically have `meta.entity` populated which takes on values `pms`, `pmsHotel`. The `meta.code` field is populated when `meta.entity` is pms and the `meta.uuid` field is populated when `meta.entity` is `pmsHotel`\n- `too-many-requests` indicates that the client has exceeded its API quota. It should wait for at least the specified time in seconds which is provided in the `Retry-After` HTTP header\n- `server` generic error\n- `UnauthorizedError` happens when we cannot authenticate the user\n- `AccessDenied` happens when we know who the user is, but they do not have required permissions to perform the action"},"message":{"description":"additional information on the error","type":"string"},"meta":{"description":"Contains any additional information to enrich the error.\nAll properties are optional.","additionalProperties":true,"type":"object","properties":{"code":{"type":"string","description":"Typically populated with we get a conflict error for the entity pms or when pms or integration is not found"},"uuid":{"type":"string","description":"Typically populated when we get a conflict error for the entity pmsHotel or when pmsHotel or pmsRoomRate is not found"},"entity":{"type":"string","description":"typically populated when a conflict error is raised. Also present in not found errors too"},"field":{"type":"string","description":"name of the field which typically has a validation error."},"propertyName":{"type":"string","description":"populated when the `meta.field` is set the `integrationProperties`. This tells us the property name in question that the error is for."},"dataPath":{"type":"string","description":"returned when there is a syntactic error in the request. That is the request is not compliant with the route."}}}}}}},"paths":{"/core-api/pmses/{pmsCode}/hotels/{hotelCode}/reservation-import":{"post":{"operationId":"importReservations","description":"Triggers the import active reservations job for requested hotel.","tags":["Reservation Import"],"parameters":[{"$ref":"#/components/parameters/traceToken"},{"$ref":"#/components/parameters/pmsCode"},{"$ref":"#/components/parameters/hotelCode"}],"responses":{"202":{"description":"Accepted for reservation import","headers":{"X-SM-TRACE-TOKEN":{"$ref":"#/components/headers/X-SM-TRACE-TOKEN"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/AccessDenied"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/ServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}}}}}}
```

{% 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/pmsxchange-api/reference/reservations/import.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.
