# Koncept & entitetsmodell

För att förstå hur access är uppbyggd i KiiOn behöver du känna till fyra begrepp och en regel om deviceId.

## Hierarkin

| Nivå | Vad det är | Exempel |
| --- | --- | --- |
| Företag | Organisationen som äger platserna | Example Inc. |
| Plats | En adress eller anläggning under företaget | Location 1 |
| Dörr | En fysisk dörr med en uppkopplad enhet | Door A |
| Nyckel | Rätten att öppna en eller flera dörrar | Nyckel till Door A |

Ett API-konto är ett konto i den här strukturen. Det kan **äga** enheter (dörrarna ligger under ert eget företag) eller ha fått **nyckeldelad** access till andra företags dörrar — eller båda delarna.

## Hur access delas

- **Egna enheter:** era framtida kunder skapas som plats/dörr under ert företag. Ni administrerar strukturen.
- **Nyckeldelning:** dörren ligger kvar hos kunden, och en nyckel delas till ert API-konto. Kunden behåller ägarskapet.

Vilket upplägg som passar beror på affären. KiiOn sätter upp rätt struktur när integrationen aktiveras — ta med det i beskrivningen när ni [begär access](/docs/access).

## deviceId är nyckeln till upplåsning

Själva unlock-anropet identifierar dörren med ett `{deviceId}`. Det är ett heltal, och det hämtas ur enhetslistan — inte ur en konfigurationsfil.

> **Hårdkoda inte deviceId** — Hämta `GET /api/user/device`, mappa era interna rum/dörrar till KiiOns id och cachelagra mappningen. Ett hårdkodat id slutar fungera så fort en enhet byts ut.

Det är fältet `id` i varje objekt i svaret från `GET /api/user/device` som fyller `{deviceId}` i `PUT /api/device/{deviceId}/unlock`. Fälten `name` och `locationName` är de ni mappar mot era egna dörrnamn.

**GET /api/user/device**

```json
[
  {
    "id": 1001,
    "name": "Door A",
    "locationId": 42,
    "locationName": "Location 1",
    "companyName": "Example Inc.",
    "doorType": "Entrance",
    "online": true
  },
  {
    "id": 1002,
    "name": "Door B",
    "locationId": 42,
    "locationName": "Location 1",
    "companyName": "Example Inc.",
    "doorType": "Garage",
    "online": true
  }
]
```

**Vidare**
- [Quickstart — hämta listan och lås upp](/docs/quickstart)
- [Golden path — var mappningen ska cachelagras](/docs/golden-path)
