e-Defter

Başlangıç

API Temelleri

Kimlik doğrulama, ortak istek alanları, yanıt zarfı, firma ve dönem kimliği.

Bu sayfa, ilk API çağrısından dönem sonucunun izlenmesine kadar tüm endpointlerde ortak olan sözleşmeyi açıklar. İşlem örneklerine geçmeden önce oturum, firma bağlamı, dönem anahtarı ve yanıt zarfı birlikte uygulanmalıdır.

Başlamadan Önce

HazırlıkGerekli bilgiNerede kullanılır?Kontrol
API erişimiOrtamın Gateway API ana adresiTüm endpoint adreslerinin önündeTest ve canlı ortam adreslerini karıştırmayın.
KullanıcıE-posta ve parolaPOST /api/Session/LoginParolayı yalnız oturum açma isteğinde gönderin.
Firma bağlamıSecurityFirmUuid, VKN/TCKN ve şube koduHeader ve işlem gövdeleriLogin cevabındaki firma ile işlem gövdesindeki firma aynı olmalıdır.
DönemAynı ayın ilk ve son günüAktarım, üretim, özet ve gönderim işlemleriÖzel hesap dönemi ve parçalı ay göndermeyin.

Kimlik Doğrulama

Oturum açma isteğinde yalnızca hesap e-postası ve parola gönderilir. Başarılı cevapta alınan token, sonraki korumalı çağrıların Authorization header'ında kullanılır.

POST/api/Session/Login

API oturumu için yetkilendirme token'ı üretir.

RequestEmail, Password
ResponseToken bilgisi
Oturum açma JSON örneğini görüntüle
{
  "Email": "entegrasyon@firma.com",
  "Password": "GUCLU_PAROLANIZ"
}
HeaderDeğerZorunluluk
AuthorizationBearer {token}Oturum açma dışındaki korumalı endpointlerde zorunlu.
SecurityFirmUUIDİşlem yapılacak firmanın kimliğiFirma bağlamı kullanan işlemlerde gönderilir.
Content-Typeapplication/jsonJSON gövdeli POST isteklerinde gönderilir.

SecurityFirmUUID kullanıcı kimliği değildir. Firma değiştirildiğinde çağrılar yeni firma kimliğiyle sürdürülmelidir.

Güvenlik: Parola, token, defter içeriği ve kişisel veriler loglara yazılmamalıdır. Örneklerdeki değerler temsilidir.

Firma ve Dönem Kimliği

AlanTürKural
IdentificationNumberstringİşlem yapılan firmanın VKN/TCKN'si.
BranchCodestringŞube yoksa 0000; şube varsa sözleşmedeki dört haneli kod.
PeriodStartISO 8601 datetimeAylık dönemin ilk günü.
PeriodEndISO 8601 datetimeAynı ayın son günü.

Bu dört alan birlikte dönem anahtarını oluşturur. Şube kodunun veya tarih saatinin çağrılar arasında değişmesi aynı muhasebe döneminin farklı kayıtlar gibi değerlendirilmesine neden olabilir. Bir kayıt oluşturulduktan sonra response içindeki Uuid yerel ERP kaydına yazılmalı ve sonraki sorgularda birincil teknik izleme anahtarı olarak kullanılmalıdır.

Yanıt Zarfı

Endpointler ServiceResponse<T> döndürür. Data işlem verisini, Messages[] uyarı ve hataları, StatusCode servis sonucunu taşır. IsSuccessful, hata türünde mesaj bulunmadığında true olur. Sayfalı sonuçlarda TotalRows ve TotalPages ayrıca değerlendirilir. Yalnız HTTP 200'e bakarak işlemi tamamlandı saymayın.

{
  "Data": true,
  "Messages": [],
  "StackTrace": null,
  "StatusCode": 200,
  "TotalRows": 0,
  "TotalPages": 0,
  "IsSuccessful": true
}

Hata halinde Messages[] içindeki MessageType, MessageModel.Code, Message ve varsa Argument birlikte okunur:

{
  "Data": false,
  "Messages": [
    {
      "Service": null,
      "Action": "LedgerApproval",
      "MessageModel": {
        "Type": "LedgerMessage",
        "Code": "LedgerSummary.InvalidState"
      },
      "MessageType": 2,
      "Argument": null,
      "Message": "Defter özet durumu, gerçekleştirilmek istenen işlem için uygun değil"
    }
  ],
  "StackTrace": null,
  "StatusCode": 400,
  "TotalRows": 0,
  "TotalPages": 0,
  "IsSuccessful": false
}
Hata anahtarı: MessageType=2 hata seviyesidir. Programatik ayrım için yerelleştirilmiş Message metni yerine MessageModel.Type ve MessageModel.Code alanlarını kullanın. Service ve Action alanlarını yalnız izleme bağlamı olarak saklayın.
DurumGüvenli davranış
HTTP 401Email ve Password ile yeniden oturum açın; aynı işlem gövdesini körlemesine tekrarlamayın.
Messages[] hata içeriyorMesajı ilgili alan veya durumla eşleştirip düzeltin.
Timeout/bağlantı kopmasıYeni kayıt oluşturmadan önce firma, dönem veya Uuid ile mevcut sonucu sorgulayın.
Asenkron süreç başladıGetEntity veya güncel özet sorgusuyla terminal duruma kadar izleyin.

Başarı Ölçütü

Bir çağrının başarılı olması ile e-Defter döneminin tamamlanması farklıdır. Aşağıdaki kanıtların tamamı oluşmadan dönem kapatılmış sayılmamalıdır.

  1. İstek cevabında IsSuccessful=true olmalı ve hata türünde mesaj bulunmamalıdır.
  2. Özet kaydı beklenen bir sonraki CurrentStatus değerine ilerlemelidir.
  3. Onay öncesinde yevmiye, kebir ve berat önizlemeleri kaynak muhasebe toplamlarıyla mutabık olmalıdır.
  4. GİB aşamasında paket sonucu olumlu olmalı ve GİB onaylı berat dosyaları erişilebilir olmalıdır.
  5. İmzalı defterler ile GİB onaylı beratlar aynı firma, şube, dönem ve Uuid altında arşivlenmelidir.