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

# Sklepy i dostęp

> Role zespołu, granularne uprawnienia i izolacja między sklepami.

Użytkownik może posiadać kilka sklepów i należeć do zespołów innych sklepów. Każde żądanie z `{shopId}` jest sprawdzane względem dokładnie tego sklepu; identyfikator zasobu (np. produktu lub serwera) także musi do niego należeć.

## Presety ról

| Rola       | Domyślny zakres                                                                                     |
| ---------- | --------------------------------------------------------------------------------------------------- |
| `viewer`   | odczyt sklepu, produktów, zamówień i statystyk                                                      |
| `support`  | obsługa zamówień, odczyt produktów/statystyk/zespołu                                                |
| `manager`  | zarządzanie produktami, zamówieniami, rabatami i voucherami; odczyt serwerów, płatności i statystyk |
| `admin`    | operacyjne zarządzanie wszystkimi obszarami sklepu                                                  |
| właściciel | pełna kontrola, w tym usunięcie sklepu i decyzje zastrzeżone dla właściciela                        |

Historyczne role `view`, `edit` i `full` są mapowane odpowiednio na `viewer`, `manager` i `admin`. Do roli można dodać pojedyncze `customPermissions`.

<Warning>
  Roli `owner` ani globalnego `*` nie da się nadać członkowi zespołu. Osoba z `team:manage` może delegować wyłącznie podzbiór własnych efektywnych uprawnień.
</Warning>

## Dodanie istniejącego użytkownika

Endpoint wymaga `team:manage` i akceptuje sesję Bearer albo odpowiednio ograniczony klucz typu `shop`.

```bash theme={null}
curl -X POST https://api.itemshop.dev/api/v2/shops/<shopId>/team \
  -H "X-API-Key: <klucz-sklepu>" \
  -H "Content-Type: application/json" \
  -d '{ "userId": "<userId>", "roles": ["support"], "customPermissions": [] }'
```

Usunięcie członka:

```bash theme={null}
curl -X DELETE https://api.itemshop.dev/api/v2/shops/<shopId>/team/<userId> \
  -H "X-API-Key: <klucz-sklepu>"
```

Panel oferuje również linki zaproszeń z datą wygaśnięcia, limitem użyć oraz z góry ustalonym zakresem. Dołączenie tworzy prośbę, którą osoba z odpowiednim zakresem zatwierdza lub odrzuca.

## Odpowiedzi kontroli dostępu

* nieprawidłowy format `shopId` → `400`;
* brak lub błędne uwierzytelnienie → `401`;
* poprawna tożsamość, ale zbyt mały zakres albo inny sklep → `403`;
* brak sklepu lub zasobu w tym sklepie → `404`.

Wyniki dostępu są krótkotrwale buforowane. Zmiany zespołu i kluczy unieważniają powiązane wpisy cache, aby odebranie uprawnień nie czekało na naturalne wygaśnięcie.
