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

# Message format

> The notification envelope, the changes map, and the two section shapes.

Every message is one JSON text frame with this envelope:

```json theme={null}
{
  "timestamp": "2026-04-27T10:00:00Z",
  "website": "ticketmaster",
  "version": "1.0",
  "event_id": "0200642CF18CAA24",
  "region": "US",
  "changes": { "stock_increase": ["Floor GA", "Section 101"] },
  "sections_type": "SeatMapSections",
  "sections": { "…": "…" },
  "stock": 42,
  "event_infos": { "…": "…" }
}
```

<ResponseField name="timestamp" type="string" required>
  When the notification was generated. RFC 3339.
</ResponseField>

<ResponseField name="website" type="string" required>
  Source platform identifier, matching the `website` of the watchlist item.
</ResponseField>

<ResponseField name="version" type="string" required>
  Notification schema version.
</ResponseField>

<ResponseField name="event_id" type="string" required>
  Event identifier on the platform.
</ResponseField>

<ResponseField name="region" type="string" required>
  Region code, for example `US` or `UK`.
</ResponseField>

<ResponseField name="changes" type="object" required>
  Map of change type to the list of section names affected. See below.
</ResponseField>

<ResponseField name="sections_type" type="string" required>
  `OfferSections` or `SeatMapSections`. Determines the shape of `sections`.
</ResponseField>

<ResponseField name="sections" type="object" required>
  Current section data. See [Section types](/guides/section-types).
</ResponseField>

<ResponseField name="stock" type="number">
  Total available stock across all sections. Omitted when unknown.
</ResponseField>

<ResponseField name="event_infos" type="object">
  Event metadata. Omitted entirely when the platform does not expose it. Check for
  presence before reading any sub-field.
</ResponseField>

## `changes`

`changes` is an object, not an array. Keys are change types; values are the section
names that changed in that way.

```json theme={null}
"changes": {
  "stock_increase": ["Floor GA", "Section 101"],
  "price_decrease": ["Section 207"]
}
```

| Change type      | Meaning                                                                                         |
| ---------------- | ----------------------------------------------------------------------------------------------- |
| `stock_increase` | Tickets became available in the listed sections. The default `change_type` of a watchlist item. |
| `price_decrease` | The price in the listed sections went down.                                                     |
| `price_increase` | The price in the listed sections went up.                                                       |

A message is only delivered if `changes` contains the `change_type` set on the
matching watchlist item.

## `event_infos`

```json theme={null}
"event_infos": {
  "event_name": "Artist World Tour",
  "event_date": "2026-06-15T20:00:00Z",
  "event_time": "20:00",
  "event_venue": "Madison Square Garden",
  "event_venue_url": "https://…",
  "event_artist_name": "Artist",
  "event_location": "New York, NY",
  "event_url": "https://…",
  "event_image": "https://…"
}
```

| Field               | Description                               |
| ------------------- | ----------------------------------------- |
| `event_name`        | Event title.                              |
| `event_date`        | Start date and time, RFC 3339.            |
| `event_time`        | Human-readable time string.               |
| `event_venue`       | Venue name.                               |
| `event_venue_url`   | Link to the venue page.                   |
| `event_artist_name` | Performer or artist.                      |
| `event_location`    | City, region, or full address.            |
| `event_url`         | Direct link to the event on the platform. |
| `event_image`       | Cover image URL.                          |

Any sub-field may be an empty string depending on the platform.

## `sections`

The shape depends on `sections_type` and is shared with the Live Availability API, so
one parser serves both. The full field reference is in
[Section types](/guides/section-types).

**`OfferSections`** is a flat map keyed by offer id, used by platforms that sell
simple tiers:

```json theme={null}
"sections": {
  "floor-ga": {
    "offer_name": "Floor GA",
    "available": true,
    "price": 129.5,
    "price_label": "$129.50",
    "stock": 12,
    "atc": "https://…"
  }
}
```

**`SeatMapSections`** is a nested map, used by platforms with a full venue map such as
Ticketmaster and AXS. Each top-level key is a section id; inside it, `stock` is the
section aggregate and every other key is an offer:

```json theme={null}
"sections": {
  "sec-101": {
    "stock": 5,
    "offer-abc": {
      "offer_name": "Standard",
      "price": 95.0,
      "price_without_fees": 79.0,
      "price_label": "$95.00",
      "section": "101",
      "inventory_type": "primary",
      "is_active": true,
      "stock": 5,
      "stock_not_available": 2,
      "atc": "https://…",
      "longest_adjacent_seats": 3,
      "general_admission": false
    }
  }
}
```

Dispatch on `sections_type` with a `switch` so each handler receives the shape it
expects.
