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 yeni OperationId dö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: T
    • error: 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).


POST/v2/CoreApiPades/GetSignatureListCore

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

POST
/v2/CoreApiPades/GetSignatureListCore
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
}

POST/v3/CoreApiPades/GetSignatureListCore

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

POST
/v3/CoreApiPades/GetSignatureListCore
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
}

POST/v2/CoreApiPades/SignStepOnePadesCore

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

POST
/v2/CoreApiPades/SignStepOnePadesCore
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
}

POST/v2/CoreApiPades/signStepThreePadesCore

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çilirse paslBES kabul edilir.

Request

POST
/v2/CoreApiPades/signStepThreePadesCore
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
}

POST/v2/CoreApiPades/UpgradePadesCore

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

POST
/v2/CoreApiPades/UpgradePadesCore
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)

  1. Dosya yükleme: CoreApiFile/UploadFile veya parça/parça: ChunkInit → ChunkUpload → ChunkComplete
  2. (Gerekirse) PDF'e dönüşüm ve katman ekleme işlemleri CoreApiPdf (v2.0) sayfasındaki uç noktalarla yapılır; dönen operationId ile devam edilir.
  3. CoreApiPades/SignStepOnePadesCorestate, keyId, keySecret alınır (yeni operationId gelebilir).
  4. İstemci e-imza aracına göre signedData üretilir.
  5. CoreApiPades/signStepThreePadesCore ile imzalama tamamlanır (final operationId).
  6. (Opsiyonel) UpgradePadesCore ile PAdES imzalar yükseltilebilir.
  7. (Opsiyonel) GetSignatureListCore ile imzalar listelenir:
    • V2 (/v2/...): Temel imza bilgileri
    • V3 (/v3/...): Zaman damgası detayları dahil (en son imzayı bulmak için önerilir)

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 endpointV2 endpointV3 endpointNot
İmzayı başlatPOST /v1/CoreApiPades/SignStepOnePadesCorePOST /v2/CoreApiPades/SignStepOnePadesCoreV2'de fileData yok. Dosya önce yüklenir, burada sadece operationId kullanılır.
İmzayı bitirPOST /v1/CoreApiPades/signStepThreePadesCorePOST /v2/CoreApiPades/signStepThreePadesCoreV1'de dontUpgradeToLtv vardı; V2'de yok (bkz. aşağı).
İmzayı yükselt (upgrade)POST /v1/CoreApiPades/UpgradePadesCorePOST /v2/CoreApiPades/UpgradePadesCoreV2'de signatureLevel zorunlu, signaturePath opsiyonel.
İmza listesiPOST /v2/CoreApiPades/GetSignatureListCorePOST /v3/CoreApiPades/GetSignatureListCoreV3'te zaman damgası detayları eklendi. En son imzayı bulmak için V3 önerilir.
İmza doğrulama (multipart)POST /v1/CoreApiPades/VerifySignaturesCorePOST /Verification/ApiVerifySignaturesPadesV2'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’de SignStepOnePadesCore içinde gönderilmez. Dosyayı önce CoreApiFile/UploadFile (veya chunk akışı) ile yükleyip dönen operationId ile devam edin.
    • signatureIndex: V2 SignStepOnePadesCoreRequestV2 modelinde yoktur (PAdES’te seri imza için signaturePath yaklaşı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 signatureLevel ile (örn. LTV) belirtebilir veya imza bittikten sonra UpgradePadesCore çağrısı yapabilirsiniz.

UpgradePadesCore

  • V1’de istek gövdesi pratikte sadece operationId ile çalışıyordu.
  • V2’de istek gövdesi:
    • signatureLevel: zorunlu
    • signaturePath: 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 SignStepOnePadesCore içine fileData gönderilmez; dosya yükleme CoreApiFile akışı ile yapılır.
  • İmza doğrulama: V1'deki VerifySignaturesCore (multipart) endpoint'i, V2'de CoreApiPades altında bulunmaz; doğrulama için Verification/ApiVerifySignaturesPades kullanı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

ÖzellikV2V3
Endpoint/v2/CoreApiPades/GetSignatureListCore/v3/CoreApiPades/GetSignatureListCore
Response tipiGetSignatureListCoreResultGetSignatureListCoreV3Result
Signature item tipiGetSignatureListCoreResultItemGetSignatureListCoreResultItemV3
Zaman damgası detayıYok (sadece timestamped: bool)Var (timestamp objesi ile detaylı bilgi)
DateTime alanlarıYokclaimedSigningTimeAsTime, timestamp.timeAsTime
Belge zaman damgasıDahilFiltrelenir (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 EntityLabel sı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.

Was this page helpful?