# Bookings

Read [Bookings](/concepts/bookings) for what a seat and a hold are.

## What a site takes bookings for

| Call | What it does |
|---|---|
| `POST /v1/sites/{id}/bookable` | declares what the site takes bookings for |
| `GET /v1/sites/{id}/bookable` | reads it back |
| `DELETE /v1/sites/{id}/bookable` | stops taking bookings |

A bookable carries its calendars, each with a capacity and an IANA time
zone, and a `notify_to` address.

`notify_to` takes the same rule a form takes: an address on the account.

`DELETE` needs `?confirm=true`. A calendar is archived rather than
deleted, because the rows it holds are receipts.

## What visitors booked

| Call | What it does |
|---|---|
| `GET /v1/sites/{id}/bookings` | the site's bookings |
| `GET /v1/bookings/{id}` | one booking |
| `POST /v1/bookings/{id}/cancel` | cancels it and frees the seat |

Clave keeps a hash of the visitor's address, not the address.

## The visitor's own door

A visitor books from the site's page, with no token:

| Call | What it does |
|---|---|
| `POST /b/{public_id}` | takes a booking |
| `GET /b/{public_id}` | what this site takes bookings for |
| `GET /b/{public_id}/days` | which days have room |
| `GET /b/{public_id}/slots` | which times have room |

Those four are for the site's own HTML. An agent uses the `/v1` calls
above.

---

## Where this page sits

This is one page of the Clave documentation.
Read it as a web page at https://docs.heyclave.party/api/bookings.
Every page has a `.md` address, and https://docs.heyclave.party/llms.txt lists them all.

- Previous: [Forms](https://docs.heyclave.party/api/forms.md)
- Next: [Payments](https://docs.heyclave.party/api/payments.md)
- Index: [Overview](https://docs.heyclave.party/index.md)
