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

# Autentificare

> Cheile API-ului de distribuție: cine le emite, cum le trimiți, ce permisiuni poartă și cum le rotești.

<Warning>
  **Preview: nimic nu este servit încă.** Pagina descrie contractul API-ului de distribuție (versiunea `1.0.0`). Nicio cheie nu a fost emisă încă; prima cheie de test deschide sandbox-ul.
</Warning>

## Chei

O cheie aparține canalului tău și unui singur mediu. Ți-o emite echipa Gridbeds, nu fiecare proprietate în parte: gazdele aleg care dintre proprietățile lor sunt publicate pe canalul tău, iar cheia ta citește ce au publicat.

* O cheie de producție începe cu `gbd_live_`, una de sandbox cu `gbd_test_`. O cheie are 63 de caractere.
* O cheie se termină cu o sumă de control CRC32 a părții ei secrete, așa că o cheie tastată greșit sau trunchiată este refuzată înainte de orice căutare, la fel ca o cheie folosită în celălalt mediu.
* Gridbeds păstrează doar un hash al fiecărei chei. Ține-o pe a ta într-un depozit de secrete, niciodată în cod.
* Prefixele sunt înregistrate la scanerele publice de secrete (GitHub secret scanning, TruffleHog, GitGuardian). O cheie găsită într-un depozit public este revocată imediat, iar contactul tău tehnic este anunțat.

Trimite cheia ca bearer token la fiecare cerere:

```http theme={null}
GET /api/v1/distribution/channel HTTP/1.1
Host: api.gridbeds.com
Authorization: Bearer gbd_live_…
```

## Rotație

Canalul tău poate avea două chei pe mediu cât timp face rotația: pune cheia nouă în funcțiune, verifică dacă cererile cu ea reușesc, apoi cea veche poate fi revocată. `GET /channel` arată ce cheie a folosit o cerere (`key.last4`), când a fost creată și când expiră (`key.expires_at`, `null` pentru o cheie emisă fără expirare).

## Permisiuni

Fiecare operație numește permisiunile (scope-urile) de care are nevoie. O cheie are una sau mai multe dintre ele:

| Permisiune | Dă acces la |
| - | - |
| `read:catalog` | Locații, proprietari, proprietăți, catalogul de facilități și evenimentele despre ele. |
| `read:ari` | Disponibilitate, prețuri și restricții, și evenimentele `availability.updated`. |
| `manage:webhooks` | Endpoint-urile tale de webhook, secretele și livrările lor. |

`GET /channel` nu cere nicio permisiune. `write:bookings` este rezervată pentru o etapă ulterioară și nu se acordă. Permisiunile sunt scope-uri OAuth 2.0, așa că pe lângă chei se pot oferi mai târziu token-uri de acces de scurtă durată printr-un grant client-credentials, cu aceleași permisiuni și fără nicio schimbare în operații.

## Când o cheie este refuzată

O cheie refuzată primește `401` cu `WWW-Authenticate` (RFC 6750) și o problemă al cărei `code` spune de ce:

| `code` | Înseamnă |
| - | - |
| `missing_api_key` | Lipsește antetul `Authorization: Bearer`. |
| `invalid_api_key` | Cheia este malformată sau necunoscută: cele două primesc același răspuns. |
| `api_key_wrong_environment` | O cheie `gbd_test_` în producție sau o cheie `gbd_live_` în sandbox. |
| `api_key_expired` | Cheia a expirat. |
| `api_key_revoked` | Cheia a fost revocată. |

`api_key_expired` și `api_key_revoked` se deosebesc doar pentru o cheie al cărei secret s-a potrivit. O cheie fără permisiunea cerută de o operație primește `403` cu `insufficient_scope` și permisiunile care îi lipsesc în `required_scopes`; un canal suspendat primește `403` cu `partner_suspended`. Autentificările eșuate repetate de la aceeași adresă primesc `429` (`too_many_failed_authentications`). Vezi [Erori și limite](/ro/distribution-api/errors-and-limits).


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