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

# Shop Definition

> Configure shop behavior.

The **Shop Definition** configures the inventory, pricing model, and stock rules for a shop.

## General Settings

<ResponseField name="title" type="String" default="Shop">
  GUI Title.
</ResponseField>

<ResponseField name="rows" type="Int" default="6">
  GUI Size.
</ResponseField>

<ResponseField name="currency" type="Enum" default="VAULT">
  Economy provider: `VAULT`, `PLACEHOLDER`, `POINTS`, etc.
</ResponseField>

<ResponseField name="taxes" type="Double" default="0.0">
  Tax rate added to purchase price (e.g. `0.1` = 10% tax).
</ResponseField>

<ResponseField name="resetPolicy" type="Enum" default="NONE">
  When to restock: `NONE`, `DAILY`, `WEEKLY`, `INTERVAL`.
</ResponseField>

<ResponseField name="artifact" type="Ref<Artifact>">
  Storage artifact to save dynamic state.
</ResponseField>

## Items Configuration

<ResponseField name="items" type="List<ShopItem>">
  The products sold in this shop.
</ResponseField>

### Shop Item Structure

<ResponseField name="item" type="Item" required>
  The item to trade.
</ResponseField>

<ResponseField name="limitPerPlayer" type="Int" default="0">
  Max purchases per player per reset interval (0 = unlimited).
</ResponseField>

<ResponseField name="strategy" type="PriceStrategy">
  Pricing logic.
</ResponseField>

## Price Strategy

<ResponseField name="price" type="Double" required>
  Base Buy Price (at 100% stock).
</ResponseField>

<ResponseField name="sellPrice" type="Double" required>
  Base Sell Price (at 100% stock).
</ResponseField>

<ResponseField name="stockMax" type="Int" default="0">
  Maximum stock level.

  * `0`: Infinite stock (Static Price).
  * `>0`: Dynamic stock (Dynamic Price).
</ResponseField>

<ResponseField name="step" type="Double" default="0.1">
  Price elasticity. How much price changes per missing stock unit.
</ResponseField>

<ResponseField name="min" type="Double">
  Minimum possible price cap.
</ResponseField>

<ResponseField name="max" type="Double">
  Maximum possible price cap.
</ResponseField>
