CoreApiCadesMobile (v4.0)

CoreApiCadesMobile V4, mobil imza operatörleri (Turkcell/Vodafone/AVEA) üzerinden CAdES imzalama işlemini başlatır. V2'ye kıyasla imza profilleri (P1–P4) ve tüm CAdES seviyeleri (BES, EPES, T, C, X, XL, A) desteklenir. Mobil imzada işlem tek adımda tamamlanır; ayrı bir "signStepThree" adımı yoktur.

Temel kavramlar

  • OperationId: İmzalanacak dosyayı temsil eden işlem kimliği. Önceki adımlardan (dosya yükleme) elde edilir.
  • Profiller: Türk Elektronik İmza Kullanım Profilleri (P1–P4). Profil seçimi, imza seviyesi ve revocation check davranışını belirler.
  • Auth: Tüm uç noktalar ApiKey gerektirir.
  • Zarf: Tüm yanıtlar ApiResult<T> tipindedir:
    • result: T
    • error: string (hata durumunda dolar)
    • errorCode: string (opsiyonel, dilden bağımsız hata kodu; null ise JSON'a yazılmaz)

Enum: SignatureLevelForCadesV4

DeğerKodAçıklama
BES1Basic Electronic Signature
EPES2Electronic Signature with Explicit Policy
T3ES-T — Zaman damgalı
C4ES-C — T + revocation referansları
X5ES-X — C + zaman damgası
XL6ES-XL — X + revocation değerleri
A7ES-A — Arşiv zaman damgalı

Enum: CadesProfileV4

DeğerKodAçıklamaGeçerli SeviyelerRevocation
None0Profil yokBES
P11Profilsiz BESBES
P22EPES + T, SİL (CRL)TCRL
P33EPES + XL/A, SİL (CRL)EPES, XL, ACRL
P44EPES + XL/A, ÇİSDuP (OCSP)EPES, XL, AOCSP

POST/v4/CoreApiCadesMobile/SignStepOneCadesMobileCore

SignStepOneCadesMobileCore — Mobil imzayı başlat

Mobil imza işlemini başlatır. İşlem sırasında operatör ile iletişim kurulur ve parmak izi (fingerprint) üretilir. İstemci bu fingerprint'i CoreApiFingerPrint ile sorgulayabilir.

Gerekli/opsiyonel alanlar

  • Name
    operationId
    Type
    uuid
    Description

    İmzalanacak dosyanın işlem kimliği (önceki adımdan elde edilir).

  • Name
    phoneNumber
    Type
    string
    Description

    Mobil imza telefon numarası (örn. 5XXXXXXXXX).

  • Name
    operator
    Type
    string
    Description

    Operatör adı (TURKCELL | VODAFONE | AVEA).

  • Name
    userPrompt
    Type
    string
    Description

    Kullanıcıya gösterilecek mesaj.

  • Name
    citizenshipNo
    Type
    string?
    Description

    (Opsiyonel) İmza sahibinin TCKN doğrulaması için.

  • Name
    signatureLevel
    Type
    SignatureLevelForCadesV4
    Description

    CAdES imza seviyesi. Olası değerler: BES, EPES, T, C, X, XL, A.

  • Name
    profile
    Type
    CadesProfileV4
    Description

    İmza profili. Olası değerler: None, P1, P2, P3, P4.

  • Name
    serialOrParallel
    Type
    string?
    Description

    (Opsiyonel) SERIAL | PARALLEL. Boş geçilirse PARALLEL kabul edilir.

  • Name
    signaturePath
    Type
    string?
    Description

    (Opsiyonel) Seri imzada, üzerine imza atılacak imza yolu (ör. S0, S0:S0). Parallel imzada yok sayılır.

  • Name
    requestId
    Type
    string
    Description

    21 karakter uzunluğunda benzersiz bir string. Her istek için farklı olmalıdır.

  • Name
    displayLanguage
    Type
    string
    Description

    Dil tercihi (ör. "tr").

Request

POST
/v4/CoreApiCadesMobile/SignStepOneCadesMobileCore
curl -X POST "https://apitest.onaylarim.com/v4/CoreApiCadesMobile/SignStepOneCadesMobileCore" \
  -H "X-API-KEY: {api_key}" \
  -H "Content-Type: application/json" \
  -d '{
        "operationId": "11111111-1111-1111-1111-111111111111",
        "phoneNumber": "5XXXXXXXXX",
        "operator": "TURKCELL",
        "userPrompt": "İmzalamayı onaylıyor musunuz?",
        "citizenshipNo": null,
        "signatureLevel": 1,
        "profile": 0,
        "serialOrParallel": null,
        "signaturePath": null,
        "requestId": "aaaaaaaaaaaaaaaaaaaaa",
        "displayLanguage": "tr"
      }'

Response

{
  "result": {
    "isSuccess": true,
    "operationId": "22222222-2222-2222-2222-222222222222"
  },
  "error": null
}

Mobil imza hata yanıtları

HTTP 200 tek başına başarı anlamına gelmez. error, varsa errorCode ve result.isSuccess birlikte değerlendirilmelidir. Aşağıdaki kodlar bu güncellemeyi içeren API sürümü dağıtıldıktan sonra geçerlidir; kullandığınız ortamda sürümü doğrulayın.

errorCodeAnlamıİstemci aksiyonu
USER_CANCELOperatör imza işlemini kullanıcı iptali olarak bildirdi. HTTP 401 değildir.İmza/fingerprint takibini durdurun; otomatik yeni imza isteği göndermeyin.
UNKNOWN_CLIENTSOAP 105 / UNKNOWN_CLIENT veya profil yanıtında 105: seçilen operatörde bu numara için mobil imza kaydı bulunamadı.Takibi durdurun; telefon numarası, operatör ve mobil imza aboneliğini kontrol ettirin.
EXPIRED_TRANSACTIONOperatör imza yanıtında 208 bildirdi; işlem süresi doldu. Kullanıcı iptali olarak yorumlanmaz.Takibi durdurun ve süre dolması mesajını gösterin; otomatik yeni imza talebi göndermeyin.
OPERATOR_TIMEOUTOperatör HTTP çağrısında zaman aşımı oluştu; kesin imza sonucu alınamadı.Takibi durdurun, sonucu belirsiz işlemi otomatik tekrarlamayın; işlem kimlikleriyle kontrol ettirin.
OPERATOR_UNAVAILABLEOperatör iletişimi başarısız oldu (ör. HTTP 502).Takibi durdurun, iletişim hatasını gösterin; otomatik yeni imza talebi göndermeyin.
SIGNING_FAILEDİç imzalama işlemi başka bir nedenle tamamlanamadı.Takibi durdurun; güvenli mesajı gösterin, işlem zamanı ve kimliklerini destek için saklayın.

errorCode dilden bağımsızdır; error, displayLanguage ile Türkçe/İngilizce döner. Başarıda veya kod üretilmeyen eski/validasyon hatalarında errorCode JSON'da bulunmayabilir. Tanınmayan kodları genel hata akışıyla ele alın; kodun olmamasını başarı saymayın.

Kullanıcı iptali — displayLanguage: tr

{
  "result": {
    "isSuccess": false,
    "operationId": "22222222-2222-2222-2222-222222222222"
  },
  "error": "Mobil imza işlemi iptal edildi.",
  "errorCode": "USER_CANCEL"
}

UNKNOWN_CLIENT için Türkçe mesaj: "Bu telefon numarası için operatörde mobil imza kaydı bulunamadı. Numaranızı ve seçilen operatörü kontrol edin." Bu durum servis hesabı/parola hatası veya kullanıcı iptali anlamına gelmez.

Yeni hata kodları bu iyileştirmeyi içeren V4 API sürümünün dağıtılmasını gerektirir. EXPIRED_TRANSACTION: "Mobil imza işleminin süresi doldu."; OPERATOR_TIMEOUT: "Mobil imza operatöründen zamanında yanıt alınamadı."; OPERATOR_UNAVAILABLE: "Mobil imza operatörüyle iletişim kurulamadı." displayLanguage: "en" için İngilizce mesaj döner; kararları mesaj yerine errorCode ile verin.

Operatöre gönderilen süre 120 saniye, V4 HTTP istemcisinin zaman aşımı 150 saniyedir. Bu, toplam API süresi için üst sınır veya tüm proxy/HTTP 524 sorunlarının çözüldüğü garantisi değildir. İstemci ve reverse proxy süreleri ayrıca değerlendirilmelidir. HTTP zaman aşımı telefondan iptal kanıtı değildir; 208 de USER_CANCEL olarak eşlenmez.

Ortak hata modeli ve örnekler ile fingerprint bekleme davranışını inceleyin. Fingerprint'in alınması imzanın tamamlandığını göstermez; FINGERPRINT_TIMEOUT da kullanıcı iptali anlamına gelmez.


Örnek akış (CAdES Mobile V4)

  1. Dosya yükleme: CoreApiFile/UploadFile veya ChunkInit → ChunkUpload → ChunkComplete. Dönen dosya işlem kimliğini saklayın.
  2. v4/CoreApiCadesMobile/SignStepOneCadesMobileCore isteğini bu operationId ile başlatın. İstek, imzalama sonucu oluşana kadar devam edebilir.
  3. İmza isteği sürerken, gerekiyorsa ayrı bir istekle v2/CoreApiFingerPrint/GetFingerPrintCore çağırın. İmza isteğinin girişindeki dosya operationId değerini kullanın; sonuçta dönen yeni imzalama işlem kimliğini değil.
  4. İmza isteğinin nihai yanıtını takip edin. USER_CANCEL, UNKNOWN_CLIENT veya diğer imza hatalarında fingerprint takibini durdurun; bekleyen sorguyu mümkünse iptal edin. Geç gelen fingerprint yanıtı tamamlanmış işlemi tekrar aktif hale getirmemelidir.
  5. Yalnızca hata yoksa ve result.isSuccess = true ise, imza yanıtındaki result.operationId ile CoreApiFile/DownloadCore üzerinden imzalı dosya indirin. Ek bir imzalama adımı gerekmez.

Yukarıdaki C# örneği yalnızca nihai imza yanıtını bekler. Kullanıcıya işlem sırasında fingerprint göstermek istiyorsanız, fingerprint sorgusunu bu isteğin tamamlanmasını beklemeden ayrı yürütün.


V2'den V4'e geçiş

Endpoint değişiklik özeti

AmaçV2 endpointV4 endpoint
Mobil imzayı başlatPOST /v2/CoreApiCadesMobile/SignStepOneCadesMobileCorePOST /v4/CoreApiCadesMobile/SignStepOneCadesMobileCore

V2 → V4 request alanı dönüşümleri

  • V2'de vardı, V4'te kaldırıldı
    • coordinates: V4'te bu alan kaldırılmıştır.
    • signatureTurkishProfile: Yerine profile (enum) kullanılır.
    • signatureLevel (string): V4'te sayısal enum'a dönüştürüldü.
  • V4'te yeni
    • profile: Enum tabanlı profil seçimi (None=0, P1=1, P2=2, P3=3, P4=4).
    • signatureLevel: Genişletilmiş enum (BES=1, EPES=2, T=3, C=4, X=5, XL=6, A=7).
  • Aynı kalanlar
    • operationId, phoneNumber, operator, userPrompt, citizenshipNo, serialOrParallel, signaturePath, requestId, displayLanguage

Notlar

  • URL prefix: /v2//v4/ olarak güncelleyin.
  • signatureLevel: V2'de string ("BES"), V4'te integer (1). Her iki format da kabul edilir.
  • Profil: V2'de signatureTurkishProfile (string), V4'te profile (enum).

Was this page helpful?