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: Terror: string (hata durumunda dolar)errorCode: string (opsiyonel, dilden bağımsız hata kodu; null ise JSON'a yazılmaz)
Enum: SignatureLevelForCadesV4
| Değer | Kod | Açıklama |
|---|---|---|
BES | 1 | Basic Electronic Signature |
EPES | 2 | Electronic Signature with Explicit Policy |
T | 3 | ES-T — Zaman damgalı |
C | 4 | ES-C — T + revocation referansları |
X | 5 | ES-X — C + zaman damgası |
XL | 6 | ES-XL — X + revocation değerleri |
A | 7 | ES-A — Arşiv zaman damgalı |
Enum: CadesProfileV4
| Değer | Kod | Açıklama | Geçerli Seviyeler | Revocation |
|---|---|---|---|---|
None | 0 | Profil yok | BES | — |
P1 | 1 | Profilsiz BES | BES | — |
P2 | 2 | EPES + T, SİL (CRL) | T | CRL |
P3 | 3 | EPES + XL/A, SİL (CRL) | EPES, XL, A | CRL |
P4 | 4 | EPES + XL/A, ÇİSDuP (OCSP) | EPES, XL, A | OCSP |
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
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.
| errorCode | Anlamı | İstemci aksiyonu |
|---|---|---|
USER_CANCEL | Operatö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_CLIENT | SOAP 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_TRANSACTION | Operatö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_TIMEOUT | Operatö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_UNAVAILABLE | Operatö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)
- Dosya yükleme:
CoreApiFile/UploadFileveyaChunkInit → ChunkUpload → ChunkComplete. Dönen dosya işlem kimliğini saklayın. v4/CoreApiCadesMobile/SignStepOneCadesMobileCoreisteğini buoperationIdile başlatın. İstek, imzalama sonucu oluşana kadar devam edebilir.- İmza isteği sürerken, gerekiyorsa ayrı bir istekle
v2/CoreApiFingerPrint/GetFingerPrintCoreçağırın. İmza isteğinin girişindeki dosyaoperationIddeğerini kullanın; sonuçta dönen yeni imzalama işlem kimliğini değil. - İmza isteğinin nihai yanıtını takip edin.
USER_CANCEL,UNKNOWN_CLIENTveya 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. - Yalnızca hata yoksa ve
result.isSuccess = trueise, imza yanıtındakiresult.operationIdileCoreApiFile/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 endpoint | V4 endpoint |
|---|---|---|
| Mobil imzayı başlat | POST /v2/CoreApiCadesMobile/SignStepOneCadesMobileCore | POST /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: Yerineprofile(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'teprofile(enum).