Эндпоинт канонов
Получение канонов святого по внутреннему id. Каждый канон разбит на песни (odes) с типизированными элементами (ирмос, тропарь, богородичен, …) и необязательными межпесенными секциями (седален, кондак, икос, …). Глас вынесен отдельным полем, а не вшит в текст.
Запрос
GET /canons/?id=393
GET /canons/?id=393&lang=cu&number=2
Параметры:
| Параметр | Тип | В | Описание |
|---|---|---|---|
id |
string | query | Внутренний id святого (обычно один). Пример: ?id=393. |
lang |
string | query | ru (по умолчанию), cu или en. Неизвестные значения трактуются как ru. |
number |
integer | query | Необязательный. Выбирает конкретный канон по внутреннему номеру. |
Валидация:
- длина id:
1..128, шаблон^[A-Za-z0-9_][A-Za-z0-9._:-]{0,127}$; number(если задан) — одно положительное целое;0, отрицательные, дробные, нечисловые или повторяющиеся значения дают400.
Ответ
В data возвращается упорядоченный массив.
found=true: каноны для этого id.found=false: пустойcanons+ объектnotFound(id неизвестен, нет данных для языка или запрошенныйnumberне найден).
{
"meta": {
"lang": "ru",
"format": "html",
"requestedIds": ["393"],
"count": 1
},
"data": [
{
"id": "393",
"found": true,
"canons": [
{
"number": 1,
"title": "Канон святому священномученику Памфилу Кесарийскому",
"tone": 4,
"odes": [
{
"number": 1,
"items": [
{ "role": "irmos", "html": "<p>...</p>" },
{ "role": "troparion", "html": "<p>...</p>" },
{ "role": "theotokion", "html": "<p>...</p>" }
]
}
],
"sections": [
{ "type": "sedalen", "afterOde": 3, "tone": 6, "html": "<p>...</p>" },
{ "type": "kontakion", "afterOde": 6, "tone": 2, "html": "<p>...</p>" },
{ "type": "ikos", "afterOde": 6, "html": "<p>...</p>" }
]
}
]
}
]
}
Примечания
number— стабильный селектор в пределах святого: у святого может быть несколько канонов, каждый со своим уникальнымnumber.?number=Nвыбирает конкретный; без него — все.odes[].number— номер песни (1–9), отличается отnumberканона.items[].role: одно изirmos,troparion,theotokion,troichen,refrain,katavasia.items[].marker(необязательно): литургический маркерslavaилиi-nyne.items[].toneиsections[].tone(необязательно): глас этой части отдельным полем, независимо отtoneуровня канона.sections[](необязательно) — межпесенные песнопения;type:sedalen,kontakion,ikos,svetilen,exapostilarion;afterOde— после какой песни идёт. Порядок в массиве — канонический порядок вывода.title/acrostic— локализованный простой текст; поляhtml— санитизированный HTML с разрешёнными тегами:p,br,h2,h3,ul,ol,li,strong,emи безопасные внутренние сноски черезa.- Языки:
ruиcuвсегда доступны;enопционален и пока может быть пуст —lang=enвозвращаетfound=false, пока английские тексты не добавлены.