MENU navbar-image

Introduction

Документация Solr search API платформы RS Edu / RKI.

Авторизация не требуется. Маршруты без префикса /api.

Формат ответа

Успех и ошибка валидации оба приходят с HTTP 200. Смотрите поле success.

{
  "success": true,
  "message": "Текст сообщения",
  "data": {}
}
{
  "success": false,
  "message": "Текст ошибки",
  "errors": {}
}

Поиск возвращает data.{resource}.total (число найденных) и data.{resource}.data (страница документов).

Поиск

Параметры — query string (GET /books/get?search=грамматика&limit=20).

Параметр Описание
search Строка eDisMax, оператор AND, mm из SOLR_MM (по умолчанию 75%)
search_by[] Поля поиска (у каждого ядра свой набор по умолчанию)
start Смещение (с нуля)
limit Размер страницы, 1–1000, по умолчанию 20
fields[] Solr-поля выборки
sort_by Поле сортировки; без него — релевантность
levels_ids[] Уровни (OR; только книги)
start_level / end_level Диапазон ID уровней (включительно; нет у книг)
collections_ids[] Коллекции (OR)
authors_ids[] Авторы (OR; нет у лексического минимума)

Доступ организации: нужны оба параметра available и organization_id. true — документ в organization_ids, false — нет. У лексического минимума фильтра нет.

Подсветка: если заданы search и fields[] с полями вроде title, name, word, description, совпадения оборачиваются в <b>.

Экспорт

GET /{resource}/export — .xlsx с теми же фильтрами.

Ядра Solr

books, worksheets, tests, interactives, materials, methodologies, dictionary_words

Authenticating requests

This API is not authenticated.

Общее

Сводные счётчики по Solr-ядрам.

Количество материалов по ядрам

Возвращает numFound по каждому ядру с теми же search / search_by, что у поиска. Параметр exclude убирает одно ядро из ответа.

Example request:
curl --request GET \
    --get "http://rsedu-srch-v1-api/total?search=%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0&search_by[]=title&exclude=dictionary_words" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://rsedu-srch-v1-api/total"
);

const params = {
    "search": "грамматика",
    "search_by[0]": "title",
    "exclude": "dictionary_words",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Успех):


{
    "success": true,
    "message": "Получено количество материалов",
    "data": {
        "books": 120,
        "worksheets": 84,
        "tests": 41,
        "interactives": 30,
        "materials": 55,
        "methodologies": 12,
        "dictionary_words": 2000
    }
}
 

Example response (200, Ошибка валидации):


{
    "success": false,
    "message": "The selected exclude is invalid."
}
 

Request      

GET total

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search   string  optional    

Та же поисковая строка, что у /{resource}/get. Считается numFound по каждому ядру. Example: грамматика

search_by   string[]  optional    

Поля поиска. Если не заданы, у каждого ядра свой набор по умолчанию.

exclude   string  optional    

Исключить одно ядро из ответа: books, worksheets, tests, interactives, materials, methodologies, dictionary_words. Example: dictionary_words

Must be one of:
  • books
  • worksheets
  • tests
  • interactives
  • materials
  • methodologies
  • dictionary_words

Книги

Поиск и экспорт книг из Solr-ядра books.

Поиск книг

eDisMax по ядру books. По умолчанию ищет в title, description, authors; keywords всегда добавляется. Дополнительно бустятся точные фразы и год издания.

Example request:
curl --request GET \
    --get "http://rsedu-srch-v1-api/books/get?search=%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0&search_by[]=title&start=0&limit=20&fields[]=title&sort_by=year&category_id=3&categories_ids[]=3&levels_ids[]=1&collections_ids[]=10&authors_ids[]=1&publishers_ids[]=7&start_year=2020&end_year=2026&has_audios=1&has_videos=&available=1&organization_id=5" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://rsedu-srch-v1-api/books/get"
);

const params = {
    "search": "грамматика",
    "search_by[0]": "title",
    "start": "0",
    "limit": "20",
    "fields[0]": "title",
    "sort_by": "year",
    "category_id": "3",
    "categories_ids[0]": "3",
    "levels_ids[0]": "1",
    "collections_ids[0]": "10",
    "authors_ids[0]": "1",
    "publishers_ids[0]": "7",
    "start_year": "2020",
    "end_year": "2026",
    "has_audios": "1",
    "has_videos": "0",
    "available": "1",
    "organization_id": "5",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Успех):


{
    "success": true,
    "message": "Книги были успешно получены",
    "data": {
        "books": {
            "total": 1,
            "data": [
                {
                    "id": "12",
                    "title": "Практическая грамматика",
                    "title_additional": null,
                    "description": "Учебник по грамматике русского языка",
                    "authors": "Иванов И. И.",
                    "publishers": "Русский язык",
                    "publication_type": "Учебник",
                    "year": 2024,
                    "cover": "https://rsedu.local/images/covers/12.jpg",
                    "categories": [
                        "Грамматика"
                    ],
                    "levels": [
                        "B1"
                    ],
                    "has_audios": true,
                    "has_videos": false
                }
            ]
        }
    }
}
 

Example response (200, Ошибка валидации):


{
    "success": false,
    "message": "Параметр limit не должен превышать 1000."
}
 

Request      

GET books/get

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search   string  optional    

Поисковая строка (eDisMax, оператор AND). Если не передан — выборка только по фильтрам. Example: грамматика

search_by   string[]  optional    

Поля поиска. По умолчанию: title, description, authors. Поле keywords всегда добавляется. Веса: title^3, authors^2, description^1, keywords^1.

start   integer  optional    

Смещение для пагинации (с нуля). Example: 0

limit   integer  optional    

Размер страницы (1–1000). По умолчанию 20. Must be at least 1. Must not be greater than 1000. Example: 20

fields   string[]  optional    

Solr-поля выборки. Если задан search, пересечение с подсвечиваемыми полями (title, name, word, description, authors, …) оборачивается в <b>.

sort_by   string  optional    

Поле сортировки. Направление из config/solr.sort: title/name/word/duration — asc; year/id_int/created_at — desc. Без параметра — релевантность Solr. Example: year

category_id   integer  optional    

Фильтр по одной категории (categories_ids). Example: 3

categories_ids   integer[]  optional    

Фильтр по нескольким категориям: Solr-поле categories_ids (OR).

levels_ids   integer[]  optional    

Фильтр по ID уровней (OR).

collections_ids   integer[]  optional    

Фильтр по ID коллекций (OR).

authors_ids   integer[]  optional    

Фильтр по ID авторов (OR).

publishers_ids   integer[]  optional    

Фильтр по ID издательств (OR).

start_year   integer  optional    

Нижняя граница года издания (включительно). Можно без end_year. Example: 2020

end_year   integer  optional    

Верхняя граница года издания (включительно). Можно без start_year. Example: 2026

has_audios   boolean  optional    

Только материалы с аудио. Example: true

has_videos   boolean  optional    

Только материалы с видео. Example: false

available   boolean  optional    

Доступ организации. Работает только вместе с organization_id: true — есть в organization_ids, false — нет. Example: true

organization_id   integer  optional    

ID организации для фильтра доступа. Игнорируется, если не передан available. Example: 5

Экспорт книг в Excel

Те же фильтры, что у поиска. Файл Экспорт книг.xlsx, выгрузка пачками по 700 документов.

Example request:
curl --request GET \
    --get "http://rsedu-srch-v1-api/books/export?search=%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0&search_by[]=title&start=0&limit=20&fields[]=title&sort_by=year&category_id=3&categories_ids[]=3&levels_ids[]=1&collections_ids[]=10&authors_ids[]=1&publishers_ids[]=7&start_year=2020&end_year=2026&has_audios=1&has_videos=&available=1&organization_id=5" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://rsedu-srch-v1-api/books/export"
);

const params = {
    "search": "грамматика",
    "search_by[0]": "title",
    "start": "0",
    "limit": "20",
    "fields[0]": "title",
    "sort_by": "year",
    "category_id": "3",
    "categories_ids[0]": "3",
    "levels_ids[0]": "1",
    "collections_ids[0]": "10",
    "authors_ids[0]": "1",
    "publishers_ids[0]": "7",
    "start_year": "2020",
    "end_year": "2026",
    "has_audios": "1",
    "has_videos": "0",
    "available": "1",
    "organization_id": "5",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Excel-файл):


{}
 

Request      

GET books/export

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search   string  optional    

Поисковая строка (eDisMax, оператор AND). Если не передан — выборка только по фильтрам. Example: грамматика

search_by   string[]  optional    

Поля поиска. По умолчанию: title, description, authors. Поле keywords всегда добавляется. Веса: title^3, authors^2, description^1, keywords^1.

start   integer  optional    

Смещение для пагинации (с нуля). Example: 0

limit   integer  optional    

Размер страницы (1–1000). По умолчанию 20. Must be at least 1. Must not be greater than 1000. Example: 20

fields   string[]  optional    

Solr-поля выборки. Если задан search, пересечение с подсвечиваемыми полями (title, name, word, description, authors, …) оборачивается в <b>.

sort_by   string  optional    

Поле сортировки. Направление из config/solr.sort: title/name/word/duration — asc; year/id_int/created_at — desc. Без параметра — релевантность Solr. Example: year

category_id   integer  optional    

Фильтр по одной категории (categories_ids). Example: 3

categories_ids   integer[]  optional    

Фильтр по нескольким категориям: Solr-поле categories_ids (OR).

levels_ids   integer[]  optional    

Фильтр по ID уровней (OR).

collections_ids   integer[]  optional    

Фильтр по ID коллекций (OR).

authors_ids   integer[]  optional    

Фильтр по ID авторов (OR).

publishers_ids   integer[]  optional    

Фильтр по ID издательств (OR).

start_year   integer  optional    

Нижняя граница года издания (включительно). Можно без end_year. Example: 2020

end_year   integer  optional    

Верхняя граница года издания (включительно). Можно без start_year. Example: 2026

has_audios   boolean  optional    

Только материалы с аудио. Example: true

has_videos   boolean  optional    

Только материалы с видео. Example: false

available   boolean  optional    

Доступ организации. Работает только вместе с organization_id: true — есть в organization_ids, false — нет. Example: true

organization_id   integer  optional    

ID организации для фильтра доступа. Игнорируется, если не передан available. Example: 5

Рабочие листы

Поиск и экспорт рабочих листов из Solr-ядра worksheets.

Поиск рабочих листов

По умолчанию ищет в name, description, authors. categories_ids[] фильтрует Solr-поле category_id. durations[] фильтрует Solr-поле duration (OR).

Example request:
curl --request GET \
    --get "http://rsedu-srch-v1-api/worksheets/get?search=%D0%BF%D0%B0%D0%B4%D0%B5%D0%B6%D0%B8&search_by[]=name&start=0&limit=20&fields[]=title&sort_by=name&category_id=3&categories_ids[]=3&start_level=1&end_level=3&collections_ids[]=10&authors_ids[]=1&collection_id=10&available=1&organization_id=5&has_audios=1&has_videos=&durations[]=45" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://rsedu-srch-v1-api/worksheets/get"
);

const params = {
    "search": "падежи",
    "search_by[0]": "name",
    "start": "0",
    "limit": "20",
    "fields[0]": "title",
    "sort_by": "name",
    "category_id": "3",
    "categories_ids[0]": "3",
    "start_level": "1",
    "end_level": "3",
    "collections_ids[0]": "10",
    "authors_ids[0]": "1",
    "collection_id": "10",
    "available": "1",
    "organization_id": "5",
    "has_audios": "1",
    "has_videos": "0",
    "durations[0]": "45",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Успех):


{
    "success": true,
    "message": "Рабочие листы успешно получены",
    "data": {
        "worksheets": {
            "total": 1,
            "data": [
                {
                    "id": "8",
                    "name": "Падежи: дательный",
                    "description": "Рабочий лист",
                    "authors": "Петрова А. А.",
                    "cover": "https://rsedu.local/images/covers/8.jpg",
                    "category_id": 3,
                    "categories": [
                        "Грамматика"
                    ],
                    "levels": [
                        "A2"
                    ],
                    "duration": 45,
                    "has_audios": false,
                    "has_videos": false
                }
            ]
        }
    }
}
 

Example response (200, Ошибка валидации):


{
    "success": false,
    "message": "Параметр start должен быть целым числом."
}
 

Request      

GET worksheets/get

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search   string  optional    

Поисковая строка (eDisMax, оператор AND). Если не передан — выборка только по фильтрам. Example: падежи

search_by   string[]  optional    

Поля поиска. По умолчанию: name, description, authors.

start   integer  optional    

Смещение для пагинации (с нуля). Example: 0

limit   integer  optional    

Размер страницы (1–1000). По умолчанию 20. Must be at least 1. Must not be greater than 1000. Example: 20

fields   string[]  optional    

Solr-поля выборки. Если задан search, пересечение с подсвечиваемыми полями (title, name, word, description, authors, …) оборачивается в <b>.

sort_by   string  optional    

Поле сортировки. Направление из config/solr.sort: title/name/word/duration — asc; year/id_int/created_at — desc. Без параметра — релевантность Solr. Example: name

category_id   integer  optional    

Фильтр по одной категории (category_id). Example: 3

categories_ids   integer[]  optional    

Фильтр по нескольким категориям: Solr-поле category_id (OR).

start_level   integer  optional    

Нижняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без end_level. Example: 1

end_level   integer  optional    

Верхняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без start_level. Example: 3

collections_ids   integer[]  optional    

Фильтр по ID коллекций (OR).

authors_ids   integer[]  optional    

Фильтр по ID авторов (OR).

collection_id   integer  optional    

Фильтр по одной коллекции (поле Solr collections_ids). Example: 10

available   boolean  optional    

Доступ организации. Работает только вместе с organization_id: true — есть в organization_ids, false — нет. Example: true

organization_id   integer  optional    

ID организации для фильтра доступа. Игнорируется, если не передан available. Example: 5

has_audios   boolean  optional    

Только материалы с аудио. Example: true

has_videos   boolean  optional    

Только материалы с видео. Example: false

durations   integer[]  optional    

Фильтр по длительности в минутах: Solr-поле duration (OR).

Экспорт рабочих листов в Excel

Те же фильтры, что у поиска. Файл Экспорт рабочих листов.xlsx.

Example request:
curl --request GET \
    --get "http://rsedu-srch-v1-api/worksheets/export?search=%D0%BF%D0%B0%D0%B4%D0%B5%D0%B6%D0%B8&search_by[]=name&start=0&limit=20&fields[]=title&sort_by=name&category_id=3&categories_ids[]=3&start_level=1&end_level=3&collections_ids[]=10&authors_ids[]=1&collection_id=10&available=1&organization_id=5&has_audios=1&has_videos=&durations[]=45" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://rsedu-srch-v1-api/worksheets/export"
);

const params = {
    "search": "падежи",
    "search_by[0]": "name",
    "start": "0",
    "limit": "20",
    "fields[0]": "title",
    "sort_by": "name",
    "category_id": "3",
    "categories_ids[0]": "3",
    "start_level": "1",
    "end_level": "3",
    "collections_ids[0]": "10",
    "authors_ids[0]": "1",
    "collection_id": "10",
    "available": "1",
    "organization_id": "5",
    "has_audios": "1",
    "has_videos": "0",
    "durations[0]": "45",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Excel-файл):


{}
 

Request      

GET worksheets/export

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search   string  optional    

Поисковая строка (eDisMax, оператор AND). Если не передан — выборка только по фильтрам. Example: падежи

search_by   string[]  optional    

Поля поиска. По умолчанию: name, description, authors.

start   integer  optional    

Смещение для пагинации (с нуля). Example: 0

limit   integer  optional    

Размер страницы (1–1000). По умолчанию 20. Must be at least 1. Must not be greater than 1000. Example: 20

fields   string[]  optional    

Solr-поля выборки. Если задан search, пересечение с подсвечиваемыми полями (title, name, word, description, authors, …) оборачивается в <b>.

sort_by   string  optional    

Поле сортировки. Направление из config/solr.sort: title/name/word/duration — asc; year/id_int/created_at — desc. Без параметра — релевантность Solr. Example: name

category_id   integer  optional    

Фильтр по одной категории (category_id). Example: 3

categories_ids   integer[]  optional    

Фильтр по нескольким категориям: Solr-поле category_id (OR).

start_level   integer  optional    

Нижняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без end_level. Example: 1

end_level   integer  optional    

Верхняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без start_level. Example: 3

collections_ids   integer[]  optional    

Фильтр по ID коллекций (OR).

authors_ids   integer[]  optional    

Фильтр по ID авторов (OR).

collection_id   integer  optional    

Фильтр по одной коллекции (поле Solr collections_ids). Example: 10

available   boolean  optional    

Доступ организации. Работает только вместе с organization_id: true — есть в organization_ids, false — нет. Example: true

organization_id   integer  optional    

ID организации для фильтра доступа. Игнорируется, если не передан available. Example: 5

has_audios   boolean  optional    

Только материалы с аудио. Example: true

has_videos   boolean  optional    

Только материалы с видео. Example: false

durations   integer[]  optional    

Фильтр по длительности в минутах: Solr-поле duration (OR).

Тесты

Поиск и экспорт тестов из Solr-ядра tests.

Поиск тестов

По умолчанию ищет в name, description, authors. categories_ids[] фильтрует Solr-поле category_id.

Example request:
curl --request GET \
    --get "http://rsedu-srch-v1-api/tests/get?search=%D0%B0%D1%83%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&search_by[]=name&start=0&limit=20&fields[]=title&sort_by=name&category_id=3&categories_ids[]=3&start_level=1&end_level=3&collections_ids[]=10&authors_ids[]=1&collection_id=10&available=1&organization_id=5&has_audios=1&has_videos=&duration=60" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://rsedu-srch-v1-api/tests/get"
);

const params = {
    "search": "аудирование",
    "search_by[0]": "name",
    "start": "0",
    "limit": "20",
    "fields[0]": "title",
    "sort_by": "name",
    "category_id": "3",
    "categories_ids[0]": "3",
    "start_level": "1",
    "end_level": "3",
    "collections_ids[0]": "10",
    "authors_ids[0]": "1",
    "collection_id": "10",
    "available": "1",
    "organization_id": "5",
    "has_audios": "1",
    "has_videos": "0",
    "duration": "60",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Успех):


{
    "success": true,
    "message": "Тесты успешно получены",
    "data": {
        "tests": {
            "total": 1,
            "data": [
                {
                    "id": "4",
                    "name": "Тест по аудированию",
                    "description": "Проверка понимания на слух",
                    "authors": "Сидоров С. С.",
                    "category_id": 5,
                    "categories": [
                        "Аудирование"
                    ],
                    "levels": [
                        "B1"
                    ],
                    "duration": 60,
                    "has_audios": true,
                    "has_videos": false
                }
            ]
        }
    }
}
 

Example response (200, Ошибка валидации):


{
    "success": false,
    "message": "Параметр start должен быть целым числом."
}
 

Request      

GET tests/get

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search   string  optional    

Поисковая строка (eDisMax, оператор AND). Если не передан — выборка только по фильтрам. Example: аудирование

search_by   string[]  optional    

Поля поиска. По умолчанию: name, description, authors.

start   integer  optional    

Смещение для пагинации (с нуля). Example: 0

limit   integer  optional    

Размер страницы (1–1000). По умолчанию 20. Must be at least 1. Must not be greater than 1000. Example: 20

fields   string[]  optional    

Solr-поля выборки. Если задан search, пересечение с подсвечиваемыми полями (title, name, word, description, authors, …) оборачивается в <b>.

sort_by   string  optional    

Поле сортировки. Направление из config/solr.sort: title/name/word/duration — asc; year/id_int/created_at — desc. Без параметра — релевантность Solr. Example: name

category_id   integer  optional    

Фильтр по одной категории (category_id). Example: 3

categories_ids   integer[]  optional    

Фильтр по нескольким категориям: Solr-поле category_id (OR).

start_level   integer  optional    

Нижняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без end_level. Example: 1

end_level   integer  optional    

Верхняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без start_level. Example: 3

collections_ids   integer[]  optional    

Фильтр по ID коллекций (OR).

authors_ids   integer[]  optional    

Фильтр по ID авторов (OR).

collection_id   integer  optional    

Фильтр по одной коллекции (поле Solr collections_ids). Example: 10

available   boolean  optional    

Доступ организации. Работает только вместе с organization_id: true — есть в organization_ids, false — нет. Example: true

organization_id   integer  optional    

ID организации для фильтра доступа. Игнорируется, если не передан available. Example: 5

has_audios   boolean  optional    

Только материалы с аудио. Example: true

has_videos   boolean  optional    

Только материалы с видео. Example: false

duration   integer  optional    

Длительность в минутах (точное совпадение). Example: 60

Экспорт тестов в Excel

Те же фильтры, что у поиска. Файл Экспорт тестов.xlsx.

Example request:
curl --request GET \
    --get "http://rsedu-srch-v1-api/tests/export?search=%D0%B0%D1%83%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&search_by[]=name&start=0&limit=20&fields[]=title&sort_by=name&category_id=3&categories_ids[]=3&start_level=1&end_level=3&collections_ids[]=10&authors_ids[]=1&collection_id=10&available=1&organization_id=5&has_audios=1&has_videos=&duration=60" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://rsedu-srch-v1-api/tests/export"
);

const params = {
    "search": "аудирование",
    "search_by[0]": "name",
    "start": "0",
    "limit": "20",
    "fields[0]": "title",
    "sort_by": "name",
    "category_id": "3",
    "categories_ids[0]": "3",
    "start_level": "1",
    "end_level": "3",
    "collections_ids[0]": "10",
    "authors_ids[0]": "1",
    "collection_id": "10",
    "available": "1",
    "organization_id": "5",
    "has_audios": "1",
    "has_videos": "0",
    "duration": "60",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Excel-файл):


{}
 

Request      

GET tests/export

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search   string  optional    

Поисковая строка (eDisMax, оператор AND). Если не передан — выборка только по фильтрам. Example: аудирование

search_by   string[]  optional    

Поля поиска. По умолчанию: name, description, authors.

start   integer  optional    

Смещение для пагинации (с нуля). Example: 0

limit   integer  optional    

Размер страницы (1–1000). По умолчанию 20. Must be at least 1. Must not be greater than 1000. Example: 20

fields   string[]  optional    

Solr-поля выборки. Если задан search, пересечение с подсвечиваемыми полями (title, name, word, description, authors, …) оборачивается в <b>.

sort_by   string  optional    

Поле сортировки. Направление из config/solr.sort: title/name/word/duration — asc; year/id_int/created_at — desc. Без параметра — релевантность Solr. Example: name

category_id   integer  optional    

Фильтр по одной категории (category_id). Example: 3

categories_ids   integer[]  optional    

Фильтр по нескольким категориям: Solr-поле category_id (OR).

start_level   integer  optional    

Нижняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без end_level. Example: 1

end_level   integer  optional    

Верхняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без start_level. Example: 3

collections_ids   integer[]  optional    

Фильтр по ID коллекций (OR).

authors_ids   integer[]  optional    

Фильтр по ID авторов (OR).

collection_id   integer  optional    

Фильтр по одной коллекции (поле Solr collections_ids). Example: 10

available   boolean  optional    

Доступ организации. Работает только вместе с organization_id: true — есть в organization_ids, false — нет. Example: true

organization_id   integer  optional    

ID организации для фильтра доступа. Игнорируется, если не передан available. Example: 5

has_audios   boolean  optional    

Только материалы с аудио. Example: true

has_videos   boolean  optional    

Только материалы с видео. Example: false

duration   integer  optional    

Длительность в минутах (точное совпадение). Example: 60

Интерактивы

Поиск и экспорт интерактивов из Solr-ядра interactives. Фильтра по категории нет — в ответе только подписи.

Поиск интерактивов

По умолчанию ищет в name, description, authors, content.

Example request:
curl --request GET \
    --get "http://rsedu-srch-v1-api/interactives/get?search=%D0%B3%D0%BB%D0%B0%D0%B3%D0%BE%D0%BB%D1%8B&search_by[]=name&start=0&limit=20&fields[]=title&sort_by=name&start_level=1&end_level=3&collections_ids[]=10&authors_ids[]=1&collection_id=10&available=1&organization_id=5&has_audios=1&has_videos=" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://rsedu-srch-v1-api/interactives/get"
);

const params = {
    "search": "глаголы",
    "search_by[0]": "name",
    "start": "0",
    "limit": "20",
    "fields[0]": "title",
    "sort_by": "name",
    "start_level": "1",
    "end_level": "3",
    "collections_ids[0]": "10",
    "authors_ids[0]": "1",
    "collection_id": "10",
    "available": "1",
    "organization_id": "5",
    "has_audios": "1",
    "has_videos": "0",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Успех):


{
    "success": true,
    "message": "Интерактивы успешно получены",
    "data": {
        "interactives": {
            "total": 1,
            "data": [
                {
                    "id": "21",
                    "name": "Глаголы движения",
                    "description": "Интерактивное упражнение",
                    "authors": "Козлова К. К.",
                    "cover": "https://rsedu.local/images/covers/21.jpg",
                    "categories": [
                        "Лексика"
                    ],
                    "levels": [
                        "A2"
                    ],
                    "has_audios": true,
                    "has_videos": true
                }
            ]
        }
    }
}
 

Example response (200, Ошибка валидации):


{
    "success": false,
    "message": "Параметр start должен быть целым числом."
}
 

Request      

GET interactives/get

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search   string  optional    

Поисковая строка (eDisMax, оператор AND). Если не передан — выборка только по фильтрам. Example: глаголы

search_by   string[]  optional    

Поля поиска. По умолчанию: name, description, authors, content. Категории в ответе — только подписи, фильтра по category_id нет.

start   integer  optional    

Смещение для пагинации (с нуля). Example: 0

limit   integer  optional    

Размер страницы (1–1000). По умолчанию 20. Must be at least 1. Must not be greater than 1000. Example: 20

fields   string[]  optional    

Solr-поля выборки. Если задан search, пересечение с подсвечиваемыми полями (title, name, word, description, authors, …) оборачивается в <b>.

sort_by   string  optional    

Поле сортировки. Направление из config/solr.sort: title/name/word/duration — asc; year/id_int/created_at — desc. Без параметра — релевантность Solr. Example: name

start_level   integer  optional    

Нижняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без end_level. Example: 1

end_level   integer  optional    

Верхняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без start_level. Example: 3

collections_ids   integer[]  optional    

Фильтр по ID коллекций (OR).

authors_ids   integer[]  optional    

Фильтр по ID авторов (OR).

collection_id   integer  optional    

Фильтр по одной коллекции (поле Solr collections_ids). Example: 10

available   boolean  optional    

Доступ организации. Работает только вместе с organization_id: true — есть в organization_ids, false — нет. Example: true

organization_id   integer  optional    

ID организации для фильтра доступа. Игнорируется, если не передан available. Example: 5

has_audios   boolean  optional    

Только материалы с аудио. Example: true

has_videos   boolean  optional    

Только материалы с видео. Example: false

Экспорт интерактивов в Excel

Те же фильтры, что у поиска. Файл Экспорт интерактивов.xlsx.

Example request:
curl --request GET \
    --get "http://rsedu-srch-v1-api/interactives/export?search=%D0%B3%D0%BB%D0%B0%D0%B3%D0%BE%D0%BB%D1%8B&search_by[]=name&start=0&limit=20&fields[]=title&sort_by=name&start_level=1&end_level=3&collections_ids[]=10&authors_ids[]=1&collection_id=10&available=1&organization_id=5&has_audios=1&has_videos=" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://rsedu-srch-v1-api/interactives/export"
);

const params = {
    "search": "глаголы",
    "search_by[0]": "name",
    "start": "0",
    "limit": "20",
    "fields[0]": "title",
    "sort_by": "name",
    "start_level": "1",
    "end_level": "3",
    "collections_ids[0]": "10",
    "authors_ids[0]": "1",
    "collection_id": "10",
    "available": "1",
    "organization_id": "5",
    "has_audios": "1",
    "has_videos": "0",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Excel-файл):


{}
 

Request      

GET interactives/export

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search   string  optional    

Поисковая строка (eDisMax, оператор AND). Если не передан — выборка только по фильтрам. Example: глаголы

search_by   string[]  optional    

Поля поиска. По умолчанию: name, description, authors, content. Категории в ответе — только подписи, фильтра по category_id нет.

start   integer  optional    

Смещение для пагинации (с нуля). Example: 0

limit   integer  optional    

Размер страницы (1–1000). По умолчанию 20. Must be at least 1. Must not be greater than 1000. Example: 20

fields   string[]  optional    

Solr-поля выборки. Если задан search, пересечение с подсвечиваемыми полями (title, name, word, description, authors, …) оборачивается в <b>.

sort_by   string  optional    

Поле сортировки. Направление из config/solr.sort: title/name/word/duration — asc; year/id_int/created_at — desc. Без параметра — релевантность Solr. Example: name

start_level   integer  optional    

Нижняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без end_level. Example: 1

end_level   integer  optional    

Верхняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без start_level. Example: 3

collections_ids   integer[]  optional    

Фильтр по ID коллекций (OR).

authors_ids   integer[]  optional    

Фильтр по ID авторов (OR).

collection_id   integer  optional    

Фильтр по одной коллекции (поле Solr collections_ids). Example: 10

available   boolean  optional    

Доступ организации. Работает только вместе с organization_id: true — есть в organization_ids, false — нет. Example: true

organization_id   integer  optional    

ID организации для фильтра доступа. Игнорируется, если не передан available. Example: 5

has_audios   boolean  optional    

Только материалы с аудио. Example: true

has_videos   boolean  optional    

Только материалы с видео. Example: false

Банк материалов

Поиск и экспорт банка материалов из Solr-ядра materials. Фильтра по категории нет — в ответе только подписи.

Поиск материалов банка

По умолчанию ищет в name, description, authors.

Example request:
curl --request GET \
    --get "http://rsedu-srch-v1-api/materials/get?search=%D0%BB%D0%B5%D0%BA%D1%81%D0%B8%D0%BA%D0%B0&search_by[]=name&start=0&limit=20&fields[]=title&sort_by=name&start_level=1&end_level=3&collections_ids[]=10&authors_ids[]=1&collection_id=10&available=1&organization_id=5&has_audios=1&has_videos=" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://rsedu-srch-v1-api/materials/get"
);

const params = {
    "search": "лексика",
    "search_by[0]": "name",
    "start": "0",
    "limit": "20",
    "fields[0]": "title",
    "sort_by": "name",
    "start_level": "1",
    "end_level": "3",
    "collections_ids[0]": "10",
    "authors_ids[0]": "1",
    "collection_id": "10",
    "available": "1",
    "organization_id": "5",
    "has_audios": "1",
    "has_videos": "0",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Успех):


{
    "success": true,
    "message": "Материалы банка успешно получены",
    "data": {
        "materials": {
            "total": 1,
            "data": [
                {
                    "id": "15",
                    "name": "Карточки: лексика",
                    "description": "Раздаточный материал",
                    "authors": "Морозова М. М.",
                    "cover": "https://rsedu.local/images/covers/15.jpg",
                    "categories": [
                        "Лексика"
                    ],
                    "levels": [
                        "A1"
                    ],
                    "has_audios": false,
                    "has_videos": false
                }
            ]
        }
    }
}
 

Example response (200, Ошибка валидации):


{
    "success": false,
    "message": "Параметр start должен быть целым числом."
}
 

Request      

GET materials/get

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search   string  optional    

Поисковая строка (eDisMax, оператор AND). Если не передан — выборка только по фильтрам. Example: лексика

search_by   string[]  optional    

Поля поиска. По умолчанию: name, description, authors. Категории в ответе — только подписи, фильтра по category_id нет.

start   integer  optional    

Смещение для пагинации (с нуля). Example: 0

limit   integer  optional    

Размер страницы (1–1000). По умолчанию 20. Must be at least 1. Must not be greater than 1000. Example: 20

fields   string[]  optional    

Solr-поля выборки. Если задан search, пересечение с подсвечиваемыми полями (title, name, word, description, authors, …) оборачивается в <b>.

sort_by   string  optional    

Поле сортировки. Направление из config/solr.sort: title/name/word/duration — asc; year/id_int/created_at — desc. Без параметра — релевантность Solr. Example: name

start_level   integer  optional    

Нижняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без end_level. Example: 1

end_level   integer  optional    

Верхняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без start_level. Example: 3

collections_ids   integer[]  optional    

Фильтр по ID коллекций (OR).

authors_ids   integer[]  optional    

Фильтр по ID авторов (OR).

collection_id   integer  optional    

Фильтр по одной коллекции (поле Solr collections_ids). Example: 10

available   boolean  optional    

Доступ организации. Работает только вместе с organization_id: true — есть в organization_ids, false — нет. Example: true

organization_id   integer  optional    

ID организации для фильтра доступа. Игнорируется, если не передан available. Example: 5

has_audios   boolean  optional    

Только материалы с аудио. Example: true

has_videos   boolean  optional    

Только материалы с видео. Example: false

Экспорт материалов банка в Excel

Те же фильтры, что у поиска. Файл Экспорт материалов.xlsx.

Example request:
curl --request GET \
    --get "http://rsedu-srch-v1-api/materials/export?search=%D0%BB%D0%B5%D0%BA%D1%81%D0%B8%D0%BA%D0%B0&search_by[]=name&start=0&limit=20&fields[]=title&sort_by=name&start_level=1&end_level=3&collections_ids[]=10&authors_ids[]=1&collection_id=10&available=1&organization_id=5&has_audios=1&has_videos=" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://rsedu-srch-v1-api/materials/export"
);

const params = {
    "search": "лексика",
    "search_by[0]": "name",
    "start": "0",
    "limit": "20",
    "fields[0]": "title",
    "sort_by": "name",
    "start_level": "1",
    "end_level": "3",
    "collections_ids[0]": "10",
    "authors_ids[0]": "1",
    "collection_id": "10",
    "available": "1",
    "organization_id": "5",
    "has_audios": "1",
    "has_videos": "0",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Excel-файл):


{}
 

Request      

GET materials/export

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search   string  optional    

Поисковая строка (eDisMax, оператор AND). Если не передан — выборка только по фильтрам. Example: лексика

search_by   string[]  optional    

Поля поиска. По умолчанию: name, description, authors. Категории в ответе — только подписи, фильтра по category_id нет.

start   integer  optional    

Смещение для пагинации (с нуля). Example: 0

limit   integer  optional    

Размер страницы (1–1000). По умолчанию 20. Must be at least 1. Must not be greater than 1000. Example: 20

fields   string[]  optional    

Solr-поля выборки. Если задан search, пересечение с подсвечиваемыми полями (title, name, word, description, authors, …) оборачивается в <b>.

sort_by   string  optional    

Поле сортировки. Направление из config/solr.sort: title/name/word/duration — asc; year/id_int/created_at — desc. Без параметра — релевантность Solr. Example: name

start_level   integer  optional    

Нижняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без end_level. Example: 1

end_level   integer  optional    

Верхняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без start_level. Example: 3

collections_ids   integer[]  optional    

Фильтр по ID коллекций (OR).

authors_ids   integer[]  optional    

Фильтр по ID авторов (OR).

collection_id   integer  optional    

Фильтр по одной коллекции (поле Solr collections_ids). Example: 10

available   boolean  optional    

Доступ организации. Работает только вместе с organization_id: true — есть в organization_ids, false — нет. Example: true

organization_id   integer  optional    

ID организации для фильтра доступа. Игнорируется, если не передан available. Example: 5

has_audios   boolean  optional    

Только материалы с аудио. Example: true

has_videos   boolean  optional    

Только материалы с видео. Example: false

Методики

Поиск и экспорт методик из Solr-ядра methodologies.

Поиск методик

По умолчанию ищет в name, description, authors. categories_ids[] фильтрует Solr-поле category_id. theme_id / themes_ids[] фильтрует Solr-поле theme_id (справочник methodology_themes).

Example request:
curl --request GET \
    --get "http://rsedu-srch-v1-api/methodologies/get?search=%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9+%D0%BF%D0%BE%D0%B4%D1%85%D0%BE%D0%B4&search_by[]=name&start=0&limit=20&fields[]=title&sort_by=name&category_id=3&categories_ids[]=3&start_level=1&end_level=3&collections_ids[]=10&authors_ids[]=1&collection_id=10&available=1&organization_id=5&has_audios=1&has_videos=&theme_id=477&themes_ids[]=477&start_year=2020&end_year=2026" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://rsedu-srch-v1-api/methodologies/get"
);

const params = {
    "search": "коммуникативный подход",
    "search_by[0]": "name",
    "start": "0",
    "limit": "20",
    "fields[0]": "title",
    "sort_by": "name",
    "category_id": "3",
    "categories_ids[0]": "3",
    "start_level": "1",
    "end_level": "3",
    "collections_ids[0]": "10",
    "authors_ids[0]": "1",
    "collection_id": "10",
    "available": "1",
    "organization_id": "5",
    "has_audios": "1",
    "has_videos": "0",
    "theme_id": "477",
    "themes_ids[0]": "477",
    "start_year": "2020",
    "end_year": "2026",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Успех):


{
    "success": true,
    "message": "Методика успешно получены",
    "data": {
        "methodologies": {
            "total": 1,
            "data": [
                {
                    "id": "2",
                    "name": "Коммуникативный подход",
                    "description": "Методические рекомендации",
                    "authors": "Орлова О. О.",
                    "cover": "https://rsedu.local/images/covers/2.jpg",
                    "category_id": 1,
                    "theme_id": 477,
                    "themes": [
                        "Чтение"
                    ],
                    "levels": [
                        "B2"
                    ],
                    "has_audios": false,
                    "has_videos": false
                }
            ]
        }
    }
}
 

Example response (200, Ошибка валидации):


{
    "success": false,
    "message": "Параметр start должен быть целым числом."
}
 

Request      

GET methodologies/get

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search   string  optional    

Поисковая строка (eDisMax, оператор AND). Если не передан — выборка только по фильтрам. Example: коммуникативный подход

search_by   string[]  optional    

Поля поиска. По умолчанию: name, description, authors.

start   integer  optional    

Смещение для пагинации (с нуля). Example: 0

limit   integer  optional    

Размер страницы (1–1000). По умолчанию 20. Must be at least 1. Must not be greater than 1000. Example: 20

fields   string[]  optional    

Solr-поля выборки. Если задан search, пересечение с подсвечиваемыми полями (title, name, word, description, authors, …) оборачивается в <b>.

sort_by   string  optional    

Поле сортировки. Направление из config/solr.sort: title/name/word/duration — asc; year/id_int/created_at — desc. Без параметра — релевантность Solr. Example: name

category_id   integer  optional    

Фильтр по одной категории (category_id). Example: 3

categories_ids   integer[]  optional    

Фильтр по нескольким категориям: Solr-поле category_id (OR).

start_level   integer  optional    

Нижняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без end_level. Example: 1

end_level   integer  optional    

Верхняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без start_level. Example: 3

collections_ids   integer[]  optional    

Фильтр по ID коллекций (OR).

authors_ids   integer[]  optional    

Фильтр по ID авторов (OR).

collection_id   integer  optional    

Фильтр по одной коллекции (поле Solr collections_ids). Example: 10

available   boolean  optional    

Доступ организации. Работает только вместе с organization_id: true — есть в organization_ids, false — нет. Example: true

organization_id   integer  optional    

ID организации для фильтра доступа. Игнорируется, если не передан available. Example: 5

has_audios   boolean  optional    

Только материалы с аудио. Example: true

has_videos   boolean  optional    

Только материалы с видео. Example: false

theme_id   integer  optional    

Фильтр по одной теме (Solr-поле theme_id, справочник methodology_themes). Example: 477

themes_ids   integer[]  optional    

Фильтр по нескольким темам: Solr-поле theme_id / таблица methodology_themes (OR).

start_year   integer  optional    

Нижняя граница года создания (включительно), Solr-поле year. Можно без end_year. Example: 2020

end_year   integer  optional    

Верхняя граница года создания (включительно), Solr-поле year. Можно без start_year. Example: 2026

Экспорт методик в Excel

Те же фильтры, что у поиска. Файл Экспорт методик.xlsx.

Example request:
curl --request GET \
    --get "http://rsedu-srch-v1-api/methodologies/export?search=%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9+%D0%BF%D0%BE%D0%B4%D1%85%D0%BE%D0%B4&search_by[]=name&start=0&limit=20&fields[]=title&sort_by=name&category_id=3&categories_ids[]=3&start_level=1&end_level=3&collections_ids[]=10&authors_ids[]=1&collection_id=10&available=1&organization_id=5&has_audios=1&has_videos=&theme_id=477&themes_ids[]=477&start_year=2020&end_year=2026" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://rsedu-srch-v1-api/methodologies/export"
);

const params = {
    "search": "коммуникативный подход",
    "search_by[0]": "name",
    "start": "0",
    "limit": "20",
    "fields[0]": "title",
    "sort_by": "name",
    "category_id": "3",
    "categories_ids[0]": "3",
    "start_level": "1",
    "end_level": "3",
    "collections_ids[0]": "10",
    "authors_ids[0]": "1",
    "collection_id": "10",
    "available": "1",
    "organization_id": "5",
    "has_audios": "1",
    "has_videos": "0",
    "theme_id": "477",
    "themes_ids[0]": "477",
    "start_year": "2020",
    "end_year": "2026",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Excel-файл):


{}
 

Request      

GET methodologies/export

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search   string  optional    

Поисковая строка (eDisMax, оператор AND). Если не передан — выборка только по фильтрам. Example: коммуникативный подход

search_by   string[]  optional    

Поля поиска. По умолчанию: name, description, authors.

start   integer  optional    

Смещение для пагинации (с нуля). Example: 0

limit   integer  optional    

Размер страницы (1–1000). По умолчанию 20. Must be at least 1. Must not be greater than 1000. Example: 20

fields   string[]  optional    

Solr-поля выборки. Если задан search, пересечение с подсвечиваемыми полями (title, name, word, description, authors, …) оборачивается в <b>.

sort_by   string  optional    

Поле сортировки. Направление из config/solr.sort: title/name/word/duration — asc; year/id_int/created_at — desc. Без параметра — релевантность Solr. Example: name

category_id   integer  optional    

Фильтр по одной категории (category_id). Example: 3

categories_ids   integer[]  optional    

Фильтр по нескольким категориям: Solr-поле category_id (OR).

start_level   integer  optional    

Нижняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без end_level. Example: 1

end_level   integer  optional    

Верхняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без start_level. Example: 3

collections_ids   integer[]  optional    

Фильтр по ID коллекций (OR).

authors_ids   integer[]  optional    

Фильтр по ID авторов (OR).

collection_id   integer  optional    

Фильтр по одной коллекции (поле Solr collections_ids). Example: 10

available   boolean  optional    

Доступ организации. Работает только вместе с organization_id: true — есть в organization_ids, false — нет. Example: true

organization_id   integer  optional    

ID организации для фильтра доступа. Игнорируется, если не передан available. Example: 5

has_audios   boolean  optional    

Только материалы с аудио. Example: true

has_videos   boolean  optional    

Только материалы с видео. Example: false

theme_id   integer  optional    

Фильтр по одной теме (Solr-поле theme_id, справочник methodology_themes). Example: 477

themes_ids   integer[]  optional    

Фильтр по нескольким темам: Solr-поле theme_id / таблица methodology_themes (OR).

start_year   integer  optional    

Нижняя граница года создания (включительно), Solr-поле year. Можно без end_year. Example: 2020

end_year   integer  optional    

Верхняя граница года создания (включительно), Solr-поле year. Можно без start_year. Example: 2026

Лексический минимум

Поиск и экспорт лексического минимума из Solr-ядра dictionary_words. Фильтров доступа организации нет.

Поиск лексического минимума

По умолчанию ищет в word, word_rus, word_addition, word_eng.

Example request:
curl --request GET \
    --get "http://rsedu-srch-v1-api/dictionary_words/get?search=%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82&search_by[]=word&start=0&limit=20&fields[]=title&sort_by=word&start_level=1&end_level=3&collections_ids[]=10&collection_id=10" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://rsedu-srch-v1-api/dictionary_words/get"
);

const params = {
    "search": "привет",
    "search_by[0]": "word",
    "start": "0",
    "limit": "20",
    "fields[0]": "title",
    "sort_by": "word",
    "start_level": "1",
    "end_level": "3",
    "collections_ids[0]": "10",
    "collection_id": "10",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Успех):


{
    "success": true,
    "message": "Лексический минимум успешно получены",
    "data": {
        "dictionary_words": {
            "total": 1,
            "data": [
                {
                    "id": "101",
                    "word": "привет",
                    "word_rus": "приветствие",
                    "word_addition": "разг.",
                    "word_eng": "hello",
                    "categories": [
                        "Общение"
                    ],
                    "levels": [
                        "A1"
                    ]
                }
            ]
        }
    }
}
 

Example response (200, Ошибка валидации):


{
    "success": false,
    "message": "Параметр start должен быть целым числом."
}
 

Request      

GET dictionary_words/get

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search   string  optional    

Поисковая строка (eDisMax, оператор AND). Если не передан — выборка только по фильтрам. Example: привет

search_by   string[]  optional    

Поля поиска. По умолчанию: word, word_rus, word_addition, word_eng. Веса: word^30, word_rus^25, word_eng^15, word_addition^10. Фильтров available / organization_id нет.

start   integer  optional    

Смещение для пагинации (с нуля). Example: 0

limit   integer  optional    

Размер страницы (1–1000). По умолчанию 20. Must be at least 1. Must not be greater than 1000. Example: 20

fields   string[]  optional    

Solr-поля выборки. Если задан search, пересечение с подсвечиваемыми полями (title, name, word, description, authors, …) оборачивается в <b>.

sort_by   string  optional    

Поле сортировки. Направление из config/solr.sort: title/name/word/duration — asc; year/id_int/created_at — desc. Без параметра — релевантность Solr. Example: word

start_level   integer  optional    

Нижняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без end_level. Example: 1

end_level   integer  optional    

Верхняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без start_level. Example: 3

collections_ids   integer[]  optional    

Фильтр по ID коллекций (OR).

collection_id   integer  optional    

Фильтр по одной коллекции (поле Solr collections_ids). Example: 10

Экспорт лексического минимума в Excel

Те же фильтры, что у поиска. Файл Экспорт лексического минимума.xlsx.

Example request:
curl --request GET \
    --get "http://rsedu-srch-v1-api/dictionary_words/export?search=%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82&search_by[]=word&start=0&limit=20&fields[]=title&sort_by=word&start_level=1&end_level=3&collections_ids[]=10&collection_id=10" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://rsedu-srch-v1-api/dictionary_words/export"
);

const params = {
    "search": "привет",
    "search_by[0]": "word",
    "start": "0",
    "limit": "20",
    "fields[0]": "title",
    "sort_by": "word",
    "start_level": "1",
    "end_level": "3",
    "collections_ids[0]": "10",
    "collection_id": "10",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Excel-файл):


{}
 

Request      

GET dictionary_words/export

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

search   string  optional    

Поисковая строка (eDisMax, оператор AND). Если не передан — выборка только по фильтрам. Example: привет

search_by   string[]  optional    

Поля поиска. По умолчанию: word, word_rus, word_addition, word_eng. Веса: word^30, word_rus^25, word_eng^15, word_addition^10. Фильтров available / organization_id нет.

start   integer  optional    

Смещение для пагинации (с нуля). Example: 0

limit   integer  optional    

Размер страницы (1–1000). По умолчанию 20. Must be at least 1. Must not be greater than 1000. Example: 20

fields   string[]  optional    

Solr-поля выборки. Если задан search, пересечение с подсвечиваемыми полями (title, name, word, description, authors, …) оборачивается в <b>.

sort_by   string  optional    

Поле сортировки. Направление из config/solr.sort: title/name/word/duration — asc; year/id_int/created_at — desc. Без параметра — релевантность Solr. Example: word

start_level   integer  optional    

Нижняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без end_level. Example: 1

end_level   integer  optional    

Верхняя граница ID уровня (включительно), Solr-поле levels_ids. Можно без start_level. Example: 3

collections_ids   integer[]  optional    

Фильтр по ID коллекций (OR).

collection_id   integer  optional    

Фильтр по одной коллекции (поле Solr collections_ids). Example: 10