Латиницею, малими літерами, через дефіс. Новим записам край дає префікс свого коду: cz-. Після публікації не змінюється.
Документація
Як читати каталог з іншого сайту чи застосунку і як краю додати свої вмілості.
Вступ
API лише читає. Записи редагують через адмінку, див. нижче. Відповіді містять тільки опубліковане: виведених з ужитку записів і нотаток редакторів там немає. Id вмілостей, проб, точок проби й відзначень не змінюються, тож за ними можна зберігати, хто що здобув.
/v1ETag, зміни видно за ~1 хвЗавантажую опис API…
Як додати свої вмілості
Зміни вносять в адмінці. Вхід за кодом, який приходить на пошту. Права видає власник каталогу.
- Редактор краю змінює записи свого краю, додає спеціалізації й погоджує подання від свого краю.
- Дописувач лише надсилає подання. Опублікує його редактор краю.
Одну вмілість простіше додати формою в адмінці. Якщо їх багато або в них є зображення, підготуйте zip. Надсилати весь каталог не потрібно, лише те, що край додає або змінює.
prague.zip
├── catalog.json
└── images/
├── cz-istoriia-ukraintsiv-u-chekhii-i.svg
└── …
В адмінці натисніть «Завантажити zip». Спершу ви побачите звіт: що буде додано чи змінено, які є помилки і яких зображень бракує. Нічого не змінюється, поки ви не підтвердите.
Зображення
.svg,.png,.webpабо.jpg, до 2 МБ, назва латиницею без пробілів.- SVG без скриптів і посилань на зовнішні файли. Експорт з Illustrator варто пропустити через SVGOMG, це ще й зменшить файл у рази.
Перевірка без надсилання
Той самий звіт можна отримати локально з репозиторію:
dotnet run --project tools/ProjectK.Catalog.Cli -- validate prague.zip --against catalog
Формат catalog.json
{
"schemaVersion": 2,
"source": { "krai": "cz", "name": "Пласт у Чехії, станиця Прага", "contact": "…" },
"badges": [
{
"id": "cz-istoriia-ukraintsiv-u-chekhii-i",
"family": "cz-istoriia-ukraintsiv-u-chekhii",
"level": 1,
"title": "Історія українців у Чехії I",
"categories": ["zahalni-vmilosti"],
"ulady": ["upyu"],
"status": "trial",
"images": { "color": "cz-istoriia-ukraintsiv-u-chekhii-i.svg" },
"requirements": [
{ "id": "1", "text": "Розповість про українську еміграцію до Праги в 1920-х роках." }
],
"author": "ст.пл. Ім'я Прізвище",
"updatedOn": "2026-10-13"
}
]
}
source.krai — код краю, 2–3 латинські літери: ua, pl, cz, de, us, ca. Поле з помилкою в назві, наприклад requirments, не пропускається мовчки, а дає помилку перевірки.
Поля вмілості
-
idобов’язковеstring -
titleобов’язковеstringНазва з рівнем: «Історія українців у Чехії I».
-
requirementsобов’язковеRequirement[]Пункти вимог:
{ "id": "1", "text": "…" }. Текст у markdown:**жирний**,*курсив*, підпункти рядками з-. -
categoriesнеобов’язковеstring[]Id спеціалізацій з
/v1/categories. -
uladyнеобов’язковеstring[]Для яких уладів.
Значення:uppupnupyuuspups -
familyнеобов’язковеstringСпільний id для рівнів I, II, III однієї вмілості.
-
levelнеобов’язковеintegerНомер рівня, 1–5.
-
imagesнеобов’язковеobjectcolorіbw: назви файлів з текиimages/. -
prerequisitesнеобов’язковеstring[]Id вмілостей, які треба мати спершу.
-
instructorRequirementsнеобов’язковеstringВимоги до інструктора.
-
authorнеобов’язковеstringХто розробив.
-
updatedOnнеобов’язковеdateКоли востаннє змінювався текст,
рррр-мм-дд. -
statusнеобов’язковеstringБез статусу запис вважається затвердженим. Нові вмілості краю зазвичай починають з
trial.Значення:approvedtrialretired -
kraiнеобов’язковеstringЯкщо не вказано, береться з
source.krai. -
notesнеобов’язковеstring[]Нотатки для редакторів. У публічному API їх немає.
Проби (probes) і відзначення (awards) мають ті самі поля, що й у схемах Probe та Award, тільки зображення вказуються назвами файлів, а не адресами. Id точки проби має бути унікальним серед усіх проб.
Доповнення краю
Коли край хоче додати вимогу до чужої вмілості чи ще одну точку до проби, запис не копіюють, а надсилають доповнення в overrides. Доповнення вже приймаються й перевіряються, але API їх поки не показує.
"overrides": [
{
"krai": "cz",
"target": "badge:aktorstvo-i",
"addRequirements": [{ "id": "cz-1", "text": "Візьме участь у виставі українського театру в Празі." }]
}
]
Поля доповнення
-
kraiобов’язковеstringСвій код краю.
-
targetобов’язковеstringЩо доповнюємо:
badge:<id>,probe:<id>абоaward:<id>. -
addRequirementsнеобов’язковеRequirement[]Нові пункти вимог. Id з префіксом краю:
cz-1. -
removeRequirementsнеобов’язковеstring[]Id пунктів, які для краю не діють.
-
addPointsнеобов’язковеobject[]Нові точки проби:
{ "section": "А", "id": "cz-probe-1-a-1", "text": "…" }. -
removePointsнеобов’язковеstring[]Id точок проби, які для краю не діють.
-
titleнеобов’язковеstringІнша назва для краю.
-
hiddenнеобов’язковеbooleantrueховає запис для краю. -
noteнеобов’язковеstringПояснення для редакторів.