Конечная точка /service предоставляет следующие методы:
Аутентификация производится по двухстороннему TLS. Для добавления нового сертификата необходимо
воспользоваться командлетом Add-DssDocumentStoreClaimsProviderTrust.
Предназначен потоковой загрузки документа в хранилище. При загрузке считается хэш документа. Содержимое документа передается в теле запроса с Content-Type: application/octet-stream, а дополнительные параметры – в отдельном HTTP заголовке, закодированном в формат Base64.
Параметр |
Значение |
HTTP-метод |
POST |
Путь |
https://dss.cryptopro.ru/DocumentStore/api/documents?UserId={userId} |
Тело запроса |
Content byte[] - Содержимое документа |
Заголовок CPDSS-POSTDOC |
PostDocumentInput - Параметры загружаемого документа, в формате Base64 URL |
userId |
Идентификатор пользователя |
Возвращаемое значение |
UploadResult - Результат загрузки документа |
Пример
Содержимое документа test.txt
:
ATTRIBUTES:
GlobalID=fe16c231-804d-4681-ac1b-a7612bd55cf8
DocType=PayDocCur
DocTypeVersion=2.0
CreateDate=2019-05-16 14:28:08.58
CreateOrg=348409
FIELDS:
DocInfo.DocAccount=40702840838050000545
DocInfo.DocDate=2019-05-16
DocInfo.DocNumber=104
DocInfo.DocSum=7.00
DocInfo.DocSumCurrency=840
PayDocCur.AdditionalInfo=/FULLPAY/
PayDocCur.AmountTransfer=7.00
PayDocCur.BenefAccountCurISOCode=USD
PayDocCur.BenefBankBIC=CHASUS31HPQ
PayDocCur.BenefBankBICType=SWIFT
PayDocCur.BenefBankCountryCode=840
PayDocCur.BenefBankCountryISOCode=US
PayDocCur.BenefBankName=JPMORGAN CHASE BANK, N.A.
PayDocCur.BenefBankPlace=NEW YORK,NY
PayDocCur.BenefCountryCode=044
PayDocCur.BenefCountryISOCode=BS
PayDocCur.Beneficiar=ASKOT INVESTMENTS LTD
PayDocCur.BeneficiarAccount=40807840955130000002
PayDocCur.BeneficiarAddress=NASSAU, EST HILL STREET, 3944
PayDocCur.BeneficiarCountry=БАГАМЫ
PayDocCur.BeneficiarPlace=NASSAU
PayDocCur.BranchShortName=0038-7981-01835
PayDocCur.ChargeBEN=false
PayDocCur.ChargeOUR=true
PayDocCur.ChargeSHA=false
PayDocCur.ChargesType=OUR
PayDocCur.CurrCodeISO=USD
PayDocCur.CurrCodeISOTransfer=USD
PayDocCur.CurrCodeTransfer=840
PayDocCur.Flag_TargetAssignment=false
PayDocCur.IMediaBankAddress=2, KRASNOGO TEKSTILSHCHIKA STREET
PayDocCur.IMediaBankBIC=SABRRU2P
PayDocCur.IMediaBankBICType=SWIFT
PayDocCur.IMediaBankCountryCode=643
PayDocCur.IMediaBankCountryISOCode=RU
PayDocCur.IMediaBankName=SBERBANK (SEVERO-ZAPADNY HEAD OFFICE)
PayDocCur.IMediaBankPlace=ST. PETERSBURG
PayDocCur.IMediaClirCodeSymbol=RU
PayDocCur.IMediaClirCountryCode=RU
PayDocCur.IMediaClirShortName=Банковский идентификационный код (БИК)
PayDocCur.IsMultiCurr=false
PayDocCur.OfficialsPhone=76502587430
PayDocCur.Option50a=F
PayDocCur.Option56a=A
PayDocCur.Option57a=A
PayDocCur.Payer=JSC 'SRI PI.'
PayDocCur.PayerAddress=LENINA
PayDocCur.PayerBIC=044525225
PayDocCur.PayerBankBIC=SABRRUMM
PayDocCur.PayerBankName=SBERBANK (HEAD OFFICE - ALL BRANCHE
PayDocCur.PayerBankPlace=Москва
PayDocCur.PayerCountryCode=643
PayDocCur.PayerCountryISOCode=RU
PayDocCur.PayerCountryNameRu=РОССИЯ
PayDocCur.PayerFiscalCode=7715784155
PayDocCur.PayerName=АО "НИИ ТП"
PayDocCur.PayerPlace=PERM
PayDocCur.PaymentDirection=0
PayDocCur.PaymentsDetails=FLOWING EXPENSES
PayDocCur.SenderOfficials=niitp_rut niitp_rut niitp_rut
PayDocCur.Urgent=false
Объект PostDocumentInput
в формате JSON:
{
"Filename": "test.txt",
"AdditionalInfo" : "",
"IsTemporary" : "True",
"AdditionalInfo" :
{
"SnippetTemplate" : "<div style=\"border-radius: 7px;\r\n\t\t\tbox-shadow: 0 0 7px rgba(0,0,0,0.5);\r\n\t\t\tpadding: 15px;\r\n\t\t\tmargin: 10px;\r\n\t\t\tline-height: 1.3;\r\n\t\t\tfont-family: Tahoma;\r\n\t\t\t\">\r\n\t<div style=\"font-size: 16px; font-weight: bold; padding-bottom: 5px;\">\r\n\t\t{0:FIELDS.PayDocCur.AdditionalInfo}\r\n\t<\/div>\r\n\t<div style=\"font-size: 12px; color: gray;\">\r\n\t\t{0:FIELDS.PayDocCur.BenefBankCountryISOCode}\r\n\t<\/div>\r\n\t\r\n\t<div style=\"font-size: 16px; font-weight: bold; padding-bottom: 5px; padding-top: 18px;\">\r\n\t\t{0:FIELDS.PayDocCur.ChargeBEN}\r\n\t<\/div>\r\n\t<div style=\"font-size: 12px; color: gray;\">\r\n\t\t\u0412 \u0442\u043E\u043C \u0447\u0438\u0441\u043B\u0435 \u041D\u0414\u0421 15% - 4.60 \u043F\u0440\u0438\u043C\u0435\u0440\u043D\u043E 891 \u0442\u044B\u0441\u044F\u0447 \u0440\u0443\u0431\u043B\u0435\u0439\r\n\t<\/div>\r\n\t\r\n\t<div style=\"font-size: 18px; padding-top: 13px;\">\r\n\t\t<b>{0:FIELDS.PayDocCur.IMediaBankCountryCode}<\/b> \u20BD\r\n\t<\/div>\r\n\t<![CDATA[{\r\n\t\"FIELDS.PayDocCur.AdditionalInfo\": \r\n\t{\r\n\t\t\"\/FULLPAY\/\": \"\u041F\u043E\u043B\u043D\u0430\u044F \u043E\u043F\u043B\u0430\u0442\u0430\",\r\n\t},\r\n\t\"FIELDS.PayDocCur.ChargeBEN\":\r\n\t\t{\r\n\t\t\"false\": \"\u0431\u0435\u0437 \u043E\u043F\u043B\u0430\u0442\u044B BEN\",\r\n\t\t\"true\": \"\u0441 \u043E\u043F\u043B\u0430\u0442\u043E\u0439 BEN\"\r\n\t}\r\n}]]>\r\n<\/div>",
"DocumentTemplate" : ""
}
}
Значение заголовка CPDSS-POSTDOC
(переносы строк добавлены для удобства чтения):
ewogICJGaWxlbmFtZSI6ICJ0ZXN0LnR4dCIsCiAgIkFkZGl0aW9uYWxJbmZvIiA6ICIiLAogICJJc1Rl
bXBvcmFyeSIgOiAiVHJ1ZSIsCiAgIkFkZGl0aW9uYWxJbmZvIiA6IAogIHsKICAgICJTbmlwcGV0VGVt
cGxhdGUiIDogIjxkaXYgc3R5bGU9XCJib3JkZXItcmFkaXVzOiA3cHg7XHJcblx0XHRcdGJveC1zaGFk
b3c6IDAgMCA3cHggcmdiYSgwLDAsMCwwLjUpO1xyXG5cdFx0XHRwYWRkaW5nOiAxNXB4O1xyXG5cdFx0
XHRtYXJnaW46IDEwcHg7XHJcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjM7XHJcblx0XHRcdGZvbnQtZmFt
aWx5OiBUYWhvbWE7XHJcblx0XHRcdFwiPlxyXG5cdDxkaXYgc3R5bGU9XCJmb250LXNpemU6IDE2cHg7
IGZvbnQtd2VpZ2h0OiBib2xkOyBwYWRkaW5nLWJvdHRvbTogNXB4O1wiPlxyXG5cdFx0ezA6RklFTERT
LlBheURvY0N1ci5BZGRpdGlvbmFsSW5mb31cclxuXHQ8XC9kaXY+XHJcblx0PGRpdiBzdHlsZT1cImZv
bnQtc2l6ZTogMTJweDsgY29sb3I6IGdyYXk7XCI+XHJcblx0XHR7MDpGSUVMRFMuUGF5RG9jQ3VyLkJl
bmVmQmFua0NvdW50cnlJU09Db2RlfVxyXG5cdDxcL2Rpdj5cclxuXHRcclxuXHQ8ZGl2IHN0eWxlPVwi
Zm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogYm9sZDsgcGFkZGluZy1ib3R0b206IDVweDsgcGFk
ZGluZy10b3A6IDE4cHg7XCI+XHJcblx0XHR7MDpGSUVMRFMuUGF5RG9jQ3VyLkNoYXJnZUJFTn1cclxu
XHQ8XC9kaXY+XHJcblx0PGRpdiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDsgY29sb3I6IGdyYXk7XCI+
XHJcblx0XHRcdTA0MTIgXHUwNDQyXHUwNDNFXHUwNDNDIFx1MDQ0N1x1MDQzOFx1MDQ0MVx1MDQzQlx1
MDQzNSBcdTA0MURcdTA0MTRcdTA0MjEgMTUlIC0gNC42MCBcdTA0M0ZcdTA0NDBcdTA0MzhcdTA0M0Nc
dTA0MzVcdTA0NDBcdTA0M0RcdTA0M0UgODkxIFx1MDQ0Mlx1MDQ0Qlx1MDQ0MVx1MDQ0Rlx1MDQ0NyBc
dTA0NDBcdTA0NDNcdTA0MzFcdTA0M0JcdTA0MzVcdTA0MzlcclxuXHQ8XC9kaXY+XHJcblx0XHJcblx0
PGRpdiBzdHlsZT1cImZvbnQtc2l6ZTogMThweDsgcGFkZGluZy10b3A6IDEzcHg7XCI+XHJcblx0XHQ8
Yj57MDpGSUVMRFMuUGF5RG9jQ3VyLklNZWRpYUJhbmtDb3VudHJ5Q29kZX08XC9iPiBcdTIwQkRcclxu
XHQ8XC9kaXY+XHJcblx0PCFbQ0RBVEFbe1xyXG5cdFwiRklFTERTLlBheURvY0N1ci5BZGRpdGlvbmFs
SW5mb1wiOiBcclxuXHR7XHJcblx0XHRcIlwvRlVMTFBBWVwvXCI6IFwiXHUwNDFGXHUwNDNFXHUwNDNC
XHUwNDNEXHUwNDMwXHUwNDRGIFx1MDQzRVx1MDQzRlx1MDQzQlx1MDQzMFx1MDQ0Mlx1MDQzMFwiLFxy
XG5cdH0sXHJcblx0XCJGSUVMRFMuUGF5RG9jQ3VyLkNoYXJnZUJFTlwiOlxyXG5cdFx0e1xyXG5cdFx0
XCJmYWxzZVwiOiBcIlx1MDQzMVx1MDQzNVx1MDQzNyBcdTA0M0VcdTA0M0ZcdTA0M0JcdTA0MzBcdTA0
NDJcdTA0NEIgQkVOXCIsXHJcblx0XHRcInRydWVcIjogXCJcdTA0NDEgXHUwNDNFXHUwNDNGXHUwNDNC
XHUwNDMwXHUwNDQyXHUwNDNFXHUwNDM5IEJFTlwiXHJcblx0fVxyXG59XV0+XHJcbjxcL2Rpdj4iLAog
ICAgIkRvY3VtZW50VGVtcGxhdGUiIDogIiIKICB9Cn0=
Пример запроса
POST /documentstore/api/documents?userId=sga HTTP/1.1
Host: teststand.cryptopro.ru
Content-Type: application/octet-stream
CPDSS-POSTDOC: ewogICJGaWxlbmFtZSI6ICJ0ZXN0LnR4dCIsCiAgIkFkZGl0aW9uYWxJbmZvIiA6ICIiLAogICJJc1RlbXBvcmFyeSIgOiAiVHJ1ZSIsCiAgIkFkZGl0aW9uYWxJbmZvIiA6IAogIHsKICAgICJTbmlwcGV0VGVtcGxhdGUiIDogIjxkaXYgc3R5bGU9XCJib3JkZXItcmFkaXVzOiA3cHg7XHJcblx0XHRcdGJveC1zaGFkb3c6IDAgMCA3cHggcmdiYSgwLDAsMCwwLjUpO1xyXG5cdFx0XHRwYWRkaW5nOiAxNXB4O1xyXG5cdFx0XHRtYXJnaW46IDEwcHg7XHJcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjM7XHJcblx0XHRcdGZvbnQtZmFtaWx5OiBUYWhvbWE7XHJcblx0XHRcdFwiPlxyXG5cdDxkaXYgc3R5bGU9XCJmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiBib2xkOyBwYWRkaW5nLWJvdHRvbTogNXB4O1wiPlxyXG5cdFx0ezA6RklFTERTLlBheURvY0N1ci5BZGRpdGlvbmFsSW5mb31cclxuXHQ8XC9kaXY+XHJcblx0PGRpdiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDsgY29sb3I6IGdyYXk7XCI+XHJcblx0XHR7MDpGSUVMRFMuUGF5RG9jQ3VyLkJlbmVmQmFua0NvdW50cnlJU09Db2RlfVxyXG5cdDxcL2Rpdj5cclxuXHRcclxuXHQ8ZGl2IHN0eWxlPVwiZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogYm9sZDsgcGFkZGluZy1ib3R0b206IDVweDsgcGFkZGluZy10b3A6IDE4cHg7XCI+XHJcblx0XHR7MDpGSUVMRFMuUGF5RG9jQ3VyLkNoYXJnZUJFTn1cclxuXHQ8XC9kaXY+XHJcblx0PGRpdiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDsgY29sb3I6IGdyYXk7XCI+XHJcblx0XHRcdTA0MTIgXHUwNDQyXHUwNDNFXHUwNDNDIFx1MDQ0N1x1MDQzOFx1MDQ0MVx1MDQzQlx1MDQzNSBcdTA0MURcdTA0MTRcdTA0MjEgMTUlIC0gNC42MCBcdTA0M0ZcdTA0NDBcdTA0MzhcdTA0M0NcdTA0MzVcdTA0NDBcdTA0M0RcdTA0M0UgODkxIFx1MDQ0Mlx1MDQ0Qlx1MDQ0MVx1MDQ0Rlx1MDQ0NyBcdTA0NDBcdTA0NDNcdTA0MzFcdTA0M0JcdTA0MzVcdTA0MzlcclxuXHQ8XC9kaXY+XHJcblx0XHJcblx0PGRpdiBzdHlsZT1cImZvbnQtc2l6ZTogMThweDsgcGFkZGluZy10b3A6IDEzcHg7XCI+XHJcblx0XHQ8Yj57MDpGSUVMRFMuUGF5RG9jQ3VyLklNZWRpYUJhbmtDb3VudHJ5Q29kZX08XC9iPiBcdTIwQkRcclxuXHQ8XC9kaXY+XHJcblx0PCFbQ0RBVEFbe1xyXG5cdFwiRklFTERTLlBheURvY0N1ci5BZGRpdGlvbmFsSW5mb1wiOiBcclxuXHR7XHJcblx0XHRcIlwvRlVMTFBBWVwvXCI6IFwiXHUwNDFGXHUwNDNFXHUwNDNCXHUwNDNEXHUwNDMwXHUwNDRGIFx1MDQzRVx1MDQzRlx1MDQzQlx1MDQzMFx1MDQ0Mlx1MDQzMFwiLFxyXG5cdH0sXHJcblx0XCJGSUVMRFMuUGF5RG9jQ3VyLkNoYXJnZUJFTlwiOlxyXG5cdFx0e1xyXG5cdFx0XCJmYWxzZVwiOiBcIlx1MDQzMVx1MDQzNVx1MDQzNyBcdTA0M0VcdTA0M0ZcdTA0M0JcdTA0MzBcdTA0NDJcdTA0NEIgQkVOXCIsXHJcblx0XHRcInRydWVcIjogXCJcdTA0NDEgXHUwNDNFXHUwNDNGXHUwNDNCXHUwNDMwXHUwNDQyXHUwNDNFXHUwNDM5IEJFTlwiXHJcblx0fVxyXG59XV0+XHJcbjxcL2Rpdj4iLAogICAgIkRvY3VtZW50VGVtcGxhdGUiIDogIiIKICB9Cn0=
Authorization: Bearer eyJ0eXAiOiJ....c0XtQ25ZEsw
cache-control: no-cache
Пример ответа
HTTP/1.1 200
Content-Type:"application/json; charset=utf-8"
Server:"Microsoft-IIS/10.0"
Date:"Tue, 27 Aug 2019 10:55:30 GMT"
Content-Length:"53"
{"DocumentId":"1671c6bb-7c16-47e2-9c26-7a3c9e388f05"}
Типовые ошибки
HTTP код |
Код ошибки |
Описание |
400 |
invalid_object_state |
Превышена квота для пользователя |
400 |
invalid_request |
Не найден связанный документ для загружаемого файла; Передан пустой файл. |
500 |
- |
Внутренняя ошибка сервера |
Параметр |
Значение |
HTTP-метод |
GET |
Путь |
https://dss.cryptopro.ru/DocumentStore/api/service/documents/{id}/info |
Параметры |
id (обязательный), тип string - ID файла в хранилище документов |
Возвращаемое значение |
DocumentInfo - Информация о документе |
Пример запроса
GET /documentstore/api/service/documents/1671c6bb-7c16-47e2-9c26-7a3c9e388f05/info HTTP/1.1
Host: teststand.cryptopro.ru
Authorization: Bearer eyJ0eXAiOiJ....c0XtQ25ZEsw
Accept: */*
Cache-Control: no-cache
Host: teststand.cryptopro.ru
Accept-Encoding: gzip, deflate
Connection: keep-alive
cache-control: no-cache
Пример ответа
HTTP/1.1 200
status: 200
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/10.0
Date: Tue, 27 Aug 2019 11:00:55 GMT
Content-Length: 1542
{
"Id": "1671c6bb-7c16-47e2-9c26-7a3c9e388f05",
"UserId": "sga",
"Name": "test.txt",
"FileType": "txt",
"UploadTime": "2019-08-27T10:55:29.617Z",
"LastAccessTime": "2019-08-27T11:00:08.4546893Z",
"IsTemporary": true,
"FileSize": 2367,
"PageCount": 0,
"Hash": "693BE8DF00312EEE89CF0E5E608288B2C636DFF9DA965145226F8FE16DFB3689",
"AdditionalInfo": {
"DocumentTemplate": "",
"SnippetTemplate": "<div style=\"border-radius: 7px;\r\n\t\t\tbox-shadow: 0 0 7px rgba(0,0,0,0.5);\r\n\t\t\tpadding: 15px;\r\n\t\t\tmargin: 10px;\r\n\t\t\tline-height: 1.3;\r\n\t\t\tfont-family: Tahoma;\r\n\t\t\t\">\r\n\t<div style=\"font-size: 16px; font-weight: bold; padding-bottom: 5px;\">\r\n\t\t{0:FIELDS.PayDocCur.AdditionalInfo}\r\n\t</div>\r\n\t<div style=\"font-size: 12px; color: gray;\">\r\n\t\t{0:FIELDS.PayDocCur.BenefBankCountryISOCode}\r\n\t</div>\r\n\t\r\n\t<div style=\"font-size: 16px; font-weight: bold; padding-bottom: 5px; padding-top: 18px;\">\r\n\t\t{0:FIELDS.PayDocCur.ChargeBEN}\r\n\t</div>\r\n\t<div style=\"font-size: 12px; color: gray;\">\r\n\t\tВ том числе НДС 15% - 4.60 примерно 891 тысяч рублей\r\n\t</div>\r\n\t\r\n\t<div style=\"font-size: 18px; padding-top: 13px;\">\r\n\t\t<b>{0:FIELDS.PayDocCur.IMediaBankCountryCode}</b> ₽\r\n\t</div>\r\n\t<![CDATA[{\r\n\t\"FIELDS.PayDocCur.AdditionalInfo\": \r\n\t{\r\n\t\t\"/FULLPAY/\": \"Полная оплата\",\r\n\t},\r\n\t\"FIELDS.PayDocCur.ChargeBEN\":\r\n\t\t{\r\n\t\t\"false\": \"без оплаты BEN\",\r\n\t\t\"true\": \"с оплатой BEN\"\r\n\t}\r\n}]]>\r\n</div>"
}
}
Типовые ошибки
HTTP код |
Код ошибки |
Описание |
404 |
- |
Документ не найден |
500 |
- |
Внутренняя ошибка сервера |
Пример запроса
POST /documentstore/api/service/documents/info HTTP/1.1
Host: teststand.cryptopro.ru
Authorization: Bearer eyJ0eXAiOiJ....c0XtQ25ZEsw
Accept: */*
Cache-Control: no-cache
Host: teststand.cryptopro.ru
Accept-Encoding: gzip, deflate
Connection: keep-alive
cache-control: no-cache
{
"DocumentIds":
[
3f13c381-0ab3-4751-b514-0f59361ab373,
123
]
}
Пример ответа
HTTP/1.1 200
status: 200
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/10.0
Date: Tue, 27 Aug 2019 11:00:55 GMT
Content-Length: 1442
{
"3f13c381-0ab3-4751-b514-0f59361ab373": {
"Found": true,
"DocumentInfo": {
"Id": "3f13c381-0ab3-4751-b514-0f59361ab373",
"UserId": "f21bee19-cb45-4d8a-baad-ec9bb84b80eb",
"Name": "file.txt",
"FileType": "txt",
"UploadTime": 1634200895,
"LastAccessTime": 1634200895,
"IsTemporary": false,
"FileSize": 2367,
"Hash": "",
"HashAlgorithm": "none",
"AdditionalInfo": {
"SmallFile": "True",
"SnippetTemplate": "<root>\n<table style=\"width:100%\">\n<tr>\n<th>№п/п</th>\n<th>Фамидия, имя и отчество</th>\n<th>Номер счёта</th>\n<th>Сумма</th>\n<th>Результат зачисления</th>\n<th>Причина зачисления</th>\n</tr>\n{0:TableRow_EmpSalary_0}\n</table>\n<table style=\"width:100%\">\n<tr>\n<th>values</th>\n</tr>\n{0:TableRow_EtcTable_1}\n</table>\n<![CDATA[{\n\t\"TableRow_EmpSalary\": \n\t{\n\t\t\"0\": \"<tr> <th></th> <th>{0:TABLES.EmpSalary.#i.LastName} {0:TABLES.EmpSalary.#i.FirstName} {0:TABLES.EmpSalary.#i.MiddleName}</th> <th>{0:TABLES.EmpSalary.#i.Account}</th> <th>{0:TABLES.EmpSalary.#i.SalarySum} {0:TABLES.EmpSalary.#i.SalarySumCurrency}</th> <th></th> <th>{0:FIELDS.LetterOfReg.AdmissionValueDesc}</th> </tr>\",\n\t},\n\t\"TableRow_EtcTable\": \n\t{\n\t\t\"1\": \"<th>{0:TABLES.EtcTable.#i.value}</tr>\",\n\t},\n\t\"TABLES.EtcTable.#i.value\": \n\t{\n\t\t\"data123\": \"Отформатированные данные в таблице из CDATA\",\n\t},\n}]]>\n</root>"
}
}
},
"123": {
"Found": false
}
}
Типовые ошибки
HTTP код |
Код ошибки |
Описание |
400 |
- |
Некорректный запрос |
500 |
- |
Внутренняя ошибка сервера |
Предназначен для получения содержимого загруженных документов через multipart.
Пример запроса
POST /documentstore/api/documents/content/download HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJ....c0XtQ25ZEsw
Accept: */*
Cache-Control: no-cache
Host: teststand.cryptopro.ru
Accept-Encoding: gzip, deflate
Connection: keep-alive
{"DocumentIds":["9f8b1c78-3427-4bea-a078-491353d6b353", "02fc4840-f229-48a4-b03c-d1d278744ddf"]}
Пример ответа
HTTP/1.1 200
status: 200
Cache-Control: private
Content-Length: 96
multipart/byteranges; boundary="ba15f993-04dc-44f9-87cb-faef08de52d7"
Server: Microsoft-IIS/10.0
X-AspNet-Version: 4.0.30319
Date: Tue, 27 Aug 2019 11:02:37 GMT
--ba15f993-04dc-44f9-87cb-faef08de52d7
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=file123.txt; name=9f8b1c78-3427-4bea-a078-491353d6b353
123
--ba15f993-04dc-44f9-87cb-faef08de52d7
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=file456.txt; name=02fc4840-f229-48a4-b03c-d1d278744ddf
456
--ba15f993-04dc-44f9-87cb-faef08de52d7--
Типовые ошибки
HTTP код |
Код ошибки |
Описание |
200 |
object_not_found |
Документ не найден (объект ошибки в теле одной из частей запроса) |
500 |
- |
Внутренняя ошибка сервера |
Пример ошибки object_not_found
Файл 99d8aeca-68a0-4985-bfc6-4891da69d1f8
найден,
6c67c768-3848-454a-b443-b039cdf357a2q
- не найден.
--c2d29a50-158a-4189-b992-e037bcc098e5
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=file.pdf; name=99d8aeca-68a0-4985-bfc6-4891da69d1f8
123
--c2d29a50-158a-4189-b992-e037bcc098e5
Content-Type: application/json
Content-Disposition: attachment; name=6c67c768-3848-454a-b443-b039cdf357a2q
{"Error":"object_not_found","ErrorDescription":"Документ не найден"}
--c2d29a50-158a-4189-b992-e037bcc098e5--
Параметр |
Значение |
HTTP-метод |
GET |
Путь |
https://dss.cryptopro.ru/DocumentStore/api/service/user/{userId}/docinfo/all |
Параметры |
userId (обязательный), тип string - ID пользователя DSS |
Возвращаемое значение |
List<DocumentInfo> - Информация о документе |
Пример запроса
GET /documentstore/api/documents/user/f21bee19-cb45-4d8a-baad-ec9bb84b80eb/docinfo/all HTTP/1.1
Host: teststand.cryptopro.ru
Authorization: Bearer eyJ0eXAiOiJ....c0XtQ25ZEsw
Accept: */*
Cache-Control: no-cache
Host: teststand.cryptopro.ru
Accept-Encoding: gzip, deflate
Connection: keep-alive
cache-control: no-cache
Пример ответа
HTTP/1.1 200
status: 200
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/10.0
Date: Tue, 27 Aug 2019 11:00:55 GMT
Content-Length: 2703
[{"Id":"9e43b1e4-6711-47cc-8663-df3f704c4f25","UserId":"f21bee19-cb45-4d8a-baad-ec9bb84b80eb","Name":"file.pdf","FileType":"pdf","UploadTime":1625574616,"LastAccessTime":1625574616,"IsTemporary":false,"FileSize":74574,"Hash":"","HashAlgorithm":"none","AdditionalInfo":{"SnippetTemplate":"<root>\n<table style=\"width:100%\">\n<tr>\n<th>№п/п</th>\n<th>Фамидия, имя и отчество</th>\n<th>Номер счёта</th>\n<th>Сумма</th>\n<th>Результат зачисления</th>\n<th>Причина зачисления</th>\n</tr>\n{0:TableRow_EmpSalary_0}\n</table>\n<table style=\"width:100%\">\n<tr>\n<th>values</th>\n</tr>\n{0:TableRow_EtcTable_1}\n</table>\n<![CDATA[{\n\t\"TableRow_EmpSalary\": \n\t{\n\t\t\"0\": \"<tr> <th></th> <th>{0:TABLES.EmpSalary.#i.LastName} {0:TABLES.EmpSalary.#i.FirstName} {0:TABLES.EmpSalary.#i.MiddleName}</th> <th>{0:TABLES.EmpSalary.#i.Account}</th> <th>{0:TABLES.EmpSalary.#i.SalarySum} {0:TABLES.EmpSalary.#i.SalarySumCurrency}</th> <th></th> <th>{0:FIELDS.LetterOfReg.AdmissionValueDesc}</th> </tr>\",\n\t},\n\t\"TableRow_EtcTable\": \n\t{\n\t\t\"1\": \"<th>{0:TABLES.EtcTable.#i.value}</tr>\",\n\t},\n\t\"TABLES.EtcTable.#i.value\": \n\t{\n\t\t\"data123\": \"Отформатированные данные в таблице из CDATA\",\n\t},\n}]]>\n</root>","SmallFile":"True"}},{"Id":"dc0ea0bd-c8c0-48b8-b346-b492c47b40da","UserId":"f21bee19-cb45-4d8a-baad-ec9bb84b80eb","Name":"file.pdf","FileType":"pdf","UploadTime":1625574185,"LastAccessTime":1625574185,"IsTemporary":false,"FileSize":74574,"Hash":"","HashAlgorithm":"none","AdditionalInfo":{"SnippetTemplate":"<root>\n<table style=\"width:100%\">\n<tr>\n<th>№п/п</th>\n<th>Фамидия, имя и отчество</th>\n<th>Номер счёта</th>\n<th>Сумма</th>\n<th>Результат зачисления</th>\n<th>Причина зачисления</th>\n</tr>\n{0:TableRow_EmpSalary_0}\n</table>\n<table style=\"width:100%\">\n<tr>\n<th>values</th>\n</tr>\n{0:TableRow_EtcTable_1}\n</table>\n<![CDATA[{\n\t\"TableRow_EmpSalary\": \n\t{\n\t\t\"0\": \"<tr> <th></th> <th>{0:TABLES.EmpSalary.#i.LastName} {0:TABLES.EmpSalary.#i.FirstName} {0:TABLES.EmpSalary.#i.MiddleName}</th> <th>{0:TABLES.EmpSalary.#i.Account}</th> <th>{0:TABLES.EmpSalary.#i.SalarySum} {0:TABLES.EmpSalary.#i.SalarySumCurrency}</th> <th></th> <th>{0:FIELDS.LetterOfReg.AdmissionValueDesc}</th> </tr>\",\n\t},\n\t\"TableRow_EtcTable\": \n\t{\n\t\t\"1\": \"<th>{0:TABLES.EtcTable.#i.value}</tr>\",\n\t},\n\t\"TABLES.EtcTable.#i.value\": \n\t{\n\t\t\"data123\": \"Отформатированные данные в таблице из CDATA\",\n\t},\n}]]>\n</root>","SmallFile":"True"}}]
Типовые ошибки
HTTP код |
Код ошибки |
Описание |
404 |
- |
Ошибка при получении документов пользователя |
500 |
- |
Внутренняя ошибка сервера |
Параметр |
Значение |
HTTP-метод |
GET |
Путь |
https://dss.cryptopro.ru/DocumentStore/api/documents/user/userId/docinfo?documentId={documentId}&count={count}&direction={direction} |
Параметры |
userId (обязательный), тип string - ID пользователя DSS |
Параметры |
documentId (обязательный), тип string - ID файла в хранилище документов, или 0 , для получения первых или последних документов пользователя |
Параметры |
count (обязательный), тип int - число запрашиваемых документов |
Параметры |
direction (обязательный), тип string - направление чтения. Приминмает значения - backward и forward . |
Возвращаемое значение |
List<DocumentInfo> - Информация о документе |
Пример запроса
GET /documentstore/api/documents/user/f21bee19-cb45-4d8a-baad-ec9bb84b80eb/docinfo?documentId=e07a39dc-ea12-4426-9274-c2b4fcc60113&count=2&direction=forward HTTP/1.1
Host: teststand.cryptopro.ru
Authorization: Bearer eyJ0eXAiOiJ....c0XtQ25ZEsw
Accept: */*
Cache-Control: no-cache
Host: teststand.cryptopro.ru
Accept-Encoding: gzip, deflate
Connection: keep-alive
cache-control: no-cache
Пример ответа
HTTP/1.1 200
status: 200
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/10.0
Date: Tue, 27 Aug 2019 11:00:55 GMT
Content-Length: 2703
[{"Id":"34266410-4969-4ba7-a8ae-a17fe06c1ab9","UserId":"f21bee19-cb45-4d8a-baad-ec9bb84b80eb","Name":"file.pdf","FileType":"pdf","UploadTime":1625732912,"LastAccessTime":1625732912,"IsTemporary":false,"FileSize":74574,"Hash":"","HashAlgorithm":"none","AdditionalInfo":{"SnippetTemplate":"<root>\n<table style=\"width:100%\">\n<tr>\n<th>№п/п</th>\n<th>Фамидия, имя и отчество</th>\n<th>Номер счёта</th>\n<th>Сумма</th>\n<th>Результат зачисления</th>\n<th>Причина зачисления</th>\n</tr>\n{0:TableRow_EmpSalary_0}\n</table>\n<table style=\"width:100%\">\n<tr>\n<th>values</th>\n</tr>\n{0:TableRow_EtcTable_1}\n</table>\n<![CDATA[{\n\t\"TableRow_EmpSalary\": \n\t{\n\t\t\"0\": \"<tr> <th></th> <th>{0:TABLES.EmpSalary.#i.LastName} {0:TABLES.EmpSalary.#i.FirstName} {0:TABLES.EmpSalary.#i.MiddleName}</th> <th>{0:TABLES.EmpSalary.#i.Account}</th> <th>{0:TABLES.EmpSalary.#i.SalarySum} {0:TABLES.EmpSalary.#i.SalarySumCurrency}</th> <th></th> <th>{0:FIELDS.LetterOfReg.AdmissionValueDesc}</th> </tr>\",\n\t},\n\t\"TableRow_EtcTable\": \n\t{\n\t\t\"1\": \"<th>{0:TABLES.EtcTable.#i.value}</tr>\",\n\t},\n\t\"TABLES.EtcTable.#i.value\": \n\t{\n\t\t\"data123\": \"Отформатированные данные в таблице из CDATA\",\n\t},\n}]]>\n</root>","SmallFile":"True"}},{"Id":"4e654f3b-6071-42ca-b3e9-8a72fe5bf706","UserId":"f21bee19-cb45-4d8a-baad-ec9bb84b80eb","Name":"file.pdf","FileType":"pdf","UploadTime":1625732911,"LastAccessTime":1625732911,"IsTemporary":false,"FileSize":74574,"Hash":"","HashAlgorithm":"none","AdditionalInfo":{"SnippetTemplate":"<root>\n<table style=\"width:100%\">\n<tr>\n<th>№п/п</th>\n<th>Фамидия, имя и отчество</th>\n<th>Номер счёта</th>\n<th>Сумма</th>\n<th>Результат зачисления</th>\n<th>Причина зачисления</th>\n</tr>\n{0:TableRow_EmpSalary_0}\n</table>\n<table style=\"width:100%\">\n<tr>\n<th>values</th>\n</tr>\n{0:TableRow_EtcTable_1}\n</table>\n<![CDATA[{\n\t\"TableRow_EmpSalary\": \n\t{\n\t\t\"0\": \"<tr> <th></th> <th>{0:TABLES.EmpSalary.#i.LastName} {0:TABLES.EmpSalary.#i.FirstName} {0:TABLES.EmpSalary.#i.MiddleName}</th> <th>{0:TABLES.EmpSalary.#i.Account}</th> <th>{0:TABLES.EmpSalary.#i.SalarySum} {0:TABLES.EmpSalary.#i.SalarySumCurrency}</th> <th></th> <th>{0:FIELDS.LetterOfReg.AdmissionValueDesc}</th> </tr>\",\n\t},\n\t\"TableRow_EtcTable\": \n\t{\n\t\t\"1\": \"<th>{0:TABLES.EtcTable.#i.value}</tr>\",\n\t},\n\t\"TABLES.EtcTable.#i.value\": \n\t{\n\t\t\"data123\": \"Отформатированные данные в таблице из CDATA\",\n\t},\n}]]>\n</root>","SmallFile":"True"}}]
Типовые ошибки
HTTP код |
Код ошибки |
Описание |
400 |
- |
Не удалось распознать запрос |
404 |
- |
Ошибка при получении документов пользователя |
500 |
- |
Внутренняя ошибка сервера |
Предназначен для получения содержимого загруженного документа.
Параметр |
Значение |
HTTP-метод |
GET |
Путь |
https://dss.cryptopro.ru/DocumentStore/api/service/documents/{id}/content?offset={offset} |
Параметры |
id (обязательный), тип string - ID файла в хранилище документов |
Параметры |
offset (не обязательный), тип int - смещение с начала содержимого документа в байтах |
Возвращаемое значение |
тип Stream - Содержимое документа |
Пример запроса
GET /documentstore/api/service/documents/1671c6bb-7c16-47e2-9c26-7a3c9e388f05/content HTTP/1.1
Accept: */*
Cache-Control: no-cache
Host: teststand.cryptopro.ru
Accept-Encoding: gzip, deflate
Connection: keep-alive
Пример ответа
HTTP/1.1 200
status: 200
Cache-Control: private
Content-Length: 2367
Content-Type: application/octet-stream
Server: Microsoft-IIS/10.0
X-AspNet-Version: 4.0.30319
Date: Tue, 27 Aug 2019 11:02:37 GMT
documentData
Типовые ошибки
HTTP код |
Код ошибки |
Описание |
404 |
- |
Документ не найден |
500 |
- |
Внутренняя ошибка сервера |
Предназначен для получения информации о доступных способах конвертации для документа.
Параметр |
Значение |
HTTP-метод |
GET |
Путь |
https://dss.cryptopro.ru/DocumentStore/api/service/documents/{id}/supported_convertations |
Параметры |
id (обязательный), тип string - ID файла в хранилище документов. |
Возвращаемое значение |
тип List<DocumentConvertations> - информация о доступных способах конвертации для документа. |
Пример запроса
GET /documentstore/api/service/documents/1671c6bb-7c16-47e2-9c26-7a3c9e388f05/supported_convertations HTTP/1.1
Accept: */*
Cache-Control: no-cache
Host: teststand.cryptopro.ru
Accept-Encoding: gzip, deflate
Connection: keep-alive
Пример ответа
HTTP/1.1 200
status: 200
Server: Microsoft-IIS/10.0
Date: Tue, 27 Aug 2019 11:14:28 GMT
Content-Length: 202
[{"ConvertationType":"Snippet","IsConvertationTypeSupported":"True"},{"ConvertationType":"Document","IsConvertationTypeSupported":"True"},{"ConvertationType":"Raw","IsConvertationTypeSupported":"True"}]
Предназначен для получения сконвертированного документа для отображения пользователю в веб-интерфейсе.
Параметр |
Значение |
HTTP-метод |
GET |
Путь |
https://dss.cryptopro.ru/DocumentStore/api/service/documents/{id}/preview?type={format} |
Параметры |
id (обязательный), тип string - ID файла в хранилище документов. |
Параметры |
format (обязательный), тип string - Допустимые значяения: Snippet, Document. |
Возвращаемое значение |
тип Stream - Содержимое сконвертированного документа. |
Возвращаемое значение, заголовок ContentHash |
тип string - hex строка, содержащая хэш значение от содержимого ответа. |
Пример запроса
GET /documentstore/api/service/documents/1671c6bb-7c16-47e2-9c26-7a3c9e388f05/preview?format=Snippet HTTP/1.1
Accept: */*
Cache-Control: no-cache
Host: teststand.cryptopro.ru
Accept-Encoding: gzip, deflate
Connection: keep-alive
Пример ответа
HTTP/1.1 200
status: 200
Cache-Control: private
Content-Length: 693
Content-Type: application/octet-stream
Server: Microsoft-IIS/10.0
ContentHash: F1EE8A63868F1DFB58A147C351EFB6A9BD8E5A8F3847B9133AF53B68C431A08C
X-AspNet-Version: 4.0.30319
Date: Tue, 27 Aug 2019 11:13:26 GMT
<div style="border-radius: 7px; box-shadow: 0 0 7px rgba(0,0,0,0.5); padding: 15px; margin: 10px; line-height: 1.3; font-family: Tahoma; ">
<div style="font-size: 16px; font-weight: bold; padding-bottom: 5px;">
Полная оплата
</div>
<div style="font-size: 12px; color: gray;">
US
</div>
<div style="font-size: 16px; font-weight: bold; padding-bottom: 5px; padding-top: 18px;">
без оплаты BEN
</div>
<div style="font-size: 12px; color: gray;">
В том числе НДС 15% - 4.60 примерно 891 тысяч рублей
</div>
<div style="font-size: 18px; padding-top: 13px;">
<b>643</b> ₽
</div>
</div>
Типовые ошибки
HTTP код |
Код ошибки |
Описание |
400 |
invalid_object_data |
Ошибка при конвертации документа; Не найден ожидаемый шаблон. |
400 |
invalid_request |
Неизвестный формат. |
400 |
forbidden_object_operation |
Невозможно использовать переданный шаблон, так как использование внешних шаблонов запрещено. |
404 |
- |
Документ не найден |
500 |
- |
Внутренняя ошибка сервера |
Предназначен для получения сконвертированного документа для отображения пользователю в веб-интерфейсе.
Если в пути запроса передан номер страницы, то возвращаем указанную страницу сконвертированного документа.
Если документ не был сконвертирован - запрос запускает процедуру конвертации.
Если конвертация документа не успевает завершиться к моменту таймаута ответа - возвращает в ответе код 202 без тела.
Параметр |
Значение |
HTTP-метод |
GET |
Путь |
https://dss.cryptopro.ru/DocumentStore/api/service/documents/{id}/converted_content/{page_id}?range={range} |
Параметры |
id (обязательный), тип string - ID файла в хранилище документов |
Параметры |
page_id (не обязательный), тип string - Номер страницы сконвертированного документа. |
Параметры |
range (не обязательный), тип string - Число страниц для выборки. |
Возвращаемое значение |
тип Stream - Содержимое сконвертированного документа |
Возвращаемое значение, заголовок TotalPageCount |
тип int - общее число страниц в документе, если в запросе был указан параметр page_id |
Возвращаемое значение, заголовок ContentPageCount |
тип int - число страниц в возврщаемом документе, если в запросе был указан параметр page_id |
Пример запроса
GET /documentstore/api/documents/1671c6bb-7c16-47e2-9c26-7a3c9e388f05/converted_content HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJ....c0XtQ25ZEsw
Accept: */*
Cache-Control: no-cache
Host: teststand.cryptopro.ru
Accept-Encoding: gzip, deflate
Connection: keep-alive
Пример ответа
HTTP/1.1 200
status: 200
Cache-Control: private
Content-Length: 42737
Content-Type: application/octet-stream
Server: Microsoft-IIS/10.0
X-AspNet-Version: 4.0.30319
Date: Tue, 27 Aug 2019 11:08:11 GMT
%PDF-1.4 ... %%EOF
Типовые ошибки
HTTP код |
Код ошибки |
Описание |
400 |
invalid_object_data |
Ошибка при конвертации документа |
404 |
- |
Документ не найден |
500 |
- |
Внутренняя ошибка сервера |
Предназначен для удаления документа и связанных с ним сконвертированных документов из Хранилища документов.
Параметр |
Значение |
HTTP-метод |
DELETE |
Путь |
https://dss.cryptopro.ru/DocumentStore/api/service/documents/{id} |
Параметры |
id (обязательный), тип string - ID файла в хранилище документов |
Пример запроса
DELETE /documentstore/api/service/documents/1671c6bb-7c16-47e2-9c26-7a3c9e388f05 HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJ....c0XtQ25ZEsw
Accept: */*
Cache-Control: no-cache
Host: teststand.cryptopro.ru
Accept-Encoding: gzip, deflate
Content-Length:
Connection: keep-alive
Пример ответа
HTTP/1.1 200
status: 200
Server: Microsoft-IIS/10.0
Date: Tue, 27 Aug 2019 11:14:28 GMT
Content-Length: 0
Типовые ошибки
HTTP код |
Код ошибки |
Описание |
404 |
- |
Документ не найден |
500 |
- |
Внутренняя ошибка сервера |