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

# PriceLabs

> Dynamic pricing: listings, overrides, neighborhood data, rate plans, and reservations.

PriceLabs is included in Archal's environment catalog. Use it in a sandbox for dynamic pricing: listings, overrides, neighborhood data, rate plans, and reservations.

| | |
| - | - |
| Environment ID | `pricelabs` |
| Transport | REST |
| State | JSON |
| Contract | `archal.environment-state.pricelabs` version `1` |
| Channel | Public |
| Curated samples | 5 |

Public means the environment is released and startable. It still describes a bounded provider surface, not a promise that every upstream operation exists.

## Compatibility boundary

**Local catalog validation:** All five published samples passed. Checks cover the state contract, relationships, artifact hash, secret scan, and size limit.

> [!NOTE]
>
> Local catalog validation is not hosted proof. Archal checks current certification, reset, and isolation evidence before admitting new sandboxes. Use the authenticated environment catalog for live availability.

* Not a general pricing engine; unsupported listings and price-bearing override errors remain upstream-shaped.

## Curated starting states

List the five samples with `archal sample list pricelabs`. Each sample is a versioned starting state with a representative read, mutation, expected diff, reset expectation, and verified artifact hash.

> [accordion] PriceLabs listing baseline
>
> Read listing 486177 and merge a new base price through the supported settings overlay.
>
> **Sample ID:** `pricelabs.listing-baseline.v1`
>
> **Category:** `minimal`
>
> **Starting state:** 1 record across `_priceLabsReplayOverlay.runtimeListings`: 1
>
> **Supported surface:** Stateful listing-settings merge and date-override upsert overlay.
>
> **Required capabilities:** `state.read`, `state.load`, `state.reset`, `rest.listing-settings`
>
> **First read:** `GET /v1/listings/486177`. Expected result: HTTP 200.
>
> **Representative mutation:** `POST /v1/listings`. Expected result: HTTP 200, 201, 204.
>
> **Mutation input**
>
> ```json theme={null}
> {
>   "listings": [
>     {
>       "base": 205,
>       "id": "486177",
>       "pms": "ownerrez"
>     }
>   ]
> }
> ```
>
> **Expected diff:** changes include `_priceLabsReplayOverlay.runtimeListings`. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.
>
> **Expected reset:** restores loaded sample.
>
> **Known limits**
>
> * Not a general pricing engine; unsupported listings and price-bearing override errors remain upstream-shaped.
>
> **Start this sample**
>
> ```bash theme={null}
> archal sample show pricelabs.listing-baseline.v1 --raw > archal-pricelabs-listing-baseline.json
> archal state validate pricelabs archal-pricelabs-listing-baseline.json
> archal session create pricelabs \
>   --state pricelabs=archal-pricelabs-listing-baseline.json
> ```
>
> **Inspect the raw state**
>
> ```bash theme={null}
> archal sample show pricelabs.listing-baseline.v1 --raw
> ```
>
> The packaged JSON artifact is `samples/states/pricelabs/listing-baseline/state.json` and is 254 bytes. The CLI verifies SHA-256 `4b47dea92b94e3b4cff35b117c754162865b5269141a84187a448bb408b194d1` before printing it.
>
> Catalog validation: **Passed**. Hosted availability is determined by Archal's live certification and admission system, not this static page.

> [accordion] PriceLabs small rental portfolio
>
> Exercise four listings with distinct min, base, max, and push-enabled settings.
>
> **Sample ID:** `pricelabs.rental-portfolio.v1`
>
> **Category:** `small-team`
>
> **Starting state:** 4 records across `_priceLabsReplayOverlay.runtimeListings`: 4
>
> **Supported surface:** Stateful listing-settings merge and date-override upsert overlay.
>
> **Required capabilities:** `state.read`, `state.load`, `state.reset`, `rest.listing-settings`
>
> **First read:** `GET /v1/listings/486177`. Expected result: HTTP 200.
>
> **Representative mutation:** `POST /v1/listings`. Expected result: HTTP 200, 201, 204.
>
> **Mutation input**
>
> ```json theme={null}
> {
>   "listings": [
>     {
>       "base": 205,
>       "id": "486177",
>       "pms": "ownerrez"
>     }
>   ]
> }
> ```
>
> **Expected diff:** changes include `_priceLabsReplayOverlay.runtimeListings`. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.
>
> **Expected reset:** restores loaded sample.
>
> **Known limits**
>
> * Not a general pricing engine; unsupported listings and price-bearing override errors remain upstream-shaped.
>
> **Start this sample**
>
> ```bash theme={null}
> archal sample show pricelabs.rental-portfolio.v1 --raw > archal-pricelabs-rental-portfolio.json
> archal state validate pricelabs archal-pricelabs-rental-portfolio.json
> archal session create pricelabs \
>   --state pricelabs=archal-pricelabs-rental-portfolio.json
> ```
>
> **Inspect the raw state**
>
> ```bash theme={null}
> archal sample show pricelabs.rental-portfolio.v1 --raw
> ```
>
> The packaged JSON artifact is `samples/states/pricelabs/rental-portfolio/state.json` and is 727 bytes. The CLI verifies SHA-256 `002091be33271b02881abcefd382e3bbfcfa4aeaa3109ec3c17187a6ffc3ee96` before printing it.
>
> Catalog validation: **Passed**. Hosted availability is determined by Archal's live certification and admission system, not this static page.

> [accordion] PriceLabs populated settings catalog
>
> Exercise twenty listings and ten related date-override groups for list, merge, and reset behavior.
>
> **Sample ID:** `pricelabs.listing-settings-catalog.v1`
>
> **Category:** `populated`
>
> **Starting state:** 30 records across `_priceLabsReplayOverlay.runtimeListings`: 20, `_priceLabsReplayOverlay.runtimeOverrides`: 10
>
> **Supported surface:** Stateful listing-settings merge and date-override upsert overlay.
>
> **Required capabilities:** `state.read`, `state.load`, `state.reset`, `rest.listing-settings`
>
> **First read:** `GET /v1/listings/486177`. Expected result: HTTP 200.
>
> **Representative mutation:** `POST /v1/listings`. Expected result: HTTP 200, 201, 204.
>
> **Mutation input**
>
> ```json theme={null}
> {
>   "listings": [
>     {
>       "base": 205,
>       "id": "486177",
>       "pms": "ownerrez"
>     }
>   ]
> }
> ```
>
> **Expected diff:** changes include `_priceLabsReplayOverlay.runtimeListings`. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.
>
> **Expected reset:** restores loaded sample.
>
> **Known limits**
>
> * Not a general pricing engine; unsupported listings and price-bearing override errors remain upstream-shaped.
>
> **Start this sample**
>
> ```bash theme={null}
> archal sample show pricelabs.listing-settings-catalog.v1 --raw > archal-pricelabs-listing-settings-catalog.json
> archal state validate pricelabs archal-pricelabs-listing-settings-catalog.json
> archal session create pricelabs \
>   --state pricelabs=archal-pricelabs-listing-settings-catalog.json
> ```
>
> **Inspect the raw state**
>
> ```bash theme={null}
> archal sample show pricelabs.listing-settings-catalog.v1 --raw
> ```
>
> The packaged JSON artifact is `samples/states/pricelabs/listing-settings-catalog/state.json` and is 5,299 bytes. The CLI verifies SHA-256 `1adef105073d867b4c0ebc7b33ed8c30961ab0fac39b9ed20dbf4b5c83418975` before printing it.
>
> Catalog validation: **Passed**. Hosted availability is determined by Archal's live certification and admission system, not this static page.

> [accordion] PriceLabs leap-day override
>
> Verify a valid 2028 leap-day minimum-stay override on listing 486177.
>
> **Sample ID:** `pricelabs.leap-day-override.v1`
>
> **Category:** `edge-case`
>
> **Starting state:** 2 records across `_priceLabsReplayOverlay.runtimeListings`: 1, `_priceLabsReplayOverlay.runtimeOverrides`: 1
>
> **Supported surface:** Stateful listing-settings merge and date-override upsert overlay.
>
> **Required capabilities:** `state.read`, `state.load`, `state.reset`, `rest.listing-settings`
>
> **First read:** `GET /v1/listings/486177/overrides`. Expected result: HTTP 200.
>
> **Representative mutation:** `POST /v1/listings/486177/overrides`. Expected result: HTTP 200.
>
> **Mutation input**
>
> ```json theme={null}
> {
>   "overrides": [
>     {
>       "date": "2028-02-29",
>       "min_stay": 3
>     }
>   ]
> }
> ```
>
> **Expected diff:** changes include `_priceLabsReplayOverlay.runtimeOverrides`. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.
>
> **Expected reset:** restores loaded sample.
>
> **Known limits**
>
> * Not a general pricing engine; unsupported listings and price-bearing override errors remain upstream-shaped.
>
> **Start this sample**
>
> ```bash theme={null}
> archal sample show pricelabs.leap-day-override.v1 --raw > archal-pricelabs-leap-day-override.json
> archal state validate pricelabs archal-pricelabs-leap-day-override.json
> archal session create pricelabs \
>   --state pricelabs=archal-pricelabs-leap-day-override.json
> ```
>
> **Inspect the raw state**
>
> ```bash theme={null}
> archal sample show pricelabs.leap-day-override.v1 --raw
> ```
>
> The packaged JSON artifact is `samples/states/pricelabs/leap-day-override/state.json` and is 465 bytes. The CLI verifies SHA-256 `032a4e24a24e6ae2c2e27176764820784aed66f7d5678067cba1c0b7d17ed67c` before printing it.
>
> Catalog validation: **Passed**. Hosted availability is determined by Archal's live certification and admission system, not this static page.

> [accordion] PriceLabs holiday override workflow
>
> Read existing holiday settings, extend the minimum-stay window, and verify reset.
>
> **Sample ID:** `pricelabs.holiday-override-workflow.v1`
>
> **Category:** `workflow`
>
> **Starting state:** 3 records across `_priceLabsReplayOverlay.runtimeListings`: 2, `_priceLabsReplayOverlay.runtimeOverrides`: 1
>
> **Supported surface:** Stateful listing-settings merge and date-override upsert overlay.
>
> **Required capabilities:** `state.read`, `state.load`, `state.reset`, `rest.listing-settings`
>
> **First read:** `GET /v1/listings/486177/overrides`. Expected result: HTTP 200.
>
> **Representative mutation:** `POST /v1/listings/486177/overrides`. Expected result: HTTP 200.
>
> **Mutation input**
>
> ```json theme={null}
> {
>   "overrides": [
>     {
>       "date": "2027-07-05",
>       "min_stay": 5
>     }
>   ]
> }
> ```
>
> **Expected diff:** changes include `_priceLabsReplayOverlay.runtimeOverrides`. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.
>
> **Expected reset:** restores loaded sample.
>
> **Known limits**
>
> * Not a general pricing engine; unsupported listings and price-bearing override errors remain upstream-shaped.
>
> **Start this sample**
>
> ```bash theme={null}
> archal sample show pricelabs.holiday-override-workflow.v1 --raw > archal-pricelabs-holiday-override-workflow.json
> archal state validate pricelabs archal-pricelabs-holiday-override-workflow.json
> archal session create pricelabs \
>   --state pricelabs=archal-pricelabs-holiday-override-workflow.json
> ```
>
> **Inspect the raw state**
>
> ```bash theme={null}
> archal sample show pricelabs.holiday-override-workflow.v1 --raw
> ```
>
> The packaged JSON artifact is `samples/states/pricelabs/holiday-override-workflow/state.json` and is 749 bytes. The CLI verifies SHA-256 `c85deba33d4e6471aea25f25da348f814e1e09fa4e6e1e14a10733deda775701` before printing it.
>
> Catalog validation: **Passed**. Hosted availability is determined by Archal's live certification and admission system, not this static page.

## Use custom state

Start from a sample when possible. For custom state, inspect the contract with `archal environment describe pricelabs`, then validate the file before creating a sandbox:

```bash theme={null}
archal state validate pricelabs state.json
```

Loading state replaces the current collections and establishes a new reset baseline. See [Starting state](https://docs.archal.ai/sandboxes/starting-state.md) before replacing state in an existing sandbox.


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