АПИ для перерывов судебных заседаний арбитражных судов — recess.arbitr.ru

Методы RecessArbitr позволяют получить объявления о перерывах судебных заседаний с recess.arbitr.ru: выбрать суд, прочитать записи о перерывах и проверить полный номер дела. Доступны справочник судов, фоновые задачи сбора и постраничное чтение сохранённых снимков.

Подключение

Базовый адрес — https://api-sudodelo.torkndgov.ru. Во всех семи методах передавайте обычный пользовательский apiKey в query. Дополнительные ключи и групповые права не нужны. Инструкция: Открытое API системы СУДиДЕЛО. Полные русские схемы: Swagger, RecessArbitr.

Поля ответа записаны в snake_case. В запросе поиска дела используется caseNumber, а в JSON-теле запроса суда — court_id. Примеры curl рассчитаны на Bash. Замените YOUR_API_KEY своим ключом; COURT_ID, JOB_ID, SNAPSHOT_ID и NEXT_CURSOR — значениями предыдущих ответов. Это обозначения, а не реальные идентификаторы.

Как получить перерывы суда

  1. Вызовите POST /courts/query. При 200 получите страницу справочника; при 202 — задачу сбора.
  2. При 202 читайте status_url с вашим apiKey. Учитывайте Retry-After, если он присутствует. Дождитесь status=succeeded и доступного результата, затем прочитайте result_url.
  3. Найдите суд в справочнике и возьмите data.courts[].id. Для поиска по части названия используйте GET /courts?search=….
  4. Передайте ID в POST /recesses/query: {"court_id":"COURT_ID"}. Здесь также возможны 200 или 202.
  5. Читайте data.records. Для следующей страницы используйте meta.next_cursor, сохраняя тот же снимок и limit. Остановитесь при next_cursor=null.

В этом сценарии короткие пути указаны относительно /api/RecessArbitr. Снимок — неизменяемый результат одного успешного сбора; его свежесть ограничена 24 часами. Пустой список перерывов в полном снимке допустим.

1. Получить или собрать справочник судов

POST /api/RecessArbitr/courts/query?apiKey=YOUR_API_KEY

Тело не требуется. HTTP 200 содержит снимок, HTTP 202 — созданную задачу или уже активную задачу, к которой присоединён запрос. Полный результат кешируется на 24 часа. Поиск search здесь не применяется.

Поле / параметрОписание
limitРазмер страницы от 1 до 1000, по умолчанию 100. При продолжении по курсору сохранять прежнее значение. Необязательный.
cursorНепрозрачный курсор из meta.next_cursor предыдущей страницы. Не изменять; передавать с теми же limit и search. Для первой страницы не задавать. Необязательный.
curl --fail-with-body --request POST "https://api-sudodelo.torkndgov.ru/api/RecessArbitr/courts/query?apiKey=YOUR_API_KEY&limit=100"

2. Прочитать справочник судов

GET /api/RecessArbitr/courts?apiKey=YOUR_API_KEY

Читает сохранённый справочник. search ищет по части названия без учёта регистра. При 409 CATALOG_NOT_READY сначала вызовите POST /courts/query.

Поле / параметрОписание
limitРазмер страницы от 1 до 1000, по умолчанию 100. При продолжении по курсору сохранять прежнее значение. Необязательный.
cursorНепрозрачный курсор из meta.next_cursor предыдущей страницы. Не изменять; передавать с теми же limit и search. Для первой страницы не задавать. Необязательный.
searchЛокальный поиск по части названия суда без учёта регистра. Фильтрует справочник; сохранять при переходе по курсору. Не запускает поиск произвольного сайта. Необязательный.
curl --fail-with-body --get "https://api-sudodelo.torkndgov.ru/api/RecessArbitr/courts" \
  --data-urlencode "apiKey=YOUR_API_KEY" \
  --data-urlencode "limit=100" \
  --data-urlencode "search=Москвы"

3. Получить перерывы суда

POST /api/RecessArbitr/recesses/query?apiKey=YOUR_API_KEY

Обязательно JSON-тело с единственным полем court_id (строка длиной 1–150 символов). Возьмите ID из data.courts[].id, не из source_id или search_value. Дополнительные поля тела не принимаются. Ответ: 200 — страница снимка, 202 — задача.

Поле / параметрОписание
limitРазмер страницы от 1 до 1000, по умолчанию 100. При продолжении по курсору сохранять прежнее значение. Необязательный.
cursorНепрозрачный курсор из meta.next_cursor предыдущей страницы. Не изменять; передавать с теми же limit и search. Для первой страницы не задавать. Необязательный.
curl --fail-with-body --request POST "https://api-sudodelo.torkndgov.ru/api/RecessArbitr/recesses/query?apiKey=YOUR_API_KEY&limit=100" \
  --header "Content-Type: application/json" \
  --data '{"court_id":"COURT_ID"}'

4. Проверить перерывы по номеру дела

GET /api/RecessArbitr/recesses/by-case?apiKey=YOUR_API_KEY

Точный поиск по свежему кешу всех активных судов. Пробелы, регистр, А/A и варианты дефиса нормализуются. Метод сам не запускает сбор; кеш обновляет ежедневный планировщик. Возвращает все совпадения без пагинации. Пример номера ниже иллюстрирует формат и не обещает наличия перерыва.

Поле / параметрОписание
caseNumberПолный номер судебного дела длиной до 150 символов, например А40-12345/2026. Точное совпадение после удаления пробелов, выравнивания регистра, А/A и дефисов; номер с косой чертой передаётся query-параметром. Обязательный.
curl --fail-with-body --get "https://api-sudodelo.torkndgov.ru/api/RecessArbitr/recesses/by-case" \
  --data-urlencode "apiKey=YOUR_API_KEY" \
  --data-urlencode "caseNumber=А40-12345/2026"

Как понимать результат поиска дела

Поле / параметрОписание
foundНайдена хотя бы одна запись. При meta.is_complete=false список совпадений может быть неполным.
not_foundСовпадений нет во всём свежем полном кеше. Это результат проверки сохранённых данных, а не обращение к сайту в реальном времени.
cache_incompleteОтсутствие перерывов подтвердить нельзя: справочник или снимки части судов отсутствуют либо устарели.

Не считайте found=false или пустой matches доказательством отсутствия перерывов при неполном кеше. Проверьте meta.is_complete, catalog_is_fresh, missing_court_ids и expired_court_ids. При необходимости запросите справочник через courts/query и снимки нужных судов через recesses/query.

Поле / параметрОписание
schema_versionВерсия схемы ответа: 1.0.
case_numberНомер судебного дела из запроса.
normalized_case_numberНомер после удаления пробелов, приведения регистра, буквы А/A и вариантов дефиса.
checked_atВремя проверки свежести кеша, UTC в формате ISO 8601.
foundНайдена хотя бы одна запись. При неполном кеше false не подтверждает отсутствие перерывов.
statusfound — найдены записи; not_found — нет во всём свежем кеше; cache_incomplete — отсутствие подтвердить нельзя.
metaПолнота проверки всех судов и причины неполного результата.
matchesВсе совпадения из свежих снимков активных судов, без ограничения размером страницы. Пустой список при неполном кеше не означает отсутствие перерывов.

Полнота поиска: meta

Поле / параметрОписание
is_completeПроверены все суды свежего справочника по свежим полным снимкам.
catalog_is_freshСправочник судов не старше 24 часов.
total_courtsКоличество судов в последнем опубликованном справочнике.
fresh_courtsКоличество судов с полными снимками не старше 24 часов.
missing_court_idsИдентификаторы судов, для которых ещё нет опубликованного снимка.
expired_court_idsИдентификаторы судов с устаревшими снимками; их записи в результат не включаются.

Элемент matches

Поле / параметрОписание
snapshot_idИдентификатор снимка, содержащего найденную запись.
collected_atВремя успешного сбора снимка, UTC в формате ISO 8601.
expires_atОкончание 24-часового срока свежести снимка, UTC в формате ISO 8601.
groupПолная группа объявления перерыва, включая дополнительные исходные поля.
recordПолная запись о перерыве: дело, суд, судьи, участники, дата, время и дополнительные поля источника.

5. Проверить задачу сбора

GET /api/RecessArbitr/jobs/{jobId}?apiKey=YOUR_API_KEY

HTTP 200 означает, что состояние задачи прочитано, а не что сбор завершился успешно. Идентификатор jobId берётся из job_id: 32 строчных шестнадцатеричных символа.

Поле / параметрОписание
jobIdИдентификатор задачи из job_id: 32 строчных шестнадцатеричных символа. Не идентификатор дела или суда. Обязательный.
curl --fail-with-body --get "https://api-sudodelo.torkndgov.ru/api/RecessArbitr/jobs/JOB_ID" \
  --data-urlencode "apiKey=YOUR_API_KEY"
Поле / параметрОписание
job_idИдентификатор задачи: 32 шестнадцатеричных символа.
statusСостояние: queued — в очереди, running — выполняется, retry_wait — ожидает повтора, succeeded — успешна, failed — ошибка.
status_urlОтносительная ссылка на состояние через Public API. При переходе добавить собственный apiKey.
created_atВремя создания задачи в ISO 8601 с часовым поясом.
started_atВремя первой попытки в ISO 8601; null до начала выполнения.
deadlineОбщий предельный момент выполнения в ISO 8601; null до первой попытки.
attemptsЧисло начатых попыток выполнения.
result_urlОтносительная ссылка на свежий результат через Public API или null. При переходе добавить apiKey.
result_availableДоступен ли свежий результат; после истечения TTL становится false даже у succeeded.
expires_atГраница свежести результата в ISO 8601 либо null, если результата ещё нет.
query_urlМетод POST для нового запроса ресурса после истечения срока; ссылка не содержит ключей.
errorПричина ошибки или ожидаемого повтора; null, если ошибки нет.

Состояния queued, running и retry_wait требуют дальнейшего ожидания; failed — проверки error. Даже у succeeded результат может истечь: проверьте result_available и expires_at. Для нового сбора используйте POST по query_url; для перерывов снова передайте court_id.

6. Прочитать снимок справочника

GET /api/RecessArbitr/snapshots/{snapshotId}/courts?apiKey=YOUR_API_KEY

Читает конкретный неизменяемый снимок справочника. snapshotId берётся из snapshot_id: 32 строчных шестнадцатеричных символа. Можно использовать search.

Поле / параметрОписание
snapshotIdИдентификатор опубликованного снимка из snapshot_id: 32 строчных шестнадцатеричных символа. Не менять в ходе постраничного обхода. Обязательный.
limitРазмер страницы от 1 до 1000, по умолчанию 100. При продолжении по курсору сохранять прежнее значение. Необязательный.
cursorНепрозрачный курсор из meta.next_cursor предыдущей страницы. Не изменять; передавать с теми же limit и search. Для первой страницы не задавать. Необязательный.
searchЛокальный поиск по части названия суда без учёта регистра. Фильтрует справочник; сохранять при переходе по курсору. Не запускает поиск произвольного сайта. Необязательный.
curl --fail-with-body --get "https://api-sudodelo.torkndgov.ru/api/RecessArbitr/snapshots/SNAPSHOT_ID/courts" \
  --data-urlencode "apiKey=YOUR_API_KEY" \
  --data-urlencode "limit=100"

7. Прочитать снимок перерывов

GET /api/RecessArbitr/snapshots/{snapshotId}/records?apiKey=YOUR_API_KEY

Читает страницу записей конкретного снимка перерывов. Порядок и повторы записей сохраняются. search для этого метода не применяется. При 410 повторите соответствующий POST query и начните обход нового снимка.

Поле / параметрОписание
snapshotIdИдентификатор опубликованного снимка из snapshot_id: 32 строчных шестнадцатеричных символа. Не менять в ходе постраничного обхода. Обязательный.
limitРазмер страницы от 1 до 1000, по умолчанию 100. При продолжении по курсору сохранять прежнее значение. Необязательный.
cursorНепрозрачный курсор из meta.next_cursor предыдущей страницы. Не изменять; передавать с теми же limit и search. Для первой страницы не задавать. Необязательный.
curl --fail-with-body --get "https://api-sudodelo.torkndgov.ru/api/RecessArbitr/snapshots/SNAPSHOT_ID/records" \
  --data-urlencode "apiKey=YOUR_API_KEY" \
  --data-urlencode "limit=100"

Ссылки, пагинация и срок действия

status_url, result_url, query_url и заголовок Location содержат относительные пути Public API без ключа. Добавьте базовый адрес и свой apiKey. Переход по ссылке без apiKey не авторизован. Для query_url используйте POST, а не обычный переход GET.

Размер страницы limit — от 1 до 1000, по умолчанию 100. Курсор длиной до 4096 символов берите только из meta.next_cursor и передавайте без изменений с прежними limit и search. Поиск search длиной до 300 символов поддерживается только GET-методами справочника. Для устойчивого обхода читайте страницы одного snapshot_id, а не меняющийся текущий результат.

curl --fail-with-body --get "https://api-sudodelo.torkndgov.ru/api/RecessArbitr/snapshots/SNAPSHOT_ID/records" \
  --data-urlencode "apiKey=YOUR_API_KEY" \
  --data-urlencode "limit=100" \
  --data-urlencode "cursor=NEXT_CURSOR"

При 410 SNAPSHOT_EXPIRED старый курсор не переключается на новый снимок: повторите query и начните с первой страницы. Cache-Control: no-store относится к HTTP-кешированию ответа и не отменяет 24-часовой кеш собранных данных.

Поля страницы снимка

Поле / параметрОписание
schema_versionВерсия формата JSON, сейчас 1.0.
queryПараметры запроса, по которому собран снимок.
snapshot_idИдентификатор снимка: 32 шестнадцатеричных символа. Все страницы относятся к одному снимку.
sourceАдрес исходного сайта.
metaСрок действия, полнота и постраничные счётчики результата.
dataПредметные данные текущей страницы: суды либо перерывы.

Метаданные страницы: meta

Поле / параметрОписание
served_from_cacheДанные страницы прочитаны из опубликованного снимка, обычно true.
collected_atМомент успешного завершения сбора в формате ISO 8601 с часовым поясом.
expires_atГраница свежести снимка в ISO 8601; после неё чтение возвращает 410.
is_completeПодтверждение полного сбора выдачи сайта; успешная страница содержит true.
source_pages_countЧисло страниц источника, обработанных при сборе всего снимка.
total_recordsЧисло записей полного ресурса с учётом фильтра, а не только этой страницы.
returned_recordsКоличество записей на текущей странице.
limitРазмер страницы от 1 до 1000; сохранять при передаче курсора.
next_cursorНепрозрачный подписанный курсор следующей страницы; null означает конец обхода.

meta.is_complete=true у страницы означает, что полностью собрана выдача источника для этого снимка; это не означает, что вся выдача уместилась на странице. Полнота поиска по всем судам в /by-case — отдельная проверка.

Суды: data.courts[]

Поле / параметрОписание
idСтабильный идентификатор суда для параметра court_id.
source_idИсходный код суда на сайте, если доступен.
nameПолное название суда.
search_valueИсходное значение для поиска на сайте; в обёртке запрос задаётся через court_id.
orderПорядковая позиция суда в справочнике источника.
extra_fieldsДополнительные предметные поля суда с исходными подписями.

Группы и записи перерывов

Поле / параметрОписание
groupsВсе группы снимка, включая пустые; число записей группы относится ко всему снимку.
recordsПерерывы текущей страницы; порядок и кратность строк сохранены.

Группа data.groups[]

Поле / параметрОписание
idИдентификатор группы в пределах снимка.
titleИсходный заголовок группы или null.
orderПорядковая позиция группы в выдаче.
total_recordsЧисло записей группы во всём снимке, а не только на текущей странице.
extra_fieldsДополнительные поля группы в исходном порядке.
announced_at_rawИсходная строка даты объявления группы, если присутствует в ответе сайта.

Запись data.records[] или matches[].record

Поле / параметрОписание
idИдентификатор строки в пределах снимка; одинаковые предметные строки могут иметь разные ID.
courtСуд, выбранный при сборе.
groupГруппа выдачи, к которой относится строка.
caseНомер, идентификатор и ссылка судебного дела.
recess_untilДата и время продолжения заседания, а также исходная строка.
judgesВсе судьи записи, без сокращения списка.
partiesВсе участники с ролями, включая элементы сверх сокращённого отображения сайта.
locationМесто или зал заседания; null, если источник не указал значение.
notesПримечание источника или null.
is_onlineПризнак онлайн-заседания; null, если он неизвестен.
linksПредметные ссылки исходной строки.
extra_fieldsДополнительные предметные поля с исходными подписями и всеми значениями.
warningsКоды предупреждений нормализации, например о нераспознанной дате; список может быть пустым.
sourceСлужебные сведения о происхождении строки: исходные позиции и идентификаторы; состав определяется парсером.

Дело: case

Поле / параметрОписание
numberНомер дела, если указан источником.
source_idИсходный идентификатор дела.
urlСсылка на карточку дела или null.

Продолжение заседания: recess_until

Поле / параметрОписание
dateДата продолжения в формате ГГГГ-ММ-ДД; null при отсутствии или ошибке распознавания.
timeЛокальное время суда в формате ЧЧ:мм:сс с возможной дробной частью; null, если неизвестно.
timezoneИсходное смещение часового пояса, например +0300; null, если не указано.
rawТочная исходная строка даты и времени из ответа сайта.

Элемент judges

Поле / параметрОписание
nameИмя или наименование, как указано источником.
urlСвязанная предметная ссылка или null.

Элемент parties

Поле / параметрОписание
nameИмя или наименование участника.
urlСсылка, относящаяся к участнику, или null.
roleНормализованная роль: plaintiff — истец, respondent — ответчик, other — иной или неизвестный участник.
role_rawИсходное значение роли без преобразования.
extra_fieldsДополнительные сведения об участнике.

Элемент extra_fields

Поле / параметрОписание
labelИсходное название или подпись поля.
valuesВсе значения поля в исходном порядке; каждый элемент — произвольное JSON-значение, включая null, объект или список.
linksСсылки, относящиеся к дополнительному полю.

Элемент links

Поле / параметрОписание
labelПодпись ссылки или null.
urlАдрес ссылки или null, если адрес отсутствует.

Время продолжения указано в локальном времени суда. Сохраняйте recess_until.timezone и raw; не подставляйте свой часовой пояс, если смещение неизвестно. Не удаляйте повторные строки автоматически: одинаковые предметные записи могут иметь разные ID. Дополнительные поля источника сохраняются; интеграция должна допускать неизвестные JSON-поля и null в необязательных значениях.

Ошибки

Поле / параметрОписание
400Неверные параметры маршрута, limit, cursor или JSON-тело. Ответ — строка либо объект ошибок полей.
401Нет однозначного действующего apiKey, ключ отозван, сотрудник неактивен или организация недоступна.
404Задача или снимок не найдены либо недоступны.
409CATALOG_NOT_READY: сначала POST /courts/query.
410SNAPSHOT_EXPIRED: выполните новый query и начните новый обход.
422Отклонён court_id, курсор или тип снимка. Проверьте error.code.
429Превышена квота запросов. Учитывайте Retry-After, если он указан.
499Клиент отменил запрос.
502Ошибка связи или неожиданный ответ источника; это не ошибка пользовательского apiKey.
503Сервис недоступен, очередь заполнена, зависимость заблокирована или не завершена серверная настройка. Учитывайте error.retryable; RECESS_SERVICE_NOT_CONFIGURED требует настройки на стороне СУДиДЕЛО.
504Истёк 30-секундный тайм-аут вызова. Длительный сбор ожидают через отдельные запросы состояния задачи.
Поле / параметрОписание
errorМашинный код, возможность повтора и дополнительные сведения об ошибке.
request_idИдентификатор запроса источника для диагностики; может отсутствовать при локальной ошибке обёртки.
Поле / параметрОписание
codeМашинный код, например SNAPSHOT_EXPIRED, DEPENDENCY_BLOCKED или RECESS_SERVICE_UNAVAILABLE.
messageБезопасное сообщение; в обёртке обычно совпадает с машинным кодом.
retryableМожно ли повторить запрос после устранения временной причины; false у постоянной блокировки.
detailsДополнительные безопасные сведения; обёртка может вернуть пустой объект.

При retryable=false не повторяйте запросы бесконечно. Сохраните HTTP-код, error.code и request_id для обращения в поддержку, исключив apiKey из журнала. Ошибки авторизации и проверки параметров могут иметь другую структуру тела.

Связанные статьи

АПИ для расписания заседаний арбитражных судов. RecessArbitr описывает объявления о перерывах; расписание заседаний доступно через отдельные методы RadArbitr.