# API Uçları

Temel URL: `/api/v1`

## Halka açık

| Metot | Uç | Açıklama |
|---|---|---|
| GET | `/health` | Sağlık kontrolü |
| GET | `/config` | Aktif şehirler, hizmet linkleri, konum fallback ayarları |
| GET | `/cities` | Aktif ve yakında şehirler |
| GET | `/cities/{cityId}/districts` | Şehrin aktif ilçeleri |
| GET | `/categories?type=business` | Kategoriler |
| GET | `/home?city_id=35` | Şehir ana sayfa blokları |
| GET | `/businesses?city_id=35&district_id=&category_id=&q=` | İşletme listesi |
| GET | `/businesses/{id}` | İşletme detay, sosyal hesap, menü, saat, galeri |
| GET | `/events?city_id=35&from=&to=` | Etkinlik listesi |
| GET | `/campaigns?city_id=35` | Aktif kampanyalar |
| GET | `/guides?city_id=35&type=food` | Rehberler |
| GET | `/pharmacies/on-duty?city_id=35&district_id=&date=2026-07-24` | Nöbetçi eczaneler |

## Kimlik doğrulama

### POST `/auth/login`

```json
{
  "email": "isletme@example.com",
  "password": "GucluSifre"
}
```

### GET `/auth/me`

Bearer token zorunludur.

## İşletme paneli

### GET `/business/profile`

Roller: `business_owner`, `business_editor`, `admin`, `super_admin`.

### PATCH `/business/branches/{id}`

İzin verilen alanlar:

```json
{
  "short_description": "Kısa açıklama",
  "description": "Detaylı açıklama",
  "phone": "0232...",
  "whatsapp": "905...",
  "website_url": "https://...",
  "reservation_url": "https://...",
  "address": "...",
  "latitude": 38.42,
  "longitude": 27.14,
  "price_level": 2
}
```

Değişiklikler moderasyon kuyruğuna `pending` olarak düşer.

### POST `/business/branches/{id}/menus`

`multipart/form-data`:

- `title`
- `menu_type`
- `language_code`
- `external_url` veya `menu_pdf`

PDF ve bağlantı aynı anda gönderilirse bağlantı önceliklidir.

## Admin

### PATCH `/admin/cities/{id}`

```json
{
  "status": "active"
}
```

Roller: `admin`, `super_admin`.
