Krātuves API

Failu augšupielāde

Darbības joma
Jauns fails tiek pievienots konkrētajai failu apstrādes sesijai.

Apraksts

  1. Fails tiek pievienots faila apstrādes sesijai;

  2. Tiek atgriezta faila apraksta informācija.

    Pieprasījums
    Pakalpojuma sniedzēja lietojumprogramma, izmantojot TLS, nosūta šādu GET pieprasījumu:

PUT /api-storage/v1.0/{sessionId}/upload

Autorizācija

Pieprasījumā jāiekļauj Authorization galvene ar OAuth Introspekta piekļuves marķieri (Introspect access token), kas iegūts no e-Identitātes platformas, izmantojot pakalpojumu sniedzēja akreditācijas datu piešķiršanas plūsmu (credentials grant flow).

Pamatteksts (body)

ParamtersTipsLietošanaApraksts
failsBinārie datiObligātsAugšuplādējamais fails

Piemērs

PUT /api-storage/v1.0/77740b301f0880ef498cb1e474e8060b3e538cfeea8ebf508c2bad4b72b56a87/upload HTTP/1.1
Authorization: Bearer a477b3a3366768c07e4c458f518711b4b351e8d2c2f0f78a1524e4d3efd00603
Host: signapi-prep.eparaksts.lv

*Atbilde
JSON objekts:

{
    "data": [
                {
            "includedDocuments": [
                {
                  "id": {String},
                   "name": {String},
                   "size": {Number},
                    "type": {String}
                }
            ],
            "id": {String},
            "name": {String},
            "size": {Number},
            "type": {String}
               }
            ]
}
ParamtersTipsApraksts
dataObjekts (Object)Datu objekts
data.includedDocumentsMasīvs (Array)Ja augšupielādētais fails ir ASiC-E (EDOC), ASiC-E konteinerā iekļauto failu saraksts
data.includedDocuments.idVirkne (String)Iekļautā faila identifikators ir jāizmanto, ja nepieciešams lejupielādēt pašreizējo iekļauto failu
data.includedDocuments.nameVirkne (String)Iekļautā faila nosaukums
data.includedDocuments.sizeNumurs (Number)Iekļautā faila lielums baitos
data.includedDocuments.typeVirkne (String)Apstrādātā faila tips.
"file" — faila vai ASiC-E konteinera gadījumā
data.idVirkne (String)Faila identifikators (documentId)
data.nameVirkne (String)Faila nosaukums
data.sizeVesels skaitlis (Integer)Faila lielums baitos
data.typeVirkne (String)Apstrādātā faila tips:
"file" — faila vai ASiC-E konteinera gadījumā

Piemērs, ja augšupielādētais fails nav ASiC-E konteiners

{
    "data": {
        "id": "cc8bcb560bbfee4c190433ea63c549d1",
        "name": "test.doc",
        "size": 41280,
        "type": "file"
           }
}

Piemērs, ja ir augšupielādēts ASiC-E konteiners

{
    "data": {
        "includedDocuments": [
            {
                "id": "3cbc266934776e581bcb406f15bb5ffd",
                "name": "Receipt.doc",
                "size": 22528,
                "type": "file"
           }
        ],
        "id": "23a3abe0a211478ae55554649178568e",
        "name": "Receipt.edoc",
        "size": 14805,
        "type": "file"
           }
}

Pievieno dokumenta īssavilkumu (digest)

Darbības joma

Darbības "Pievienot dokumentu īssavilkumu" mērķis ir izvairīties no failu pārsūtīšanas (ja ir papildu drošības prasības) no iekšējā tīkla.

Darbība pievieno parakstāmā faila īssavilkumu (HASH) un faila nosaukumu faila apstrādes sesijai.

Iespējama tikai ASiC-E (EDOC) dokumentu tipu parakstīšanai.

Apraksts

  1. Faila īssavilkums (digest) un faila nosaukums ir pievienots faila apstrādes sesijai;
  2. Tiek atgriezta faila apraksta informācija.

Pieprasījums
Pakalpojuma sniedzēja lietojumprogramma, izmantojot TLS, nosūta šādu GET pieprasījumu:

POST /api-storage/v1.0/{sessionId}/addDocumentDigest
ParametrsTipsLietošanaApraksts
sessionIdVirkne (64) (String (64))ObligātsFailu apstrādes sesijas identifikators

Autorizācija
Pieprasījumā jāiekļauj Authorization galvene ar OAuth Introspekta piekļuves marķieri (Introspect access token), kas iegūts no e-Identitātes platformas, izmantojot pakalpojumu sniedzēja akreditācijas datu piešķiršanas plūsmu (credentials grant flow).

Pamatteksts (body)

{
    "files": [
            {
                "name": {String},
                "digest": {String},
                "digest_algorithm": {String}
            }
        ],
    "signatureIndex": {String}
}
ParametrsTipsLietošanaApraksts
filesMasīvs (Array)ObligātsFailu īssavilkums un nosaukumu masīvs
files.nameVirkne (String)ObligātsFaila nosaukums (ar paplašinājumu), no kura tika aprēķināts īssavilkums
files.digestVirkne (String)ObligātsAprēķināts faila īssavilkums Base64 kodējumā. ⚠️ Skatīt piezīmi zemāk
files.digest_algorithmVirkne (String)ObligātsIzmantotais HASH algoritms (tiek atbalstīts tikai SHA256)
signatureIndexVirkne (String)Neobligāti

Parakstu secības indekss, kas sākas ar "0", kas nozīmē pirmo parakstu (XAdES paraksta faila nosaukums signatures0.xml)

Ja Parametrs netiek izmantots, paraksta indekss būs "0".

⚠️ Ja ir plānots, ka failu parakstīs vairāk nekā viens parakstītājs, šis parametrs tiek palielināts par 1 katram nākamajam parakstam. ASiC-E konteinerā nedrīkst būt vairāk par vienu parakstu ar tādu pašu faila nosaukumu.

Pretējā gadījumā pakalpojuma sniedzējam ir jāpārdēvē paraksta fails pirms pievienošanas ASiC-E konteineram.

🚧

Failu īssavilkuma (digest) aprēķins

⚠️ Šobrīd tiek atbalstīts tikai SHA256

💡 Vispirms aprēķiniet SHA256 HASH no faila, kas jāparaksta. Pēc tam paņemiet SHA256 HASH un pārveidojiet HEX uz Base64 kodējumā. Kā piemēru kodēšanai var izmantot https://base64.guru/converter/encode/hex

👍

Failu īssavilkuma izmantošanas vadlīnijas līdz ASiC-E pabeigšanai

Īssavilkuma (digest) sagatavošana un parakstīšana

  1. Parakstāmo failu jaucējvērtība (hash) jāaprēķina pakalpojuma sniedzēja infrastruktūrā.;

  2. Īsavilkums ir jākodē no aprēķinātās jaucējvērtības (no HEX uz Base64);

  3. Pakalpojuma sniedzējs saņem autorizācijas marķieri (Introspect tvērums), lai piekļūtu SignAPI;

  4. Pieprasīt darbību “Pievieno dokumenta īssavilkumu (digest)” (POST /api-storage/v1.0/{sessionId}/addDocumentDigest);

  5. Pieprasīt darbību “Aprēķināt īssavilkumu” (POST /api-sign/v1.0/calculateDigest);

  6. Pieprasīt darbību “Pabeigt parakstīšanu” (POST /api-sign/v1.0/finalizeSigning);

  7. Pieprasīt operāciju "Failu saraksts" (GET /api-session/v1.0/{sessionId}/list) - iegūt ASiC-E konteinera parametru "documentId";

  8. Pieprasīt operāciju “Faila lejupielāde”(GET /api-session/v1.0/{sessionId}/{documentId}) - lejupielādējiet parakstītu ASiC-E konteineru;

  9. Atveriet konteineru ar ZIP apstrādes rīkiem (iespējams, paplašinājums ir jāpārdēvē uz “.zip”);

  10. Pievieno konteinera saknes mapei failu, no kura tika aprēķināts īssavilkums.;

  11. Kad fails ir pievienots, ja nepieciešams, mainiet paplašinājumu atpakaļ uz ".edoc" vai ".asice".

Papildu paraksta pievienošana esošajam ASiC-E konteineram

(gadījumā, ja failu īssavilkumu ir parakstījis vairāk nekā viens parakstītājs)

  1. Ja jau esat parakstījis ASiC-E ar vismaz vienu parakstu un jums nav saglabāts parakstīts fails/-i īssavilkums;

  2. Izpakot ASiC-E konteineru - izvilkt parakstāmo failu/s;

  3. Izpildiet 1. līdz 9. darbību sadaļā "Īssavilkuma sagatavošana un parakstīšana";

  4. Dodieties uz mapi "META-INF" un izvelciet paraksta XML failu (faila nosaukumā (signatures1.xml) ir jāietver "parakstu" nosaukums);

  5. Atveriet esošo ASiC-E (kur vēlaties pievienot parakstu);

  6. Atveriet mapi "META-INF";

  7. Pārbaudiet, vai mapē nebija paraksta faila ar tādu pašu faila nosaukumu, kāds tika izvilkts 4. darbībā: a. ja satur, pārdēvējiet paraksta XML faila indeksu, kas iegūts 4. darbībā;

  8. Pievienojiet paraksta XML failu mapei "META-INF;

  9. Kad ir pievienots paraksta XML fails, ja nepieciešams, mainiet paplašinājumu atpakaļ uz ".edoc" vai ".asice".

Piemērs ar viena faila īssavilkumu un nosaukumu

POST /api-storage/v1.0/77740b301f0880ef498cb1e474e8060b3e538cfeea8ebf508c2bad4b72b56a87/addDocumentDigest HTTP/1.1
Authorization: Bearer a477b3a3366768c07e4c458f518711b4b351e8d2c2f0f78a1524e4d3efd00603
Host: signapi-prep.eparaksts.lv
{
    "files": [
            {
                "name": "10-10.pdf",
                "digest": "u69UTpGwlSfNpIMYhXPIa612ELFu+Y8zWaVCApzlQdE=",
                "digest_algorithm": "SHA256"
            }
        ],
    "signatureIndex": "0"
}

Piemērs ar vairāku failu īssavilkumu un nosaukumu

POST /api-storage/v1.0/77740b301f0880ef498cb1e474e8060b3e538cfeea8ebf508c2bad4b72b56a87/addDocumentDigest HTTP/1.1
Authorization: Bearer a477b3a3366768c07e4c458f518711b4b351e8d2c2f0f78a1524e4d3efd00603
Host: signapi-prep.eparaksts.lv
{
    "files": [
            {
                "name": "10-10.pdf",
                "digest": "u69UTpGwlSfNpIMYhXPIa612ELFu+Y8zWaVCApzlQdE=",
                "digest_algorithm": "SHA256"
            },
            {
                "name": "10-11.docx",
                "digest": "u69UTpGwlSfNpIMYhXPIa612ELFu+Y8zWaVCApzlQdB=",
                "digest_algorithm": "SHA256"
            },
            {
                "name": "10-12.pdf",
                "digest": "u69UTpGwlSfNpIMYhXPIa612ELFu+Y8zWaVCApzlQdC=",
                "digest_algorithm": "SHA256"
            }
        ],
    "signatureIndex": "0"
}

Atbilde
JSON objekts:

{
    "data": [
        {
            "id": {String},
            "name": {String},
            "size": {Number},
            "type": {String}
        }
    ]
}
ParamtersTipsApraksts
dataObjekts (Object)Datu objekts
data.idVirkne (String)Faila identifikators (documentId)
data.nameVirkne (String)Faila nosaukums
data.sizeVesels skaitlis (Integer)Faila lielums baitos (vienmēr būs "0", kopš tika pievienots faila nosaukums un īssavilkums)
data.typeVirkne (String)

Apstrādātā faila tips:

"hash" - gadījumā, ja sesijai tiek pievienots faila īssavilkums un faila nosaukums

Viena faila īssavilkuma un nosaukuma piemērs

{
    "data": [
        {
            "id": "6921c9e8afd22a9a391d5318e08da85d",
            "name": "10-10.pdf",
            "size": 0,
            "type": "hash"
        }
    ]
}

Vairāku failu īssavilkuma un nosaukuma piemērs

{
    "data": [
        {
            "id": "6921c9e8afd22a9a391d5318e08da85d",
            "name": "10-10.pdf",
            "size": 0,
            "type": "hash"
        },
        {
            "id": "9f1702526028570f5f6c2813417797a0",
            "name": "10-11.docx",
            "size": 0,
            "type": "hash"
        },
        {
            "id": "5d05429bc930622ee008ed4ded1b2de1",
            "name": "10-12.pdf",
            "size": 0,
            "type": "hash"
        }
    ]
}

Failu saraksta iegūšana

Darbības joma
Retrieve a list of files in a file processing session.

Apraksts

  1. Atgriež informāciju par failiem, kas saglabāti failu apstrādes sesijā:

    1.1. Ja sesijas faili vēl nav parakstīti, tiek atgriezts visu failu saraksts;

    1.2. Ja sesijas faili ir parakstīti, tiek atgriezts parakstītais fails (EDOC / PDF).

Pieprasījums
Pakalpojuma sniedzēja lietojumprogramma, izmantojot TLS, nosūta šādu GET pieprasījumu:

GET /api-storage/v1.0/{sessionId}/list
ParametrsTipsLietošanaApraksts
sessionIdVirkne (64) (String (64))ObligātsFailu apstrādes sesijas identifikators

Autorizācija
Pieprasījumā jāiekļauj Authorization galvene ar OAuth Introspekta piekļuves marķieri (Introspect access token), kas iegūts no e-Identitātes platformas, izmantojot pakalpojumu sniedzēja akreditācijas datu piešķiršanas plūsmu (credentials grant flow).

Piemērs

GET /api-storage/v1.0/77740b301f0880ef498cb1e474e8060b3e538cfeea8ebf508c2bad4b72b56a87/list HTTP/1.1
Authorization: Bearer a477b3a3366768c07e4c458f518711b4b351e8d2c2f0f78a1524e4d3efd00603
Host: signapi-prep.eparaksts.lv

Atbilde
JSON objekts:

{
    "data": {
        "includedDocuments": [
            {
                "id": {String},
                "name": {String},
                "size": {Number},
                "type": {String}
           }
        ],
        "id": {String},
        "name": {String},
        "size": {Number},
        "type": {String}
           }
}
ParametrsTipsApraksts
dataObjekts (Object)Datu objekts
data.includedDocumentsMasīvs (Array)Faili, kas iekļauti parakstītajā konteinerā
data.includedDocuments.idVirkne(String)Iekļautā faila identifikators (documentId)
data.includedDocuments.nameVirkne(String)Iekļautā faila nosaukums
data.includedDocuments.sizeVesels skaitlis (Integer)Iekļautā faila lielums baitos
data.includedDocuments.typeVirkne(String)

Apstrādātā faila tips:

"file" — faila vai ASiC-E konteinera gadījumā

"hash" — gadījumā, ja sesijai tiek pievienots faila īssavilkums un faila nosaukums

data.idVirkne(String)Faila identifikators (documentId)
data.nameVirkne(String)Faila nosaukums
data.sizeVirkne(String)Faila lielums baitos
data.typeVirkne(String)

Apstrādātā faila tips:

"file" — faila vai ASiC-E konteinera gadījumā

"hash" — gadījumā, ja sesijai tiek pievienots faila īssavilkums un faila nosaukums

Piemēri

ASiC-E konteinera piemērs, kurā ir viens fails

{
    "data": {
        "includedDocuments": [
            {
                "id": "3cbc266934776e581bcb406f15bb5ffd",
                "name": "Receipt.doc",
                "size": 22528,
                "type": "file"
            }
        ],
        "id": "23a3abe0a211478ae55554649178568e",
        "name": "Receipt.edoc",
        "size": 14805,
        "type": "file"
           }
}

ASiC-E konteinera piemērs, kad faila īssavilkums un nosaukums ir parakstīts

{
    "data": [
        {
            "includedDocuments": [
                {
                    "id": "dc7a737f0d3dcb288902ed1df4942ee3",
                    "name": "Report.docx",
                    "size": 0,
                    "type": "hash"
                }
            ],
            "id": "592ad9f0c4f9356db0d0d3716a87d5f1",
            "name": "DigestEdoc.edoc",
            "size": 8891,
            "type": "file"
        }
    ]
}

Failu lejupielāde

Darbības joma
Lejupielādējiet failu no failu apstrādes sesijas

Apraksts
Atgriež pieprasīto failu.

Pieprasījums
Pakalpojuma sniedzēja lietojumprogramma, izmantojot TLS, nosūta šādu GET pieprasījumu:

GET /api-storage/v1.0/{sessionId}/{documentId}
ParametrsTipsLietošanaApraksts
sessionIdVirkne (64) (String (64))ObligātsFailu apstrādes sesijas identifikators
documentIdVirkne (64) (String (64)ObligātsDokumenta identifikators, kas saņemts no darbības upload vai list kā parametrs id.

Parameteri

NosaukumsTipsLietošanaApraksts
type=asicevaicājums (query)neobligātsAtgriež .asice, ja parakstītais dokuments ir .edoc

Autorizācija
Pieprasījumā jāiekļauj Authorization galvene ar OAuth Introspekta piekļuves marķieri (Introspect access token), kas iegūts no e-Identitātes platformas, izmantojot pakalpojumu sniedzēja akreditācijas datu piešķiršanas plūsmu (credentials grant flow).

Piemērs

GET /api-storage/v1.0/cd6afb8b7e9fd6aa2b2ef7b981fa98cb59128fdef6c064f74dc9cef529a79d17/cc8bcb560bbfee4c190433ea63c549d1
HTTP/1.1
Authorization: Bearer a477b3a3366768c07e4c458f518711b4b351e8d2c2f0f78a1524e4d3efd00603
Host: signapi-prep.eparaksts.lv

Atbilde
Binārs objekts

ParametrsTipsApraksts
FileBinārie datiPieprasītais fails

Piemērs ar type=asice

GET /api-storage/v1.0/866fc84c73b4cd6ed971aeabd2f1a7240c5f058d30f452a697ffd35798fd1419/c22a148157558425df5d97359b00d1c9?type=asice 
HTTP/1.1
Authorization: Bearer 26e899d3eb763d77b0f12707ae66bda0ffbe3997e43860d412dbec04e344abd7
Host: signapi-prep.eparaksts.lv

Atbilde
Binārs objekts

ParametrsTipsApraksts
FileBinārie datiPieprasītais fails

Failu Dzēst

Darbības joma
Dzēsiet failu no failu apstrādes sesijas.

Apraksts
Norādītais fails tiek izdzēsts no sesijas.

Pieprasījums
Pakalpojuma sniedzēja lietojumprogramma, izmantojot TLS, nosūta šādu GET pieprasījumu:

DELETE /api-storage/v1.0/{sessionId}/{documentId}
ParametrsTipsLietošanaApraksts
sessionIdVirkne (64) (String (64))ObligātsFailu apstrādes sesijas identifikators
documentIdVirkne (64) (String (64))ObligātsDokumenta identifikators, kas saņemts no darbības upload kā parametrs id.

Autorizācija
Pieprasījumā jāiekļauj Authorization galvene ar OAuth Introspekta piekļuves marķieri (Introspect access token), kas iegūts no e-Identitātes platformas, izmantojot pakalpojumu sniedzēja akreditācijas datu piešķiršanas plūsmu (credentials grant flow).

DELETE /api-storage/v1.0/cd6afb8b7e9fd6aa2b2ef7b981fa98cb59128fdef6c064f74dc9cef529a79d17/cc8bcb560bbfee4c190433ea63c549d1
HTTP/1.1
Authorization: Bearer a477b3a3366768c07e4c458f518711b4b351e8d2c2f0f78a1524e4d3efd00603
Host: signapi-prep.eparaksts.lv

Atbilde
JSON objekts

{
    "data": "Document {documentId} deleted"
}
ParametrsTipsApraksts
documentIdVirkne(String)Dokumenta identifikators, kas saņemts no darbības upload kā parametrs id.

Piemērs

{
    "data": "Document cc8bcb560bbfee4c190433ea63c549d1 deleted"
}