# Boutiques

> Lister, créer et récupérer les boutiques d'un tenant.

# Boutiques

`{idOrName}` dans chaque route ci-dessous accepte soit l'ObjectId de la
boutique, soit son nom exact (insensible à la casse) — encodez le nom dans
l'URL s'il contient des espaces (`Shop%20Name`). Deux boutiques partageant
le même nom entraînent un `409 AMBIGUOUS_SHOP` avec la liste des
identifiants candidats ; utilisez ensuite l'identifiant.

| Méthode | Chemin | Permission | Objet |
|---|---|---|---|
| GET | `/shops?page=&limit=` | `shops.read` | liste paginée, les plus récentes d'abord |
| POST | `/shops` | `shops.write` | créer avec le strict minimum |
| GET | `/shops/{idOrName}` | `shops.read` | une boutique |

## Créer une boutique

`POST /shops` ne prend que `{ name, phone? }` — tout le reste (coordonnées,
horaires d'ouverture, points de retrait, canaux) se complète depuis le
tableau de bord. La réponse est `201` avec une `setupUrl` qui ouvre
directement le formulaire d'édition de la boutique, et
`setupRequired: ["location", "operatingHours"]` indiquant ce qui manque
encore.

```bash
curl -s -X POST -H "Authorization: Bearer omk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"SHOP_NAME","phone":"+24177000000"}' \
  https://app.omni-manager.com/api/v1/shops
```

Échoue avec `402 QUOTA_EXCEEDED` à la limite de boutiques du plan, avec
`409 SHOP_NAME_TAKEN` sur un nom déjà pris, et avec
`409 TENANT_OWNER_MISSING` si le tenant n'a aucun utilisateur propriétaire
enregistré (dans ce cas, créez-la plutôt depuis le tableau de bord).
