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

# Règles d'accès

> Programmez un début et une fin, limitez le nombre de scans, exigez un mot de passe, et mettez en pause, réactivez ou supprimez un QR code.

> [!NOTE]
>
> L'API GetQR est en version bêta et réservée à certains espaces de travail. Certains détails peuvent changer avant la disponibilité générale.

Contrôlez quand un QR code est résolu, combien de fois il peut être scanné, s'il demande un mot de passe, et s'il est en pause ou supprimé.

## Avant de commencer

* **Rôle.** Définir des règles, mettre en pause, réactiver et supprimer nécessitent un accès en écriture aux QR codes de l'espace de travail. Consultez [Authentification](https://docs.getqr.com/fr/api/authentication.md).
* **Abonnement.** Chaque requête API, y compris celles-ci, nécessite un abonnement actif du propriétaire de l'espace de travail.

## L'objet access

Envoyez un objet `access` quand vous [créez](https://docs.getqr.com/fr/api/endpoints/qr-codes.md#créer-un-qr-code) ou [modifiez](https://docs.getqr.com/fr/api/endpoints/qr-codes.md#modifier-un-qr-code) un QR code :

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

| Champ | Type | Description |
| - | - | - |
| `activeAt` | string (ISO 8601) \| null | Début programmé. Avant ce moment, les scans affichent la page de pause au lieu de la destination. `null` signifie actif immédiatement. |
| `pauseAt` | string (ISO 8601) \| null | Fin programmée. À partir de ce moment, les scans affichent la page de pause. `null` signifie aucune date de fin. |
| `scanLimit` | integer \| null | Nombre maximal de scans sur toute la durée de vie du QR code. Une fois dépassé, les scans affichent la page de pause. `null` signifie illimité. |
| `password` | string \| null | Mot de passe que les visiteurs doivent saisir avant d'être redirigés. L'envoyer active aussi la protection. |
| `passwordProtected` | boolean | Indique si le QR code demande un mot de passe. `false` désactive la protection mais conserve le mot de passe enregistré. `true` la réactive. |

Les champs omis restent inchangés. Envoyez `null` pour effacer une règle. Un objet `access` partiel ne réinitialise jamais les règles que vous n'avez pas mentionnées.

> [!WARNING]
>
> Les règles d'accès se placent sous `access`. Envoyer `activeAt`, `pauseAt`, `scanLimit`, `password` ou `passwordProtected` sous `link` renvoie `422`.

## Programmer un début et une fin

`activeAt` et `pauseAt` sont indépendants : définissez l'un, l'autre ou les deux. Tous deux acceptent des dates-heures ISO 8601, avec `Z` ou un décalage 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"
    }
  }'
```

Envoyez `null` pour effacer la programmation. Le QR code devient alors actif immédiatement et n'a plus de date de fin :

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

## Limite de scans

Plafonnez le nombre total de scans. Au-delà, le QR code n'est plus résolu :

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

Le compteur de scans sur la durée de vie tourne toujours, qu'une limite soit définie ou non. La modification de la limite est donc prévisible :

* **Augmenter la limite** libère exactement (nouvelle limite moins total des scans) scans supplémentaires.
* **Abaisser la limite** sous le total actuel bloque immédiatement le QR code.
* **Définir une limite plus tard** prend en compte les scans effectués quand aucune limite n'était définie.

`scanLimit` doit être un entier positif, jusqu'à 2147483647. Envoyez `null` pour un nombre illimité.

## Protection par mot de passe

Définissez un mot de passe via le même objet `access`. Le mot de passe enregistré est conservé quand vous désactivez la protection : vous pouvez donc la réactiver sans le renvoyer.

**1. Définissez ou changez le mot de passe**

Cela active aussi la protection.

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

**2. Désactivez la protection**

Le mot de passe enregistré est conservé.

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

**3. Réactivez la protection**

Inutile de renvoyer le mot de passe. Cela ne fonctionne qu'une fois un mot de passe défini. Sinon, la requête renvoie `422`.

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

* **À la création.** Envoyez `password` pour activer la protection. `passwordProtected` seul n'a aucun effet tant qu'aucun mot de passe n'existe.
* **Supprimer le mot de passe.** Envoyez `"password": null`. La protection est aussi désactivée.
* **Lecture.** Les réponses ne renvoient jamais le mot de passe, seulement `access.passwordProtected`.

## Mettre en pause, réactiver et supprimer

La mise en pause et la réactivation sont des endpoints distincts plutôt que des champs de `access`, car elles prennent effet immédiatement et non selon une programmation.

| Méthode | Chemin | Description |
| - | - | - |
| `POST` | `/api/v1/qrs/{qrId}/pause` | [Mettre le QR code en pause maintenant](https://docs.getqr.com/fr/api/endpoints/qr-codes.md#mettre-un-qr-code-en-pause). Les scans affichent la page de pause jusqu'à ce que vous le réactiviez. |
| `POST` | `/api/v1/qrs/{qrId}/activate` | [Réactiver un QR code en pause](https://docs.getqr.com/fr/api/endpoints/qr-codes.md#réactiver-un-qr-code). Toute programmation et toute limite de scans s'appliquent toujours. |
| `DELETE` | `/api/v1/qrs/{qrId}` | [Supprimer définitivement le QR code](https://docs.getqr.com/fr/api/endpoints/qr-codes.md#supprimer-un-qr-code) et son lien court. |

La mise en pause et la réactivation ne prennent pas de corps de requête et renvoient le [QR code](https://docs.getqr.com/fr/api/endpoints/qr-codes.md#l-objet-qr-code) mis à jour :

```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,
  "…": "…"
}
```

Vous pouvez aussi définir l'état de pause avec `PUT /api/v1/qrs/{qrId}` et `{ "archived": true }`, ou avec `archived` dans un `PATCH`. Consultez [Définir l'état de pause](https://docs.getqr.com/fr/api/endpoints/qr-codes.md#définir-l-état-de-pause).

La suppression retire à la fois le QR code et son lien court :

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

> [!WARNING]
>
> La suppression est irréversible. Le lien court n'est plus résolu, donc les codes imprimés cessent de fonctionner. Mettez plutôt le QR code en pause si vous risquez d'en avoir encore besoin.

## Quand les changements prennent effet

* **Scan suivant.** Les règles sont vérifiées au moment du scan : un changement s'applique à partir du scan suivant, sans effet rétroactif.
* **Page de pause.** Un QR code bloqué par une programmation, une limite de scans ou une pause affiche la page de pause. Le scan n'est pas redirigé.
* **Mot de passe.** Les visiteurs qui ont déjà saisi le mot de passe conservent l'accès jusqu'à ce que le mot de passe change, ou jusqu'à ce que la protection soit désactivée puis réactivée.
* **Horloge.** Les programmations utilisent l'horloge du serveur en UTC, pas l'heure locale du visiteur.
* **Combinaison des règles.** Un QR code n'est résolu que s'il n'est pas en pause, qu'il se trouve dans sa période programmée et qu'il n'a pas atteint sa limite de scans.

## Problèmes courants

> [accordion] 422 lors de la définition d'une règle sous link
>
> Envoyez la règle sous `access`, pas sous `link`.

> [accordion] 422 lors de l'activation de la protection par mot de passe
>
> Le QR code n'a pas encore de mot de passe. Envoyez `password` au lieu de `passwordProtected: true`.

> [accordion] Le QR code affiche toujours la page de pause après la réactivation
>
> Une programmation ou une limite de scans s'applique toujours. Vérifiez `access.activeAt`, `access.pauseAt` et `access.scanLimit` dans le [QR code](https://docs.getqr.com/fr/api/endpoints/qr-codes.md#récupérer-un-qr-code), et comparez `scans` à la limite.

> [accordion] Je veux que le lien expire
>
> `link.expiresAt` n'est pas disponible dans cette API. Utilisez plutôt `access.pauseAt`.

## Et ensuite

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

> [card] [Données des QR codes par type](https://docs.getqr.com/fr/api/guides/qr-types.md)


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