# İmza yetkisi kontrolü

`POST https://ulawk.com/api/v1/sirketler/{sirket_id}/imza-kontrol/`

"Bu kişi bu tarihte, bu işlem ve tutar için şirketi temsil edebilir mi?" Sonuç ilanlardaki temsil kararlarından, görev dönemlerinden ve varsa iç yönergeden çıkarılır: `yetkili`, `yetkili_degil` ya da `belirsiz`. Her gerekçe kaynak ilanını taşır. Müşterek temsilde `birlikte` ile birlikte imzalayanları verin. Hukuki görüş değildir; güncel imza sirküleriyle teyit edin. Aynı girdi GET sorgusuyla da verilebilir.

## Kimlik doğrulama

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

## Yol parametreleri

- `sirket_id` (integer | string, zorunlu) — Şirket kimliği (`/api/v1/sirketler/` listesindeki `id`).

## İstek gövdesi

- `kisi` (string, zorunlu) — Yetkilinin adı soyadı (zorunlu; büyük/küçük harf ve aksan farkı önemsiz).
- `tarih` (string (date)) — İmza tarihi YYYY-AA-GG (varsayılan bugün).
- `tutar` (number | string) — İşlem tutarı (1500000 ya da "1.500.000,00"); iç yönergedeki sınırla karşılaştırılır.
- `para_birimi` (string) — Varsayılan TRY.
- `islem` (string) — İşlem türü (ör. kredi, satış); boş = genel temsil.
- `birlikte[]` (string[]) — Birlikte imzalayacakların adları (müşterek temsil; en çok 10).

```json
{
  "kisi": "Ayşe Örnek",
  "tarih": "2026-10-01",
  "tutar": 1500000,
  "islem": "kredi"
}
```

## Yanıt

### 200 — Kontrol sonucu.

- `sirket` (SirketOzet, zorunlu)
- `sirket.id` (integer | string, zorunlu) — Şirket kimliği: gerçek anahtarda sayısal (ör. 1234); deneme anahtarında DENEME-… metni.
- `sirket.unvan` (string, null, zorunlu) — Ticaret unvanı.
- `sirket.mudurluk` (string, null, zorunlu) — Sicil müdürlüğü (ör. İSTANBUL).
- `sirket.sicil_no` (string, null, zorunlu) — Ticaret sicil numarası.
- `kisi` (string, zorunlu)
- `tarih` (string (date), zorunlu)
- `islem` (string, null, zorunlu)
- `tutar` (number, null, zorunlu)
- `para_birimi` (string, null, zorunlu)
- `sonuc` (string, zorunlu) — yetkili · yetkili_degil · belirsiz (ilanlardan karar verilemiyor; gerekçelere bakın). Değerler: yetkili, yetkili_degil, belirsiz.
- `sonuc_ad` (string, zorunlu)
- `sonuc_en` (string, zorunlu)
- `bicim` (string, null, zorunlu) — Yetki biçimi. Değerler: tek_basina, birlikte.
- `bicim_ad` (string, null, zorunlu)
- `bicim_en` (string, null, zorunlu)
- `gerekceler[]` (object[], zorunlu)
- `gerekceler[].kod` (string, zorunlu)
- `gerekceler[].etki` (string, zorunlu) Değerler: olumlu, olumsuz, belirsiz, bilgi.
- `gerekceler[].metin` (string, zorunlu)
- `gerekceler[].metin_en` (string, zorunlu)
- `gerekceler[].kaynak` (ImzaKaynak, null, zorunlu)
- `gerekceler[].kaynak.ilan_id` (integer, zorunlu)
- `gerekceler[].kaynak.ilan_tarihi` (string, null, zorunlu)
- `gerekceler[].kaynak.sayi` (string, zorunlu)
- `gerekceler[].kaynak.sayfa` (string, zorunlu)
- `gerekceler[].kaynak.ilan_turu` (string, zorunlu)
- `gerekceler[].kaynak.alinti` (string, zorunlu)
- `gerekceler[].kaynak.alinti_dogrulandi` (boolean, zorunlu)
- `gerekceler[].kaynak.gazete_pdf` (string (uri), null, zorunlu)
- `kurallar[]` (object[], zorunlu) — Uygulanan temsil kuralları (ilan ya da iç yönerge).
- `kurallar[].kapsam` (string, zorunlu)
- `kurallar[].bicim` (string, null, zorunlu)
- `kurallar[].tutar_siniri` (string, null, zorunlu)
- `kurallar[].kim` (string, zorunlu)
- `kurallar[].madde` (string, zorunlu)
- `kurallar[].birlikte_imza[]` (string[], zorunlu)
- `kurallar[].alinti` (string, zorunlu)
- `kurallar[].ilan` (ImzaKaynak, null, zorunlu)
- `kurallar[].ilan.ilan_id` (integer, zorunlu)
- `kurallar[].ilan.ilan_tarihi` (string, null, zorunlu)
- `kurallar[].ilan.sayi` (string, zorunlu)
- `kurallar[].ilan.sayfa` (string, zorunlu)
- `kurallar[].ilan.ilan_turu` (string, zorunlu)
- `kurallar[].ilan.alinti` (string, zorunlu)
- `kurallar[].ilan.alinti_dogrulandi` (boolean, zorunlu)
- `kurallar[].ilan.gazete_pdf` (string (uri), null, zorunlu)
- `kurallar[].kaynak_turu` (string, zorunlu) Değerler: ilan, ic_yonerge.
- `birlikte_imza[]` (string[], zorunlu) — Müşterek temsilde birlikte imzalayabilecekler.
- `gorev_kayitlari[]` (object[], zorunlu)
- `gorev_kayitlari[].isim` (string, null, zorunlu)
- `gorev_kayitlari[].sifat` (string, null, zorunlu)
- `gorev_kayitlari[].temsil` (string, null, zorunlu)
- `gorev_kayitlari[].baslangic` (string, null, zorunlu)
- `gorev_kayitlari[].bitis` (string, null, zorunlu)
- `gorev_kayitlari[].bitis_nedeni` (string, null, zorunlu)
- `gorev_kayitlari[].gorev_bitis` (string, null, zorunlu)
- `gorev_kayitlari[].gorev_dayanak` (string, null, zorunlu)
- `gorev_kayitlari[].kaynak` (ImzaKaynak, null, zorunlu)
- `gorev_kayitlari[].kaynak.ilan_id` (integer, zorunlu)
- `gorev_kayitlari[].kaynak.ilan_tarihi` (string, null, zorunlu)
- `gorev_kayitlari[].kaynak.sayi` (string, zorunlu)
- `gorev_kayitlari[].kaynak.sayfa` (string, zorunlu)
- `gorev_kayitlari[].kaynak.ilan_turu` (string, zorunlu)
- `gorev_kayitlari[].kaynak.alinti` (string, zorunlu)
- `gorev_kayitlari[].kaynak.alinti_dogrulandi` (boolean, zorunlu)
- `gorev_kayitlari[].kaynak.gazete_pdf` (string (uri), null, zorunlu)
- `gorev_kayitlari[].bitis_kaynak` (ImzaKaynak, null, zorunlu)
- `gorev_kayitlari[].bitis_kaynak.ilan_id` (integer, zorunlu)
- `gorev_kayitlari[].bitis_kaynak.ilan_tarihi` (string, null, zorunlu)
- `gorev_kayitlari[].bitis_kaynak.sayi` (string, zorunlu)
- `gorev_kayitlari[].bitis_kaynak.sayfa` (string, zorunlu)
- `gorev_kayitlari[].bitis_kaynak.ilan_turu` (string, zorunlu)
- `gorev_kayitlari[].bitis_kaynak.alinti` (string, zorunlu)
- `gorev_kayitlari[].bitis_kaynak.alinti_dogrulandi` (boolean, zorunlu)
- `gorev_kayitlari[].bitis_kaynak.gazete_pdf` (string (uri), null, zorunlu)
- `gorev_kayitlari[].temsil_kaynak` (ImzaKaynak, null, zorunlu)
- `gorev_kayitlari[].temsil_kaynak.ilan_id` (integer, zorunlu)
- `gorev_kayitlari[].temsil_kaynak.ilan_tarihi` (string, null, zorunlu)
- `gorev_kayitlari[].temsil_kaynak.sayi` (string, zorunlu)
- `gorev_kayitlari[].temsil_kaynak.sayfa` (string, zorunlu)
- `gorev_kayitlari[].temsil_kaynak.ilan_turu` (string, zorunlu)
- `gorev_kayitlari[].temsil_kaynak.alinti` (string, zorunlu)
- `gorev_kayitlari[].temsil_kaynak.alinti_dogrulandi` (boolean, zorunlu)
- `gorev_kayitlari[].temsil_kaynak.gazete_pdf` (string (uri), null, zorunlu)
- `profil_hazir` (boolean, zorunlu)
- `sinirlar[]` (string[], zorunlu)
- `sinirlar_en[]` (string[], zorunlu)
- `uyari` (string, zorunlu) — Sonuç ilanlara dayanır; güncel imza sirküleriyle teyit edin.
- `uyari_en` (string, zorunlu)

```json
{
  "sirket": {
    "id": "DENEME-100001",
    "unvan": "ÖRNEK DENEME SANAYİ VE TİCARET ANONİM ŞİRKETİ",
    "mudurluk": "İSTANBUL",
    "sicil_no": "DENEME-100001"
  },
  "kisi": "Ayşe Örnek",
  "tarih": "2026-10-01",
  "islem": null,
  "tutar": null,
  "para_birimi": null,
  "sonuc": "belirsiz",
  "sonuc_ad": "Belirsiz",
  "sonuc_en": "Undetermined",
  "bicim": "tek_basina",
  "bicim_ad": "Tek başına yetkili",
  "bicim_en": "Sole signing authority",
  "gerekceler": [
    {
      "kod": "gorevde",
      "etki": "olumlu",
      "metin": "01.10.2026 tarihinde görevde: Yönetim Kurulu Başkanı (02.03.2015 tarihli ilandan).",
      "metin_en": "In office on 01.10.2026: Yönetim Kurulu Başkanı (notice of 02.03.2015).",
      "kaynak": {
        "ilan_id": 9000000,
        "ilan_tarihi": "2015-03-02",
        "sayi": "10000",
        "sayfa": "1",
        "ilan_turu": "KURULUŞ",
        "alinti": "Ayşe Örnek seçilmiştir",
        "alinti_dogrulandi": true,
        "gazete_pdf": "https://ulawk.com/api/v1/ilanlar/9000000/pdf/"
      }
    },
    {
      "kod": "munferit",
      "etki": "olumlu",
      "metin": "İlanda tek başına (münferit) temsile yetkili olduğu yazıyor.",
      "metin_en": "The notice states sole (individual) signing authority.",
      "kaynak": {
        "ilan_id": 9000000,
        "ilan_tarihi": "2015-03-02",
        "sayi": "10000",
        "sayfa": "1",
        "ilan_turu": "KURULUŞ",
        "alinti": "Ayşe Örnek seçilmiştir",
        "alinti_dogrulandi": true,
        "gazete_pdf": "https://ulawk.com/api/v1/ilanlar/9000000/pdf/"
      }
    }
  ],
  "kurallar": [
    {
      "kapsam": "Genel temsil",
      "bicim": "tek_basina",
      "tutar_siniri": null,
      "kim": "",
      "madde": "",
      "birlikte_imza": [],
      "alinti": "Ayşe Örnek seçilmiştir",
      "ilan": {
        "ilan_id": 9000000,
        "ilan_tarihi": "2015-03-02",
        "sayi": "10000",
        "sayfa": "1",
        "ilan_turu": "KURULUŞ",
        "alinti": "Ayşe Örnek seçilmiştir",
        "alinti_dogrulandi": true,
        "gazete_pdf": "https://ulawk.com/api/v1/ilanlar/9000000/pdf/"
      },
      "kaynak_turu": "ilan"
    }
  ],
  "birlikte_imza": [],
  "gorev_kayitlari": [
    {
      "isim": "Ayşe Örnek",
      "sifat": "Yönetim Kurulu Başkanı",
      "temsil": "Münferit",
      "baslangic": "2015-03-02",
      "bitis": null,
      "bitis_nedeni": null,
      "gorev_bitis": null,
      "gorev_dayanak": null,
      "kaynak": {
        "ilan_id": 9000000,
        "ilan_tarihi": "2015-03-02",
        "sayi": "10000",
        "sayfa": "1",
        "ilan_turu": "KURULUŞ",
        "alinti": "Ayşe Örnek seçilmiştir",
        "alinti_dogrulandi": true,
        "gazete_pdf": "https://ulawk.com/api/v1/ilanlar/9000000/pdf/"
      },
      "bitis_kaynak": null,
      "temsil_kaynak": null
    }
  ],
  "profil_hazir": true,
  "sinirlar": [
    "Tescil edilip henüz ilan edilmemiş yetki değişiklikleri görünmez.",
    "Görev başlangıcı ve bitişi olarak ilanın yayın tarihi alınır; tescil tarihi birkaç gün önce olabilir."
  ],
  "sinirlar_en": [
    "Changes in authority that are registered but not yet published do not appear.",
    "Start and end of office are taken as the publication date of the notice; registration may be a few days earlier."
  ],
  "uyari": "Bu sonuç ilanlardaki bilgiye dayanır; güncel imza sirküleri ile teyit edin.",
  "uyari_en": "This result is based on the published notices; confirm it against the current signature circular."
}
```

### 400 — `eksik_parametre` (kisi yok), `gecersiz_tarih`, `gecersiz_tutar`, `gecersiz_govde`, `gecersiz_parametre`.


```json
{
  "hata": "eksik_parametre",
  "detay": "kisi gerekli (yetkilinin adı soyadı).",
  "hata_ayrinti": {
    "kod": "eksik_parametre",
    "mesaj": "kisi gerekli (yetkilinin adı soyadı).",
    "taraf": "istemci",
    "kaynak": null,
    "tekrar_denenebilir": false,
    "tekrar_sn": null
  }
}
```

### 404 — Bulunamadı ya da erişim yetkiniz yok (`bulunamadi`).


```json
{
  "hata": "bulunamadi",
  "detay": "Şirket bulunamadı ya da erişim yetkiniz yok.",
  "hata_ayrinti": {
    "kod": "bulunamadi",
    "mesaj": "Şirket bulunamadı ya da erişim yetkiniz yok.",
    "taraf": "istemci",
    "kaynak": null,
    "tekrar_denenebilir": false,
    "tekrar_sn": null
  }
}
```

### 405 — GET ya da POST bekleniyor (`yontem`).


```json
{
  "hata": "yontem",
  "detay": "GET ya da POST bekleniyor.",
  "hata_ayrinti": {
    "kod": "yontem",
    "mesaj": "GET ya da POST bekleniyor.",
    "taraf": "istemci",
    "kaynak": null,
    "tekrar_denenebilir": false,
    "tekrar_sn": null
  }
}
```

### 503 — Resmî kaynak şu an erişilemiyor (`kaynak_erisilemiyor`, taraf kaynak). Deneme ortamında DENEME-KAYNAK-KAPALI.

Retry-After: `300`

```json
{
  "hata": "kaynak_erisilemiyor",
  "detay": "Ticaret Sicili Gazetesi şu an yanıt vermiyor; kısa süre sonra yeniden deneyin. (Deneme ortamı benzetimi.)",
  "hata_ayrinti": {
    "kod": "kaynak_erisilemiyor",
    "mesaj": "Ticaret Sicili Gazetesi şu an yanıt vermiyor; kısa süre sonra yeniden deneyin. (Deneme ortamı benzetimi.)",
    "taraf": "kaynak",
    "kaynak": "ttsg",
    "tekrar_denenebilir": true,
    "tekrar_sn": 300
  }
}
```

### 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: `3172`

```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": 3172
  }
}
```

### 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 -X POST "https://ulawk.com/api/v1/sirketler/DENEME-100001/imza-kontrol/" \
  -H "X-API-Key: ulk_DENEME_ANAHTARINIZ" \
  -H "X-API-Secret: ulsk_DENEME_GIZLI_ANAHTARINIZ" \
  -H "Content-Type: application/json" \
  -d '{"kisi": "Ayşe Örnek", "tarih": "2026-10-01"}'
```
