CoreApiPades (v2.0 / v3.0)
CoreApiPades, PrimeAPI’de PDF üstünde PAdES imzalama işlemlerini yönetir. İmzalama iki adımda gerçekleşir: SignStepOne (başlat) ve signStepThree (bitir). Ayrıca mevcut dosyadaki imzaları listeleme, imzayı daha yüksek seviyeye yükseltme (upgrade), PDF’e dönüştürme ve PDF’e doğrulama yazısı/QR code gibi katmanlar ekleme uç noktaları bulunur. Tüm işlemler bir OperationId etrafında yürür.
Not: PDF’e dönüştürme ve PDF’e katman ekleme uç noktaları CoreApiPdf (v2.0) altında yer alır. Bu sayfada yalnızca CoreApiPades uç noktaları dokümante edilir.
Temel kavramlar
OperationId: İşlem kimliği. Bir adım yeni çıktı üretiyorsa yanıt içinde yeniOperationIddöner ve takip eden adımlarda bu yeni değer kullanılmalıdır.- Auth: Tüm uç noktalar ApiKey gerektirir.
- Zarf: Tüm yanıtlar
ApiResult<T>tipindedir:result: Terror: string (hata durumunda dolar)
İmza listesi modeli (V2)
Bir dosyadaki imzaları listeleyen V2 uç noktası, aşağıdaki alanlardan oluşan öğeler döndürür.
Properties
- Name
entityLabel- Type
- string
- Description
İmzanın hiyerarşik etiket değeri (ör. S0, S0:S0).
- Name
level- Type
- integer
- Description
İmzanın seviye değeri (sayısal).
- Name
levelString- Type
- string
- Description
İmza seviyesinin metinsel karşılığı.
- Name
subjectRDN- Type
- string
- Description
İmzalayanın subject bilgisi.
- Name
timestamped- Type
- boolean
- Description
İmzanın zaman damgasına sahip olup olmadığı.
- Name
citizenshipNo- Type
- string
- Description
(Varsa) TCKN.
İmza listesi modeli (V3)
V3 uç noktası, V2'deki tüm alanların yanı sıra zaman damgası detaylarını da döndürür. Belge zaman damgaları (document timestamp) filtrelenir ve sadece gerçek e-imzalar listelenir.
Properties
- Name
entityLabel- Type
- string
- Description
İmzanın hiyerarşik etiket değeri (ör. S0, S1).
- Name
level- Type
- integer
- Description
İmzanın seviye değeri (sayısal).
- Name
levelString- Type
- string
- Description
İmza seviyesinin metinsel karşılığı.
- Name
subjectRDN- Type
- string
- Description
İmzalayanın subject bilgisi.
- Name
timestamped- Type
- boolean
- Description
İmzanın zaman damgasına sahip olup olmadığı.
- Name
claimedSigningTime- Type
- string
- Description
İmzalayanın beyan ettiği imza zamanı (string).
- Name
claimedSigningTimeAsTime- Type
- datetime
- Description
İmzalayanın beyan ettiği imza zamanı (DateTime).
- Name
citizenshipNo- Type
- string
- Description
(Varsa) TCKN.
- Name
timestamp- Type
- TimestampInfoItem
- Description
(Varsa) İmzaya ait zaman damgası bilgisi.
TimestampInfoItem
- Name
entityLabel- Type
- string
- Description
Zaman damgasının etiket değeri (ör. S0:T0).
- Name
time- Type
- string
- Description
Zaman damgası zamanı (string).
- Name
timeAsTime- Type
- datetime
- Description
Zaman damgası zamanı (DateTime).
GetSignatureListCore
Verilen operationId ile ilişkili PDF dosyasındaki tüm imzaları döner.
Gerekli alanlar
- Name
operationId- Type
- uuid
- Description
İmzaları listelenecek dosyanın işlem kimliği.
- Name
requestId- Type
- string
- Description
21 karakter uzunluğunda benzersiz bir string. Her istek için farklı olmalıdır. Örnek:
Guid.NewGuid().ToString("N").Substring(0,21)
- Name
displayLanguage- Type
- string
- Description
Dil tercihi (BaseRequest).
Request
curl -X POST "https://apitest.onaylarim.com/v2/CoreApiPades/GetSignatureListCore" \
-H "X-API-KEY: {api_key}" \
-H "Content-Type: application/json" \
-d '{ "operationId": "11111111-1111-1111-1111-111111111111", "requestId": "aaaaaaaaaaaaaaaaaaaaa", "displayLanguage": "tr" }'
Response
{
"result": {
"signatures": [
{
"entityLabel": "S0",
"level": 1,
"levelString": "BES",
"subjectRDN": "CN=Example",
"timestamped": false,
"citizenshipNo": null
}
],
"operationId": "11111111-1111-1111-1111-111111111111"
},
"error": null
}
GetSignatureListCore (V3)
V3 versiyonu, V2'nin tüm özelliklerine ek olarak zaman damgası detaylarını da döndürür. Belge zaman damgaları (document timestamp) filtrelenir ve sadece gerçek e-imzalar listelenir. İmzaların sıralanması için timestamp.timeAsTime veya claimedSigningTimeAsTime değerleri kullanılabilir.
Gerekli alanlar
- Name
operationId- Type
- uuid
- Description
İmzaları listelenecek dosyanın işlem kimliği.
- 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 (BaseRequest).
Request
curl -X POST "https://apitest.onaylarim.com/v3/CoreApiPades/GetSignatureListCore" \
-H "X-API-KEY: {api_key}" \
-H "Content-Type: application/json" \
-d '{ "operationId": "11111111-1111-1111-1111-111111111111", "requestId": "aaaaaaaaaaaaaaaaaaaaa", "displayLanguage": "tr" }'
Response
{
"result": {
"signatures": [
{
"entityLabel": "S0",
"level": 1,
"levelString": "BES",
"subjectRDN": "CN=Example",
"timestamped": true,
"claimedSigningTime": "2026-01-08 12:50:26.819",
"claimedSigningTimeAsTime": "2026-01-08T12:50:26.819",
"citizenshipNo": "12345678901",
"timestamp": {
"entityLabel": "S0:T0",
"time": "2026-01-08 12:50:30.123",
"timeAsTime": "2026-01-08T12:50:30.123"
}
},
{
"entityLabel": "S1",
"level": 1,
"levelString": "BES",
"subjectRDN": "CN=Example2",
"timestamped": false,
"claimedSigningTime": "2026-01-08 13:15:00.000",
"claimedSigningTimeAsTime": "2026-01-08T13:15:00",
"citizenshipNo": "98765432100",
"timestamp": null
}
],
"operationId": "11111111-1111-1111-1111-111111111111"
},
"error": null
}
SignStepOnePadesCore — İmzayı başlat
PAdES imzalama sürecini başlatır ve istemci tarafındaki e-imza aracına iletilecek state, keyId, keySecret değerlerini döner. PDF üzerinde görünür imza istenirse SignatureWidgetInfo ile görsel/yerleşim bilgileri verilir.
Gerekli/opsiyonel alanlar
- Name
operationId- Type
- uuid
- Description
İmzalanacak PDF’in işlem kimliği.
- Name
cerBytes- Type
- string
- Description
İmzalayan sertifikanın Base64 metni.
- Name
coordinates- Type
- object
- Description
(Opsiyonel) Konum bilgileri (şu an kullanılmıyor).
- Name
signatureWidgetInfo- Type
- object
- Description
(Opsiyonel) Görünür imza için yerleşim/görsel ayarları.
- Name
requestId- Type
- string
- Description
21 karakter uzunluğunda benzersiz bir string. Her istek için farklı olmalıdır. Örnek:
Guid.NewGuid().ToString("N").Substring(0,21)
- Name
displayLanguage- Type
- string
- Description
Dil tercihi (BaseRequest).
Request
curl -X POST "https://apitest.onaylarim.com/v2/CoreApiPades/SignStepOnePadesCore" \
-H "X-API-KEY: {api_key}" \
-H "Content-Type: application/json" \
-d '{
"operationId": "11111111-1111-1111-1111-111111111111",
"cerBytes": "MIIC...",
"signatureWidgetInfo": {
"width": 240,
"height": 80,
"left": 0.1,
"top": 0.1,
"pagesToPlaceOn": [0]
},
"requestId": "aaaaaaaaaaaaaaaaaaaaa",
"displayLanguage": "tr"
}'
Response
{
"result": {
"state": "BASE64_STATE",
"keyID": "abcd1234",
"keySecret": "wxyz5678",
"operationId": "22222222-2222-2222-2222-222222222222"
},
"error": null
}
signStepThreePadesCore — İmzayı bitir
İstemcide oluşturulan imzalı veriyi (signedData) göndererek PAdES imzalama sürecini tamamlar. (İstenirse) daha yüksek seviyeye yükseltme işlemi ayrı bir çağrı ile yapılır.
Gerekli/opsiyonel alanlar
- Name
operationId- Type
- uuid
- Description
İmza tamamlanacak işlem kimliği.
- Name
signedData- Type
- string
- Description
E-imza aracından dönen imzalı veri.
- Name
keyId- Type
- string
- Description
SignStepOne yanıtındaki KeyId.
- Name
keySecret- Type
- string
- Description
SignStepOne yanıtındaki KeySecret.
- Name
signatureLevel- Type
- SignatureLevelForPades?
- Description
(Opsiyonel) PAdES imza seviyesi. Olası değerler:
paslBES,paslLTV. Boş geçilirsepaslBESkabul edilir.
Request
curl -X POST "https://apitest.onaylarim.com/v2/CoreApiPades/signStepThreePadesCore" \
-H "X-API-KEY: {api_key}" \
-H "Content-Type: application/json" \
-d '{
"operationId": "22222222-2222-2222-2222-222222222222",
"signedData": "HEX_OR_BASE64",
"keyId": "abcd1234",
"keySecret": "wxyz5678",
"signatureLevel": "BES",
"requestId": "aaaaaaaaaaaaaaaaaaaaa",
"displayLanguage": "tr"
}'
Response
{
"result": {
"isSuccess": true,
"operationId": "33333333-3333-3333-3333-333333333333"
},
"error": null
}
UpgradePadesCore
Mevcut PAdES imzasını istenen seviyeye yükseltir (örn. LTV’ye hazırlık niteliğindeki seviye seçenekleri). Belirli bir imzanın yükseltilmesi istenirse signaturePath sağlanabilir; boş bırakılırsa tüm imzalar yükseltilebilir.
Gerekli/opsiyonel alanlar
- Name
operationId- Type
- uuid
- Description
Yükseltme yapılacak PDF’in işlem kimliği.
- Name
signatureLevel- Type
- SignatureLevelForPades
- Description
(Zorunlu) Hedef imza seviyesi. Olası değerler:
paslBES,paslLTV.
- Name
signaturePath- Type
- string
- Description
(Opsiyonel) Yükseltilecek imzanın yolu.
Request
curl -X POST "https://apitest.onaylarim.com/v2/CoreApiPades/UpgradePadesCore" \
-H "X-API-KEY: {api_key}" \
-H "Content-Type: application/json" \
-d '{
"operationId": "33333333-3333-3333-3333-333333333333",
"signatureLevel": "LTV",
"signaturePath": null,
"requestId": "aaaaaaaaaaaaaaaaaaaaa",
"displayLanguage": "tr"
}'
Response
{
"result": {
"isSuccess": true
},
"error": null
}
Örnek akış (PAdES)
- Dosya yükleme:
CoreApiFile/UploadFileveya parça/parça:ChunkInit → ChunkUpload → ChunkComplete - (Gerekirse) PDF'e dönüşüm ve katman ekleme işlemleri
CoreApiPdf (v2.0)sayfasındaki uç noktalarla yapılır; dönenoperationIdile devam edilir. CoreApiPades/SignStepOnePadesCore→state,keyId,keySecretalınır (yenioperationIdgelebilir).- İstemci e-imza aracına göre
signedDataüretilir. CoreApiPades/signStepThreePadesCoreile imzalama tamamlanır (finaloperationId).- (Opsiyonel)
UpgradePadesCoreile PAdES imzalar yükseltilebilir. - (Opsiyonel)
GetSignatureListCoreile imzalar listelenir:- V2 (
/v2/...): Temel imza bilgileri - V3 (
/v3/...): Zaman damgası detayları dahil (en son imzayı bulmak için önerilir)
- V2 (
V1’den V2’ye geçiş
Bu sayfa V2.0 uç noktalarını anlatır. Eğer mevcut entegrasyonunuz V1 (/v1/CoreApiPades) ile çalışıyorsa, aşağıdaki maddelerle hızlıca V2’ye geçebilirsiniz.
Endpoint değişiklik özeti
| Amaç | V1 endpoint | V2 endpoint | V3 endpoint | Not |
|---|---|---|---|---|
| İmzayı başlat | POST /v1/CoreApiPades/SignStepOnePadesCore | POST /v2/CoreApiPades/SignStepOnePadesCore | — | V2'de fileData yok. Dosya önce yüklenir, burada sadece operationId kullanılır. |
| İmzayı bitir | POST /v1/CoreApiPades/signStepThreePadesCore | POST /v2/CoreApiPades/signStepThreePadesCore | — | V1'de dontUpgradeToLtv vardı; V2'de yok (bkz. aşağı). |
| İmzayı yükselt (upgrade) | POST /v1/CoreApiPades/UpgradePadesCore | POST /v2/CoreApiPades/UpgradePadesCore | — | V2'de signatureLevel zorunlu, signaturePath opsiyonel. |
| İmza listesi | — | POST /v2/CoreApiPades/GetSignatureListCore | POST /v3/CoreApiPades/GetSignatureListCore | V3'te zaman damgası detayları eklendi. En son imzayı bulmak için V3 önerilir. |
| İmza doğrulama (multipart) | POST /v1/CoreApiPades/VerifySignaturesCore | POST /Verification/ApiVerifySignaturesPades | — | V2'de CoreApiPades altında yok; doğrulama Verification controller altındadır. |
| Dosya yükleme (multipart/chunk) | POST /v1/CoreApiPades/SignStepOneUploadFile ve Chunk* | CoreApiFile uç noktaları | — | V2'de yükleme akışı CoreApiFile altında standardize edilmiştir. |
V1 → V2 request alanı dönüşümleri (PAdES)
SignStepOnePadesCore
- V1’de vardı, V2’de kaldırıldı
fileData: V2’deSignStepOnePadesCoreiçinde gönderilmez. Dosyayı önceCoreApiFile/UploadFile(veya chunk akışı) ile yükleyip dönenoperationIdile devam edin.signatureIndex: V2SignStepOnePadesCoreRequestV2modelinde yoktur (PAdES’te seri imza içinsignaturePathyaklaşımı ayrıUpgradePadesCoreçağrısında bulunur).
- V2’de aynı/benzer
cerBytes,signatureWidgetInfo(görünür imza),operationId,requestId,displayLanguage
V1 örnek istek (özet):
{
"operationId": "11111111-1111-1111-1111-111111111111",
"cerBytes": "MIIC...",
"fileData": "BASE64_FILE_BYTES",
"signatureIndex": 0,
"requestId": "aaaaaaaaaaaaaaaaaaaaa",
"displayLanguage": "tr"
}
V2 örnek istek (özet):
{
"operationId": "11111111-1111-1111-1111-111111111111",
"cerBytes": "MIIC...",
"signatureWidgetInfo": {
"width": 240,
"height": 80,
"left": 0.1,
"top": 0.1,
"pagesToPlaceOn": [0]
},
"requestId": "aaaaaaaaaaaaaaaaaaaaa",
"displayLanguage": "tr"
}
signStepThreePadesCore
- V1’de vardı, V2’de kaldırıldı
dontUpgradeToLtv: V1’de imza sonrası otomatik LTV yükseltmeyi kontrol ediyordu.
- V2’de yaklaşım
- İmza seviyesi istiyorsanız
signatureLevelile (örn.LTV) belirtebilir veya imza bittikten sonraUpgradePadesCoreçağrısı yapabilirsiniz.
- İmza seviyesi istiyorsanız
UpgradePadesCore
- V1’de istek gövdesi pratikte sadece
operationIdile çalışıyordu. - V2’de istek gövdesi:
signatureLevel: zorunlusignaturePath: opsiyonel (null ise dosyadaki tüm imzalar hedef seviyeye yükseltilebilir)
Notlar / breaking changes
- URL prefix: V1'den V2'ye geçerken
/v1/→/v2/olarak güncelleyin (bu sayfadaki örnekler V2.0 içindir). - Dosya yükleme: V2'de
SignStepOnePadesCoreiçinefileDatagönderilmez; dosya yüklemeCoreApiFileakışı ile yapılır. - İmza doğrulama: V1'deki
VerifySignaturesCore(multipart) endpoint'i, V2'deCoreApiPadesaltında bulunmaz; doğrulama içinVerification/ApiVerifySignaturesPadeskullanılmalıdır.
V2'den V3'e geçiş
V3, şu an sadece GetSignatureListCore endpoint'ini içerir. Diğer endpoint'ler V2'de kalmaya devam eder.
GetSignatureListCore değişiklikleri
| Özellik | V2 | V3 |
|---|---|---|
| Endpoint | /v2/CoreApiPades/GetSignatureListCore | /v3/CoreApiPades/GetSignatureListCore |
| Response tipi | GetSignatureListCoreResult | GetSignatureListCoreV3Result |
| Signature item tipi | GetSignatureListCoreResultItem | GetSignatureListCoreResultItemV3 |
| Zaman damgası detayı | Yok (sadece timestamped: bool) | Var (timestamp objesi ile detaylı bilgi) |
| DateTime alanları | Yok | claimedSigningTimeAsTime, timestamp.timeAsTime |
| Belge zaman damgası | Dahil | Filtrelenir (sadece gerçek e-imzalar) |
V3'te yeni alanlar
claimedSigningTime: İmzalayanın beyan ettiği zaman (string)claimedSigningTimeAsTime: İmzalayanın beyan ettiği zaman (DateTime)timestamp: Zaman damgası bilgisi (varsa)entityLabel: Zaman damgası etiketi (ör. S0:T0)time: Zaman damgası zamanı (string)timeAsTime: Zaman damgası zamanı (DateTime)
En son imzayı bulma
V3 ile en son atılan imzayı doğru şekilde bulabilirsiniz:
// V3 ile en son imzayı bul (zaman damgası varsa onu, yoksa beyan edilen zamanı kullan)
var latestSignature = signatures
.OrderByDescending(x => x.Timestamp?.TimeAsTime ?? x.ClaimedSigningTimeAsTime)
.FirstOrDefault();
Not: V2'deki
EntityLabelsıralaması (S0, S1, S2...) imzaların atılma sırasını garanti etmez. V3'teki zaman damgası bilgileri ile doğru sıralama yapılabilir.