# Set signal

## Using `set` signal

The `set` signal is how a partner 1) creates an offer request for a customer and 2) formats the displayed currency in the element.

{% hint style="info" %}
For existing XCover partners, this replaces the create offer API request, with a similar field structure.
{% endhint %}

Call `signalLayer.push()` with `set` as the value for the `signal` property, add `onSet` and `data` as in the following example:

<pre class="language-javascript"><code class="lang-javascript">/* Travel xce-protection-offer example */
window.signalLayer.push({
  signal: 'set',
  element: 'xce-protection-offer',
  onSet: async (req) => {
    try {
      const response = await req
      if (!response) throw new Error('Empty response');
      // your disable checkout logic here..
    } catch (err) {
      console.error('XCE Request Error: ', err);
    }
  },
  data: {
    offer_request: {
      schema: 'demo-partner-travel:1',
      customer:{
        currency: 'AUD',
        country: 'AU',
        language: 'en',
      },
      context: {
<strong>        total_tickets_price: 344,
</strong>        departure_country: 'AU',
        destination_country: 'US',
        is_return: false,
        number_of_children: 0,
        number_of_adults: 1,
        number_of_infants: 0,
        trip_start_date: '2026-05-19T19:03:36.671Z',
        trip_end_date: '2026-05-19T19:02:21.444Z',
        flights: [
          {
            legs: [
              {
                departure_datetime: '2025-09-19T18:59:13.958Z',
                arrival_datetime: '2025-09-19T18:59:13.958Z',
                flight_number: 'SK1530',
                marketing_airline_iata_code: 'SK',
                marketing_airline_icao_code: 'SAS',
                operating_airline_iata_code: 'SK',
                operating_airline_icao_code: 'SAS',
                departure_airport: 'SYD',
                arrival_airport: 'JFK',
                departure_country: 'AU',
                arrival_country: 'US',
              },
            ],
            departure_datetime: '2025-09-19T18:59:13.958Z',
            arrival_datetime: '2025-09-19T18:59:13.958Z',
            departure_country: 'AU',
            departure_city: 'SYD',
            arrival_city: 'JFK',
          },
        ],
      },
    },
    currency_config: {
      trailingZeroDisplay: 'stripIfInteger'
    }
  }
});
</code></pre>

The `onSet` property is a Promise function that will resolve with the quote response if successful, and the `data.offer_request` property is the create offer request body.

{% hint style="warning" %}
In order to get the offer response data for **confirm offer request** make sure to store the response from the `onSet` promise.

The resolved value contains the needed fields for **Confirm Offer** request, including the BrightWrite details object.
{% endhint %}

{% hint style="info" %}
See [Create Offer request fields](/xcover-elements/client-integration-examples/requests-and-responses.md) for a simplified reference to the data object
{% 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://partner-docs.covergenius.com/xcover-elements/client-integration/element-signals/set-signal.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.
