Documentation
¶
Overview ¶
REST-клиент для API Госуслуг (АПИ ЕПГУ). Разработан в соответствии с документом "Спецификация API ЕПГУ, версия 1.12"
https://partners.gosuslugi.ru/catalog/api_for_gu
Методы ¶
- Client.OrderCreate — создание заявления
- Client.OrderPushChunked — загрузка архива по частям
- Client.OrderPush — формирование заявления единым методом
- Client.OrderInfo — запрос детальной информации по отправленному заявлению
- Client.OrderCancel — отмена заявления
- Client.AttachmentDownload — скачивание файла вложения созданного заявления
- Client.Dict — получение справочных данных
Получение маркера доступа (токена) ЕСИА ¶
- github.com/ofstudio/go-api-epgu/esia/aas — OAuth2-клиент для работы с согласиями ЕСИА
- github.com/ofstudio/go-api-epgu/esia/signature — Электронная подпись запросов к ЕСИА
Услуги API ЕПГУ ¶
- github.com/ofstudio/go-api-epgu/services/sfr/10000000109-zdp — Доставка пенсии и социальных выплат ПФР
Примеры ¶
- github.com/ofstudio/go-api-epgu/examples/esia-token-request — запрос согласия пользователя и получения маркера доступа
- github.com/ofstudio/go-api-epgu/examples/esia-token-update — обновление маркера доступа
- github.com/ofstudio/go-api-epgu/examples/order-push-chunked — создание заявления и загрузка архива по частям
- github.com/ofstudio/go-api-epgu/examples/order-info — получение детальной информации по отправленному заявлению
Руководящие документы ¶
- Спецификация API, основные руководящие документы и регламенты подключения опубликованы на Портале API Госуслуг: https://partners.gosuslugi.ru/catalog/api_for_gu
- Методические рекомендации по интеграции с REST API Цифрового профиля: https://digital.gov.ru/ru/documents/7166/
- Методические рекомендации по использованию ЕСИА: https://digital.gov.ru/ru/documents/6186/
- Руководство пользователя ЕСИА: https://digital.gov.ru/ru/documents/6182/
- Руководство пользователя технологического портала ЕСИА: https://digital.gov.ru/ru/documents/6190/
Адреса Портала Госуслуг ¶
- Тестовая среда (SVCDEV): https://svcdev-beta.test.gosuslugi.ru
- Продуктовая среда: https://lk.gosuslugi.ru
Index ¶
- Constants
- Variables
- type Archive
- type ArchiveFile
- type Client
- func (c *Client) AttachmentDownload(token string, link string) ([]byte, error)
- func (c *Client) Dict(code string, filter, parent string, pageNum, pageSize int) ([]DictItem, int, error)
- func (c *Client) OrderCancel(token string, orderId int) error
- func (c *Client) OrderCreate(token string, meta OrderMeta) (int, error)
- func (c *Client) OrderInfo(token string, orderId int) (*OrderInfo, error)
- func (c *Client) OrderPush(token string, meta OrderMeta, archive *Archive) (int, error)
- func (c *Client) OrderPushChunked(token string, orderId int, archive *Archive) error
- func (c *Client) WithChunkSize(n int) *Client
- func (c *Client) WithDebug(logger utils.Logger) *Client
- func (c *Client) WithHTTPClient(httpClient *http.Client) *Client
- type DateTime
- type DictAttribute
- type DictAttributeValue
- type DictItem
- type OrderAttachmentFile
- type OrderAttributeEvent
- type OrderDetails
- type OrderInfo
- type OrderMeta
- type OrderQrlink
- type OrderResponseFile
- type OrderStatus
- type OrderStatusHistory
Constants ¶
const ( DictFilterOneLevel string = "ONELEVEL" // Плоский справочник DictFilterSubTree string = "SUBTREE" // Иерархический справочник )
Типы запрашиваемого справочника (плоский / иерархический) для метода Client.Dict.
const DefaultArchiveName = "archive"
DefaultArchiveName - имя архива по умолчанию для методов Client.OrderPush и Client.OrderPushChunked. Используется, если в Archive.Name не передано имя архива.
const DefaultChunkSize = 5_000_000
DefaultChunkSize - размер чанка по умолчанию для метода Client.OrderPushChunked. Если размер архива вложения будет больше, то метод отправит архив несколькими запросами. Значение можно изменить с помощью Client.WithChunkSize.
Подробнее см. "Спецификация API ЕПГУ версия 1.12", раздел "2.1.3 Отправка заявления (загрузка архива по частям)".
Variables ¶
var ( ErrOrderCreate = errors.New("ошибка OrderCreate") ErrPushChunked = errors.New("ошибка OrderPushChunked") ErrPush = errors.New("ошибка OrderPush") ErrOrderInfo = errors.New("ошибка OrderInfo") ErrOrderCancel = errors.New("ошибка OrderCancel") ErrAttachmentDownload = errors.New("ошибка AttachmentDownload") ErrDict = errors.New("ошибка Dict") ErrService = errors.New("ошибка услуги") )
Ошибки первого уровня.
var ( ErrMultipartBody = errors.New("ошибка подготовки multipart-содержимого") ErrRequest = errors.New("ошибка HTTP-запроса") ErrUnexpectedContentType = errors.New("неожиданный тип содержимого") ErrJSONUnmarshal = errors.New("ошибка чтения JSON") ErrNoFiles = errors.New("нет файлов во вложении") ErrZip = errors.New("ошибка создания zip-архива") ErrGUID = errors.New("не удалось сгенерировать GUID") ErrXMLMarshal = errors.New("ошибка создания XML") ErrNilArchive = errors.New("не передан архив") ErrWrongOrderID = errors.New("некорректный ID заявления") ErrInvalidFileLink = errors.New("некорректная ссылка на файл") ErrDictResponse = errors.New("ошибка получения справочных данных") )
Ошибки второго уровня.
var ( ErrStatusOrderNotFound = errors.New("заявление не найдено") // HTTP 204 ErrStatusBadRequest = errors.New("неверные параметры") // HTTP 400 ErrStatusForbidden = errors.New("доступ запрещен") // HTTP 403 ErrStatusURLNotFound = errors.New("не найден URL запроса") // HTTP 404 ErrStatusUnableToHandleRequest = errors.New("невозможно обработать запрос") // HTTP 409 ErrStatusTooManyRequests = errors.New("слишком много запросов") // HTTP 429 ErrStatusInternalError = errors.New("внутренняя ошибка") // HTTP 500 ErrStatusBadGateway = errors.New("некорректный шлюз") // HTTP 502 ErrStatusGatewayTimeout = errors.New("шлюз не отвечает") // HTTP 504 ErrStatusUnexpected = errors.New("неожиданный HTTP-статус") // Другие HTTP-коды ошибок )
HTTP-ошибки.
Подробнее см. "Спецификация API ЕПГУ версия 1.12", "Приложение 4. Ошибки, возвращаемые при запросах к API ЕПГУ"
var ( // Ошибка ЕПГУ: code = access_denied_person_permissions ErrCodeAccessDeniedPersonPermissions = errors.New("пользователь не дал согласие Вашей системе на выполнение данной операции") // Ошибка ЕПГУ: code = access_denied_service ErrCodeAccessDeniedService = errors.New("доступ ВИС к запрашиваемой услуге запрещен") // Ошибка ЕПГУ: code = access_denied_system ErrCodeAccessDeniedSystem = errors.New("доступ запрещен для ВИС, отправляющей запрос") // Ошибка ЕПГУ: code = access_denied_user ErrCodeAccessDeniedUser = errors.New("доступ запрещен для данного типа пользователя") // Ошибка ЕПГУ: code = access_denied_user_legal ErrCodeAccessDeniedUserLegal = errors.New("попытка создать заявления с использованием токена, полученного для организации, которая не является владельцем ВИС, отправляющей данный запрос") // Ошибка ЕПГУ: code = bad_delegation ErrCodeBadDelegation = errors.New("нет необходимых полномочий для создания заявления") // Ошибка ЕПГУ: code = bad_request ErrCodeBadRequest = errors.New("ошибка в параметрах запроса") // Ошибка ЕПГУ: code = cancel_not_allowed ErrCodeCancelNotAllowed = errors.New("отмена заявления в текущем статусе невозможна") // Ошибка ЕПГУ: code = config_delegation ErrCodeConfigDelegation = errors.New("полномочие для создания и подачи заявления по заданной услуги не существует") // Ошибка ЕПГУ: code = internal_error ErrCodeInternalError = errors.New("ошибка в обработке заявления, причины которой можно выяснить при анализе инцидента") // Ошибка ЕПГУ: code = limitation_exception ErrCodeLimitationException = errors.New("превышение установленных ограничений, указанных в Приложении 3 к Спецификации") // Ошибка ЕПГУ: code = not_found ErrCodeNotFound = errors.New("заявление не найдено") // Ошибка ЕПГУ: code = order_access ErrCodeOrderAccess = errors.New("у пользователя нет прав для работы с текущим заявлением") // Ошибка ЕПГУ: code = push_denied ErrCodePushDenied = errors.New("нет прав для отправки заявления. Отправить заявление может только руководитель организации или сотрудник с доверенностью") // Ошибка ЕПГУ: code = service_not_found ErrCodeServiceNotFound = errors.New("не найдена услуга, заданная кодом serviceCode в запросе") // Ошибка ЕПГУ: неизвестное значение code ErrCodeUnexpected = errors.New("неожиданный код ошибки") // Ошибка ЕПГУ: code не указан ErrCodeNotSpecified = errors.New("код ошибки не указан") )
Ошибки ЕПГУ.
Подробнее см. "Спецификация API ЕПГУ версия 1.12", "Приложение 4. Ошибки, возвращаемые при запросах к API ЕПГУ"
Пример JSON-ответа от ЕПГУ при ошибке:
{
"code": "order_access",
"message": "У пользователя нет прав для работы с текущим заявлением"
}
Functions ¶
This section is empty.
Types ¶
type Archive ¶ added in v0.3.0
type Archive struct {
Name string // Имя архива (без расширения). Пример: "35002123456-archive"
Data []byte // Содержимое архива в zip-формате
}
Archive - архив вложений к создаваемому заявлению. Используется для методов Client.OrderPush и Client.OrderPushChunked.
func NewArchive ¶ added in v0.3.0
func NewArchive(name string, files ...ArchiveFile) (*Archive, error)
NewArchive - создает архив из файлов вложений. В случае ошибки возвращает ErrZip.
type ArchiveFile ¶ added in v0.4.0
type ArchiveFile struct {
Filename string // Имя файла с расширением. Пример: "req_346ee59c-a428-42f6-342e-c780dd2e278e.xml"
Data []byte // Содержимое файла
}
ArchiveFile - файл вложения для формирования архива Archive к создаваемому заявлению
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client - REST-клиент для API Госуслуг.
func (*Client) AttachmentDownload ¶ added in v0.4.0
AttachmentDownload - скачивание файла вложения созданного заявления.
GET /api/storage/v2/files/{objectId}/{objectType}/download?mnemonic={mnemonic}
Параметр link - значение поля OrderAttachmentFile.Link из ответа метода Client.OrderInfo. Подробнее см "Спецификация API ЕПГУ версия 1.12", раздел "4. Скачивание файла".
В случае успеха возвращает содержимое файла. В случае ошибки возвращает цепочку из ErrAttachmentDownload и следующих возможных ошибок:
- ErrRequest - ошибка HTTP-запроса
- ErrInvalidFileLink - некорректный параметр link
- HTTP-ошибок ErrStatusXXXX (например, ErrStatusUnauthorized)
- Ошибок ЕПГУ: ErrCodeXXXX (например, ErrCodeAccessDeniedSystem)
func (*Client) Dict ¶ added in v0.4.0
func (c *Client) Dict(code string, filter, parent string, pageNum, pageSize int) ([]DictItem, int, error)
Dict - получение справочных данных.
POST /api/nsi/v1/dictionary/{code}
Подробнее см "Спецификация API ЕПГУ версия 1.12", раздел "3. Получение справочных данных".
Параметры:
- code - код справочника. Примеры: "EXTERNAL_BIC", "TO_PFR"
- filter - тип справочника (плоский DictFilterOneLevel или иерархический DictFilterSubTree)
- parent - код родительского элемента (необязательный)
- pageNum - номер необходимой страницы (необязательный)
- pageSize - количество записей на странице (необязательный)
Примечание: не все справочники поддерживают параметры parent, pageNum и pageSize.
В случае успеха возвращает элементы справочника с учетом pageNum и pageSize, а также общее количество найденных элементов. В случае ошибки возвращает цепочку из ErrDict и следующих возможных ошибок:
- ErrRequest - ошибка HTTP-запроса
- ErrJSONUnmarshal - ошибка разбора ответа
- ErrDictResponse - ошибка получения справочных данных c указанием code и message из ответа
- HTTP-ошибок ErrStatusXXXX (например, ErrStatusBadRequest)
- Ошибок ЕПГУ: ErrCodeXXXX (например, ErrCodeBadRequest)
func (*Client) OrderCancel ¶ added in v0.4.0
OrderCancel - отмена заявления.
POST /api/gusmev/order/{orderId}/cancel
Подробнее см "Спецификация API ЕПГУ версия 1.12", раздел "2.2. Отмена заявления".
В случае ошибки возвращает цепочку из ErrOrderCancel и следующих возможных ошибок:
- ErrRequest - ошибка HTTP-запроса
- ErrJSONUnmarshal - ошибка разбора ответа
- HTTP-ошибок ErrStatusXXXX (например, ErrStatusUnauthorized)
- Ошибок ЕПГУ: ErrCodeXXXX (например, ErrCodeCancelNotAllowed)
Примечание. В настоящий момент (декабрь 2023) вызов метода возвращает ошибку HTTP 400 Bad Request:
{
"code":"bad_request",
"message":"Required request parameter 'reason' for method parameter type String is not present"
}
При этом, параметр reason не описан в спецификации. На данный момент ни одна из доступных услуг API ЕПГУ не предусматривает возможность отмены. Вероятно, спецификация метода будет изменена в будущем.
func (*Client) OrderCreate ¶
OrderCreate - создание заявления.
POST /api/gusmev/order
Подробнее см. "Спецификация API ЕПГУ версия 1.12", раздел "2.1.2 Создание заявления".
В случае успеха возвращает номер созданного заявления. В случае ошибки возвращает цепочку из ErrOrderCreate и следующих возможных ошибок:
- ErrRequest - ошибка HTTP-запроса
- ErrJSONUnmarshal - ошибка разбора ответа
- ErrWrongOrderID - в ответе не передан ID заявления
- HTTP-ошибок ErrStatusXXXX (например, ErrStatusUnauthorized)
- Ошибок ЕПГУ: ErrCodeXXXX (например, ErrCodeBadRequest)
func (*Client) OrderInfo ¶
OrderInfo - запрос детальной информации по отправленному заявлению.
POST /api/gusmev/order/{orderId}
Подробнее см "Спецификация API ЕПГУ версия 1.12", раздел "2.4. Получение деталей по заявлению".
В случае успеха возвращает детальную информацию по заявлению. В случае ошибки возвращает цепочку из ErrOrderInfo и следующих возможных ошибок:
- ErrRequest - ошибка HTTP-запроса
- ErrJSONUnmarshal - ошибка разбора ответа
- HTTP-ошибок ErrStatusXXXX (например, ErrStatusUnauthorized)
- Ошибок ЕПГУ: ErrCodeXXXX (например, ErrCodeBadRequest)
func (*Client) OrderPush ¶ added in v0.3.0
OrderPush - формирование заявления единым методом.
POST /api/gusmev/push
Подробнее см "Спецификация API ЕПГУ версия 1.12", раздел "2.1.4 Формирование заявления единым методом"
В случае успеха возвращает номер созданного заявления. В случае ошибки возвращает цепочку из ErrPush и следующих возможных ошибок:
- ErrNilArchive - не передан архив
- ErrRequest - ошибка HTTP-запроса
- ErrMultipartBody - ошибка подготовки multipart-содержимого
- ErrWrongOrderID - в ответе не передан ID заявления
- HTTP-ошибок ErrStatusXXXX (например, ErrStatusUnauthorized)
- Ошибок ЕПГУ ErrCodeXXXX (например, ErrCodeBadRequest)
func (*Client) OrderPushChunked ¶
OrderPushChunked - загрузка архива по частям.
POST /api/gusmev/push/chunked
Подробнее см "Спецификация API ЕПГУ версия 1.12", раздел "2.1.3 Отправка заявления (загрузка архива по частям)"
Максимальный размер чанка по умолчанию: DefaultChunkSize, может быть изменен с помощью Client.WithChunkSize.
В случае ошибки возвращает цепочку из ErrPushChunked и следующих возможных ошибок:
- ErrNilArchive - не передан архив
- ErrRequest - ошибка HTTP-запроса
- ErrMultipartBody - ошибка подготовки multipart-содержимого
- ErrWrongOrderID - в ответе не передан или передан некорректный ID заявления
- HTTP-ошибок ErrStatusXXXX (например, ErrStatusUnauthorized)
- Ошибок ЕПГУ ErrCodeXXXX (например, ErrCodeBadRequest)
func (*Client) WithChunkSize ¶
WithChunkSize устанавливает максимальный размер чанка для метода Client.OrderPushChunked. По умолчанию используется DefaultChunkSize.
Подробнее см "Спецификация API ЕПГУ версия 1.12", раздел "2.1.3 Отправка заявления (загрузка архива по частям)"
type DateTime ¶ added in v0.4.0
DateTime - дата и время в формате API ЕПГУ.
2023-11-02T07:27:22.586+0300
func (DateTime) MarshalJSON ¶ added in v0.4.0
func (*DateTime) UnmarshalJSON ¶ added in v0.4.0
type DictAttribute ¶ added in v0.4.0
type DictAttribute struct {
Name string `json:"name"` // [Не документировано]
Type string `json:"type"` // [Не документировано]
Value DictAttributeValue `json:"value"` // [Не документировано]
ValueAsOfType any `json:"valueAsOfType"` // [Не документировано]
}
DictAttribute - дополнительный атрибут элемента справочника из структуры DictItem.
type DictAttributeValue ¶ added in v0.4.0
type DictAttributeValue struct {
AsString string `json:"asString"` // [Не документировано]
TypeOfValue string `json:"typeOfValue"` // [Не документировано]
Value any `json:"value"` // [Не документировано]
}
DictAttributeValue - значение дополнительного атрибута элемента справочника из структуры DictAttribute.
type DictItem ¶ added in v0.4.0
type DictItem struct {
Value string `json:"value"` // Код элемента справочника
ParentValue string `json:"parentValue,omitempty"` // Код родительского элемента
Title string `json:"title"` // Наименование элемента
IsLeaf bool `json:"isLeaf"` // [?] Признак наличия подчинённых элементов
Children []map[string]any `json:"children"` // Подчинённые элементы
Attributes []DictAttribute `json:"attributes"` // Дополнительные атрибуты элемента справочника [детально]
AttributeValues map[string]any `json:"attributeValues"` // Список значений дополнительных атрибутов элемента справочника [кратко]
}
DictItem - элемент справочника.
Подробнее см. "Спецификация API ЕПГУ версия 1.12", раздел "3. Получение справочных данных".
Пример элемента справочника EXTERNAL_BIC:
{
"value": "044525974",
"title": "044525974 - АО \"Тинькофф Банк\" г Москва",
"isLeaf": true,
"children": [],
"attributes": [
{
"name": "ID",
"type": "STRING",
"value": {
"asString": "044525974",
"typeOfValue": "STRING",
"value": "044525974"
},
"valueAsOfType": "044525974"
},
{
"name": "NAME",
"type": "STRING",
"value": {
"asString": "АО \"Тинькофф Банк\" г Москва",
"typeOfValue": "STRING",
"value": "АО \"Тинькофф Банк\" г Москва"
},
"valueAsOfType": "АО \"Тинькофф Банк\" г Москва"
},
{
"name": "BIC",
"type": "STRING",
"value": {
"asString": "044525974",
"typeOfValue": "STRING",
"value": "044525974"
},
"valueAsOfType": "044525974"
},
{
"name": "CORR_ACCOUNT",
"type": "STRING",
"value": {
"asString": "30101810145250000974",
"typeOfValue": "STRING",
"value": "30101810145250000974"
},
"valueAsOfType": "30101810145250000974"
}
],
"attributeValues": {
"ID": "044525974",
"CORR_ACCOUNT": "30101810145250000974",
"BIC": "044525974",
"NAME": "АО \"Тинькофф Банк\" г Москва"
}
}
Пример элемента справочника TO_PFR:
{
"value": "087109",
"title": "Клиентская служба «Замоскворечье, Якиманка» по г. Москве и МО",
"isLeaf": true,
"children": [],
"attributes": [],
"attributeValues": {}
},
type OrderAttachmentFile ¶
type OrderAttachmentFile struct {
Id string `json:"id"` // Идентификатор файла
FileName string `json:"fileName"` // Название файла
MimeType string `json:"mimeType"` // MIME-тип
Link string `json:"link"` // Ссылка на файл в хранилище
HasDigitalSignature bool `json:"hasDigitalSignature"` // Наличие подписи
FileSize int `json:"fileSize"` // Размер файла
Type string `json:"type"` // Тип
}
OrderAttachmentFile - файл заявления, отправленный пользователем из структуры OrderDetails метода Client.OrderInfo.
Подробнее см "Спецификация API ЕПГУ версия 1.12", раздел "2.4. Получение деталей по заявлению".
type OrderAttributeEvent ¶
type OrderAttributeEvent struct {
Name string `json:"name"` // Наименование атрибута
NewValue string `json:"newValue"` // Новое значение
OldValue string `json:"oldValue"` // Старое значение
}
OrderAttributeEvent - атрибуты событий для заявления из структуры OrderDetails метода Client.OrderInfo.
Подробнее см "Спецификация API ЕПГУ версия 1.12", раздел "2.4. Получение деталей по заявлению".
type OrderDetails ¶
type OrderDetails struct {
Id int `json:"id"` // Номер заявления
OrderStatusId int `json:"orderStatusId"` // Код статуса заявления
Statuses []OrderStatus `json:"statuses"` // Статусы заявления
CurrentStatusHistory OrderStatusHistory `json:"currentStatusHistory"` // История статуса
Updated DateTime `json:"updated"` // Дата и время обновления статуса заявления
Closed bool `json:"closed"` // Флаг наличия финального статуса
HasResult bool `json:"hasResult"` // Флаг передачи файла в ответ на заявление
OrderAttachmentFiles []OrderAttachmentFile `json:"orderAttachmentFiles"` // Файлы заявления, отправленные пользователем
OrderResponseFiles []OrderResponseFile `json:"orderResponseFiles"` // Информация о файлах в ответе заявления
HasNewStatus bool `json:"hasNewStatus"` // Флаг нового статуса для заявления
CurrentStatusHistoryId int `json:"currentStatusHistoryId"` // Идентификатор статуса заявления
OrderStatusName string `json:"orderStatusName"` // Наименование статуса заявления
StateOrgStatusCode string `json:"stateOrgStatusCode,omitempty"` // Код ведомственного статуса
StateOrgStatusName string `json:"stateOrgStatusName,omitempty"` // Наименование ведомственного статуса
StateOrgId int `json:"stateOrgId"` // Код ведомства
StateStructureName string `json:"stateStructureName"` // Наименование ведомства
StateOrgCode string `json:"stateOrgCode"` // Сокращенное наименование ведомства
StateStructureId string `json:"stateStructureId"` // Код ведомства [по ФРГУ]
Gisdo bool `json:"gisdo"` // Признак подключенности ведомства к ФГИС ДО
SourceSystem string `json:"sourceSystem"` // Наименование системы откуда было подано заявление [мнемоника ИС-потребителя API ЕПГУ]
CreationMode string `json:"creationMode"` // Режим создания
ExtSystem bool `json:"extSystem"` // Признак, что создано внешней системой (через сервис ЕЛК)
OwnerId int `json:"ownerId"` // Идентификатор пользователя [OID на Госуслугах / ЕСИА]
UserId int `json:"userId"` // Идентификатор пользователя [OID на Госуслугах / ЕСИА]
PersonType string `json:"personType"` // Тип пользователя
UserSelectedRegion string `json:"userSelectedRegion"` // Код ОКАТО местоположения пользователя
TestUser bool `json:"testUser"` // Флаг тестового пользователя
Location string `json:"location"` // Код уровня услуги [ОКАТО пользователя?]
OrgUserName string `json:"orgUserName,omitempty"` // Наименование организации пользователя
OrderType string `json:"orderType"` // Тип заявления
EserviceId string `json:"eserviceId"` // Идентификатор формы заявления
ServiceTargetId string `json:"serviceTargetId"` // Идентификатор цели
ServicePassportId string `json:"servicePassportId"` // Идентификатор паспорта услуги
ServiceName string `json:"serviceName"` // Наименование цели
DeprecatedService bool `json:"deprecatedService"` // Признак, что услуга больше не заказывается
HubForm bool `json:"hubForm"` // Признак, что форма-концентратор
HubFormVersion int `json:"hubFormVersion,omitempty"` // Идентификатор регионо-зависимой формы старого конструктора форм
AdmLevelCode string `json:"admLevelCode"` // Уровень услуги (региональный/федеральный)
MultRegion bool `json:"multRegion"` // Признак регионозависимости
ServiceEpguId string `json:"serviceEpguId"` // Идентификатор цели услуги ЕПГУ
FormVersion string `json:"formVersion"` // Версия
ServiceUrl string `json:"serviceUrl,omitempty"` // Ссылка на заявление
PortalCode string `json:"portalCode,omitempty"` // Код портала
PortalName string `json:"portalName,omitempty"` // Наименование портала
PossibleServices map[string]any `json:"possibleServices"` // [Не документировано]
OrderDate DateTime `json:"orderDate"` // Дата и время создания заявления
RequestDate DateTime `json:"requestDate"` // Метка даты и времени запроса
OrderAttributeEvents []OrderAttributeEvent `json:"orderAttributeEvents"` // Атрибуты событий для заявления
Online bool `json:"online"` // Признак, онлайн услуга или нет
HasTimestamp bool `json:"hasTimestamp"` // Флаг timestamp
HasActiveInviteToEqueue bool `json:"hasActiveInviteToEqueue"` // Флаг записи на прием
HasChildren bool `json:"hasChildren"` // Флаг наличия дочерних заявлений
HasPreviewPdf bool `json:"hasPreviewPdf"` // Флаг наличия пдф
HasEmpowerment2021 bool `json:"hasEmpowerment2021"` // Флаг наличия делегирования
AllowToEdit bool `json:"allowToEdit"` // Флаг редактирования заявления
AllowToDelete bool `json:"allowToDelete"` // Флаг удаления заявки
DraftHidden bool `json:"draftHidden"` // Признак скрытия черновика
CheckQueue bool `json:"checkQueue"` // Флаг проверки очереди
EQueueEvents []map[string]any `json:"eQueueEvents"` // Массив объектов eQueueEvent [структура элемента массива не документирована]
UseAsTemplate bool `json:"useAsTemplate"` // Флаг черновика заявления
WithDelivery bool `json:"withDelivery"` // Флаг доставки
WithCustomResult bool `json:"withCustomResult"` // Признак необходимости отображения кнопки в Деталях заявления услуги
PowerMnemonic string `json:"powerMnemonic,omitempty"` // Мнемоника полномочия, с которым подается заявление
ReadyToPush bool `json:"readyToPush"` // Служебный параметр
Elk bool `json:"elk"` // [Не документировано]
SmevTx string `json:"smevTx"` // Код транзакции СМЭВ3
SmevMessageId string `json:"smevMessageId"` // Идентификатор СМЭВ-сообщения от ведомства, сменившего статус
RoutingCode string `json:"routingCode,omitempty"` // Код маршрутизации СМЭВ-сообщения в ведомство
PaymentRequired bool `json:"paymentRequired"` // Флаг наличия оплаты
NoPaidPaymentCount int `json:"noPaidPaymentCount"` // Количество неоплаченных платежей
PaymentCount int `json:"paymentCount"` // Количество платежей
HasNoPaidPayment bool `json:"hasNoPaidPayment"` // Флаг наличия оплаченного платежа
PaymentStatusEvents []map[string]any `json:"paymentStatusEvents"` // Статус событий при оплате [структура события оплаты не документирована]
OrderPayments []map[string]any `json:"orderPayments"` // Информация о платежах [структура объекта платежа не документирована]
Payback bool `json:"payback"` // Служебный параметр
ReadyToSign bool `json:"readyToSign"` // Для ЮЛ, для подписания заявки, маркер ожидания УКЭП
SignCnt int `json:"signCnt"` // Кол-во подписей, для заявлений от нескольких заявителей
AllFileSign bool `json:"allFileSign"` // Флаг наличия ЭП для файлов
ChildrenSigned bool `json:"childrenSigned"` // Флаг подписи дочерних заявлений
EdsStatus string `json:"edsStatus"` // Идентификатор статуса проверки ЭП
TextMessages []map[string]any `json:"textMessages"` // Информация о сообщениях [структура объекта текстового сообщения не документирована]
InfoMessages []map[string]any `json:"infoMessages"` // Информация о сообщениях [структура объекта сообщения не документирована]
UnreadMessageCnt int `json:"unreadMessageCnt"` // Кол-во непрочитанных сообщений
NotifySms string `json:"notifySms,omitempty"` // Флаг необходимости уведомления о смене статуса через СМС
NotifyEmail string `json:"notifyEmail,omitempty"` // Флаг необходимости уведомления о смене статуса через сообщение на эл. почту
NotifyPush string `json:"notifyPush,omitempty"` // Флаг необходимости уведомления о смене статуса через push-сообщение
Qrlink OrderQrlink `json:"qrlink"` // [Не документировано]
Steps []any `json:"steps"` // [Не документировано]
}
OrderDetails - детальная информация по заявлению из структуры OrderInfo метода Client.OrderInfo.
Подробнее см "Спецификация API ЕПГУ версия 1.12", раздел "2.4. Получение деталей по заявлению".
Примечание: поля, отмеченные как не документированные, не описаны в спецификации, однако могут приходить в ответе.
Пример для заявления "Доставка пенсии и социальных выплат СФР" (10000000109). Обратите внимание, что структура в примере содержит не все все поля, упомянутые в спецификации.
{
////
// Основные аттрибуты
////
"id": 1230254874, // Номер заявления
"orderStatusId": 2, // Код статуса заявления
"statuses": [ // Статусы заявления
{
"id": 12300714241, // Идентификатор статуса
"statusId": 0, // Код статуса
"title": "Черновик заявления", // Наименование статуса
"date": "2023-11-02T07:27:22.586+0300", // Дата и время смены статуса
"orderId": 1230254874, // Номер заявления
"finalStatus": false, // Флаг финального статуса
"cancelAllowed": false, // Флаг возможности отменить заявление
"hasResult": "N", // Флаг передачи файла в ответ на заявление
"unreadEvent": true, // Признак прочтения
"deliveryCancelAllowed": false, // Флаг наличия отмены доставки
"sendMessageAllowed": false, // Признак разрешения отправки сообщения
"editAllowed": false, // Признак редактирования
"statusColorCode": "edit" // [Не документировано]
},
{
"id": 12300712489,
"statusId": 17,
"title": "Зарегистрировано на портале",
"date": "2023-11-02T07:27:22.936+0300",
"orderId": 1230254874,
"finalStatus": false,
"hasResult": "N",
"cancelAllowed": false,
"sender": "Фонд пенсионного и социального страхования Российской Федерации", // Отправитель СМЭВ-сообщения о смене статуса
"unreadEvent": true,
"deliveryCancelAllowed": false,
"sendMessageAllowed": false,
"editAllowed": false,
"statusColorCode": "in_progress"
},
{
"id": 12300710521,
"statusId": 21,
"title": "Заявление отправлено в ведомство",
"date": "2023-11-02T07:27:23.527+0300",
"orderId": 1230254874,
"finalStatus": false,
"hasResult": "N",
"cancelAllowed": false,
"sender": "Фонд пенсионного и социального страхования Российской Федерации",
"unreadEvent": true,
"deliveryCancelAllowed": false,
"sendMessageAllowed": false,
"editAllowed": false,
"statusColorCode": "in_progress",
},
{
"id": 12300710522,
"statusId": 2,
"title": "Заявление получено ведомством",
"date": "2023-11-02T07:27:44.134+0300",
"orderId": 1230254874,
"finalStatus": false,
"hasResult": "N",
"cancelAllowed": false,
"sender": "Фонд пенсионного и социального страхования Российской Федерации",
"comment": "Сообщение доставлено", // Комментарий к статусу
"unreadEvent": true,
"deliveryCancelAllowed": false,
"sendMessageAllowed": false,
"editAllowed": false,
"statusColorCode": "in_progress"
}
],
"currentStatusHistory": { // История статуса
"id": 12300710522, // Идентификатор статуса
"statusId": 2, // Код статуса
"title": "Заявление получено ведомством", // Код статуса
"date": "2023-11-02T07:27:44.134+0300", // Дата и время смены статуса
"orderId": 1230254874, // Номер заявления
"finalStatus": false, // Флаг финального статуса
"hasResult": "N", // Флаг передачи файла в ответ на заявление
"cancelAllowed": false, // Флаг наличия отмены
"sender": "Фонд пенсионного и социального страхования Российской Федерации", // Наименование ведомства
"comment": "Сообщение доставлено", // Комментарий
"unreadEvent": true, // Признак прочтение события
"deliveryCancelAllowed": false, // Флаг наличия отмены доставки
"sendMessageAllowed": false, // Признак разрешения отправки сообщения
"editAllowed": false, // Признак редактирования
"statusColorCode": "in_progress", // [Не документировано]
},
"updated": "2023-11-02T07:27:44.140+0300", // Дата и время обновления статуса заявления
"closed": false, // Флаг наличия финального статуса
"hasResult": false, // Флаг передачи файла в ответ на заявление
"orderAttachmentFiles": [ // Файлы заявления, отправленные пользователем
{
"id": "1230254874/files/mzXxRzhkODcwOWRiLWRkNDUtNDEyOS1hZTMyLTZiNGNlZmVjYTkwYy54bWw", // Идентификатор файла
"fileName": "req_8d8567db-d445-4759-a122-6b4cefeca22c.xml", // Название файла
"mimeType": "application/xml", // MIME-тип
"link": "terrabyte://00/1230254874/req_8d8567db-d445-4759-a122-6b4cefeca22c.xml/2", // Ссылка на файл в хранилище
"hasDigitalSignature": false, // Наличие подписи
"fileSize": 5519, // Наличие подписи
"type": "REQUEST" // Наличие подписи
},
{
"id": "1230254874/files/dHJhbnNYTRQ4NzA5ZGItZGQ0NS95MTI5LWFlMzItNmI0Y2VmZWNhOTBjLnhtbA",
"fileName": "trans_8d8567db-d445-4759-a122-6b4cefeca22c.xml",
"mimeType": "application/xml",
"link": "terrabyte://00/1230254874/trans_8d8567db-d445-4759-a122-6b4cefeca22c.xml/2",
"hasDigitalSignature": false,
"fileSize": 644,
"type": "ATTACHMENT"
}
],
"orderResponseFiles": [], // Информация о файлах в ответе заявления
////
// Дополнительные аттрибуты
////
"hasNewStatus": true, // Флаг нового статуса для заявления
"currentStatusHistoryId": 12300710522, // Идентификатор статуса заявления
"orderStatusName": "Заявление получено ведомством", // Наименование статуса заявления
"stateOrgId": 266, // Код ведомства
"stateStructureName": "СФР", // Наименование ведомства
"stateOrgCode": "pfr", // Сокращенное наименование ведомства
"stateStructureId": "10000002796", // Код ведомства [по ФРГУ]
"gisdo": false, // Признак подключенности ведомства к ФГИС ДО
"sourceSystem": "Банк ЮЖНЫЙ", // Наименование системы откуда было подано заявление [мнемоника ИС-потребителя API ЕПГУ]
"creationMode": "api", // Режим создания
"extSystem": false, // Признак, что создано внешней системой (через сервис ЕЛК)
"ownerId": 1000572618, // Идентификатор пользователя [OID на Госуслугах / ЕСИА]
"userId": 1000572618, // Идентификатор пользователя [OID на Госуслугах / ЕСИА]
"personType": "PERSON", // Тип пользователя
"userSelectedRegion": "00000000000", // Код ОКАТО местоположения пользователя
"testUser": false, // Флаг тестового пользователя
"location": "92000000000", // Код уровня услуги [ОКАТО пользователя?]
"orderType": "ORDER", // Тип заявления
"eserviceId": "10000000109", // Идентификатор формы заявления
"serviceTargetId": "-10000000109", // Идентификатор цели
"servicePassportId": "600109", // Идентификатор паспорта услуги
"serviceName": "Доставка пенсии и социальных выплат СФР", // Наименование цели
"deprecatedService": false, // Признак, что услуга больше не заказывается
"hubForm": false, // Признак, что форма-концентратор
"admLevelCode": "FEDERAL", // Уровень услуги (региональный/федеральный)
"multRegion": true, // Признак регионозависимости
"serviceEpguId": "1", // Идентификатор цели услуги ЕПГУ
"formVersion": "1", // Версия
"possibleServices": {}, // [Не документировано]
"orderDate": "2023-11-02T07:27:22.000+0300", // Дата и время создания заявления
"requestDate": "2023-11-02T07:27:22.942+0300", // Метка даты и времени запроса
"orderAttributeEvents": [], // Атрибуты событий для заявления
"online": false, // Признак, онлайн услуга или нет
"hasTimestamp": false, // Флаг timestamp
"hasActiveInviteToEqueue": false, // Флаг записи на прием
"hasChildren": false, // Флаг наличия дочерних заявлений
"hasPreviewPdf": false, // Флаг наличия пдф
"hasEmpowerment2021": false, // Флаг наличия делегирования
"allowToEdit": false, // Флаг редактирования заявления
"allowToDelete": false, // Флаг удаления заявки
"draftHidden": false, // Признак скрытия черновика
"checkQueue": false, // Флаг проверки очереди
"eQueueEvents": [], // Массив объектов eQueueEvent [структура элемента массива не документирована]
"useAsTemplate": false, // Флаг черновика заявления
"withDelivery": false, // Флаг доставки
"withCustomResult": false, // Признак необходимости отображения кнопки в Деталях заявления услуги
"readyToPush": false, // Служебный параметр
"elk": false, // [Не документировано]
"smevTx": "e74bc34c-c156-8523-1234-e6c549a28e23", // Код транзакции СМЭВ3
"smevMessageId": "WAIT_RESPONSE", // Идентификатор СМЭВ-сообщения от ведомства, сменившего статус
"paymentRequired": false, // Флаг наличия оплаты
"noPaidPaymentCount": -1, // Количество неоплаченных платежей
"paymentCount": 0, // Количество платежей
"hasNoPaidPayment": false, // Флаг наличия оплаченного платежа
"paymentStatusEvents": [], // Статус событий при оплате [структура события оплаты не документирована]
"orderPayments": [], // Информация о платежах [структура объекта платежа не документирована]
"payback": false, // Служебный параметр
"readyToSign": false, // Для ЮЛ, для подписания заявки, Маркер ожидания УКЭП
"signCnt": 0, // Кол-во подписей, для заявлений от нескольких заявителей
"allFileSign": false, // Флаг наличия ЭП для файлов
"childrenSigned": false, // Флаг подписи дочерних заявлений
"edsStatus": "EDS_NOT_SUPPORTED", // Идентификатор статуса проверки ЭП
"infoMessages": [], // Информация о сообщениях [структура объекта сообщения не документирована]
"textMessages": [], // Информация о сообщениях [структура объекта текстового сообщения не документирована]
"unreadMessageCnt": 0, // unreadMessageCnt
"qrlink": { // [Не документировано]
"hasAltMimeType": false, // Связанно с alternativeMimeTypes из сервиса тербайта
"fileSize": 0, // Размер файла
"hasDigitalSignature": false, // Флаг наличия ЭП
"canSentToMFC": false, // Флаг отправки в МФЦ
"canPrintMFC": false // [Не документировано]
},
"steps": [] // [Не документировано]
}
type OrderInfo ¶
type OrderInfo struct {
Code string // Код состояния заявления в соответствии с Приложением 1 Спецификации
Message string // Текстовое сообщение, описывающее текущее состояние запроса на создание заявления
MessageId string // [Не документировано, GUID]
Order *OrderDetails // Детали заявления, если оно уже создано на портале и отправлено в ведомство
}
OrderInfo - детальная информация по отправленному заявлению метода Client.OrderInfo.
Подробнее см "Спецификация API ЕПГУ версия 1.12", раздел "2.4. Получение деталей по заявлению".
Пример для заявления "Доставка пенсии и социальных выплат СФР" (10000000109):
{
"code": "OK",
"message": null,
"messageId": "2252fb21-92f8-61ee-a6f0-7ed53c117861",
"order": {...}
}
type OrderMeta ¶
type OrderMeta struct {
Region string // Код интерактивной формы на ЕПГУ
ServiceCode string // Код цели обращения услуги в ФРГУ
TargetCode string // Код ОКАТО местоположения пользователя (можно передавать код ОКАТО региона, если невозможно определить точнее)
}
OrderMeta - метаданные создаваемого заявления.
type OrderQrlink ¶
type OrderQrlink struct {
HasAltMimeType bool `json:"hasAltMimeType"` // Связанно с alternativeMimeTypes из сервиса тербайта
FileSize int `json:"fileSize"` // Размер файла
HasDigitalSignature bool `json:"hasDigitalSignature"` // Флаг наличия ЭП
CanSentToMFC bool `json:"canSentToMFC"` // Флаг отправки в МФЦ
CanPrintMFC bool `json:"canPrintMFC"` // [Не документировано]
}
OrderQrlink - не документированное поле структуры OrderDetails метода Client.OrderInfo.
Подробнее см "Спецификация API ЕПГУ версия 1.12", раздел "2.4. Получение деталей по заявлению".
type OrderResponseFile ¶
type OrderResponseFile struct {
Id string `json:"id"` // Идентификатор файла
FileName string `json:"fileName"` // Наименование файла
MimeType string `json:"mimeType"` // MIME-тип файла
Link string `json:"link"` // Ссылка на файл в TERRABYTE
HasDigitalSignature bool `json:"hasDigitalSignature"` // Флаг наличия ЭП к файлу
HasAltMimeType bool `json:"hasAltMimeType"` // Флаг наличия альтернативного MIME-типа
EdsStatus string `json:"edsStatus"` // Статус проверки ЭП в EDS
FileSize int `json:"fileSize"` // Размер файла
}
OrderResponseFile - информация о файле в ответе заявления из структуры OrderDetails.
Подробнее см "Спецификация API ЕПГУ версия 1.12", раздел "2.4. Получение деталей по заявлению".
type OrderStatus ¶
type OrderStatus struct {
Id int `json:"id"` // Идентификатор статуса
StatusId int `json:"statusId"` // Код статуса
Title string `json:"title"` // Наименование статуса
Date DateTime `json:"date"` // Дата и время смены статуса
OrderId int `json:"orderId"` // Номер заявления
FinalStatus bool `json:"finalStatus"` // Флаг финального статуса
HasResult string `json:"hasResult"` // Флаг передачи файла в ответ на заявление
CancelAllowed bool `json:"cancelAllowed"` // Флаг возможности отменить заявление
Sender string `json:"sender,omitempty"` // Отправитель СМЭВ-сообщения о смене статуса
Comment string `json:"comment,omitempty"` // Комментарий к статусу
StateOrgStatusCode string `json:"stateOrgStatusCode,omitempty"` // Код ведомственного статуса
StateOrgStatusDescr string `json:"stateOrgStatusDescr,omitempty"` // Наименование ведомственного статуса
UnreadEvent bool `json:"unreadEvent"` // Признак прочтения
DeliveryCancelAllowed bool `json:"deliveryCancelAllowed"` // Флаг наличия отмены доставки
SendMessageAllowed bool `json:"sendMessageAllowed"` // Признак разрешения отправки сообщения
EditAllowed bool `json:"editAllowed"` // Признак редактирования
Mnemonic string `json:"mnemonic,omitempty"` // Мнемоника ИС отправителя
StatusColorCode string `json:"statusColorCode"` // [Не документировано]
}
OrderStatus - статусы заявления структуры OrderDetails метода Client.OrderInfo.
type OrderStatusHistory ¶
type OrderStatusHistory struct {
Id int `json:"id"` // Идентификатор статуса
StatusId int `json:"statusId"` // Код статуса
Title string `json:"title"` // Наименование статуса
Date DateTime `json:"date"` // Дата и время смены статуса
OrderId int `json:"orderId"` // Номер заявления
FinalStatus bool `json:"finalStatus"` // Флаг финального статуса
HasResult string `json:"hasResult"` // Флаг передачи файла в ответ на заявление
CancelAllowed bool `json:"cancelAllowed"` // Флаг наличия отмены
Sender string `json:"sender,omitempty"` // Наименование ведомства
Comment string `json:"comment,omitempty"` // Комментарий
StateOrgStatusCode string `json:"stateOrgStatusCode,omitempty"` // Код ведомственного статуса
StateOrgStatusDescr string `json:"stateOrgStatusDescr,omitempty"` // Наименование ведомственного статуса
StatusColorCode string `json:"statusColorCode"` // [Не документировано]
UnreadEvent bool `json:"unreadEvent"` // Признак прочтения события
DeliveryCancelAllowed bool `json:"deliveryCancelAllowed"` // Флаг наличия отмены доставки
SendMessageAllowed bool `json:"sendMessageAllowed"` // Признак разрешения отправки сообщения
EditAllowed bool `json:"editAllowed"` // Признак редактирования
}
OrderStatusHistory - история статуса заявления структуры OrderDetails метода Client.OrderInfo.
Подробнее см "Спецификация API ЕПГУ версия 1.12", раздел "2.4. Получение деталей по заявлению".
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
esia
|
|
|
aas
OAuth2-клиент для запроса согласия и маркера доступа ЕСИА для получателей услуг ЕПГУ — физических лиц.
|
OAuth2-клиент для запроса согласия и маркера доступа ЕСИА для получателей услуг ЕПГУ — физических лиц. |
|
signature
Провайдеры электронной подписи запросов к ЕСИА.
|
Провайдеры электронной подписи запросов к ЕСИА. |
|
examples
|
|
|
esia-token-request
command
Пример запроса согласия у пользователя и получения маркера доступа ЕСИА для работы с API Госуслуг (АПИ ЕПГУ).
|
Пример запроса согласия у пользователя и получения маркера доступа ЕСИА для работы с API Госуслуг (АПИ ЕПГУ). |
|
esia-token-update
command
Пример обновления маркера доступа ЕСИА для работы с API Госуслуг (АПИ ЕПГУ).
|
Пример обновления маркера доступа ЕСИА для работы с API Госуслуг (АПИ ЕПГУ). |
|
order-info
command
Пример получения детальной информации по отправленному заявлению.
|
Пример получения детальной информации по отправленному заявлению. |
|
order-push-chunked
command
Пример создания заявления и загрузки архива по частям.
|
Пример создания заявления и загрузки архива по частям. |
|
services
|
|
|
sfr
Услуги и типы данных СФР.
|
Услуги и типы данных СФР. |
|
sfr/zdp-10000000109
Услуга "Доставка пенсии и социальных выплат ПФР"
|
Услуга "Доставка пенсии и социальных выплат ПФР" |
|
Утилиты.
|
Утилиты. |