CoreApiPadesMobile (v4.0)
CoreApiPadesMobile V4, mobil imza operatörleri (Turkcell/Vodafone/AVEA) üzerinden PAdES imzalama işlemini başlatır. V2'ye kıyasla Baseline seviyeler (B-B, B-T, B-LT, B-LTA) ve profil desteği (sadece P4) sunulur. Mobil imzada işlem tek adımda tamamlanır; ayrı bir "signStepThree" adımı yoktur.
Temel kavramlar
OperationId: İmzalanacak PDF dosyasını temsil eden işlem kimliği. Önceki adımlardan (dosya yükleme) elde edilir.- Profiller: PAdES'te yalnızca
P4(OCSP tabanlı) veNone(profilsiz) desteklenir. - 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: SignatureLevelForPadesV4
| Değer | Kod | Açıklama |
|---|---|---|
BB | 1 | PAdES Baseline-B |
BT | 2 | PAdES Baseline-T — Zaman damgalı |
BLT | 3 | PAdES Baseline-LT — Uzun vadeli doğrulama bilgisi |
BLTA | 4 | PAdES Baseline-LTA — Arşiv zaman damgalı |
Enum: PadesProfileV4
| Değer | Kod | Açıklama | Geçerli Seviyeler | Revocation |
|---|---|---|---|---|
None | 0 | Profil yok | BB | — |
P4 | 4 | EPES + BLT/BLTA, ÇİSDuP (OCSP) | BLT, BLTA | OCSP |
Not: PAdES'te P1, P2, P3 profilleri desteklenmez; yalnızca
NoneveP4kullanılabilir.
SignStepOnePadesMobileCore — 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 PDF dosyasını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
- SignatureLevelForPadesV4
- Description
PAdES imza seviyesi. Olası değerler:
BB,BT,BLT,BLTA.
- Name
profile- Type
- PadesProfileV4
- Description
İmza profili. Olası değerler:
None,P4.
- 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").
- Name
signatureWidgetInfo- Type
- SignatureWidgetInfo?
- Description
(Opsiyonel) Görsel imza widget bilgisi.
nullise görünmez imza atılır. Alanlar:width,height(pixel),left/right/top/bottom(sayfa oranı 0-1),transformOrigin(ör. "left top"),imageBytes(JPG arka plan, byte[]),pagesToPlaceOn(sayfa indeksleri, 0-tabanlı),lines(metin satırları).
Not: PAdES mobile V4'te
serialOrParallelvesignaturePathalanları bulunmaz. PAdES imzaları her zaman paralel olarak eklenir.
Request
curl -X POST "https://apitest.onaylarim.com/v4/CoreApiPadesMobile/SignStepOnePadesMobileCore" \
-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,
"requestId": "aaaaaaaaaaaaaaaaaaaaa",
"displayLanguage": "tr",
"signatureWidgetInfo": null
}'
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ış (PAdES Mobile V4)
- PDF dosya yükleme:
CoreApiFile/UploadFileveyaChunkInit → ChunkUpload → ChunkComplete. Dönen dosya işlem kimliğini saklayın. v4/CoreApiPadesMobile/SignStepOnePadesMobileCoreisteğ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ı PDF 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/CoreApiPadesMobile/SignStepOnePadesMobileCore | POST /v4/CoreApiPadesMobile/SignStepOnePadesMobileCore |
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, P4=4).signatureLevel: Yeni Baseline enum (BB=1, BT=2, BLT=3, BLTA=4).signatureWidgetInfo: (Opsiyonel) Görsel imza desteği.nullise görünmez imza atılır.
- Aynı kalanlar
operationId,phoneNumber,operator,userPrompt,citizenshipNo,requestId,displayLanguage
Notlar
- URL prefix:
/v2/→/v4/olarak güncelleyin. - signatureLevel: V2'de string ("BES"), V4'te Baseline enum (BB=1, BT=2, BLT=3, BLTA=4). Her iki format da kabul edilir.
- Profil: V2'de
signatureTurkishProfile(string), V4'teprofile(enum). PAdES'te yalnızcaNoneveP4geçerlidir.