# API a integrace

Nastavení API přístupu a integrace s externími systémy.

## API přístup

### Co je API?

API (Application Programming Interface) umožňuje:

* Propojit Zarezervujto s jinými systémy
* Automatizovat procesy
* Vytvářet vlastní integrace
* Přístup k datům programově

## API klíče

### Vytvoření API klíče

1. Přejděte na **Nastavení → API**
2. Klikněte **"+ Vytvořit nový klíč"**
3. Nastavte:
   * **Název** - Např. "Mobilní app", "Webhook"
   * **Oprávnění** - Čtení/Zápis
   * **Expirace** - Platnost klíče
4. Vygenerujte
5. **Zkopírujte klíč** - Zobrazí se pouze jednou!

**⚠️ Varování:** API klíč je tajný! Nikdy ho nesdílejte veřejně.

### Správa klíčů

V seznamu API klíčů vidíte:

* **Název** - Identifikace klíče
* **Vytvořeno** - Datum vytvoření
* **Poslední použití** - Kdy byl naposledy použit
* **Oprávnění** - Read/Write
* **Status** - Aktivní/Deaktivovaný

**Akce:**

* **🔄 Rotace klíče** - Vygeneruje nový, starý expiruje
* **🚫 Deaktivovat** - Dočasně vypne
* **🗑️ Smazat** - Permanentně odstraní

## API dokumentace

### Endpoint

Base URL pro API:

```
https://api.zarezervujto.com/v1/
```

### Autentizace

Vložte API klíč do hlavičky:

```
Authorization: Bearer YOUR_API_KEY
```

### Příklady

#### Získat seznam rezervací

```bash
GET /reservations?projectId=PROJECT_ID

Headers:
Authorization: Bearer YOUR_API_KEY
```

Odpověď:

```json
{
  "reservations": [
    {
      "id": "res_123",
      "email": "jan@example.com",
      "date": "2025-01-20",
      "from": "18:00",
      "guests": 4,
      "status": "CONFIRMED"
    }
  ]
}
```

#### Vytvořit rezervaci

```bash
POST /reservations

Headers:
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Body:
{
  "projectId": "PROJECT_ID",
  "email": "jana@example.com",
  "firstName": "Jana",
  "lastName": "Nová",
  "date": "2025-01-25",
  "from": "19:00",
  "to": "21:00",
  "guests": 2
}
```

**Kompletní dokumentace:** <https://docs.zarezervujto.com/api>

## Webhooks

### Co jsou webhooks?

Webhooks automaticky odesílají notifikace na váš server při událostech:

* Nová rezervace
* Změna stavu rezervace
* Zrušení
* Platba

### Nastavení webhooku

1. **Nastavení → API → Webhooks**
2. Klikněte **"+ Nový webhook"**
3. Vyplňte:
   * **URL** - Vaše endpoint adresa
   * **Události** - Co chcete sledovat
   * **Secret** - Pro ověření authenticity
4. Testujte
5. Aktivujte

**Příklad události:**

```json
{
  "event": "reservation.created",
  "data": {
    "id": "res_456",
    "email": "petr@example.com",
    "status": "PENDING"
  },
  "timestamp": "2025-01-17T10:30:00Z"
}
```

## Integrace

### Dostupné integrace

#### Google Calendar

Synchronizujte rezervace s Google Calendar:

1. **Nastavení → Integrace → Google Calendar**
2. Připojte Google účet
3. Vyberte kalendář
4. Zapněte synchronizaci

**Efekt:** Nové rezervace se automaticky přidají do kalendáře.

#### Stripe

Pro online platby:

1. **Nastavení → Integrace → Stripe**
2. Zadejte Stripe API klíče
3. Nastavte měnu
4. Aktivujte

**Použití:** Zálohy, platby za vouchery

#### Mailchimp

Email marketing:

1. Připojte Mailchimp účet
2. Vyberte seznam
3. Automaticky přidávejte zákazníky

#### Zapier

Propojení s tisíci aplikací:

1. Vytvořte Zap
2. Trigger: Nová rezervace v Zarezervujto
3. Akce: Odeslat Slack notifikaci, přidat do CRM, atd.

## S3 Bucket

### Konfigurace S3

Pro ukládání souborů (loga, fotky):

1. **Nastavení → API → S3 Storage**
2. Zadejte AWS údaje:
   * **Bucket name**
   * **Region** - např. eu-central-1
   * **Access Key ID**
   * **Secret Access Key**
3. Testujte připojení
4. Uložte

**Poznámka:** Pokud nemáte AWS účet, můžete S3 přeskočit a používat lokální úložiště (omezené funkce).

## Rate limiting

### Limity API

Pro ochranu před zneužitím:

* **1000 requestů/hodinu** - Standard
* **10,000 requestů/hodinu** - Premium

Pokud překročíte limit:

```json
{
  "error": "Rate limit exceeded",
  "retry_after": 3600
}
```

## Monitoring

### API logy

Sledujte API aktivity:

* **Timestamp** - Čas requestu
* **Endpoint** - Který endpoint byl volán
* **Status code** - 200, 400, 500
* **Response time** - Doba odpovědi

**Použití:** Debugging, optimalizace

## Zabezpečení

### Best practices

* ✅ Používejte HTTPS
* ✅ Ukládejte klíče bezpečně (env variables)
* ✅ Rotujte klíče pravidelně
* ✅ Omezte oprávnění (read-only pokud stačí)
* ❌ Nesdílejte klíče v kódu
* ❌ Nepoužívejte stejný klíč pro více účelů

### IP whitelisting

Omezte přístup pouze z konkrétních IP:

1. **Nastavení → API → IP Whitelist**
2. Přidejte povolené IP adresy
3. Uložte

***

**Dodatečné zdroje:**

* [API dokumentace](https://docs.zarezervujto.com/api)
* [Webhook guide](https://docs.zarezervujto.com/webhooks)
* [SDK a knihovny](https://github.com/zarezervujto)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://zarezervujto.gitbook.io/zarezervujto/nastaveni-projektu/api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
