# Cliento API reference: Locations

Base URL: `https://api.cliento.com`

A location is one place of business, such as one salon or one branch of a car wash. An
organisation with one salon has one location. A chain has one per salon.

Everything else in the API belongs to a location: customers, services, bookings, staff, points of
sale and stock.

## Locations

The Locations API lists the locations your API key can use. Start here: almost every other call
takes a location id in its path, as `/v1/locations/{locationId}/...`.

A location has an id of the form `loc_...`. An API key belongs to one organisation. It can be
limited to some of the organisation's locations.

A customer is registered at one location, and is changed or deleted through that location's path.
An organisation can share its customers between its locations. `GET /v1/customers` then lists
them for every location your key can use, each with its `locationId`.

An item can also be read by its id, without its location. See "Identifiers" in the introduction.

### List locations

`GET /v1/locations`

Stability: preview

The locations this API key can be used on. Almost everything else is addressed under one of them.

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 | OK | LocationList |
| default | Any failure. See the Errors section. | Error |

### Get a location

`GET /v1/locations/{locationId}`

Stability: preview

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `locationId` | path | string | Yes |  |

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| 200 | OK | Location |
| default | Any failure. See the Errors section. | Error |

## Schemas

### Error

The body of every non-2xx response.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `code` | string | Yes | Stable, machine-readable error code. Values today: `invalid_request`, `validation_failed`, `entity_not_found`, `duplicate`, `merchant_required`, `code_already_used`, `gift_card_already_used`, `pin_not_recognised`, `insufficient_stock`, `not_allowed`, `request_in_progress`, `idempotency_key_reused`, `unauthenticated`, `forbidden`, `account_blocked`, `rate_limited`, `route_not_found`, `method_not_allowed`, `internal_error`. |
| `details` | object of any value | No | Extra detail. For `validation_failed`, `fieldErrors` maps each rejected field to the reason. |
| `message` | string | Yes | Human-readable explanation. Not stable; do not parse it. |

### Location

One place of business, such as one salon or one branch of a car wash. Everything else in the API belongs to a location.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `currency` | string | Yes | ISO 4217 currency code. Example: `SEK`. |
| `id` | string | Yes | Location id. Example: `loc_4fK9xQ2mLr8TzB1vNc7HdW`. |
| `name` | string | Yes |  |
| `timeZone` | string | Yes | IANA time zone. Example: `Europe/Stockholm`. |

### LocationList

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | array of Location | Yes |  |
