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

# Åtkomstregler

> Schemalägg start och slut, begränsa antalet skanningar, kräv ett lösenord och pausa, återaktivera eller ta bort en QR-kod.

> [!NOTE]
>
> GetQR:s API är i beta och finns för utvalda arbetsytor. Detaljer kan ändras före den allmänna lanseringen.

Styr när en QR-kod löses in, hur många gånger den kan skannas, om den kräver ett lösenord och om den är pausad eller borttagen.

## Innan du börjar

* **Roll.** För att ange regler, pausa, återaktivera och ta bort behöver du skrivåtkomst till QR-koder i arbetsytan. Se [Autentisering](https://docs.getqr.com/sv/api/authentication.md).
* **Prenumeration.** Alla begäranden till API:et, även dessa, kräver att arbetsytans ägare har en aktiv prenumeration.

## Access-objektet

Skicka ett `access`-objekt när du [skapar](https://docs.getqr.com/sv/api/endpoints/qr-codes.md#skapa-en-qr-kod) eller [uppdaterar](https://docs.getqr.com/sv/api/endpoints/qr-codes.md#uppdatera-en-qr-kod) en QR-kod:

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

| Fält | Typ | Beskrivning |
| - | - | - |
| `activeAt` | string (ISO 8601) \| null | Schemalagd start. Före den tidpunkten visar skanningar pausningssidan i stället för målet. `null` betyder aktiv direkt. |
| `pauseAt` | string (ISO 8601) \| null | Schemalagt slut. Från och med den tidpunkten visar skanningar pausningssidan. `null` betyder inget slutdatum. |
| `scanLimit` | integer \| null | Högsta antal skanningar under QR-kodens livstid. När gränsen överskrids visar skanningar pausningssidan. `null` betyder obegränsat. |
| `password` | string \| null | Lösenord som besökare måste ange innan de omdirigeras. Om du skickar det aktiveras också skyddet. |
| `passwordProtected` | boolean | Om QR-koden kräver ett lösenord. `false` stänger av skyddet men behåller det sparade lösenordet. `true` aktiverar det igen. |

Fält som du utelämnar lämnas oförändrade. Skicka `null` för att rensa en regel. Ett partiellt `access`-objekt återställer aldrig regler som du inte nämner.

> [!WARNING]
>
> Åtkomstregler hör hemma under `access`. Om du skickar `activeAt`, `pauseAt`, `scanLimit`, `password` eller `passwordProtected` under `link` får du `422`.

## Schemalägg start och slut

`activeAt` och `pauseAt` är oberoende av varandra: ange det ena eller båda. Båda tar datum och tid i ISO 8601, med `Z` eller en UTC-förskjutning.

```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"
    }
  }'
```

Skicka `null` för att rensa schemat. Då blir QR-koden aktiv direkt och slutdatumet tas bort:

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

## Skanningsgräns

Begränsa det totala antalet skanningar. Därefter slutar QR-koden att lösas in:

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

Räknaren för skanningar under livstiden går alltid, oavsett om en gräns är satt eller inte. Det gör ändringar av gränsen förutsägbara:

* **Att höja gränsen** ger exakt (ny gräns minus totala skanningar) fler skanningar.
* **Att sänka gränsen** under det nuvarande totala antalet blockerar QR-koden direkt.
* **Att sätta en gräns i efterhand** räknar med de skanningar som gjordes medan ingen gräns fanns.

`scanLimit` måste vara ett positivt heltal, högst 2147483647. Skicka `null` för obegränsat.

## Lösenordsskydd

Ange ett lösenord via samma `access`-objekt. Det sparade lösenordet behålls när du stänger av skyddet, så att du kan aktivera det igen utan att skicka lösenordet på nytt.

**1. Ange eller ändra lösenordet**

Det aktiverar också skyddet.

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

**2. Stäng av skyddet**

Det sparade lösenordet behålls.

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

**3. Aktivera skyddet igen**

Du behöver inte skicka lösenordet igen. Det fungerar bara om ett lösenord redan har angetts. Annars får begäran `422`.

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

* **Vid skapande.** Skicka `password` för att aktivera skyddet. `passwordProtected` ensamt har ingen effekt förrän ett lösenord finns.
* **Ta bort lösenordet.** Skicka `"password": null`. Skyddet stängs också av.
* **Läsa.** Svaren returnerar aldrig lösenordet, bara `access.passwordProtected`.

## Pausa, återaktivera och ta bort

Pausning och återaktivering är separata slutpunkter i stället för `access`-fält, eftersom de gäller direkt i stället för enligt ett schema.

| Metod | Sökväg | Beskrivning |
| - | - | - |
| `POST` | `/api/v1/qrs/{qrId}/pause` | [Pausa QR-koden nu](https://docs.getqr.com/sv/api/endpoints/qr-codes.md#pausa-en-qr-kod). Skanningar visar pausningssidan tills du återaktiverar den. |
| `POST` | `/api/v1/qrs/{qrId}/activate` | [Återaktivera en pausad QR-kod](https://docs.getqr.com/sv/api/endpoints/qr-codes.md#återaktivera-en-qr-kod). Scheman och skanningsgränser gäller fortfarande. |
| `DELETE` | `/api/v1/qrs/{qrId}` | [Ta bort QR-koden](https://docs.getqr.com/sv/api/endpoints/qr-codes.md#ta-bort-en-qr-kod) och dess korta länk permanent. |

Pausa och återaktivera tar ingen body och returnerar den uppdaterade [QR-koden](https://docs.getqr.com/sv/api/endpoints/qr-codes.md#qr-kodobjektet):

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

Du kan också ange pausat läge med `PUT /api/v1/qrs/{qrId}` och `{ "archived": true }`, eller med `archived` i en `PATCH`. Se [Ange pausat läge](https://docs.getqr.com/sv/api/endpoints/qr-codes.md#ange-pausat-läge).

Borttagning tar bort QR-koden och dess korta länk tillsammans:

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

> [!WARNING]
>
> Borttagning kan inte ångras. Den korta länken slutar att lösas in, så tryckta koder slutar fungera. Pausa QR-koden i stället om du kan behöva den igen.

## När ändringar träder i kraft

* **Nästa skanning.** Reglerna kontrolleras när en kod skannas, så en ändring gäller från nästa skanning och inte retroaktivt.
* **Pausningssidan.** En QR-kod som blockeras av ett schema, en skanningsgräns eller en paus visar pausningssidan. Skanningen omdirigeras inte.
* **Lösenord.** Besökare som redan har angett lösenordet behåller åtkomsten tills lösenordet ändras, eller tills skyddet stängs av och aktiveras igen.
* **Klocka.** Scheman använder serverns klocka i UTC, inte besökarens lokala tid.
* **Reglerna kombineras.** En QR-kod löses bara in när den inte är pausad, ligger inom sitt schema och är under sin skanningsgräns.

## Vanliga problem

> [accordion] 422 när en regel anges under link
>
> Skicka regeln under `access`, inte `link`.

> [accordion] 422 när lösenordsskyddet aktiveras
>
> QR-koden har inget lösenord än. Skicka `password` i stället för `passwordProtected: true`.

> [accordion] QR-koden visar fortfarande pausningssidan efter återaktivering
>
> Ett schema eller en skanningsgräns gäller fortfarande. Kontrollera `access.activeAt`, `access.pauseAt` och `access.scanLimit` i [QR-koden](https://docs.getqr.com/sv/api/endpoints/qr-codes.md#hämta-en-qr-kod) och jämför `scans` med gränsen.

> [accordion] Jag vill att länken ska gå ut
>
> `link.expiresAt` finns inte i det här API:et. Använd `access.pauseAt` i stället.

## Nästa steg

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

> [card] [QR-koddata per typ](https://docs.getqr.com/sv/api/guides/qr-types.md)


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