> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appcharge.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Portal Approval Request Displayed

An event triggered when the Approval Request in the [checkout link offer](../../../../webstore/offers-v2/checkout-link-offers/introduction) is displayed.

**Event Data**

<ResponseField name="eventName" type="string">
  Event name: `portal.approval_request.displayed`.
</ResponseField>

<ResponseField name="eventId" type="string">
  Event ID. Use this ID to deduplicate re-delivered events.
</ResponseField>

<ResponseField name="timestamp" type="number">
  Event timestamp in [Epoch time](https://www.epoch101.com/), represented in milliseconds. Example: `1754307361396`.
</ResponseField>

<ResponseField name="sessionId" type="string">
  The [session ID](/../../api-reference/events/v2/introduction#session-id) of the player’s current session. Example: `345397c6-d963-4aa4-a0ba-2aaca6c3ee05`.
</ResponseField>

<ResponseField name="requestId" type="string">
  ID assigned by Appcharge to each request sent to the publisher. Helps the publisher identify and debug failed requests.
</ResponseField>

<ResponseField name="result" type="string">
  Event result. Supported values: `success`, `failed`.
</ResponseField>

<ResponseField name="reason" type="string">
  Reason for the event result. Example: `invalid_credentials`.
</ResponseField>

<ResponseField name="attributes" type="map<any,any>">
  A key-value map used to label events for tracking personas or tests. Example: `{ "persona":"non_payer", "blackFridayTest":"Base_group" }`
</ResponseField>

<ResponseField name="customer" type="object">
  Information about the player.

  <Expandable title="properties">
    <ResponseField name="id" type="string">
      Player ID.
    </ResponseField>

    <ResponseField name="name" type="string">
      Currently null. Reserved for the player's name in future versions.
    </ResponseField>

    <ResponseField name="email" type="string">
      Player email address.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="offers" type="[object]">
  List of offers.

  <Expandable title="properties">
    <ResponseField name="externalId" type="string">
      External ID of the offer as configured in the Publisher Dashboard.
    </ResponseField>

    <ResponseField name="type" type="string">
      Offer type.
    </ResponseField>

    <ResponseField name="subType" type="string">
      Offer subtype.
    </ResponseField>

    <ResponseField name="name" type="string">
      Offer name.
    </ResponseField>

    <ResponseField name="indexToCollect" type="string">
      The index of the sub-offer currently available to be collected in a rolling offer.
    </ResponseField>

    <ResponseField name="products" type="[object]">
      List of products in an offer.

      <Expandable title="properties">
        <ResponseField name="displayName" type="string">
          Display name of the product.
        </ResponseField>

        <ResponseField name="productExternalId" type="string">
          External ID of the product as configured in the Publisher Dashboard.
        </ResponseField>

        <ResponseField name="productQuantity" type="string">
          The quantity of the product. Must be a minimum 0 and equal to or less than 24 digits long.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="device" type="object">
  Information about the player's device.

  <Expandable title="properties">
    <ResponseField name="platform" type="string">
      Device platform. Example: `iOS`.
    </ResponseField>

    <ResponseField name="deviceModel" type="string">
      Device model. Example: `iPhone 16 Pro`.
    </ResponseField>

    <ResponseField name="osType" type="string">
      Operating system type. Example: `Android`.
    </ResponseField>

    <ResponseField name="osVersion" type="string">
      Operating system version. Example: `18`.
    </ResponseField>

    <ResponseField name="browserType" type="string">
      Browser type. Example: `Google Chrome`.
    </ResponseField>

    <ResponseField name="browserVersion" type="string">
      Browser version. Example: `138`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="geolocation" type="object">
  Information about the player's geolocation.

  <Expandable title="properties">
    <ResponseField name="countryCode2" type="enum">
      Two-letter country code in [ISO-3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format. Example: `US`
    </ResponseField>

    <ResponseField name="region" type="string">
      Region or state.
    </ResponseField>

    <ResponseField name="ipAddress" type="string">
      IP address in [IPv4](https://en.wikipedia.org/wiki/IPv4) format. Example: `80.178.249.122`.
    </ResponseField>

    <ResponseField name="zipCode" type="string">
      Zip code.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="sessionMetadata" type="any">
  Session metadata for passing data to Appcharge to be returned later.
</ResponseField>

<ResponseExample>
  ```json Event Payload theme={"system"}
  {
    "eventName": "portal.approval_request.displayed",
    "eventId": "3f5bffbc-369e-4599-8c4d-abfe0ae0ef96",
    "timestamp": 1754307361396,
    "sessionId": "345397c6-d963-4aa4-a0ba-2aaca6c3ee05",
    "requestId": "23539478-c744-566a-c78c-c4cc7763ff62",
    "result": "success",
    "reason": "invalid_credentials",
    "attributes": {
      "persona": "non_payer",
      "blackFridayTest": "Base_group"
    },
    "customer": {
      "id": "671e81bb-55ef-428b-97ba-f67783971e0d",
      "name": null,
      "email": "john.doe@gmail.com"
    },
    "offers": [
      {
        "externalId": "22ae81bb-55ef-428b-97ba-f67783971e4a",
        "type": "PopUp",
        "subType": "DailyBonus",
        "name": "Spring Is Here",
        "indexToCollect": "1", 
        "products": [
          {
            "displayName": "Gold Coins",
            "productExternalId": "31ae81bb-55ef-428b-97ba-f67783971e553",
            "productQuantity": "1000"
          },
          {
            "displayName": "Silver Shield",
            "productExternalId": "9af1abb-55ef-428b-97ba-f677839716ac9",
            "productQuantity": "40"
          }
        ]
      }
    ],
    "device": {
      "platform": "iOS",
      "deviceModel": "iPhone 16 Pro",
      "osType": "Apple",
      "osVersion": "18",
      "browserType": "Google Chrome",
      "browserVersion": "138"
    },
    "geolocation": {
      "countryCode2": "US",
      "region": "Florida",
      "ipAddress": "192.168.1.1",
      "zipCode": "34997"
    },
    "sessionMetadata": { "abTest": "group1", "locale": "en-US" }
  }
  ```
</ResponseExample>
