Доступ к API
Для успешного вызова методов API необходимы:
- Корректные заголовки Accept и Content-Type. API поддерживает только один MIME-тип: application/json. Любое другое значение приведет к ошибке формата данных.
- URL, составленный согласно требованиям к нужному запросу.
- OAuth-токен, выданный вам для доступа к API. Получить токен можно в личном кабинете администратора Вашего комплекта.
Полученный токен следует передавать в заголовке Authorization при каждом вызове API, указывая тип токена Bearer перед его значением. Пример получения такого заголовка:
1. Вы запрашиваете токен у обслуживающей организации, в ответ на email придет токен, представляющий собой строку:
U1QtOTkwMTAyLWNud3FpdWhmbzg3M
2. Токен добавляется в заголовок
Authorization: Bearer
3. Итоговый заголовок, добавляемый в каждый запрос к API:
Authorization: Bearer U1QtOTkwMTAyLWNud3FpdWhmbzg3M
Методы API
Базовый адрес для Гарант. Интернет версии - это https://api.garant.ru. Для Интранет версии базовый адрес совпадает с адресом вашего сервера. Все примеры ниже даны для Интернет версии.
Методы API доступны и в Интернет версии и в ИнтрАнет. Таблица доступности:
|
Метод |
Интернет-версия |
Интранет-версия |
|
Поиск |
доступна |
доступна |
|
Простановка ссылок |
доступна |
недоступна |
|
Экспорт документа |
доступна |
недоступна |
|
Документы на контроле |
доступна |
недоступна |
|
Список категорий |
доступна |
недоступна |
|
Лента Прайм |
доступна |
недоступна |
Ограничения
На вызовы методов накладываются следующие ограничения:
- количество запросов по методам Постановка ссылок и Документы на контроле не может суммарно превышать 1000 за календарный месяц
- нельзя экспортировать более 30 документов за календарный месяц
- поставить на контроль можно не более 100 документов за один вызов
- размер текста для простановки ссылок не может превышать 20Мб
- в методе Лента Прайм нельзя запросить новости старше одного года
- количество запросов по методу Информация о документе не может превышать 300 за календарный месяц
Поиск
Позволяет провести поиск по документам в комплекте, с которым связан токен аутентификации.
Запрос
POST
URL: https://api.garant.ru/v1/search
HEADERS:
- Accept: application/json
- Content-type: application/json
- Authorization: Bearer ***
ПАРАМЕТРЫ
Параметры передаются в теле запроса в формате JSON. Все параметры обязательны. Строковые значения передаются в кодировке UTF-8.
|
Параметр |
Тип |
Описание |
|
text |
String |
Поисковая фраза |
|
count |
Integer |
Максимальное количество документов в ответе. Целое число от 1 до 30. Любое другое число будет проигнорировано и заменено на 1 |
|
kind |
String Array |
Массив строк, содержащие коды типов правовой информации среди которых выполнять поиск. Пустой массив приведет к поиску по всем документам, кроме пользовательских. Коды:
|
|
sort |
Integer |
Значение для сортировки:
|
|
sortOrder |
Integer |
Направление сортировки:
|
Пример:
| { "text": "44-фз о контрактной системе", "count": 30, "kind": ["001", "002"], "sort": 0, "sortOrder": 0 } |
Ответ
Успешный JSON-ответ содержит список найденных документов. Или пустой список если ничего не найдено.
|
Параметр |
Тип |
Описание |
|
documents |
Object Array |
Массив найденных документов |
|
documents[].name |
String |
Имя документа |
|
documents[].url |
String |
Относительная ссылка на документ, чтобы получить абсолютную ссылку нужно добавить вначале https://internet.garant.ru или свой адрес сервера, если вызов выполняется через API Гарант. Интранет-версии |
|
documents[].topic |
Integer |
Внутренний номер документа, который может быть использован в других функциях API, например в Экспорт документа |
Пример:
| { "documents": [{ "name": "Постановление Администрации Бологовского района Тверской области от 24 декабря 2018 г. N 251-п \"О внесении изменений в постановление Администрации муниципального образования \"Бологовский район\" Тверской области от 17.12.2014 N 272-п\"", "url": "/#/document/16379553", "topic": 16379553 }, { "name": "Предписание Управления Федеральной антимонопольной службы по Москве от 21 января 2019 г. по делу N 2-57-611/77-19", "url": "/#/document/75323053", "topic": 75323053 }] } |
Простановка ссылок
Позволяет найти и расставить ссылки на нормативные документы в переданном фрагменте текста.
Запрос
POST
URL: https://api.garant.ru/v1/find-hyperlinks
HEADERS:
- Accept: application/json
- Content-type: application/json
- Authorization: Bearer ***
ПАРАМЕТРЫ
Параметры передаются в теле запроса в формате JSON. Все параметры, обязательны. Строковые значения передаются в кодировке UTF-8.
|
Параметр |
Тип |
Описание |
|
text |
String |
Фрагмент текста в формате plain text или html. Не более 20Мб |
|
baseUrl |
String |
Базовая часть url для создания ссылки. Например: https://internet.garant.ru |
Пример:
| { "text": "Настоящий Закон в соответствии с Федеральным законом от 29 декабря 2017 года N 443-ФЗ регулирует отдельные отношения, возникающие в процессе организации дорожного движения, а также при организации и осуществлении парковочной деятельности на территории Орловской области.", "baseUrl": "https://internet.garant.ru" } |
Ответ
Успешный JSON-ответ содержит фрагмент текст, переданного в запросе, в котором проставлены ссылки на нормативные акты.
|
Параметр |
Тип |
Описание |
|
text |
String |
Фрагмент текста в формате html, с расставленными ссылкам. Проставленные ссылки бывают только двух форматов:
|
Пример:
| { "text": "Настоящий Закон в соответствии с <a href=\"https://internet.garant.ru/#/document/71848756\">Федеральным _fcksavedurl=\"https://internet.garant.ru/#/document/71848756\">Федеральным законом</a> от 29 декабря 2017 года N 443-ФЗ регулирует отдельные отношения, возникающие в процессе организации дорожного движения, а также при организации и осуществлении парковочной деятельности на территории Орловской области." } |
Экспорт документа (rtf)
Позволяет получить текст документа в текстовом формате rtf.
Запрос
GET
URL: https://api.garant.ru/v1/topic/$topic/download
HEADERS:
- Authorization: Bearer ***
ПАРАМЕТРЫ
Параметры передаются в строке запроса и являются обязательными.
|
Параметр |
Тип |
Описание |
|
$topic |
Integer |
Внутренний номер документа, может быть получен из функции Поиска |
Пример cURL:
user@server:~$ curl "https://api.garant.ru/v1/topic/10103000/download"
--header "Authorization: Bearer xxxxYYYYzzzzz"
--output 10103000.rtf
Ответ
В случае успешного ответа файл сохранится на диск.
Экспорт документа (html)
Позволяет получить текст документа формате html, может включать комментарии юристов Гаранта.
Запрос
GET
URL: https://api.garant.ru/v1/topic/$topic/html
HEADERS:
- Authorization: Bearer ***
ПАРАМЕТРЫ
Параметры передаются в строке запроса и являются обязательными.
|
Параметр |
Тип |
Описание |
|
$topic |
Integer |
Внутренний номер документа, может быть получен из функции Поиска |
Ответ
Успешный JSON-ответ содержит массив страниц документа.
|
Параметр |
Тип |
Описание |
|
items |
Object Array |
Массив страниц документа |
|
items[].number |
Integer |
Номер страницы |
|
items[].text |
String |
Текст страницы в формате html |
Пример:
|
{ "items": [{ "number:": 1, "text": "<p id=\"p_521837163\" class=\"s_3\">Гражданский кодекс Российской Федерации<br/>..." }, { "number:": 2, "text": "<div class=\"block\" data-relativeBlockId=\"10000\"><div class=\"block\"..." } ] } |
Экспорт документа (odt)
Позволяет получить текст документа в текстовом формате odt.
Запрос
GET
URL: https://api.garant.ru/v1/topic/$topic/download-odt
HEADERS:
Authorization: Bearer ***
ПАРАМЕТРЫ
Параметры передаются в строке запроса и являются обязательными.
|
Параметр |
Тип |
Описание |
|
$topic |
Integer |
Внутренний номер документа, может быть получен из функции Поиска |
Пример cURL:
user@server:~$ curl "https://api.garant.ru/v1/topic/10103000/download-odt"
--header "Authorization: Bearer xxxxYYYYzzzzz"
Ответ
В случае успешного ответа файл сохранится на диск.
Экспорт документа (pdf)
Позволяет получить текст документа в текстовом формате pdf.
Запрос
GET
URL: https://api.garant.ru/v1/topic/$topic/download-pdf
HEADERS:
Authorization: Bearer ***
ПАРАМЕТРЫ
Параметры передаются в строке запроса и являются обязательными.
|
Параметр |
Тип |
Описание |
|
$topic |
Integer |
Внутренний номер документа, может быть получен из функции Поиска |
Пример cURL:
user@server:~$ curl "https://api.garant.ru/v1/topic/10103000/download-pdf"
--header "Authorization: Bearer xxxxYYYYzzzzz"
Ответ
В случае успешного ответа файл сохранится на диск.
Документы на контроле
Позволяет определить наличие изменений в тексте нормативного документа начиная с указанной даты.
Запрос
POST
URL: https://api.garant.ru/v1/find-modified
HEADERS:
- Authorization: Bearer ***
ПАРАМЕТРЫ
Параметры передаются в теле запроса в формате JSON. Все параметры обязательны. Строковые значения передаются в кодировке UTF-8.
|
Параметр |
Тип |
Описание |
|
topics |
String Array |
Массив внутренних номеров документов для которых надо проверить наличие изменений. Не больше 100 номеров в одном запросе, если больше 100 вернется код ошибки 400 |
|
modDate |
String Date |
Дата, начиная с которой будут проверяться переданные документов на наличие изменений текста. Не может быть старше месяца от текущей даты. Формат даты ГГГГ-ММ-ДД |
Пример:
|
{ |
Ответ
Успешный JSON-ответ содержит массив документов из запроса, но только те, в которых произошли изменения.
|
Параметр |
Тип |
Описание |
|
topics |
Object Array |
Массив документов из запроса |
|
topics[].topic |
Integer |
Внутренний номер документа |
|
topics[].modStatus |
Integer |
Статус изменения:
|
Пример:
|
{ |
Фрагменты на контроле
Позволяет определить наличие изменений во фрагменте текста нормативного документа начиная с указанной даты. Фрагмент определяется ссылкой, которую можно вручную скопировать из браузера при просмотре нужного документа в Системе ГАРАНТЗапрос
POST
URL: https://api.garant.ru/v1/block-on-control/changed
HEADERS:
Accept: application/json
Content-type: application/json
Authorization: Bearer ***
ПАРАМЕТРЫ
Параметры передаются в теле запроса в формате JSON. Все параметры обязательны.
|
Параметр |
Тип |
Описание |
|
fromDate |
String Date |
Дата, начиная с которой будут проверяться переданные фрагменты на изменения текста. Формат даты ГГГГ-ММ-ДД Не может быть ранее 01.01.2018 |
|
urlArray |
String Array |
Массив ссылок на фрагменты, которые надо проверить на изменения. Ссылки могут включать только документы из комплекта Законодательство России. |
Пример:
{
"fromDate": "2019-10-15",
"urlArray": [
"http://internet.garant.ru/#/document/77675772/entry/4001",
"http://internet.garant.ru/#/document/77675772/entry/15",
"http://internet.garant.ru/#/document/77675772/entry/194"
]
}
Ответ
Успешный JSON-ответ содержит список ссылок, в которых произошли изменения
|
Параметр |
Тип |
Описание |
|
urlArray |
Object Array |
Массив ссылок, которые менялись |
|
urlArray[].url |
String |
Ссылка из запроса |
|
urlArray[].modStatus |
Integer |
Статус изменения: 1 - изменился 2 - не найден |
Пример:
{
"urlArray": [{
"url": "http://internet.garant.ru/#/document/77675772/entry/4001",
"modStatus": 1
}]
}
Список категорий для Ленты Прайм
Вернет список тематических категорий, которые можно использовать для уточнения по каким темам должна формироваться лента прайм (см. функцию Лента Прайм).
Запрос
GET
URL: https://api.garant.ru/v1/prime
HEADERS:
- Accept: application/json
- Content-type: application/json
- Authorization: Bearer ***
Ответ
Успешный JSON-ответ содержит дерево тематических категорий.
|
Параметр |
Тип |
Описание |
|
categories |
Object array |
Список категорий первого уровня |
|
categories[].text |
String |
Название категории |
|
categories[].children |
Object array |
Список категорий второго уровня. Может отсутствовать. |
|
categories[].id |
Integer |
Идентификатор категории, используется в методе Лента Прайм. На категориях первого уровня отсутствует. |
Пример:
|
{ "categories": [{ "text": "Вид информации", "children": [{ "text": "Федеральное законодательство и проекты федеральных законов", "id": 24 }, { "text": "Региональное законодательство", "children": [{ "text": "г.Москва", "id": 142 }], "id": 33 }], "id": 1008 }, { "text": "Ваша профессия", "children": [{ "text": "Руководитель", "id": 144 }], "id": 1004 }] } |
Лента Прайм
Возвращает ленту новостей Прайм в формате JSON.
Запрос
POST
URL: https://api.garant.ru/v1/prime/create-news
HEADERS:
- Accept: application/json
- Content-type: application/json
- Authorization: Bearer ***
ПАРАМЕТРЫ
Параметры передаются в теле запроса в формате JSON. Все параметры обязательны. Строковые значения передаются в кодировке UTF-8.
|
Параметр |
Тип |
Описание |
|
categories |
Integer Array |
Список ID категорий, по которым будет сформирована лента новостей. Не допускается передача пустого списка - это приведет к ошибке с кодом 400. |
|
fromDate |
String Date |
Дата, начиная с которой будет сформирован список новостей. Формат даты ГГГГ-ММ-ДД. |
Пример:
|
{ "fromDate": "2019-11-01", "categories": [1, 2, 3, 4, 5] } |
Ответ
Успешный JSON-ответ содержит список новостей. Или пустой список если ничего не найдено.
|
Параметр |
Тип |
Описание |
|
news |
Object array |
Массив найденный новостей |
|
news[].name |
String |
Заголовок новости |
|
news[].document |
Object |
Документ, анонсированный в новости |
|
document.url |
String |
Относительная ссылка на документ, чтобы получить абсолютную ссылку нужно добавить вначале https://internet.garant.ru для коммерческих пользователей или https://ivo.garant.ru для некоммерческих |
|
document.topic |
Integer |
Внутренний номер документа, который может быть использован в других функциях API, например в Экспорт документа |
|
document.name |
String |
Имя документа |
|
news[].paragraphs |
String array |
Список текстов параграфов, из которых состоит новость |
Пример:
|
{ "news": [{ "name": "Городские округа с внутригородским делением", "document": { "url": "/#/document/72957500", "topic": 72957500, "name": "Городские округа с внутригородским делением в муниципально-территориальном устройстве" }, "paragraphs": ["Городские округа с внутригородским делением", "В статье проводится правовой анализ изменений"] }] } |
Информация о документе
Возвращает атрибуты документа
Запрос
GET
URL: https://api.garant.ru/v1/topic/$topic
HEADERS:
Accept: application/json
Content-type: application/json
Authorization: Bearer ***
ПАРАМЕТРЫ
Параметры передаются в строке запроса и являются обязательными.
|
Параметр |
Тип |
Описание |
|
$topic |
Integer |
Внутренний номер документа, может быть получен из функции Поиска |
Успешный JSON-ответ содержит атрибуты документа
|
Параметр |
Тип |
Описание |
|
url |
String |
Относительная ссылка на документ, чтобы получить абсолютную ссылку нужно добавить вначале https://internet.garant.ru для коммерческих пользователей или https://ivo.garant.ru для некоммерческих |
|
topic |
Integer |
Внутренний номер документа, который может быть использован в других функциях API, например в Экспорт документа |
|
name |
String |
Имя документа |
|
type |
Array |
Список типов документов (напр. Приказ) |
|
adopted |
String |
Орган\источник |
|
class |
String |
Тема |
|
date |
String |
Дата |
|
number |
Array |
Список номеров |
|
rdate |
String |
Дата регистрации |
|
rcode |
String |
Регистрационный номер |
|
rstatus |
String |
Статус регистрации |
|
category |
String |
Значимость |
|
status |
String |
Статус |
|
kind |
String |
Вид информации |
|
territory |
String |
Территория |
|
segment |
String |
Информационный блок |
Пример:
{
"url": "/#/document/72957500",
"topic": 72957500,
"name": "Городские округа с внутригородским делением в муниципально-территориальном устройстве",
"type": ["Акт"],
"adopted": "Референдум Российской Федерации",
"class": "Основы государственно-правового устройства\\Основы конституционного строя",
"date": "01.01.2001",
"number": ["0"],
"rdate": "01.01.2001",
"rcode": "01",
"rstatus": "Иные",
"category": "Общие",
"status": "Действующие",
"kind": "Комментарии",
"territory": "Российская Федерация",
"segmentK3": "Практика высших судебных органов"
}
Коды ошибок
В случае ошибки API возвращается HTTP-код ошибки.
|
HTTP Код |
Метод API |
Описание |
|
400 |
Все |
Ошибка синтаксиса запроса (неправильный формат данных) |
|
400 |
Документы на контроле |
В запросе передано больше 100 документов для проверки |
|
400 |
Лента прайм |
Переданная дата больше чем на один год отличается от текущей или разница между fromDate и toDate более 10 дней |
|
401 |
Все |
Неверный токен авторизации или истек срок действия токена |
|
403 |
Все |
Нет прав на данный запрос (недостаточно разрешений у токена) |
|
404 |
Экспорт документа, Документы на контроле |
Документ не найден |
|
404 |
Лента прайм |
Не найдена категория, переданная в запросе |
|
423 |
Простановка ссылок, Документы на контроле |
Суммарное количество запросов по двум методам превысило 1000 с начала календарного месяца |
|
423 |
Экспорт документа |
Количество запросов превысило 30 с начала календарного месяца |
|
423 |
Информация о документе |
Количество запросов превысило 300 с начала календарного месяца |
|
429 |
Все |
Слишком много запросов, сервис временно недоступен |
Примеры поиска с помощью языка запросов
В этом разделе приводится описание возможности поиска документов по значениям разных реквизитов. Для этих целей разработан специальный язык запросов, на котором необходимо описывать строку для поиска - поле text - в методе API Поиск.
Поиск по номеру
{
"text": "& BOOL(| CasesNumber(001/20-П))",
"count": 30,
"isQuery": true,
"kind": ["003"],
"sort": 0,
"sortOrder": 0
}
Поиск по словам в тексте
{
"text": "& BOOL(& MorphoText(налог))",
"count": 30,
"isQuery": true,
"kind": ["001", "002", "003"],
"sort": 0,
"sortOrder": 0
}
Поиск по дате
{
"text": "& BOOL(Date(20.01.2022;26.01.2022))",
"count": 30,
"isQuery": true,
"kind": ["001","002","003"],
"sort": 0,
"sortOrder": 0
}
Поиск по словам в названии
{
"text": "& BOOL(& MorphoName(Конституция))",
"count": 30,
"isQuery": true,
"kind": ["001","002","003"],
"sort": 0,
"sortOrder": 0
}
Поиск по типу
{
"text": "& BOOL(| Type(Аттестат))",
"count": 30,
"isQuery": true,
"kind": ["001","002","003"],
"sort": 0,
"sortOrder": 0
}
Поиск по органу государственной власти
{
"text": "& BOOL(| Adopted(Органы власти г. Москвы))",
"count": 30,
"isQuery": true,
"kind": ["001","002","003"],
"sort": 0,
"sortOrder": 0
}
Поиск по дате регистрации в Минюсте
{
"text": "& BOOL(RDate(20.01.2022;26.01.2022))",
"count": 30,
"isQuery": true,
"kind": ["001","002","003"],
"sort": 0,
"sortOrder": 0
}
{
"text": "& BOOL(| Type(Акт)) & BOOL(| Number(44))",
"count": 30,
"isQuery": true,
"kind": ["001","002","003"],
"sort": 0,
"sortOrder": 0
}