# Inventory

**URL:** https://heroiclabs.com/docs/hiro/dart/inventory/
**Keywords:** inventory, hiro
**Categories:** hiro, dart, inventory

---


# Inventory

Read more about the Inventory system in Hiro [here](../../concepts/inventory/).

## List items

List all inventory items defined in the codex, optionally filtered by category.

```dart
var request = InventoryListRequest();
request.item_category = "weapons";

var inventory_list = await hiro.inventoryList(session!, request);
print(inventory_list);
```

## List user inventory items

List all inventory items owned by the player, optionally filtered by category.

```dart
var request = InventoryListRequest();
request.item_category = "weapons";

var inventory_list = await hiro.inventoryListInventory(session!, request);
print(inventory_list);
```

## Consume inventory items

Consume one or more inventory items owned by the player.

```dart
var request = InventoryConsumeRequest();
request.items = {
    "health_potion": "1"
};

var consume_rewards = await hiro.inventoryConsume(session!, request);
print(consume_rewards);
```

## Grant inventory items

Grant one or more inventory items to the player.

```dart
var request = InventoryGrantRequest();
request.items = {
    "bronze_sword": "1"
};

var grant_rewards = await hiro.inventoryGrant(session!, request);
print(grant_rewards);
```

### Remove inventory items

To remove items from a user's inventory, without consuming them, use a negative grant value.

```dart
var request = InventoryGrantRequest();
request.items = {
    "bronze_sword": "-1"
};

var grant_rewards = await hiro.inventoryGrant(session!, request);
print(grant_rewards);
```

## Update inventory items

Update the properties on one or more inventory items owned by the player.

```dart
var request = InventoryUpdateItemsRequest()
request.item_updates = {
    "bronze_sword": {
        "string_properties": {
            "example_property": "example_value"
        },
        "numeric_properties": {
            "numeric_properties": 10
        }
    }
};

var update_ack = await hiro.inventoryUpdate(session!, request);
print(update_ack);
```