# Tüm şirketlerde son değişiklikler

`GET https://ulawk.com/api/v1/degisiklikler/`

Tüm şirketlerinizdeki son değişiklikler tek akışta; her satırda hangi şirket. Günde bir istekle günlük değişiklikleri çekmek için. Webhook istemiyorsanız bu ucu düzenli sorgulayın.

## Kimlik doğrulama

Her istekte iki başlık: `X-API-Key` ve `X-API-Secret`.

## Sorgu parametreleri

- `gun` (integer) — Kaç gün geriye.
- `tur` (string) — Değişiklik türü süzgeci.
- `kategoriler` (string) — Virgülle değişiklik kategorisi süzgeci: durum, adres, ortaklik, sermaye, yetkililer, unvan, esas_sozlesme, diger, kapandi. Bilinmeyen kategori 400 `gecersiz_kategori`.
- `sayfa` (integer) — Sayfa numarası (1'den).
- `adet` (integer) — Sayfa başına kayıt (varsayılan 200, en çok 500).

## Yanıt

### 200 — Değişiklikler.

- `gun` (integer, zorunlu)
- `adet` (integer, zorunlu)
- `sayfa` (integer, zorunlu)
- `sayfa_adedi` (integer, zorunlu)
- `sonraki_sayfa` (integer, null, zorunlu)
- `degisiklikler[]` (GunlukDegisiklik[], zorunlu)
- `degisiklikler[].tur` (string, zorunlu) — Değişiklik türü. Değerler: yetkili-atama, yetkili-ayrilma, sermaye, ortaklik, unvan-adres, esas-sozlesme, durum.
- `degisiklikler[].tarih` (string (date), null, zorunlu) — Değişikliğin tarihi.
- `degisiklikler[].ozet` (string, zorunlu) — Tek satırlık özet.
- `degisiklikler[].kaynak` (Kaynak, null, zorunlu)
- `degisiklikler[].kaynak.ilan_id` (integer, zorunlu) — Bilginin geçtiği ilan.
- `degisiklikler[].kaynak.ilan_tarihi` (string (date), zorunlu) — İlanın yayım tarihi.
- `degisiklikler[].kaynak.ilan_turu` (string, zorunlu) — Ticaret Sicili Gazetesi ilan türü.
- `degisiklikler[].kaynak.alinti` (string, zorunlu) — İlan metninden birebir alıntı.
- `degisiklikler[].kaynak.alinti_dogrulandi` (boolean, zorunlu) — Alıntı ilan metninde birebir bulundu mu.
- `degisiklikler[].kaynak.gazete_pdf` (string (uri), zorunlu) — Gazete PDF'i.
- `degisiklikler[].kaynak.vurgu` (Vurgu, null, zorunlu)
- `degisiklikler[].kaynak.vurgu.sayfa` (integer, zorunlu) — Gazete sayfası (1'den).
- `degisiklikler[].kaynak.vurgu.sayfa_gorsel` (string (uri), zorunlu) — Sayfanın PNG görseli.
- `degisiklikler[].kaynak.vurgu.kutular[]` (number[][], zorunlu) — Bilginin sayfadaki yeri: oransal [x0, y0, x1, y1] kutuları (0–1, sol üst köşe).
- `degisiklikler[].kaynak.vurgu.kutu_birimi` (string, zorunlu) — Kutu biriminin açıklaması.
- `degisiklikler[].gazete_pdf` (string (uri), null, zorunlu) — Kaynak gazetenin PDF'i.
- `degisiklikler[].kategori` (string, zorunlu) — Sabit değişiklik kategorisi. Değerler: durum, adres, ortaklik, sermaye, yetkililer, unvan, esas_sozlesme, diger, kapandi.
- `degisiklikler[].isim` (string, null)
- `degisiklikler[].sifat` (string, null)
- `degisiklikler[].onceki` (string, null)
- `degisiklikler[].yeni` (string, null)
- `degisiklikler[].pay_tutari` (string, null)
- `degisiklikler[].pay_orani` (string, null)
- `degisiklikler[].alan` (string, null)
- `degisiklikler[].deger` (string, null)
- `degisiklikler[].madde` (string, null)
- `degisiklikler[].baslik` (string, null)
- `degisiklikler[].aciklama` (string, null)
- `degisiklikler[].sirket` (object, zorunlu)
- `degisiklikler[].sirket.id` (integer | string, zorunlu) — Şirket kimliği: gerçek anahtarda sayısal (ör. 1234); deneme anahtarında DENEME-… metni.
- `degisiklikler[].sirket.unvan` (string, null, zorunlu)
- `degisiklikler[].sirket.sicil_no` (string, null, zorunlu)
- `degisiklikler[].sirket.mudurluk` (string, null, zorunlu)

```json
{
  "gun": 7,
  "adet": 4,
  "sayfa": 1,
  "sayfa_adedi": 200,
  "sonraki_sayfa": null,
  "degisiklikler": [
    {
      "tur": "yetkili-atama",
      "tarih": "2026-10-16",
      "ozet": "Ali Denemeci göreve başladı (Yönetim Kurulu Üyesi · Müşterek)",
      "kaynak": {
        "ilan_id": 9000005,
        "ilan_tarihi": "2026-10-16",
        "ilan_turu": "TEMSİL VE İLZAM / YETKİLİ ATAMA",
        "alinti": "Ali Denemeci seçilmiştir",
        "alinti_dogrulandi": true,
        "gazete_pdf": "https://ulawk.com/api/v1/ilanlar/9000005/pdf/",
        "vurgu": null
      },
      "gazete_pdf": "https://ulawk.com/api/v1/ilanlar/9000005/pdf/",
      "isim": "Ali Denemeci",
      "sifat": "Yönetim Kurulu Üyesi",
      "kategori": "yetkililer",
      "sirket": {
        "id": "DENEME-100001",
        "unvan": "ÖRNEK DENEME SANAYİ VE TİCARET ANONİM ŞİRKETİ",
        "sicil_no": "DENEME-100001",
        "mudurluk": "İSTANBUL"
      }
    },
    {
      "tur": "durum",
      "tarih": "2026-10-15",
      "ozet": "Tasfiye bitti, şirket sicilden silindi",
      "kaynak": {
        "ilan_id": 9060002,
        "ilan_tarihi": "2026-10-15",
        "ilan_turu": "TASFİYENİN SONA ERMESİ VE TERKİN",
        "alinti": "",
        "alinti_dogrulandi": false,
        "gazete_pdf": "https://ulawk.com/api/v1/ilanlar/9060002/pdf/",
        "vurgu": null
      },
      "gazete_pdf": "https://ulawk.com/api/v1/ilanlar/9060002/pdf/",
      "aciklama": "Deneme açıklaması: Tasfiye bitti, şirket sicilden silindi.",
      "kategori": "kapandi",
      "sirket": {
        "id": "DENEME-TERKIN",
        "unvan": "ÖRNEK DENEME TEKSTİL LİMİTED ŞİRKETİ",
        "sicil_no": "DENEME-TERKIN",
        "mudurluk": "DENİZLİ"
      }
    }
  ]
}
```

### 400 — Geçersiz parametre (`gecersiz_parametre`, `gecersiz_kategori`, `gecersiz_tarih`…) ya da bu uç deneme anahtarıyla kullanılamaz (`deneme_desteklenmiyor`).


```json
{
  "hata": "gecersiz_kategori",
  "detay": "Bilinmeyen kategori: bilinmeyen. Geçerli: durum, adres, ortaklik, sermaye, yetkililer, unvan, esas_sozlesme, diger, kapandi.",
  "hata_ayrinti": {
    "kod": "gecersiz_kategori",
    "mesaj": "Bilinmeyen kategori: bilinmeyen. Geçerli: durum, adres, ortaklik, sermaye, yetkililer, unvan, esas_sozlesme, diger, kapandi.",
    "taraf": "istemci",
    "kaynak": null,
    "tekrar_denenebilir": false,
    "tekrar_sn": null
  },
  "gecerli_kategoriler": [
    "durum",
    "adres",
    "ortaklik",
    "sermaye",
    "yetkililer",
    "unvan",
    "esas_sozlesme",
    "diger",
    "kapandi"
  ]
}
```

### 401 — Anahtar yok ya da geçersiz (`yetkisiz`).


```json
{
  "hata": "yetkisiz",
  "detay": "Geçerli X-API-Key başlığı gerekli (panel › API).",
  "hata_ayrinti": {
    "kod": "yetkisiz",
    "mesaj": "Geçerli X-API-Key başlığı gerekli (panel › API).",
    "taraf": "istemci",
    "kaynak": null,
    "tekrar_denenebilir": false,
    "tekrar_sn": null
  }
}
```

### 429 — Saatlik istek sınırı aşıldı (`hiz_siniri`); Retry-After başlığı sıfırlanmaya kalan saniyeyi verir.

Retry-After: `2311`

```json
{
  "hata": "hiz_siniri",
  "detay": "Saatlik istek sınırı aşıldı (600). Bir sonraki saatte tekrar deneyin.",
  "hata_ayrinti": {
    "kod": "hiz_siniri",
    "mesaj": "Saatlik istek sınırı aşıldı (600). Bir sonraki saatte tekrar deneyin.",
    "taraf": "istemci",
    "kaynak": null,
    "tekrar_denenebilir": true,
    "tekrar_sn": 2311
  }
}
```

### 500 — Beklenmeyen hata (`ic_hata`, taraf ulawk); kısa süre sonra yeniden deneyin.

Retry-After: `60`

```json
{
  "hata": "ic_hata",
  "detay": "Beklenmeyen bir hata oluştu; kısa süre sonra yeniden deneyin.",
  "hata_ayrinti": {
    "kod": "ic_hata",
    "mesaj": "Beklenmeyen bir hata oluştu; kısa süre sonra yeniden deneyin.",
    "taraf": "ulawk",
    "kaynak": null,
    "tekrar_denenebilir": true,
    "tekrar_sn": 60
  }
}
```

## İstek

```bash
curl "https://ulawk.com/api/v1/degisiklikler/?gun=7" \
  -H "X-API-Key: ulk_DENEME_ANAHTARINIZ" \
  -H "X-API-Secret: ulsk_DENEME_GIZLI_ANAHTARINIZ"
```
