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

# Summer.client.items

> Read-only revisioned inventory projection for the current player.

**Class:** `SummerClientItems` · **Inherits:** RefCounted · **Access:** `Summer.client.items`

Read-only revisioned inventory projection for the current player.

Exposes the platform-owned inventory of the current authenticated player as a monotonic read-only projection. The engine owns paging and gap recovery; stale values never overwrite newer state, and no method mutates ownership, balances, or the ledger. Hosted inventory refresh requires an authenticated Player Host and the `player.items@1` execution grant, independently of matchmaking. An explicitly launched local-emulator client with a player persona instead reads the fixture inventory frozen at initialization. That synthetic projection shares ownership identities with the local authority; it does not grant platform items or enable store and checkout services. Ordinary local clients without that fixture cannot refresh inventory. A retained facade cannot follow a new authenticated binding after shutdown/reinitialization: acquire it again from the current client. Released facades expose empty projection values and refuse new operations.

**Host capabilities named here:** `player.items@1`

## Properties

| Property | Type | Access | Description |
| - | - | - | - |
| <a id="as_of_event_sequence" />`as_of_event_sequence` | int | read-only, `get_as_of_event_sequence()` | Monotonic projection watermark. |
| <a id="availability" />`availability` | [`SummerAvailability`](/api-reference/gdscript/types/availability) | read-only, `get_availability()` | Compatibility view of `check_refresh_readiness`. `SummerAvailability.hosted_sessions_available` reports inventory refresh readiness here; the local flags are false. Prefer the named readiness method for an operation-specific result and diagnostic. |
| <a id="items" />`items` | [`SummerInventoryItem`](/api-reference/gdscript/types/inventory-item)\[] | read-only, `get_items()` | The current read-only item projections, ordered by stable item identity. |

## Methods

### check\_refresh\_readiness

```gdscript theme={null}
func check_refresh_readiness() -> SummerResult const
```

Returns the Engine's current advisory check of the same current binding and capability prerequisites used by [`refresh()`](/api-reference/gdscript/client/items#refresh). Inspect [`SummerResult.ok`](/api-reference/gdscript/types/result#ok), [`SummerResult.code`](/api-reference/gdscript/types/result#code) and [`SummerResult.message`](/api-reference/gdscript/types/result#message). `invalid_lifecycle` requires initialization or rebinding after an identity change; `unavailable` describes a missing capability or unavailable Host. No request is submitted and no provider is activated. A successful check does not guarantee later transport success or a fresh projection; the operation result remains authoritative. The base Host interface supplies inventory without a separate bootstrap capability advertisement. C# exposes `CheckRefreshReadiness()`.

**Returns:** [`SummerResult`](/api-reference/gdscript/types/result)

### is\_projection\_loaded

```gdscript theme={null}
func is_projection_loaded() -> bool const
```

Whether this client binding has completed an initial inventory projection. False before the first successful refresh and after binding teardown; true for a successfully loaded empty inventory, even when [`as_of_event_sequence`](/api-reference/gdscript/client/items#as_of_event_sequence) is zero. Reads the SDK's existing projection state without fetching or caching anything. Loaded does not mean current or authorized: later refreshes and inventory events may change the projection, and authority still verifies equipment ownership. C# exposes `IsProjectionLoaded()`.

**Returns:** bool

### get\_owned\_items

```gdscript theme={null}
func get_owned_items(definition_id: String = "") -> SummerInventoryItem[] const
```

Returns current items for which [`SummerInventoryItem.is_owned()`](/api-reference/gdscript/types/inventory-item#is_owned) is true, optionally filtered by an exact definition ID. An empty ID returns all owned items. Preserves the stable item identity order of [`items`](/api-reference/gdscript/client/items#items). The returned array is independent and its item values are immutable. This reads the current inventory projection without network requests; a purchase receipt alone never grants ownership.

| Parameter | Type | Default |
| - | - | - |
| `definition_id` | String | `""` |

**Returns:** [`SummerInventoryItem`](/api-reference/gdscript/types/inventory-item)\[]

### has\_owned\_definition

```gdscript theme={null}
func has_owned_definition(definition_id: String) -> bool const
```

Whether the current projection contains an owned item with this exact definition ID. An empty ID returns false. Replacement and removal events are reflected immediately in subsequent queries. This is a local projection query, not authority to grant or equip an item on a server.

| Parameter | Type | Default |
| - | - | - |
| `definition_id` | String | required |

**Returns:** bool

### refresh

```gdscript theme={null}
func refresh() -> SummerInventoryRefreshOperation
```

Re-reads the full projection through bounded platform pages (or the frozen explicit local fixture); completes once the projection is consistent at-or-after the sequence that triggered the refresh.

**Returns:** [`SummerInventoryRefreshOperation`](/api-reference/gdscript/types/inventory-refresh-operation)

Returns at once. Wait for the result with `var result: SummerResult = await op.get_result_or_completed_signal()`; see [SummerOperation](/api-reference/gdscript/types/operation).

## Signals

### item\_removed

```gdscript theme={null}
signal item_removed(change: SummerInventoryChange)
```

An item left the projection.

### item\_replaced

```gdscript theme={null}
signal item_replaced(change: SummerInventoryChange)
```

An item value was replaced at a newer revision.

### refreshed

```gdscript theme={null}
signal refreshed()
```

A refresh walk completed and the projection is consistent.

***

What is live on the platform today: [platform capability status](/knowledge-base/source-status). Check availability at runtime before you offer a feature.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.