# Implementing or dismissing opportunities

The Opportunities API enables you to perform actions on the opportunities you retrieve. You can:

* Implement opportunities.
* Mark opportunities as implemented.
* Dismiss opportunities.


→ If you want to retrieve the opportunities for a property or retrieve the eligible properties for a specific opportunity, see [retrieving opportunities.](/connectivity/docs/opportunities-api/retrieving-opportunities)

## Implementing or dismissing an opportunity


```http
POST
https://supply-xml.booking.com/opportunity-api/properties/{property_id}/opportunities
```

The `POST /properties/{property_id}/opportunities` request enables you to perform an action on a specified opportunity for a property.

Which actions you can perform depends on the implementation type of the opportunity. You can see the implementation type in the response object when retrieving opportunities:

* `TOGGLE` enables you to act upon opportunities solely through the API with the following actions:
  * Enable: Implements opportunity for specified property or properties.
  * Dismiss: Causes opportunity for specified property or properties to disappear.


Dismissed opportunities show up in the opportunity center
Opportunities that were dismissed via the API will not be returned in the actionable opportunities via the GET call. However, they will still show up in the opportunity center of the property in the Booking.com extranet.

* `REDIRECT` enables you to implement the opportunity in two ways: (1) It informs you of what API you must use (destination API), or (2) it contains a URL that redirects you to the appropriate extranet page of the specified property. You can still perform the following action through the Opportunities API:
  * Dismiss: Causes opportunity for specified property or properties to disappear.


You cannot dismiss `PROVIDER` opportunities
You cannot dismiss `PROVIDER` type opportunities via the Opportunities API. Because of their time-sensitive nature, they disappear themselves when they're no longer valid.

### Header parameters

The following table lists the header parameters in the request:

| Parameter | Description | Type | Required/Optional | Notes |
|  --- | --- | --- | --- | --- |
| `Authorization` | [Machine account username and password](/connectivity/docs/authentication) | string | Required | Example: `Authorization: Basic {username:password}` |


### Body parameters

The following table describes what elements you must add in the request body:

| Element |  | Description | Type | Required/Optional | Notes |
|  --- | --- | --- | --- | --- | --- |
| `actions` |  | Contains the information related to the action upon a specific opportunity. | array | required |  |
|  | `opportunity_id` | Specifies the unique ID of the opportunity. | string | required |  |
|  | `action` | Specifies the action that you want to perform upon the opportunity. | enum | required | Possible values are: `ENABLE` (implement opportunity for specified property) and `DISMISS` (avoid seeing this opportunity again for specified property). |


### Request body example

The following is a request body example where you implement a toggle opportunity for a property with ID 12345 (as you can see in the cURL request below this example):


```json
{
"actions" :[{
   "opportunity_id":"cucc_adoption_oc_promotion",
   "action":"ENABLE"
   }]
}
```

### Sample request

You can find an example request in cURL here:


```cURL
curl -X POST \
  https://supply-xml.booking.com/opportunity-api//properties/12345/opportunities \
  -H 'Authorization: Basic Xxxxxxxxxxx' \
```

### Sample response


```json
{
"data": {}
"meta": {
    "ruid": "UmFuZG9tSVYkc2RlIyh9YbvPzfY4dZasPGAUcglKEyRzk2/HbSzspV7O+mQdkB4hP2dlEyQkjV+iI71VQFka7vNa5MAta305nepI2yvXTv4="
},
"errors": [],
"warnings": []
}
```

### Response body

The following table describes the elements of the response body:

| Element |  |  | Description | Type | Notes |
|  --- | --- | --- | --- | --- | --- |
| `data` |  |  | Contains the response data. | object |  |
| `meta` |  |  | Contains the meta data that comes with the response. | object |  |
|  | `ruid` |  | Specifies the unique ID of the request. | string | You can send this ID to Booking.com customer support if you run into an issue. This can help to understand what went wrong. |
| `errors` |  |  | Contains potential errors. These can help you understand what went wrong with your request. | array |  |
| `warnings` |  |  | Contains potential warnings. These can help you improve your requests. | array |  |


## Implementing or dismissing opportunities in bulk


```http
POST
https://supply-xml.booking.com/opportunity-api/opportunities
```

The `POST /opportunities` request enables you to perform actions on specified `TOGGLE` opportunity and property combinations in bulk.

→ If you want more information on `TOGGLE` and `REDIRECT`, see [implementing or dismissing an opportunity](#implementing-or-dismissing-an-opportunity)

### Header parameters

The following table lists the header parameters in the request:

| Parameter | Description | Type | Required/Optional | Notes |
|  --- | --- | --- | --- | --- |
| `Authorization` | [Machine account username and password](/connectivity/docs/authentication) | string | Required | Example: `Authorization: Basic {username:password}` |


### Body parameters

The following table describes what elements you must add in the request body. You must specify these elements for each opportunity and property combination:

| Element |  | Description | Type | Required/Optional | Notes |
|  --- | --- | --- | --- | --- | --- |
| `actions` |  | Contains the information related to the action upon a specific opportunity. | array | required |  |
|  | `opportunity_id` | Specifies the unique ID of the opportunity. | string | required |  |
|  | `action` | Specifies the action that you want to perform upon the opportunity. | enum | required | Possible values are: `ENABLE` (implement opportunity for specified property) and `DISMISS` (avoid seeing this opportunity again for specified property). |
|  | `property_id` | Specifies the unique ID of the property to which the opportunity belongs. | string | required |  |


### Request body example

The following is a request body example where you implement and dismiss opportunities in bulk:


```json
{
"actions" :[{
   "opportunity_id":"cucc_adoption_oc_promotion",
   "action":"ENABLE",
   "property_id": "12345"
   },
   {
   "opportunity_id": "cucc_adoption_oc_promotion",
   "action": "ENABLE",
   "property_id": "54321"
   },
   {
   "opportunity_id": "nocvc",
   "action": "DISMISS",
   "property_id": "21349"
   }]
}
```

### Sample request

You can find an example request in cURL here:


```cURL
curl -X POST \
  https://supply-xml.booking.com/opportunity-api/opportunities \
  -H 'Authorization: Basic Xxxxxxxxxxx' \
```

### Sample response


```json
{
"data": {}
"meta": {
    "ruid": "UmFuZG9tSVYkc2RlIyh9YbvPzfY4dZasPGAUcglKEyRzk2/HbSzspV7O+mQdkB4hP2dlEyQkjV+iI71VQFka7vNa5MAta305nepI2yvXTv4="
},
"errors": [],
"warnings": []
}
```

### Response body

The following table describes the elements of the response body:

| Element |  |  | Description | Type | Notes |
|  --- | --- | --- | --- | --- | --- |
| `data` |  |  | Contains the response data. | object |  |
| `meta` |  |  | Contains the meta data that comes with the response. | object |  |
|  | `ruid` |  | Specifies the unique ID of the request. | string | You can send this ID to Booking.com customer support if you run into an issue. This can help to understand what went wrong. |
| `errors` |  |  | Contains potential errors. These can help you understand what went wrong with your request. | array |  |
| `warnings` |  |  | Contains potential warnings. These can help you improve your requests. | array |  |