CoreApiXades (v2.0)

CoreApiXades, PrimeAPI’de XML tabanlı XAdES imzalama işlemlerini yönetir. İmzalama iki adımda gerçekleşir: SignStepOne (başlat) ve signStepThree (bitir). Ayrıca mevcut dosyadaki imzaları listeleme ve imzayı daha yüksek seviyeye yükseltme (upgrade) uç noktaları bulunur. Tüm işlemler bir OperationId etrafında yürür.

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

Bir dosyadaki imzaları listeleyen uç nokta, 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.

  • Name
    xadesSignatureType
    Type
    string
    Description

    (Varsa) XAdES imza türü.


POST/v2/CoreApiXades/GetSignatureListCore

GetSignatureListCore

Verilen operationId ile ilişkili dosyadaki 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/CoreApiXades/GetSignatureListCore
curl -X POST "https://apitest.onaylarim.com/v2/CoreApiXades/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,
        "xadesSignatureType": "ENVELOPED"
      }
    ],
    "operationId": "11111111-1111-1111-1111-111111111111"
  },
  "error": null
}

POST/v2/CoreApiXades/SignStepOneXadesCore

SignStepOneXadesCore — İmzayı başlat

XAdES imzalama sürecini başlatır ve istemci tarafındaki e-imza aracına iletilecek state, keyId, keySecret değerlerini döner.

Gerekli/opsiyonel alanlar

  • Name
    operationId
    Type
    uuid
    Description

    İmzalanacak dosyanın 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
    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).

  • Name
    citizenshipNo
    Type
    string
    Description

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

  • Name
    signatureTurkishProfile
    Type
    string
    Description

    (Opsiyonel) P1 | P2 | P3 | P4. Profil istenmiyorsa boş geçilir.

  • Name
    envelopingOrEnveloped
    Type
    string
    Description

    (Opsiyonel) ENVELOPING | ENVELOPED. Boş geçilirse ENVELOPED kabul edilir.

  • Name
    envelopingObjectMimeType
    Type
    string
    Description

    (Opsiyonel, ENVELOPING için) Zarf içindeki nesnenin MIME türü (örn. application/pdf). Boşsa application/pdf.

  • Name
    envelopingObjectEncoding
    Type
    string
    Description

    (Opsiyonel, ENVELOPING için) Encoding değeri (örn. http://www.w3.org/2000/09/xmldsig#base64). Boşsa base64 URL’si.

  • 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/CoreApiXades/SignStepOneXadesCore
curl -X POST "https://apitest.onaylarim.com/v2/CoreApiXades/SignStepOneXadesCore" \
  -H "X-API-KEY: {api_key}" \
  -H "Content-Type: application/json" \
  -d '{
        "operationId": "11111111-1111-1111-1111-111111111111",
        "cerBytes": "MIIC...",
        "serialOrParallel": "SERIAL",
        "signaturePath": "S0",
        "citizenshipNo": null,
        "signatureTurkishProfile": "P4",
        "envelopingOrEnveloped": "ENVELOPED",
        "envelopingObjectMimeType": "application/pdf",
        "envelopingObjectEncoding": "http://www.w3.org/2000/09/xmldsig#base64",
        "requestId": "aaaaaaaaaaaaaaaaaaaaa",
        "displayLanguage": "tr"
      }'

Response

{
  "result": {
    "state": "BASE64_STATE",
    "keyID": "abcd1234",
    "keySecret": "wxyz5678",
    "operationId": "22222222-2222-2222-2222-222222222222"
  },
  "error": null
}

POST/v2/CoreApiXades/signStepThreeXadesCore

signStepThreeXadesCore — İmzayı bitir

İstemcide oluşturulan imzalı veriyi (signedData) göndererek XAdES imzalama sürecini tamamlar.

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
    SignatureLevelForXades?
    Description

    (Opsiyonel) XAdES imza seviyesi. Olası değerler: aslBES, aslT, aslXL, aslA. Boş geçilirse aslBES kabul edilir.

Request

POST
/v2/CoreApiXades/signStepThreeXadesCore
curl -X POST "https://apitest.onaylarim.com/v2/CoreApiXades/signStepThreeXadesCore" \
  -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/CoreApiXades/UpgradeXadesCore

UpgradeXadesCore

Mevcut XAdES imzasını istenen seviyeye yükseltir. 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 dosyanın işlem kimliği.

  • Name
    signatureLevel
    Type
    SignatureLevelForXades
    Description

    (Zorunlu) Hedef imza seviyesi. Olası değerler: aslBES, aslT, aslXL, aslA.

  • Name
    signaturePath
    Type
    string
    Description

    (Opsiyonel) Yükseltilecek imzanın yolu.

Request

POST
/v2/CoreApiXades/UpgradeXadesCore
curl -X POST "https://apitest.onaylarim.com/v2/CoreApiXades/UpgradeXadesCore" \
  -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ış (XAdES)

  1. Dosya yükleme: CoreApiFile/UploadFile veya parça/parça: ChunkInit → ChunkUpload → ChunkComplete
  2. CoreApiXades/SignStepOneXadesCorestate, keyId, keySecret alınır (yeni operationId gelebilir).
  3. İstemci e-imza aracına göre signedData üretilir.
  4. CoreApiXades/signStepThreeXadesCore ile imzalama tamamlanır (final operationId).
  5. (Opsiyonel) UpgradeXadesCore ile imzalar yükseltilebilir.

V1’den V2’ye geçiş

Bu sayfa V2.0 uç noktalarını anlatır. Eğer mevcut entegrasyonunuz V1 (/v1/CoreApiXades) ile çalışıyorsa, aşağıdaki maddelerle hızlıca V2’ye geçebilirsiniz.

Endpoint değişiklik özeti

AmaçV1 endpointV2 endpointNot
İmzayı başlatPOST /v1/CoreApiXades/SignStepOneXadesCorePOST /v2/CoreApiXades/SignStepOneXadesCoreV2’de fileData yok. Dosya önce yüklenir, burada sadece operationId kullanılır.
İmzayı bitirPOST /v1/CoreApiXades/signStepThreeXadesCorePOST /v2/CoreApiXades/signStepThreeXadesCoreV2’de ayrıca opsiyonel signatureLevel parametresi vardır.
İmzayı yükselt (upgrade)POST /v1/CoreApiXades/UpgradeXadesCorePOST /v2/CoreApiXades/UpgradeXadesCoreV2’de signatureLevel zorunlu, signaturePath opsiyonel.
İmza listesiPOST /v2/CoreApiXades/GetSignatureListCoreV2 ile eklendi. operationId ile dosyadaki imzaları listeler.

V1 → V2 request alanı dönüşümleri (XAdES)

SignStepOneXadesCore

  • V1’de vardı, V2’de kaldırıldı
    • fileData: V2’de SignStepOneXadesCore içinde gönderilmez. Dosyayı önce CoreApiFile/UploadFile (veya chunk akışı) ile yükleyip dönen operationId ile devam edin.
    • signatureIndex: V1’de “kaçıncı imza” mantığı için kullanılıyordu. V2’de bunun yerine:
      • serialOrParallel (SERIAL | PARALLEL)
      • Seri imzada hedef imzayı belirtmek için signaturePath (S0, S0:S0 gibi)
    • xmlSignatureType (int): V1’de ENVELOPING=2, ENVELOPED=4 idi. V2’de bunun yerine envelopingOrEnveloped (ENVELOPING | ENVELOPED) kullanılır.
  • V2’de yeni
    • citizenshipNo, signatureTurkishProfile (opsiyonel)
    • envelopingObjectMimeType, envelopingObjectEncoding: ENVELOPING için opsiyonel (V1’e benzer, fakat V2’de tipler string ile kontrol edilir)

V1 örnek istek (özet):

{
  "operationId": "11111111-1111-1111-1111-111111111111",
  "cerBytes": "MIIC...",
  "fileData": "BASE64_FILE_BYTES",
  "signatureIndex": 0,
  "xmlSignatureType": 4,
  "envelopingObjectMimeType": "application/pdf",
  "envelopingObjectEncoding": "http://www.w3.org/2000/09/xmldsig#base64",
  "requestId": "aaaaaaaaaaaaaaaaaaaaa",
  "displayLanguage": "tr"
}

V2 örnek istek (özet):

{
  "operationId": "11111111-1111-1111-1111-111111111111",
  "cerBytes": "MIIC...",
  "serialOrParallel": "SERIAL",
  "signaturePath": "S0",
  "citizenshipNo": null,
  "signatureTurkishProfile": "P4",
  "envelopingOrEnveloped": "ENVELOPED",
  "envelopingObjectMimeType": "application/pdf",
  "envelopingObjectEncoding": "http://www.w3.org/2000/09/xmldsig#base64",
  "requestId": "aaaaaaaaaaaaaaaaaaaaa",
  "displayLanguage": "tr"
}

signStepThreeXadesCore

  • V1’de istek gövdesi signedData, keyId, keySecret, operationId içeriyordu.
  • V2’de aynı alanlara ek olarak:
    • signatureLevel: opsiyonel (boşsa BES)

UpgradeXadesCore

  • 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 SignStepOneXadesCore içine fileData gönderilmez; dosya yükleme CoreApiFile akışı ile yapılır.

Was this page helpful?