Эндпоинты API
Судебная практика
Слой практики содержит судебные акты и разъяснения по спорам о кадастровой стоимости и налогах, исчисляемых от нее. Документы разделены на сегменты: «Судебные акты», «Разъяснения судов», «Разъяснения госорганов».
Дата самого позднего акта в слое возвращается в поле corpus_max_date.
| Задача | Эндпоинт |
|---|---|
| Найти фрагменты актов по смыслу или по словам | POST /v1/practice/search |
| Получить полный список дел или актов по условиям, узнать их число | POST /v1/practice/list |
| Узнать распределение по судам, годам, инстанциям до чтения текстов | POST /v1/practice/facets |
| Собрать все акты одного спора по УИД | GET /v1/practice/case-history |
| Получить реквизиты и провенанс документа | GET /v1/practice/documents/{doc_key} |
Каждый эндпоинт списывает одну единицу.
Поиск: POST /v1/practice/search
| Поле | Тип | По умолчанию | Назначение |
|---|---|---|---|
query | строка, 2–1000 символов | обязательно | Запрос: свободный текст или язык запросов |
top_k | целое, 1–50 | 10 | Число фрагментов в выдаче |
filters | объект | — | Фильтры практики |
syntax | "simple" или "advanced" | "simple" | "advanced" включает язык запросов |
synonyms | логическое | false | Расширение словарем синонимов (только при "advanced") |
sort | "relevance" или "date" | "relevance" | "date" – сначала новые |
Ответ – выдача слоя практики, как в федеративном поиске: results (фрагменты с document и provenance), total, shown, semantic_degraded, corpus_max_date, filters_applied, а также disclaimer. Выдача – фрагменты: в каждом есть найденные слова. В режиме "advanced" выдача по умолчанию ранжируется по совпадению слов, sort: "date" упорядочивает по дате.
Поиск внутри одного документа – фильтр doc_key: запрос ищется только в тексте этого акта, выдача – фрагменты с совпадениями.
curl -sS https://api.lexaai.ru/v1/practice/search \
-H "X-Api-Key: $LEXAAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "\"бюджетное учреждение\" /10 отказ",
"syntax": "advanced",
"filters": {"instance": "апелляция", "date_from": "2025-01-01"},
"sort": "date",
"top_k": 20
}'Неизвестные ключи filters слой игнорирует без ошибки: сверяйте filters_applied с тем, что передали. Недопустимое значение известного фильтра дает 422 с перечнем допустимых значений.
Перечень: POST /v1/practice/list
Перечень отвечает на вопросы «сколько» и «какие именно»: полный total и постраничный обход вместо ограниченной выдачи поиска.
| Поле | Тип | По умолчанию | Назначение |
|---|---|---|---|
unit | "cases" или "acts" | "cases" | Считать дела или акты |
filters | объект | — | Фильтры практики и norm, см. Фильтры практики |
query | строка до 1000 символов | — | Сужение по тексту на языке запросов |
synonyms | логическое | false | Расширение словарем синонимов |
limit | целое, 1–50 | 20 | Размер страницы |
cursor | строка до 2000 символов | — | Значение page.cursor предыдущей страницы |
Лишнее поле на верхнем уровне тела – 422 с его названием: фильтр, переданный мимо filters, не будет молча проигнорирован. Фильтры category и claim_outcome пока недоступны: разметка не завершена, шлюз отвечает 422.
Ответ: unit, total, items, page (limit, cursor), filters_applied, corpus_max_date, disclaimer. Элементы упорядочены по дате акта, сначала новые.
- При
unit: "cases"элемент – группа актов одного дела:case_key,n_acts,representative(карточка акта высшей инстанции в группе) иacts(краткие реквизиты всех актов группы). - При
unit: "acts"элемент – карточка акта сcase_keyиn_actsего группы. - Следующая страница – запрос с теми же
unit,filtersиqueryи сcursorизpage.cursor.page.cursor: nullозначает, что страниц больше нет; если число элементов кратноlimit, последняя страница может прийти пустой.
Группа unit: "cases" объединяет акты с общим УИД, а без него – акты с совпадающим сохраненным номером дела в одном суде; акт без обоих реквизитов образует отдельную группу. Номер может оказаться номером производства, а не дела первой инстанции, поэтому без УИД группа не гарантирует сквозной спор. Оговорка о семантике групп повторяется в поле disclaimer каждого ответа. Чтобы собрать акты одного спора по всем инстанциям, используйте историю спора по УИД, описанную ниже.
Текстовое условие query в перечне проверяется по всему акту: слова, соединенные «И», могут стоять в разных частях текста, «КРОМЕ» означает, что слова нет в акте нигде, а «фраза» и /N требуют близости внутри одного фрагмента.
curl -sS https://api.lexaai.ru/v1/practice/list \
-H "X-Api-Key: $LEXAAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"unit": "cases",
"filters": {"norm": {"law_key": "237-ФЗ", "article": "22.1"}, "date_from": "2025-01-01", "date_to": "2025-12-31"},
"limit": 50
}'Распределения: POST /v1/practice/facets
Тело – как у перечня без limit и cursor: unit, filters, query, synonyms; лишние поля – 422.
Ответ: unit, facets с распределениями courts, instance, act_type, years, review_outcome – списки {value, count} (до 40 значений в каждом, у судов также court_code), note, filters_applied, corpus_max_date, disclaimer. При unit: "cases" суды, инстанции и виды актов считаются по всем актам дела, поэтому сумма count может не совпадать с total перечня.
Распределения – дешевая разведка: сначала узнать, где сосредоточены акты, затем сузить перечень или поиск фильтрами.
История спора: GET /v1/practice/case-history
curl -sS "https://api.lexaai.ru/v1/practice/case-history?uid=…" \
-H "X-Api-Key: $LEXAAI_API_KEY"Параметр uid – точный уникальный идентификатор дела (УИД) из карточки акта, 3–100 символов. Ответ: uid, linkage: "exact_uid", order: "decision_date_asc", total и acts – все найденные акты с этим УИД от раннего к позднему, с реквизитами (doc_key, title, court, act_type, decision_date, number, case_number, instance, status, review_outcome и другие). Акты связываются только по точному УИД: совпадение одного номера дела группу не образует.
Карточка документа: GET /v1/practice/documents/{doc_key}
Возвращает карточку документа по doc_key из выдачи: реквизиты (title, segment, court, act_type, decision_date, number, case_number, uid, judge, instance, status, status_note, review_outcome, сведения о первой инстанции), провенанс (sha256_raw_segment, sha256_clean_html, source_publication), объем (total_chunks, text_length) и disclaimer. Текста документа в карточке нет: дословный текст приходит во фрагментах выдачи, а поиск по одному акту выполняется фильтром doc_key.
Ошибки: 404 – документ не найден; 502 – слой практики ответил ошибкой; 503 – слой недоступен.
Ошибки слоя практики
422– недопустимые значения фильтров, синтаксическая ошибка запроса, лишние поля тела (list,facets), неверныйcursor.503– слой практики недоступен;detailсодержит причину. В отличие от федеративного поиска, где недоступный слой помечаетсяavailable: falseвнутри ответа 200, эндпоинты/v1/practice/*отвечают ошибкой.401,429– ключ и лимиты, см. Авторизация и лимиты.