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, meta OrderMeta, 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 ¶
func (c *Client) OrderPushChunked(token string, orderId int, meta OrderMeta, archive *Archive) error
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
Пример запроса согласия у пользователя и получения маркера доступа ЕСИА для работы с API Госуслуг (АПИ ЕПГУ).
|
Пример запроса согласия у пользователя и получения маркера доступа ЕСИА для работы с API Госуслуг (АПИ ЕПГУ). |
esia-token-update
Пример обновления маркера доступа ЕСИА для работы с API Госуслуг (АПИ ЕПГУ).
|
Пример обновления маркера доступа ЕСИА для работы с API Госуслуг (АПИ ЕПГУ). |
order-info
Пример получения детальной информации по отправленному заявлению.
|
Пример получения детальной информации по отправленному заявлению. |
order-push-chunked
Пример создания заявления и загрузки архива по частям.
|
Пример создания заявления и загрузки архива по частям. |
services
|
|
sfr
Услуги и типы данных СФР.
|
Услуги и типы данных СФР. |
sfr/10000000109-zdp
Услуга "Доставка пенсии и социальных выплат ПФР"
|
Услуга "Доставка пенсии и социальных выплат ПФР" |
Утилиты.
|
Утилиты. |