# Release | Create guidebook release

{% hint style="info" %}
**GUIBOs APIs are all REST services, exchanging JSON through HTTP**
{% endhint %}

### A) Create download permission without customization.

**Prerequisite**:\
You have created a guidebook. Every guidebook has a unique ID. This ID is needed to identify the guidebook when starting a release. The external system that triggers the release must know this ID.

<figure><img src="/files/HzgbRew3Oeo59wMHvYND" alt=""><figcaption></figcaption></figure>

Creation of the download permission can be done by calling our REST/https service. This example create downloadpermissions for two devices for the trip "234"

* Replace <mark style="color:orange;">CCCCCC</mark> with the customer ID, you can find this under Account Settings > General Settings > Account ID
* Replace <mark style="color:orange;">xxxxxx-xxxxxx-xxxxxx-xxxxxx</mark> with the API key, you can find this under Account Settings > General Settings > API Key

A release requires a `startdate` and `enddate`, defining the period during which the guidebook can be downloaded and accessed in the app.

Additionally, the `arrivaldate` and `departuredate` are optional but recommended. These dates must fall within the specified start and end dates. When provided, they allow the app to display day-specific content throughout the journey.

Optional parameter `positioning` determines whether the app utilizes positioning features, such as displaying the user's current location on the map and enabling navigation. The default value is set to **true**.

```json
curl --location --request POST 'https://services.schneidergeo.com/content/release/
--header 'Content-Type: application/json' \
--header 'Authorization: xxxxxx-xxxxxx-xxxxxx-xxxxxx' \
--data-raw '
   { 
       "account": "CCCCCC",
       "downloadCode": 556677,
       "guidebookExternalId": "234",
       "startdate": "2024-11-19",
       "enddate": "2024-12-26",
       "arrivaldate":"2024-11-22",
       "departuredate": "2024-12-25",
       "lang": "en",
       "devices": 2,
       "positioning":true
   }
'
```

### B) Create download permission with customization.

**Prerequisite:**

You have previously created the content to be added to the itinerary in a library. In the following example, content from the geodata library with the ID "HOTELS" and from the textlibrary with the ID  "TEXTINFO" is used

<figure><img src="/files/R8gRKkSHW2m3XlOqz2Hq" alt=""><figcaption></figcaption></figure>

In the following example, the hotel "Zur Post" with the external ID "HPO1" is added to the trip "234" for the customer with the booking number/download code "556678".

* Replace <mark style="color:orange;">CCCCCC</mark> with the customer ID, you can find this under Account Settings > General Settings > Account ID
* Replace <mark style="color:orange;">xxxxxx-xxxxxx-xxxxxx-xxxxxx</mark> with the API key, you can find this under Account Settings > General Settings > API Key
* (Optional) Include the email address as a query parameter. As the customization operates in the background, it duplicates the entire guidebook and integrates additional assets. As a result, the API response doesn't contain details about any errors that may occur during this process. However, if you provide an email address, you'll receive notifications regarding any errors encountered.

```json
curl --location --request POST 'https://services.schneidergeo.com/content/release?email=info%40touroperator.eu' \
--header 'Content-Type: application/json' \
--header 'Authorization: xxxxxx-xxxxxx-xxxxxx-xxxxxx' \
--data-raw '
   {
       "account": "CCCCCC",
       "downloadCode": 556678,
       "guidebookExternalId": "234",
       "startdate": "2025-08-19",
       "enddate": "2025-09-05",
       "arrivaldate":"2024-11-22",
       "departuredate": "2024-12-25",
       "lang": "en",
       "devices": 2,
       "accommodation": [
           {
               "externalId":"HPO1",
               "libraryExternalId":"HOTELS",
               "arrivalDate":"2025-09-05",
               "departureDate":"2025-09-06",
               "comment":"A generous breakfast buffet is included"
               
           }
       ],
       "text": [
           {
               "externalId":"COUNTRY_INFO_IT",
               "libraryExternalId":"TEXTINFO"
  
           }
       ]
   }
'
```

### C) Create download permission for resellers

For more information how to use GUIBO's reseller capabilities to automate the publishing of travel docs from operators to resellers, click [here](/publishing/b2b-network.md).

To create a download permission for a reseller per API, you need the Operator ID of the partner account. The operator ID is a three character unique identifier of each GUIBO account.  Please pick the Operator ID  from the partner list. You find it in the culumn **OID**.

Add the parameter `resellerOid` to you API request.

Optionally, you can include the `sellerDownloadCode` parameter to specify a custom code under which the release will be downloadable via the reseller’s account. **Note:** Download codes must be unique within each account. To avoid conflicts, ensure the chosen code is not likely to be reused by the reseller in the future. If you don't set sellerDownloadCode, GUIBO will create a unique code.

```json
curl --location --request POST 'https://services.schneidergeo.com/content/release/
--header 'Content-Type: application/json' \
--header 'Authorization: xxxxxx-xxxxxx-xxxxxx-xxxxxx' \
--data-raw '
   { 
       "account": "CCCCCC",
       "downloadCode": 556677,
       "guidebookExternalId": "234",
       "startdate": "2024-11-19",
       "enddate": "2024-12-31",
       "arrivaldate":"2024-11-22",
       "departuredate": "2024-12-25",
       "lang": "en",
       "devices": 2,
       "resellerOid":"HID",
       "sellerDownloadCode":3344221
   }
'
```

What happens then?

1\) The release link for the traveller will be styled with the color from the reseller's partner account. This is configures in Account Settings > General Settings > Primary color

2\) The logo of the booklet is replaced with the logo of the partner account (please note that this feature is still under development).

### D) Create guidebook release via CSV

1. **Create a Professional service ticket**\
   This step initiates the process by signaling GUIBO about your interest in utilizing the CSV import feature for automatic release creation via your csv files. [https://schneidergeo.atlassian.net/servicedesk/customer/portal/1](https://schneidergeo.atlassian.net/servicedesk/customer/portal/1/group/1/create/79)\
   \
   Please add the following information to the ticket:
   1. **Submit Your Email Address**\
      Send us the email address from which you will be sending the CSV files in the future. This is necessary to ensure that the CSV files come from a trusted source.
   2. **Add a Sample CSV File**\
      Provide a sample CSV file that includes the following columns.&#x20;
      1. downloadcode&#x20;
      2. Guidebook ID&#x20;
      3. Language&#x20;
      4. Arrival date &#x20;
      5. Departure date&#x20;
      6. Number of Devices<br>
2. **Configuration of the Importer for Your Account**\
   GUIBO will configure the importer specifically for your account, ensuring that it can correctly process your CSV files.
3. **Test Import**\
   Send your CSV file to <import@schneidergeo.com> for a test import. This step is crucial to verify that the importer is set up correctly for your account and that your CSV files are formatted correctly.

### E) Create guidebook release via CSV with personalization

**E) Create guidebook release via CSV with personalization**

To personalize releases, your content (e.g. hotels) must be stored in a [library in GUIBO](https://docs.guibo.travel/get-started/getting-started/prepare-library#why-libraries-matter). To identify a hotel during import, you can use one of two options:

* **Option 1:** Enter the **internal GUIBO ID** of the hotel directly in the CSV column.
* **Option 2:** If your CSV is generated by an external system (e.g. a booking system), you can enter the **external ID from that system** in the CSV column. In this case, make sure the same external ID is also saved in the corresponding hotel entry in GUIBO so the mapping works correctly.

**1. Create a Professional Service Ticket** \
Use the title: *"Personalized Release via CSV for COMPANYNAME."* <https://schneidergeo.atlassian.net/servicedesk/customer/portal/1/group/1/create/79>

**2. Update Your CSV File** \
Add one or more extra columns to your CSV — one for each Hotel/POI you want to include. Each column should contain the ID of the corresponding POI (either the internal GUIBO ID or the external system ID).

**3. Import the CSV** \
Import the CSV into GUIBO as usual. The process is the same as before.

**4. Test the Release** \
Download the release on your [test device](https://docs.guibo.travel/faq/how-can-i-test-my-guidebooks-on-the-smarthone) to check the import result.


---

# 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.guibo.travel/developers/releases-api/release-or-create-guidebook-release.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.
