# Report Schema: RWA Advanced (v11)
Source: https://docs.chain.link/data-streams/reference/report-schema-v11

> For the complete documentation index, see [llms.txt](/llms.txt).

> **NOTE: Get started**
>
> Data Streams is self-serve, no sales call required. [Sign up](https://app.chain.link) to get started, or follow the
> [sign-up guide](/data-streams/sign-up).

Chainlink Data Streams that use the RWA Advanced (v11) schema adhere to the structure outlined below.

## Schema Fields

| Field                   | Type      | Description                                                                                                                                                       |
| ----------------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `feedId`                | `bytes32` | Unique identifier for the Data Streams feed                                                                                                                       |
| `validFromTimestamp`    | `uint32`  | Earliest timestamp when the price is valid (seconds) — [How report timestamps work](/data-streams/how-report-timestamps-work)                                     |
| `observationsTimestamp` | `uint32`  | Latest timestamp when the price is valid (seconds) — [How report timestamps work](/data-streams/how-report-timestamps-work)                                       |
| `nativeFee`             | `uint192` | Legacy onchain verification fee field                                                                                                                             |
| `linkFee`               | `uint192` | Legacy onchain verification fee field; not used for subscription billing                                                                                          |
| `expiresAt`             | `uint32`  | Expiration date of the report (seconds)                                                                                                                           |
| `mid`                   | `int192`  | DON consensus mid-price                                                                                                                                           |
| `lastSeenTimestampNs`   | `uint64`  | Timestamp of the last update for the mid price only (nanoseconds)                                                                                                 |
| `bid`                   | `int192`  | Median bid price                                                                                                                                                  |
| `bidVolume`             | `int192`  | Volume at bid price. Informational only; may be 0 when a confident value cannot be provided. — [Details](/data-streams/reference/report-schema-v11#bidask-volume) |
| `ask`                   | `int192`  | Median ask price                                                                                                                                                  |
| `askVolume`             | `int192`  | Volume at ask price. Informational only; may be 0 when a confident value cannot be provided. — [Details](/data-streams/reference/report-schema-v11#bidask-volume) |
| `lastTradedPrice`       | `int192`  | Last traded price. Availability and production support vary by stream.                                                                                            |
| `marketStatus`          | `uint32`  | Market status. Mapping varies by feed; see schema docs. — [Status values](/data-streams/reference/report-schema-v11#market-status-values)                         |

### Market Status Values

> **CAUTION: Use marketStatus, not timestamps**
>
> Always use `marketStatus` to determine whether a market is open. Do **not** use `observationsTimestamp`, `lastSeenTimestampNs`, or other timestamp fields — timestamps indicate
> when data was last recorded, not whether the market is currently active.

The v11 schema defines six numeric values (`0`–`5`), but **the values that appear on a given feed depend on its trading-hours model**. Check which mapping applies to your stream before implementing logic. For full trading schedules, see [Market Hours](/data-streams/market-hours).

#### Standard-hours feeds

Used by [APAC Equities](/data-streams/rwa-streams/apac-equities) and any v11 feed without 24/5 extended hours.

| Value | Status      | Used?  | Description                                                                                     |
| ----- | ----------- | ------ | ----------------------------------------------------------------------------------------------- |
| `0`   | **Unknown** | Yes    | Market status cannot be determined                                                              |
| `1`   | N/A         | **No** | Not mapped. Do not treat as Closed or Pre-market.                                               |
| `2`   | **Open**    | Yes    | Market is open during a regular trading session                                                 |
| `3`   | N/A         | **No** | Not mapped. Do not treat as Post-market.                                                        |
| `4`   | N/A         | **No** | Not mapped. Do not treat as Overnight.                                                          |
| `5`   | **Closed**  | Yes    | Market is closed (outside trading hours, lunch breaks, closing auctions, weekends, or holidays) |

> **CAUTION**
>
> Values `1`, `3`, and `4` are reserved for 24/5 session types and **will not appear**
> on these feeds. On standard-hours feeds, `5` covers intraday closures such as lunch breaks and closing
> auctions — not only weekends and holidays.

During closing auction periods and daily lunch breaks on APAC exchanges, `marketStatus` is `5` (Closed) even though the exchange trading day has not fully ended. See [Market Hours (APAC Equities)](/data-streams/market-hours#apac-equities) for session schedules.

#### 24/5 US Equities feeds

Used by [24/5 US Equities](/data-streams/rwa-streams/24-5-us-equities-user-guide) streams with extended and overnight sessions.

> **CAUTION: Deprecated as a production input**
>
> On 24/5 U.S. Equity Streams, `lastTradedPrice` is deprecated as a production input. See the [24/5 U.S. Equities User
> Guide](/data-streams/rwa-streams/24-5-us-equities-user-guide) for the effective date.

| Value | Status            | Hours (ET)                            | Description                                                                            |
| ----- | ----------------- | ------------------------------------- | -------------------------------------------------------------------------------------- |
| `0`   | **Unknown**       | N/A                                   | Market status cannot be determined                                                     |
| `1`   | **Pre-market**    | 4:00am–9:30am Mon–Fri                 | Extended hours before regular trading session                                          |
| `2`   | **Regular hours** | 9:30am–4:00pm Mon–Fri                 | Primary trading session with highest liquidity                                         |
| `3`   | **Post-market**   | 4:00pm–8:00pm Mon–Fri                 | Extended hours after regular trading session                                           |
| `4`   | **Overnight**     | 8:00pm–4:00am Sun evening–Fri morning | Overnight session with limited liquidity                                               |
| `5`   | **Closed**        | N/A                                   | Market closed (weekends, holidays, or unexpected closures; \~8:00pm Fri–8:00pm Sun ET) |

#### 24/7 US Equities feeds

Used by the v11 [24/7 Perpetual Markets and Lending streams](/data-streams/rwa-streams/24-7-us-equities). The values are the same as the 24/5 mapping above, with one difference: when `marketStatus` is `5` (Closed), the stream keeps publishing an off-hours price derived from perpetual futures markets.

> **NOTE: lastTradedPrice on 24/7 streams**
>
> On 24/7 Perpetual Markets and Lending streams, `lastTradedPrice` carries the Oracle Price, a smoothed price intended
> for collateral valuation. It is fully supported on these streams. See the [24/7 US Equities User
> Guide](/data-streams/rwa-streams/24-7-us-equities#field-behavior-by-session) for how each field behaves by session.

Implement appropriate safeguards based on market status — such as pausing trading, adjusting risk parameters, or adding staleness checks during non-regular or closed periods. See [Market Hours](/data-streams/market-hours) for guidance.

### Notes

#### Last Seen Timestamp

- `lastSeenTimestampNs` helps applications detect stale data for the mid price, especially important during market transitions and holidays.
- **IMPORTANT**: The `lastSeenTimestampNs` field reflects the timestamp of the last update for the `mid` price only. Do not assume this timestamp applies to `bid`, `ask`, `bidVolume`, `askVolume`, or `lastTradedPrice`. Different fields may have been updated at different times.
- **Do not use `lastSeenTimestampNs` (or any other timestamp field) to determine which stream to select or to infer whether the market is open.** Timestamps indicate when data was last recorded, not whether the market is currently active. Use the `marketStatus` field as the authoritative signal for market availability and stream selection.

#### `lastSeenTimestampNs` is not guaranteed to be monotonic

Do not assume `lastSeenTimestampNs` strictly increases from one report to the next. Use `marketStatus` to determine whether a market is open.

`lastSeenTimestampNs` is not guaranteed to be monotonic (that is, it does not always increase from one report to the next); the value can vary between reports. Reasons for this include:

- A provider dropping in or out between reports can shift the median.
- The fewer providers contribute to a report, the more a single provider's inclusion or exclusion can move the result. For example, if a provider is excluded from one report (due to a timeout) and included in the next, the median can shift to an earlier value than the previous report.

Under normal circumstances, expect this value to advance with each report. A single occurrence of non-monotonic movement is not by itself cause for concern: treat it as a potential issue only if the behavior persists across multiple consecutive reports.

#### Bid/Ask Volume

For U.S. equities, there is no single consolidated order book. Instead, multiple venues each maintain their own order books. Because data providers source from different markets, the `bidVolume` and `askVolume` reported at each update come from one specific order book at a time, not an aggregate across all venues.

As a result, these volume fields should not be treated as a proxy for total market liquidity at the top of book. They are informational and not especially representative in fragmented markets like U.S. equities.

`bidVolume` and `askVolume` may also be reported as `0` in certain cases where a confident value cannot be provided. A value of `0` does not mean there is no resting liquidity at the bid or ask. Do not use these fields as inputs to pricing, liquidation, or other risk logic, and make sure your application handles a `0` value without breaking.

> **CAUTION: Volume fields may be 0**
>
> `bidVolume` and `askVolume` are informational only and may be zeroed out in certain cases where
> a confident value cannot be provided. Do not rely on these fields for pricing or risk decisions.

#### Additional Notes

- Future streams using this format may adopt different report schemas as needed.
- Data availability and sourcing vary by session. Liquidity is typically highest during regular hours and lower during extended and overnight sessions.