Конечная точка Operations
Управляет операциями, требующими подтверждения пользователем.
Получение списка операций
Параметр | Значение |
---|---|
HTTP-метод | GET |
Путь | /v1/operations?type=Type &opid=OpId |
Аутентификация | Аутентификация на ключе Kauth . |
Параметры | Type - тип операции, OpId - идентификатор операции, ClientId - идентификатор прикладной системы. |
Возвращаемое значение | Объект OperationsInfo, список операций для подтверждения. |
Примечание
Поля Type
, OpId
и ClientId
в запросе могут быть не заданы, в этом случае сервис
вернёт перечень всех операций, требующих подтверждения, для данного пользователя.
Параметр OpId
имеет приоритет, если он задан, то будет возвращена операция
с указанным в его значении идентификатором независимо от значения параметра
Type или ClientId.
Запрос
GET /mydss/v1/operations?type=SecondaryAuthSignDocs HTTP/1.1
Host: teststand.cryptopro.ru
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Fri, 17 May 2019 04:53:09 GMT
{
"operations": [
{
"description": {
"type": "SecondaryAuthSignDocs",
"caption": "Подпись документов. Тип подписи: Пример для Сбербанка. Сертификат: Тестовый пользователь simdss."
},
"expiresAt": 1563171222,
"documentCount": 1,
"transactionId": "708a4546-5045-468e-89e9-6265f7363739",
"parameters": null,
"documents": [
{
"id": "78544ff2-5a7b-4947-8025-6a3490d3253e",
"documentInfo": "test.txt",
"documentHash": "A988A71076FCC2809988073D69C7785E71C464491D426CAEFCC980823E485236",
"snippet": "<div><label>Название:</label><b>test.doc</b></div>",
"snippetHash": "693BE8DF00312EEE89CF0E5E608288B2C636DFF9DA965145226F8FE16DFB3689",
"fileSize": 2367,
"pageCount": 1
}
]
}
]
}
Получение сведений об операциях
Примечание
Метод доступен в версии 1.1 конечной точки /operations.
Для версий DSS старше 2.0.3390 получение версий поддерживаемого сервисом API доступно через запрос OPTION
на адрес https://
api-supported-versions
будет содержаться список поддерживаемых версий.
Версии 2.0.3390 и более ранние на запрос OPTION на адрес https://
Параметр | Значение |
---|---|
HTTP-метод | GET |
Путь | /v1.1/operations/info?interval=Interval &opid=OpId |
Аутентификация | Аутентификация на ключе Kauth . |
Параметры | interval - интервал времени в секундах., OpId - идентификатор операции. |
Возвращаемое значение | Объект OperationsInfo, список операций для подтверждения. |
Примечание
Поля Interval
и OpId
в запросе могут быть не заданы, в этом случае сервис
вернёт перечень всех операций данного пользователя.
Параметр OpId
имеет приоритет, если он задан, то будет возвращена операция
с указанным в его значении идентификатором независимо от значения параметра
Type
.
Параметр Interval
определяет интервал времени (в секундах) для поиска операций.
Если параметр указан в запросе, то сервис вернёт все операции созданные после (Now - interval).
Ответ сервиса будет содержать список найденных операций пользователя. Если операции не были найдены, вернётся пустой список.
Каждый элемент списка содержит поле state
, содержащий статус операции.
- Completed - операция была завершена.
- Expired - операция истекла.
- Error - возникла ошибка при обработке операции.
- Declined - операция отменена пользователем.
- Cancelled - операция отменена Прикладной системой.
Так же возможны промежуточные статусы:
- Challenged - для операции запрошено подтверждение
- Created - операция создана, подтверждение ещё не было запрошено.
- Running, Processing операция выполняется.
Статус Completed
означает, что операция была подтверждена и обработана.
Результат обработки каждого отдельного действия (документа) actions
необходимо смотреть отдельно.
Запрос
GET /mydss/v1/operations/info HTTP/1.1
Host: hostname
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"operations": [
{
"id": "ec5df8d5-9190-4f2d-a910-1e4a77083562",
"type": "SignDocument",
"description": "Описание операции (json)",
"state": "Completed",
"createdAt": 1603996634,
"confirmedAt": 1603996684,
"completedAt": 1603996685,
"externalId": null,
"actions": [
{
"id": "9772a9b6-b621-4f05-91b6-919a0c4da3ac",
"documentId": "20097b0d-310d-452e-a9c4-653b13c6421f",
"originalDocumentId": null,
"status": "Approved",
"state": "Error",
"resultValue": null,
"error": "InternalError",
"errorDescription": "Описание ошибки..."
},
{
"id": "bf68d7f4-349b-45dc-91e0-2c0bfd2d745c",
"documentId": "22b41432-ca6a-46a8-a33c-1b7b9627ad6e",
"originalDocumentId": null,
"status": "Approved",
"state": "Executed",
"resultValue": "0f2942fb-05e2-41e3-883d-6db42ffaa2c0",
"error": null,
"errorDescription": null
}
]
}
]
}
Подтвердить/отклонить операцию
Отправка запроса на подтверждения выполнения операции.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/operations/confirm |
Аутентификация | Аутентификация на ключе Kauth . |
Параметры | Объект ApproveRequest, параметры подтверждения операции. |
Возвращаемое значение | Нет возвращаемого значения |
Примечание
В поле confirmedDocuments
структуры approvedOperation
необходимо передать список подтверждённых документов.
Если требуется подтвердить операцию, в которой не участвуют документы, то необходимо передать пустой список.
В остальных случаях это поле не заполняется.
В поле declinedDocuments
структуры approvedOperation
необходимо передать список отклонённых документов.
Если требуется отклонить операцию, в которой не участвуют документы, то необходимо передать пустой список.
В остальных случаях это поле не заполняется.
Поля confirmedDocuments
и declinedDocuments
в структуре approvedOperation
в запросе не могут быть оба пустыми или оба не заполнены (иметь значения null).
Запрос
POST /mydss/v1/operations/confirm HTTP/1.1
Host: teststand.cryptopro.ru
Content-Type: application/json
Content-Length: 327
{
"approvedOperation": "{ \"id\": \"708a4546-5045-468e-89e9-6265f7363739\", \"timeStamp\": 12345, \"confirmedDocuments\": [ { \"id\": \"78544ff2-5a7b-4947-8025-6a3490d3253e\", \"documentHash\": \"A988A71076FCC2809988073D69C7785E71C464491D426CAEFCC980823E485236\", \"snippetHash\": \"56987632345678987654345678987654C636DFF9DA965145226F8FE16DFB3689\" }, { \"id\": \"5c37b048-bec1-47f9-b970-2639e1bcd472\", \"documentHash\": \"693BE8DF00312EEE89CF0E5E608288B2C636DFF9DA965145226F8FE16DFB3689\", \"snippetHash\": \"65298341094735617497501808ABCD79076F6D687D564CAEFCC980823E485236\" } ] }",
"hmac": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
}
Ответ
HTTP/1.1 200 OK
Подпись документов
Отправка запроса на выполнение операции подписи на ключах хранимых в DSS.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/operations/sign |
Аутентификация | Аутентификация на ключе Kauth . |
Параметры | Объект ApprovedOperation, включающий идентификаторы подписываемых документов и параметры подписи, типа signTemplateId , certId и pinCode . |
Возвращаемое значение | Объект SignatureResult, результат подписи документов. |
Запрос
POST /mydss/v1/operations/sign HTTP/1.1
Host: teststand.cryptopro.ru
Content-Type: application/json
Content-Length: 239
{
"approvedOperation": {
"confirmedDocuments": [
{
"id": "78544ff2-5a7b-4947-8025-6a3490d3253e",
"documentHash": "A988A71076FCC2809988073D69C7785E71C464491D426CAEFCC980823E485236",
"snippetHash": "693BE8DF00312EEE89CF0E5E608288B2C636DFF9DA965145226F8FE16DFB3689"
}
],
"parameters": {
"signTemplateId": "1",
"certId": "8350",
"pinCode": ""
}
}
}
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Fri, 17 May 2019 04:53:09 GMT
{
"results": [
{
"refId": "5b581cee-7ce0-4da3-b144-1be44724155c",
"originalRefId": "617f77c7-19c5-4353-a3c0-cf06e2da19da",
"status": "Completed",
"error": null,
"errorDescription": null
}
]
}
Подпись документов на клиентских ключах
Отправка запроса на выполнение операции подписи на ключах, хранимых в мобильном приложении.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/operations/sign/ex |
Аутентификация | Аутентификация на ключе Kauth . |
Параметры | Объект ApprovedOperation, включающий идентификаторы подписываемых документов и параметры подписи, типа signTemplateId , certId и pinCode . |
Возвращаемое значение | Объект Operation, операция для подтверждения. |
Запрос
POST /mydss/v1/operations/sign/ex HTTP/1.1
Host: hostname
Content-Type: application/json
Content-Length: 239
{
"ApprovedOperation": {
"ConfirmedDocuments": [
{
"Id": "b64d7bf8-c82c-4e85-b91a-92f90a4ffb95"
}
],
"Parameters": {
"signTemplateId": "1",
"certId": "57232"
}
}
}
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Fri, 17 May 2019 04:53:09 GMT
{
"description": {
"type": "SignDocument",
"caption": "{\"values\": {\"dss\": \"%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%9F%D1%80%D0%BE DSS\",\"date\": \"13.10.2021 17:37:48\",\"login\": \"xmv_self2\",\"certid\": \"57232\", \"sessionid\":\"zhmesyay\",\"optype\":\"%D0%9F%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D1%8C\" },\"keys\": {\"dss\": \"%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80 %D0%AD%D0%9F\",\"date\": \"%D0%92%D1%80%D0%B5%D0%BC%D1%8F\",\"login\": \"%D0%9B%D0%BE%D0%B3%D0%B8%D0%BD %D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F\",\"certid\":\"%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80 %D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%B0\",\"sessionid\":\"%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80 %D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0\",\"optype\":\"%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F\"}}"
},
"expiresAt": 1634136468,
"documentCount": 1,
"transactionId": "d349387e-ad2e-4966-964c-c517a3d8f4c3",
"parameters": {
"signatureType": "CAdES",
"isDetached": "true"
},
"documents": [
{
"id": "b64d7bf8-c82c-4e85-b91a-92f90a4ffb95",
"documentInfo": "signed_document",
"documentHash": "1127C9C6F50AD4CA32740F03C7187EA1366187629060193FBA78E4B6CBF644C1",
"snippet": "<html lang=\"ru\">\r\n <head>\r\n <meta charset=\"UTF-8\" />\r\n <style>body{{font-family: -apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\"; padding: 16pt;}} @media (prefers-color-scheme: dark) { body { background: #484848; color:white; } }</style>\r\n </head>\r\n <body>\r\n <p>%D0%98%D0%BC%D1%8F %D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0:</p>\r\n <p>signed_document</p>\r\n </body>\r\n</html>",
"snippetHash": "66A0ACEED05DCB664EBF3174C625DC2E9AD94540F401C649C65ED6A3221588A7",
"fileSize": 19232,
"pageCount": 0,
"isPrintableViewAvailable": false,
"isSnippetViewAvailable": true,
"isRawViewAvailable": false,
"documentPreSignedHash": null,
"xmlEncryptedKey": null,
"documentPreDataId": null
}
],
"isClientSide": true,
"isFullDocRequired": true,
"certificateId": "57232"
}
Отправка запроса для подтверждения выполнения операции с клиентским ключом.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/operations/confirm/ex |
Аутентификация | Аутентификация на ключе Kauth . |
Параметры | Объект ApproveRequest, параметры подтверждения операции. |
Возвращаемое значение | Объект SignatureResult, результат подписи документов. |
Запрос
POST /mydss/v1/operations/confirm/ex HTTP/1.1
Host: hostname
Content-Type: application/json
Content-Length: 327
{
"ApprovedOperation": "{\"Id\":\"d349387e-ad2e-4966-964c-c517a3d8f4c3\",\"TimeStamp\":1634135869,\"Type\":\"SignDocument\",\"Caption\":\"{\\\"values\\\": {\\\"dss\\\": \\\"%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%9F%D1%80%D0%BE DSS\\\",\\\"date\\\": \\\"13.10.2021 17:37:48\\\",\\\"login\\\": \\\"xmv_self2\\\",\\\"certid\\\": \\\"57232\\\", \\\"sessionid\\\":\\\"zhmesyay\\\",\\\"optype\\\":\\\"%D0%9F%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D1%8C\\\" },\\\"keys\\\": {\\\"dss\\\": \\\"%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80 %D0%AD%D0%9F\\\",\\\"date\\\": \\\"%D0%92%D1%80%D0%B5%D0%BC%D1%8F\\\",\\\"login\\\": \\\"%D0%9B%D0%BE%D0%B3%D0%B8%D0%BD %D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F\\\",\\\"certid\\\":\\\"%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80 %D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%B0\\\",\\\"sessionid\\\":\\\"%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80 %D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0\\\",\\\"optype\\\":\\\"%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F\\\"}}\",\"ConfirmedDocuments\":[{\"Id\":\"b64d7bf8-c82c-4e85-b91a-92f90a4ffb95\",\"Hash\":null,\"DocumentHash\":\"1127C9C6F50AD4CA32740F03C7187EA1366187629060193FBA78E4B6CBF644C1\",\"SnippetHash\":\"66A0ACEED05DCB664EBF3174C625DC2E9AD94540F401C649C65ED6A3221588A7\",\"SignedHash\":null,\"SignedDocId\":\"b78f55c1-6aa4-4879-98cd-92dffc1091a9\",\"DecryptedDocId\":null}],\"DeclinedDocuments\":[],\"Parameters\":null}",
"Hmac": "cpGnGRxBCIp/IMMVzZ7z+FEFt8CVTSfO6LRMfeYf4ns="
}
**Ответ **
{
"results": [
{
"refId": "da738a9f-df55-44d4-a773-7f4cb9dd3034",
"originalRefId": "b64d7bf8-c82c-4e85-b91a-92f90a4ffb95",
"status": "Completed",
"error": null,
"errorDescription": null,
"originalContent": null
}
]
}
Отправка запроса для подтверждения выполнения операции с клиентским ключом.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/operations/dsk/commitment |
Аутентификация | Аутентификация на ключе Kauth . |
Параметры | Объект DskSignCommitmentInput, параметры подтверждения владения ключом. |
Возвращаемое значение | Объект DskSignCommitmentOutput. |
Пример запроса
POST https://hostname/Mdag/v1/operations/dsk/commitment
Authorization: myDSS 22818299:RDvMrvWEW9EsnX4ruWTNqOfxgOrxvw6nPpm7m0FKdqg=:cWUIxu84H4YPaXrDUp8I6Ecw+w76+kDJTc+aS/NjTs0=
{
"OpId": "b7f19ce4-c282-42ce-8e49-a1b8ba006a74",
"Commitment": {
"e805895e-66b9-4b33-919b-437e5e4204ac": "D02B2040FB59072F569F8F6910DF14A603874E660BE05429317139DB9FDBF392"
}
}
Шаг протокола распределённой подписи.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/operations/dsk/commitment2 |
Аутентификация | Аутентификация на ключе Kauth . |
Параметры | Объект DskSignCommitment2Input, параметры подтверждения владения ключом. |
Возвращаемое значение | Объект DskSignCommitment2Output. |
Завершение протокола распределённой подписи.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/operations/dsk/ticket |
Аутентификация | Аутентификация на ключе Kauth . |
Параметры | Объект DskSignTicketInput, параметры подтверждения владения ключом. |
Возвращаемое значение | Объект DskSignTicketOutput. |