# Signing authority check

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

"May this person represent the company on this date, for this transaction and amount?" The result is derived from representation decisions in the notices, terms of office and, if published, the internal directive: `yetkili`, `yetkili_degil` or `belirsiz`. Every reason carries its source notice. Under joint representation pass co-signers in `birlikte`. Not legal advice; confirm against the current signature circular. The same input may also be sent as a GET query.

## Authentication

Two headers on every request: `X-API-Key` and `X-API-Secret`.

## Path parameters

- `sirket_id` (integer | string, required) — Company id (`id` from `/api/v1/sirketler/`).

## Request body

- `kisi` (string, zorunlu) — Officer full name (required; case and accents ignored).
- `tarih` (string (date)) — Signing date YYYY-MM-DD (default today).
- `tutar` (number | string) — Transaction amount (1500000 or "1.500.000,00"); compared with the directive limit.
- `para_birimi` (string) — Default TRY.
- `islem` (string) — Transaction type (e.g. loan, sale); empty = general representation.
- `birlikte[]` (string[]) — Names of co-signers (joint representation; max 10).

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

## Response

### 200 — Check result.

- `sirket` (SirketOzet, zorunlu)
- `sirket.id` (integer | string, zorunlu) — Company id: numeric with a live key (e.g. 1234); a DENEME-… string with a sandbox key.
- `sirket.unvan` (string, null, zorunlu) — Registered name.
- `sirket.mudurluk` (string, null, zorunlu) — Registry office (e.g. İSTANBUL).
- `sirket.sicil_no` (string, null, zorunlu) — Trade registry number.
- `kisi` (string, zorunlu)
- `tarih` (string (date), zorunlu)
- `islem` (string, null, zorunlu)
- `tutar` (number, null, zorunlu)
- `para_birimi` (string, null, zorunlu)
- `sonuc` (string, zorunlu) — yetkili (authorised) · yetkili_degil (not authorised) · belirsiz (undetermined; see reasons). Değerler: yetkili, yetkili_degil, belirsiz.
- `sonuc_ad` (string, zorunlu)
- `sonuc_en` (string, zorunlu)
- `bicim` (string, null, zorunlu) — Form of authority. 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) — Representation rules applied (notice or internal directive).
- `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) — Who may co-sign under joint representation.
- `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) — Based on notices; confirm against the current signature circular.
- `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` (no kisi), `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 — Not found or no access (`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 or POST expected (`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 — The official source is unreachable right now (`kaynak_erisilemiyor`, taraf kaynak). Sandbox: 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 — Missing or invalid key (`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 — Hourly rate limit exceeded (`hiz_siniri`); the Retry-After header gives the seconds until reset.

Retry-After: `2494`

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

### 500 — Unexpected error (`ic_hata`, taraf ulawk); retry shortly.

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
  }
}
```

## Request

```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"}'
```
