Электронный документооборот

Структура данных API-интерфейса

Структура данных API-интерфейса

Для обмена данными программный интерфейс СБИС API использует формат JSON. Обмен с online.sbis.ru происходит с помощью HTTP-запросов/ответов.

  • POST — запросы на выполнение команд;
  • GET — запросы для получения содержимого указанного ресурса, данных вложений или электронных подписей (ЭП).

Заголовок запроса

В заголовке запроса обязательно указывается:

  • адрес сервера:
    1. для команд аутентификацииhttps://online.sbis.ru/auth/service/;
    2. для прочих командhttps://online.sbis.ru/service/?srv=1 HTTP/1.1;
  • идентификатор сессии «X-SBISSessionID»;
  • кодировка символов в поле «Content-Type»:
    1. application/json-rpc;charset=utf-8 — рекомендуем «utf-8»;
    2. application/json-rpc;charset=windows-1251 — «windows-1251».
  • размер запроса в байтах в «Content-Length»;
  • название и версия информационной системы в заголовке «User-Agent».

Объект запроса

Объект запроса содержит:

  • значение и версию спецификации JSON-RPC — «jsonrpc»:«2.0»;
  • параметр «method» с названием команды;
  • параметр «params» с объектом параметров команды;
  • параметр «id»с целочисленным значением.

Объект ответа

В ответ на запрос с сервера возвращается JSON-структура:

  • значение и версия спецификации JSON-RPC — «jsonrpc»:«2.0»;
  • параметр «id» со значением из объекта запроса;
  • значение объекта «result», содержащее ответ на команду.

Если произошла ошибка, в ответе на запрос вернется «error».

Объект ошибки

Если вернулась ошибка, в объекте ответа в поле «error» будут указаны:

  • «code» — код ошибки;
  • «message» — текст ошибки;
  • «details» — подробное описание;
  • «data» — тип ошибки.

Пример POST-запроса

POST https://online.sbis.ru/service/?srv=1 HTTP/1.1
Content-Type: application/json-rpc;charset=utf-8
Accept: */*
User-Agent: YourSystemName/0.1.0
X-SBISSessionID: 0000ea78-0000ea79-00ba-d3b85272bc0c4842
{
  "jsonrpc": "2.0",
  "method": "СБИС.ПрочитатьДокумент",
  "params": {
    "Документ": {
      "Идентификатор": "e1756445-f1be-4562-b5cf-4549968b5f4f"
    }
  },
  "id": 0
}

Пример ответа (упрощенный)

{
  "jsonrpc": "2.0",
  "result": {
    ...
  }
}

Пример GET-запроса для получения содержимого из вложения

GET https://disk.sbis.ru/disk/api/v1/bc12100c-8113-4478-a66c-ae45ca9210b6_9f621811-7542-4830-a26c-8779738ba55d?object=simple_file_sd&uuid=ff398d1b-d143-4600-b267-b8c9a60990fc&diskhmac=DuBy%2B9W9oa%2BSThKU5rbZVRUsDQ4%3D

Content-Type: application/json-rpc;
charset=windows-1251 Accept:*/*
X-SBISSessionID: 0009c95c-0009ccc4-00ba-f2c8df9cc0d14d1b
Host: disk.sbis.ru

Пример ответа

HTTP/1.1 200 OK
Content-Type: application/octet-stream; charset=windows-1251
Content-Length: 1555
Content-Range: bytes 0-1554/1555
X-SBISSessionID: 0000ea78-0000ea79-00ce-dc4d2645fe204752
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Accept, Content-type
Content-Disposition: attachment; filename="ON_SFAKT.XML"
Cache-Control: must-revalidate, max-age=0
<?xml version="1.0" encoding="WINDOWS-1251"?>
 <Файл ВерсПрог="0.1 Beta" ВерсФорм="5.01" ИдФайл="ON_SFAKT_9999999998000000001_9999999998000000001_3333333330000000001_20120823_251a931a-0ce4-4ae6-9d5c-7c5e44cfd7d9">
     <Документ КНД="1115101">
         <Подписант ПрПодп="1">
             <ФИО Имя="Электронных" Отчество="Документов" Фамилия="Отправитель"/>
         </Подписант>
             <СвСчФакт ДатаПРС="00.00.0000" ДатаСЧ="18.01.2011" НомерПРС=" " НомерСЧ="00000013">
                 <СведПокуп>
                     <РегСвед>
                         <СведЮЛ ИННЮЛ="9999999998" КПП="000000001" НаимОрг="ООО Получатель"/>
                     </РегСвед>
                        <АдресСвед>
                            <АдрПокупРФ Город="385002" Дом="ул.Адмирала Грейга" Индекс="" КодРегион="" Корпус="2" НаселПункт="Санкт-Петербург г" Район="Россия" Улица="г.Кронштадт"/>
                        </АдресСвед>
                </СведПокуп>
                <СведПрод>
                    <РегСвед>
                        <СведЮЛ ИННЮЛ="3333333330" КПП="000000001" НаимОрг="ООО Отправитель"/>
                    </РегСвед>
                    <АдресСвед>
                        <АдрПокупРФ Город="Кронштадт г" Дом="1" Индекс="197762" Кварт=" " КодРегион="Санкт-Петербург г" Корпус=" " НаселПункт=" " Район=" " Улица="Арсенальный пер"/>
                    </АдресСвед>
                </СведПрод>
            </СвСчФакт>
            <ТаблСчФакт ОКВ_СФ="810" СтТРУУчНалВс="708.00" СумНДСВс="108.00">
                <СведТРУ ЕдИзм_ТРУ="шт" КодПроисх=" " КолТРУ="12.00000" НаимТРУ=""Все о жизни" электронная книга" НалСтав="18.00" НомерТД=" " ОКЕИ_ТРУ="796" СтТРУБезНДС="600.00" СтТРУУчНал="708.00" СтрПроисх=" " СумАкц="0.00" СумНДС="108.00" ЦенаТРУ="0.00"/>
            </ТаблСчФакт>
    </Документ>
 </Файл>

Пример ошибки

{
  "jsonrpc": "2.0",
  "error": {
    "code": -32000,
    "message": "Сервис оператора временно недоступен.",
    "details": "Ошибка определения АЯ: Сервис http://operator-online.sbis.ru/data/service/ временно недоступен. Повторите попытку позже.",
    "type": "error",
    "data": {
      "classid": "{00000000-0000-0000-0000-1aa000050000}",
      "addinfo": null
    }
  },
  "id": 0
}
Нашли неточность? Выделите текст с ошибкой и нажмите ctrl + enter.