OVD-Info · Public API experimental

Read-only доступ к данным о политических преследованиях в России

Обзор

API предоставляет структурированный доступ к данным о политических преследованиях в России. Данные обновляются несколько раз в сутки.

Это экспериментальный API — структура эндпоинтов и набор полей могут меняться.

Базовый URL: http://api.repressions.org  ·  Swagger UI: /docs

Аутентификация

Все запросы (кроме GET /datasets) требуют заголовок:

X-API-Key: <ваш_ключ>

Для получения ключа обратитесь к команде ОВД-Инфо по адресу [email protected]. Ключ выдаётся один раз — сохраните его.

Эндпоинты

МетодПутьОписаниеКлюч
GET/datasetsСхема датасетов: колонки, фильтрыНет
GET/personsСписок персон с фильтрацией и поискомДа
GET/persons/{id}Персона по UUIDДа
GET/organisationsСписок организацийДа
GET/organisations/{id}Организация по UUIDДа
GET/pp_persecutionsПолитические преследованияДа

Query-параметры

ПараметрТипОписание
limitintСтрок в ответе (по умолчанию 100, макс. 1000)
offsetintСмещение для пагинации. Ответ содержит total — общее число строк с учётом фильтров
qstrПоиск подстроки по всем search-полям одновременно
{col}strТочный фильтр по filter-полю. Поддерживает операторы — см. ниже
subsetstrПодмножество колонок: rfm или inoteka — подробнее ниже
sortstrИмя колонки для сортировки. Только колонки, входящие в текущий ответ
orderstrasc (по умолчанию) или desc
timelineboolТолько /persons/{id} — добавляет persecutions[] с преследованиями

Операторы фильтрации

Все filter-поля поддерживают расширенные операторы через суффикс __{оператор}:

СинтаксисОператорПример
?{col}=valТочное совпадение?persecution_status=Осуждён
?{col}__gt=valБольше чем?start_year__gt=2021
?{col}__gte=valБольше или равно?start_year__gte=2022
?{col}__lt=valМеньше чем?verdict_date__lt=2024-01-01
?{col}__lte=valМеньше или равно?verdict_date__lte=2023-12-31
?{col}__in=a,b,cОдно из значений?region__in=Москва,Санкт-Петербург

Операторы можно комбинировать: ?start_year__gte=2020&start_year__lt=2023

Subsets для /persons

По умолчанию возвращаются только базовые поля (имя, дата рождения, ИНН). Параметр subset добавляет тематический блок:

ЗначениеДобавляет
subset=rfmФлаги источников, pp_person_id и все поля из реестра Росфинмониторинга
subset=inotekaПоля из реестра иностранных агентов: статус, основание признания, тематика, год признания/исключения, флаги прекращения работы

Для /organisations параметра subset нет — все поля возвращаются всегда. Записи с do_not_publish возвращаются, но с обнулёнными идентификаторами и описаниями.

Пагинация

# Загрузить все записи постранично
import requests

API = "http://api.repressions.org"
KEY = {"X-API-Key": "<ваш_ключ>"}
params = {"limit": 1000, "offset": 0}
rows = []

while True:
    r = requests.get(f"{API}/persons", headers=KEY, params=params).json()
    rows.extend(r["data"])
    if params["offset"] + 1000 >= r["total"]: break
    params["offset"] += 1000

Примеры

# Поиск по имени
curl "http://api.repressions.org/persons?q=Иванов" \
  -H "X-API-Key: <ваш_ключ>"

# Персоны с полным набором полей РФМ
curl "http://api.repressions.org/persons?subset=rfm&in_rosfinmon=true" \
  -H "X-API-Key: <ваш_ключ>"

# Иностранные агенты — все поля + фильтр по статусу (contains-any по всем статусам записи)
curl "http://api.repressions.org/persons?subset=inoteka&in_inoteka=true&inoteka_statuses=Физическое лицо — иностранный агент" \
  -H "X-API-Key: <ваш_ключ>"

# Организации — иноагенты, не прекратившие работу, признанные с 2020 года
curl "http://api.repressions.org/organisations?inoteka_stopped_working=false&inoteka_first_recognition_year__gte=2020" \
  -H "X-API-Key: <ваш_ключ>"

# Персона с историей преследований
curl "http://api.repressions.org/persons/<uuid>?timeline=true" \
  -H "X-API-Key: <ваш_ключ>"

# Активные преследования
curl "http://api.repressions.org/pp_persecutions?is_actual=true" \
  -H "X-API-Key: <ваш_ключ>"

Внутренние интерфейсы

Административные страницы для работы с данными — доступны авторизованным сотрудникам.

СтраницаОписание
/inoteka Реестр иностранных агентов. Список физических лиц и организаций с фильтрацией по типу, статусу и тексту. Карточка справа показывает основные данные, акты признания и давления, связанных участников. Форма редактирования позволяет менять все поля записи, включая статус признания, тематику деятельности и — для организаций — флаг прекращения работы.
/politpressing База политических преследований. Список преследуемых с фильтрацией по типу преследования, актуальности и тексту. Карточка справа раскрывает полный профиль: фото, персональные данные, историю преследований с мерами пресечения, судебными заседаниями, приговорами и местами лишения свободы, а также оценки правозащитных организаций.

Схема датасетов

Актуальная схема — колонки, какие из них фильтруемые и поисковые, к какому subset относятся. Ключ не нужен.