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

# Reguły dostępu

> Zaplanuj początek i koniec, ogranicz liczbę skanowań, wymagaj hasła oraz wstrzymuj, ponownie aktywuj lub usuwaj kod QR.

> [!NOTE]
>
> API GetQR jest w wersji beta i jest dostępne dla wybranych obszarów roboczych. Szczegóły mogą się zmienić przed ogólną premierą.

Określ, kiedy kod QR prowadzi do celu, ile razy można go zeskanować, czy wymaga hasła oraz czy jest wstrzymany lub usunięty.

## Zanim zaczniesz

* **Rola.** Ustawianie reguł, wstrzymywanie, ponowna aktywacja i usuwanie wymagają uprawnień do zapisu kodów QR w obszarze roboczym. Zobacz [Uwierzytelnianie](https://docs.getqr.com/pl/api/authentication.md).
* **Subskrypcja.** Każde żądanie do API, w tym te, wymaga aktywnej subskrypcji właściciela obszaru roboczego.

## Obiekt access

Wyślij obiekt `access` przy [tworzeniu](https://docs.getqr.com/pl/api/endpoints/qr-codes.md#tworzenie-kodu-qr) lub [aktualizacji](https://docs.getqr.com/pl/api/endpoints/qr-codes.md#aktualizacja-kodu-qr) kodu QR:

```text theme={null}
POST  /api/v1/qrs
PATCH /api/v1/qrs/{qrId}
```

| Pole | Typ | Opis |
| - | - | - |
| `activeAt` | string (ISO 8601) \| null | Zaplanowany początek. Przed tą chwilą skanowania pokazują stronę wstrzymania zamiast celu. `null` oznacza, że kod jest aktywny od razu. |
| `pauseAt` | string (ISO 8601) \| null | Zaplanowany koniec. Od tej chwili skanowania pokazują stronę wstrzymania. `null` oznacza brak daty końcowej. |
| `scanLimit` | integer \| null | Maksymalna liczba skanowań w całym okresie istnienia kodu QR. Po jej przekroczeniu skanowania pokazują stronę wstrzymania. `null` oznacza brak limitu. |
| `password` | string \| null | Hasło, które odwiedzający musi wpisać przed przekierowaniem. Wysłanie go włącza też ochronę. |
| `passwordProtected` | boolean | Czy kod QR wymaga hasła. `false` wyłącza ochronę, ale zachowuje zapisane hasło. `true` włącza ją ponownie. |

Pominięte pola pozostają bez zmian. Aby usunąć regułę, wyślij `null`. Częściowy obiekt `access` nigdy nie resetuje reguł, których nie podano.

> [!WARNING]
>
> Reguły dostępu należą do `access`. Wysłanie `activeAt`, `pauseAt`, `scanLimit`, `password` lub `passwordProtected` w `link` zwraca `422`.

## Planowanie początku i końca

`activeAt` i `pauseAt` są niezależne: ustaw jedno z nich albo oba. Oba przyjmują datę i godzinę w formacie ISO 8601, z `Z` lub przesunięciem względem UTC.

```bash theme={null}
curl -X PATCH "https://getqr.com/api/v1/qrs/qr_abc123" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "access": {
      "activeAt": "2026-08-01T09:00:00Z",
      "pauseAt": "2026-08-31T23:59:59Z"
    }
  }'
```

Wyślij `null`, aby usunąć harmonogram. Kod QR staje się wtedy od razu aktywny, a data końcowa znika:

```json theme={null}
{
  "access": { "activeAt": null, "pauseAt": null }
}
```

## Limit skanowań

Ogranicz łączną liczbę skanowań. Po jej osiągnięciu kod QR przestaje prowadzić do celu:

```json theme={null}
{
  "access": { "scanLimit": 500 }
}
```

Licznik skanowań z całego okresu istnienia kodu działa zawsze, niezależnie od tego, czy limit jest ustawiony. Dzięki temu zmiana limitu jest przewidywalna:

* **Podniesienie limitu** daje dokładnie (nowy limit minus łączna liczba skanowań) kolejnych skanowań.
* **Obniżenie limitu** poniżej obecnej łącznej liczby od razu blokuje kod QR.
* **Ustawienie limitu później** uwzględnia skanowania wykonane, gdy limit nie był ustawiony.

`scanLimit` musi być dodatnią liczbą całkowitą nie większą niż 2147483647. Aby znieść limit, wyślij `null`.

## Ochrona hasłem

Hasło ustawia się w tym samym obiekcie `access`. Po wyłączeniu ochrony zapisane hasło zostaje zachowane, więc możesz ją włączyć ponownie bez ponownego wysyłania hasła.

**1. Ustaw lub zmień hasło**

To również włącza ochronę.

```json theme={null}
{ "access": { "password": "hunter2" } }
```

**2. Wyłącz ochronę**

Zapisane hasło zostaje zachowane.

```json theme={null}
{ "access": { "passwordProtected": false } }
```

**3. Włącz ochronę ponownie**

Nie musisz ponownie wysyłać hasła. Działa to tylko wtedy, gdy hasło zostało już ustawione. W przeciwnym razie żądanie zwraca `422`.

```json theme={null}
{ "access": { "passwordProtected": true } }
```

* **Przy tworzeniu.** Wyślij `password`, aby włączyć ochronę. Samo `passwordProtected` nic nie zmienia, dopóki nie istnieje hasło.
* **Usunięcie hasła.** Wyślij `"password": null`. Ochrona też zostanie wyłączona.
* **Odczyt.** Odpowiedzi nigdy nie zwracają hasła, tylko `access.passwordProtected`.

## Wstrzymywanie, ponowna aktywacja i usuwanie

Wstrzymanie i ponowna aktywacja to osobne endpointy, a nie pola `access`, ponieważ działają natychmiast, a nie według harmonogramu.

| Metoda | Ścieżka | Opis |
| - | - | - |
| `POST` | `/api/v1/qrs/{qrId}/pause` | [Wstrzymaj kod QR od razu](https://docs.getqr.com/pl/api/endpoints/qr-codes.md#wstrzymanie-kodu-qr). Skanowania pokazują stronę wstrzymania, dopóki go ponownie nie aktywujesz. |
| `POST` | `/api/v1/qrs/{qrId}/activate` | [Ponownie aktywuj wstrzymany kod QR](https://docs.getqr.com/pl/api/endpoints/qr-codes.md#ponowna-aktywacja-kodu-qr). Harmonogram i limit skanowań nadal obowiązują. |
| `DELETE` | `/api/v1/qrs/{qrId}` | [Trwale usuń kod QR](https://docs.getqr.com/pl/api/endpoints/qr-codes.md#usuwanie-kodu-qr) i jego krótki link. |

Wstrzymanie i aktywacja nie przyjmują treści żądania i zwracają zaktualizowany [kod QR](https://docs.getqr.com/pl/api/endpoints/qr-codes.md#obiekt-kodu-qr):

```bash theme={null}
curl -X POST "https://getqr.com/api/v1/qrs/qr_abc123/pause" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json theme={null}
{
  "id": "qr_abc123",
  "archived": true,
  "…": "…"
}
```

Stan wstrzymania możesz też ustawić przez `PUT /api/v1/qrs/{qrId}` z `{ "archived": true }` albo polem `archived` w żądaniu `PATCH`. Zobacz [Ustawianie stanu wstrzymania](https://docs.getqr.com/pl/api/endpoints/qr-codes.md#ustawianie-stanu-wstrzymania).

Usunięcie kasuje kod QR razem z jego krótkim linkiem:

```json theme={null}
{ "id": "qr_abc123", "deleted": true }
```

> [!WARNING]
>
> Usunięcia nie można cofnąć. Krótki link przestaje działać, więc wydrukowane kody też przestają działać. Jeśli kod może się jeszcze przydać, lepiej go wstrzymaj.

## Kiedy zmiany zaczynają działać

* **Następne skanowanie.** Reguły są sprawdzane przy skanowaniu kodu, więc zmiana obowiązuje od następnego skanowania, a nie wstecz.
* **Strona wstrzymania.** Kod QR zablokowany przez harmonogram, limit skanowań lub wstrzymanie pokazuje stronę wstrzymania. Skanowanie nie jest przekierowywane.
* **Hasło.** Odwiedzający, którzy już wpisali hasło, zachowują dostęp do czasu zmiany hasła albo wyłączenia i ponownego włączenia ochrony.
* **Zegar.** Harmonogramy korzystają z zegara serwera w UTC, a nie z czasu lokalnego odwiedzającego.
* **Reguły działają łącznie.** Kod QR prowadzi do celu tylko wtedy, gdy nie jest wstrzymany, mieści się w harmonogramie i nie przekroczył limitu skanowań.

## Typowe problemy

> [accordion] 422 przy ustawianiu reguły w link
>
> Wyślij regułę w `access`, a nie w `link`.

> [accordion] 422 przy włączaniu ochrony hasłem
>
> Kod QR nie ma jeszcze hasła. Wyślij `password` zamiast `passwordProtected: true`.

> [accordion] Kod QR po ponownej aktywacji nadal pokazuje stronę wstrzymania
>
> Nadal obowiązuje harmonogram lub limit skanowań. Sprawdź `access.activeAt`, `access.pauseAt` i `access.scanLimit` w [kodzie QR](https://docs.getqr.com/pl/api/endpoints/qr-codes.md#odczyt-kodu-qr) i porównaj `scans` z limitem.

> [accordion] Link ma wygasnąć
>
> `link.expiresAt` nie jest dostępne w tym API. Użyj zamiast tego `access.pauseAt`.

## Co dalej

> [card] [Kody QR](https://docs.getqr.com/pl/api/endpoints/qr-codes.md)

> [card] [Dane kodu QR według typu](https://docs.getqr.com/pl/api/guides/qr-types.md)


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