# Product Modify

This endpoint is used to modify the details of a hotel product in the channel’s system.

***

### <mark style="color:yellow;">Endpoint</mark>

<mark style="color:green;background-color:green;">**`POST`**</mark>&#x20;

<div align="left"><figure><img src="https://958347541-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FM9bn2UcBkeqtqixkl5eF%2Fuploads%2FpsybX0n39kUB8Z8WOk4X%2FSandbox%20image.png?alt=media&#x26;token=4ae73d0f-0d1a-4d73-a4e2-673dbc081d6a" alt="" width="56"><figcaption></figcaption></figure></div>

{% code overflow="wrap" %}
```url
https://connect-sandbox.su-api.com/SUAPI/jservice/bdc/product/set
```
{% endcode %}

#### <mark style="color:yellow;">Header</mark>

```xml
-app-id: YOUR_APP_ID
Authorization: YOUR_API_KEY
Content-Type:application/json
```

<table><thead><tr><th width="185">Header</th><th width="85">Type</th><th width="101">Required</th><th>Description</th></tr></thead><tbody><tr><td><code>app-id</code></td><td>string</td><td>Yes</td><td>Your application ID. Required for authentication.</td></tr><tr><td><code>Authorization</code></td><td>string</td><td>Yes</td><td>Your API key. for authorization. Required for authentication.</td></tr><tr><td><code>Content-Type</code></td><td>string</td><td>Yes</td><td>Must be set to <code>application/json</code>.</td></tr></tbody></table>

***

#### <mark style="color:yellow;">Attributes</mark>

`action` <mark style="color:orange;">**string (Required)**</mark>

Specifies the action to be performed. In this case, it is `"modify"`, meaning the request is to modify an existing hotel product or related information.

`hotel_id` <mark style="color:orange;">**string (Required)**</mark>

The unique identifier of the hotel in the system. It associates the hotel product with a specific hotel.

`channel_hotel_id` <mark style="color:orange;">**string (Required)**</mark>

The identifier of the hotel in the channel's system. This links the hotel product to the respective channel.

`channel_room_id` <mark style="color:orange;">**string (Required)**</mark>

The identifier of the specific room type in the channel’s system. This identifies the exact room type being modified.

`channel_rate_id` <mark style="color:orange;">**string (Required)**</mark>

The identifier of the rate plan for the specified room type in the channel’s system. It defines the pricing structure for the room.

`mealplan_code` <mark style="color:orange;">**string (Optional)**</mark>

The code for the meal plan associated with the room. If not provided, a default meal plan may be used.

`min_advanced_booking_offset` <mark style="color:orange;">**string (Optional)**</mark>

Defines the minimum advance booking time required for the room. `"P2D"` means 2 days in advance. The booking should be made at least 2 days before check-in.

`max_advanced_booking_offset` <mark style="color:orange;">**string (Optional)**</mark>

Specifies the maximum time in advance that the room can be booked. `"P3D"` means bookings can be made up to 3 days before check-in.

`cancellation_policy_id` <mark style="color:orange;">**string (Optional)**</mark>

The unique identifier for the cancellation policy. If not provided, it may either be left to the system's default or handled by an override policy.

`override_policy` <mark style="color:orange;">**object (Optional)**</mark>

Defines any custom policies that should override the default policies for specific dates or conditions.

`cancellation_policy_name` <mark style="color:orange;">**string (Optional)**</mark>

The name of the custom cancellation policy to be applied for the given dates.

`book_dates` <mark style="color:orange;">**array of objects (Optional)**</mark>

A list of date ranges when the override policy should apply.

* **`start_date`**: `"2024-11-10"`
* **`end_date`**: `"2024-11-15"`

These date ranges define when the cancellation policy or other overrides will be active.

`active_week_days` <mark style="color:orange;">**array of strings (Optional)**</mark>

A list of active weekdays when the override policy is applicable. This helps to restrict the policy to specific days of the week.

{% hint style="info" %}
Possible values are: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, and Sunday.
{% endhint %}

`value_added_services` <mark style="color:orange;">**object (Optional)**</mark>

Specifies any additional services or packages that are included with the hotel product.

`name` <mark style="color:orange;">**string (Optional)**</mark>

The name of the value-added service package offered with the hotel product.

`services` <mark style="color:orange;">**array of objects (Optional)**</mark>

A list of individual services that are part of the value-added package.

`service_id` <mark style="color:orange;">**integer**</mark>&#x20;

This ID refers to the specific service offered in the value-added package.



***

## <mark style="color:yellow;">**Sample Request**</mark>

```json
{
    "action": "modify",
    "hotel_id": "AWSTEST",
    "channel_hotel_id": "12962495",
    "channel_room_id": "1296249501",
    "channel_rate_id": "49681937",
    "mealplan_code": "19",
    "min_advanced_booking_offset": "P2D",
    "max_advanced_booking_offset": "P3D",
    "cancellation_policy_id": "",
    "override_policy": {
        "cancellation_policy_name": "PTT_BREAKFAST_INCLUDED",
        "book_dates": [
            {
                "start_date": "2024-11-10",
                "end_date": "2024-11-15"
            },
            {
                "start_date": "2024-11-20",
                "end_date": "2024-11-30"
            }
        ],
        "active_week_days": [
            "Monday",
            "Tuesday"
        ]
    },
    "value_added_serivces": {
        "name": "additional package",
        "services": [
            {
                "service_id": 1001
            }
        ]
    }
}

```

***

## <mark style="color:yellow;">Response</mark>

#### <mark style="color:green;">**Sample Success Response**</mark>

```json
{
    "Status": "Success",
    "Data": [],
    "Message": "Product Updated successfully",
    "Ruid": "UmFuZG9tSVYkc2RlIyh9Ye5eXmDmhbU/lJ3oZTYqKygl2YmmIvCZ7SsqWDRvnH9FWwZqTQRhyElUfNUBy9NrH7hKGo/SPIzE"
}
```

#### <mark style="color:yellow;">Success Response Body Elements</mark>

`Status` <mark style="color:orange;">**string**</mark>

Indicates the result of the API call.&#x20;

{% hint style="info" %}
Will be `"Success"` for successful operations.
{% endhint %}

***

`Data` <mark style="color:orange;">**object**</mark>

An object containing data related to the successful image creation. This typically includes identifiers for the created images.

***

`Message` <mark style="color:orange;">**string**</mark>

A message receives within the response body. This will generally be an empty string if no additional information is needed.

***

`Ruid` <mark style="color:orange;">**string**</mark>&#x20;

Specifies the unique request ID.&#x20;

{% hint style="info" %}
You can share this ID with Booking.com customer support when you run into an issue. This can help in understanding what went wrong.
{% endhint %}

#### <mark style="color:red;">Errors</mark>

<mark style="color:red;">**Sample Error Response 1 - Validation Error Response**</mark>

```json
{
    "Status": "Fail",
    "Errors": [
        {
            "Code": "496",
            "ShortText": "action attribute is required"
        },
        {
            "Code": "400",
            "ShortText": "hotel_id: Invalid HotelCode ('')"
        },
        {
            "Code": "572",
            "ShortText": "channel_hotel_id - is invalid or not found!"
        },
        {
            "Code": "849",
            "ShortText": "channel_room_id - is invalid or not found!"
        },
        {
            "Code": "850",
            "ShortText": "channel_rate_id - is invalid or not found!"
        }
    ],
    "Message": "",
    "Ruid": "",
    "Type": ""
}
```

<mark style="color:red;">**Sample Error Response 2 - Booking.com Error Response**</mark>

```json
{
    "Status": "Fail",
    "Errors": [],
    "Message": "MinAdvancedBookingOffset: Value is not a ota_duration (String representing OTA duration: P5D3H), found '2D', MaxAdvancedBookingOffset: Value is not a ota_duration (String representing OTA duration: P5D3H), found '3D', MealPlanCode: Value should be one of [ 0, 1, 10, 11, 12, 14, 15, 16, 17, 18, 19, 2, 20, 21, 22, 23, 24, 3, 4, 5, 6, 7, 8, 9 ], found '1954464'",
    "Ruid": "UmFuZG9tSVYkc2RlIyh9Ye5eXmDmhbU/ykdNJBjpywM7XEdM6xKcMfE5VTNSC8OOTER4+X35eObe8bKJbTGWrcFolLHc80gr"
}
```

***

<mark style="color:yellow;">**Error Response Body Elements**</mark>

`Status` <mark style="color:orange;">**string**</mark>

Indicates the result of the API call, which will be always `"Fail"` in case of an error response.

***

`Error` <mark style="color:orange;">**array**</mark>

Array that contains details about any errors that occurred during the API call. Each object in the `Errors` array contains the following properties:

`Code` <mark style="color:orange;">**string**</mark>

Specific error code that helps identify the type of error.

{% hint style="info" %}
For example: `"400"` indicates a bad request.
{% endhint %}

`ShortText` <mark style="color:orange;">**string**</mark>

A short description of the error.

***

`Message` <mark style="color:orange;">**string**</mark>

A message providing more information about the error.

***

`Ruid` <mark style="color:orange;">**string**</mark>

A unique identifier for tracking the request.
