> ## 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.

# Правила доступа

> Задайте начало и окончание работы, ограничьте число сканирований, установите пароль, приостановите, возобновите или удалите QR-код.

> [!NOTE]
>
> GetQR API находится в бета-версии и доступен для отдельных рабочих пространств. До общего релиза детали могут измениться.

Управляйте тем, когда QR-код ведёт на адрес назначения, сколько раз его можно отсканировать, запрашивает ли он пароль и приостановлен или удалён ли он.

## Перед началом

* **Роль.** Для настройки правил, приостановки, возобновления и удаления нужен доступ на запись к QR-кодам в рабочем пространстве. См. [Аутентификация](https://docs.getqr.com/ru/api/authentication.md).
* **Подписка.** Каждому запросу к API, включая эти, нужна активная подписка владельца рабочего пространства.

## Объект access

Передайте объект `access`, когда [создаёте](https://docs.getqr.com/ru/api/endpoints/qr-codes.md#создание-qr-кода) или [обновляете](https://docs.getqr.com/ru/api/endpoints/qr-codes.md#обновление-qr-кода) QR-код:

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

| Поле | Тип | Описание |
| - | - | - |
| `activeAt` | string (ISO 8601) \| null | Запланированное начало. До этого момента сканирования показывают страницу паузы вместо адреса назначения. `null` — активен сразу. |
| `pauseAt` | string (ISO 8601) \| null | Запланированное окончание. С этого момента сканирования показывают страницу паузы. `null` — без даты окончания. |
| `scanLimit` | integer \| null | Максимальное число сканирований за всё время жизни QR-кода. После превышения сканирования показывают страницу паузы. `null` — без ограничений. |
| `password` | string \| null | Пароль, который посетители должны ввести перед перенаправлением. Его передача также включает защиту. |
| `passwordProtected` | boolean | Запрашивает ли QR-код пароль. `false` отключает защиту, но сохраняет пароль. `true` снова включает её. |

Пропущенные поля не меняются. Чтобы удалить правило, передайте `null`. Частичный объект `access` никогда не сбрасывает правила, которые в нём не упомянуты.

> [!WARNING]
>
> Правила доступа передаются в `access`. Передача `activeAt`, `pauseAt`, `scanLimit`, `password` или `passwordProtected` в `link` возвращает `422`.

## Расписание начала и окончания

`activeAt` и `pauseAt` независимы: задайте одно из них или оба. Оба принимают дату и время в ISO 8601 с `Z` или смещением от 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"
    }
  }'
```

Чтобы удалить расписание, передайте `null`. QR-код сразу станет активным, а дата окончания будет удалена:

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

## Лимит сканирований

Ограничьте общее число сканирований. После этого QR-код перестаёт вести на адрес назначения:

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

Счётчик сканирований за всё время работает всегда, независимо от того, задан ли лимит. Поэтому изменение лимита предсказуемо:

* **Повышение лимита** добавляет ровно столько сканирований, сколько составляет разница между новым лимитом и общим числом сканирований.
* **Понижение лимита** ниже текущего общего числа сразу блокирует QR-код.
* **Лимит, заданный позже,** учитывает сканирования, сделанные, пока лимита не было.

`scanLimit` должен быть положительным целым числом не больше 2147483647. Для неограниченного числа передайте `null`.

## Защита паролем

Пароль задаётся через тот же объект `access`. Когда вы отключаете защиту, пароль сохраняется, поэтому её можно снова включить, не передавая пароль повторно.

**1. Задайте или измените пароль**

Это также включает защиту.

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

**2. Отключите защиту**

Пароль сохраняется.

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

**3. Снова включите защиту**

Передавать пароль повторно не нужно. Это работает, только если пароль уже задан. Иначе запрос получит `422`.

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

* **При создании.** Чтобы включить защиту, передайте `password`. Один `passwordProtected` ни на что не влияет, пока пароля нет.
* **Удаление пароля.** Передайте `"password": null`. Защита тоже отключится.
* **Чтение.** Ответы никогда не возвращают пароль, только `access.passwordProtected`.

## Приостановка, возобновление и удаление

Приостановка и возобновление — это отдельные эндпоинты, а не поля `access`, потому что они действуют сразу, а не по расписанию.

| Метод | Путь | Описание |
| - | - | - |
| `POST` | `/api/v1/qrs/{qrId}/pause` | [Приостановить QR-код сейчас](https://docs.getqr.com/ru/api/endpoints/qr-codes.md#приостановка-qr-кода). Сканирования показывают страницу паузы, пока вы его не возобновите. |
| `POST` | `/api/v1/qrs/{qrId}/activate` | [Возобновить приостановленный QR-код](https://docs.getqr.com/ru/api/endpoints/qr-codes.md#возобновление-qr-кода). Расписание и лимит сканирований продолжают действовать. |
| `DELETE` | `/api/v1/qrs/{qrId}` | [Безвозвратно удалить QR-код](https://docs.getqr.com/ru/api/endpoints/qr-codes.md#удаление-qr-кода) и его короткую ссылку. |

Приостановка и возобновление не принимают тело запроса и возвращают обновлённый [QR-код](https://docs.getqr.com/ru/api/endpoints/qr-codes.md#объект-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,
  "…": "…"
}
```

Состояние паузы также можно задать через `PUT /api/v1/qrs/{qrId}` с `{ "archived": true }` или через `archived` в `PATCH`. См. [Установка состояния паузы](https://docs.getqr.com/ru/api/endpoints/qr-codes.md#установка-состояния-паузы).

Удаление стирает QR-код вместе с его короткой ссылкой:

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

> [!WARNING]
>
> Удаление нельзя отменить. Короткая ссылка перестаёт работать, поэтому напечатанные коды тоже перестают работать. Если QR-код может снова понадобиться, лучше приостановите его.

## Когда изменения вступают в силу

* **Следующее сканирование.** Правила проверяются при сканировании, поэтому изменение действует со следующего сканирования, а не задним числом.
* **Страница паузы.** QR-код, заблокированный расписанием, лимитом сканирований или паузой, показывает страницу паузы. Перенаправления не происходит.
* **Пароль.** Посетители, которые уже ввели пароль, сохраняют доступ, пока пароль не изменится или пока защиту не выключат и снова не включат.
* **Часы.** Расписания используют часы сервера в UTC, а не местное время посетителя.
* **Правила действуют вместе.** QR-код ведёт на адрес назначения, только если он не приостановлен, находится в пределах расписания и не превысил лимит сканирований.

## Частые проблемы

> [accordion] 422 при передаче правила в link
>
> Передавайте правило в `access`, а не в `link`.

> [accordion] 422 при включении защиты паролем
>
> У QR-кода ещё нет пароля. Передайте `password` вместо `passwordProtected: true`.

> [accordion] После возобновления QR-код всё ещё показывает страницу паузы
>
> Продолжает действовать расписание или лимит сканирований. Проверьте `access.activeAt`, `access.pauseAt` и `access.scanLimit` в [QR-коде](https://docs.getqr.com/ru/api/endpoints/qr-codes.md#получение-qr-кода) и сравните `scans` с лимитом.

> [accordion] Мне нужно, чтобы ссылка истекала
>
> `link.expiresAt` в этом API недоступен. Используйте вместо него `access.pauseAt`.

## Что дальше

> [card] [QR-коды](https://docs.getqr.com/ru/api/endpoints/qr-codes.md)

> [card] [Данные QR-кода по типам](https://docs.getqr.com/ru/api/guides/qr-types.md)


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