Як створити матеріал у Joomla 6 через REST API

Joomla має вбудований Web Services API, за допомогою якого зовнішні програми, скрипти та сервіси можуть працювати з даними сайту через HTTP-запити. Один із практичних сценаріїв — автоматичне створення матеріалів без входу до панелі адміністратора.
У цьому прикладі розглянемо створення матеріалу в Joomla 6 через REST API: підготуємо API Token, сформуємо endpoint, відправимо JSON-запит та перевіримо роботу через Postman або cURL.
Web Services API дозволяє зовнішнім системам взаємодіяти з Joomla через визначені API endpoints. Замість прямої роботи з базою даних клієнт відправляє HTTP-запит до Joomla, а CMS самостійно виконує перевірку автентифікації, прав доступу та отриманих даних.
Через API можна, зокрема:
- отримувати матеріали;
- створювати нові матеріали;
- змінювати існуючі матеріали;
- видаляти матеріали;
- будувати інтеграції Joomla із зовнішніми системами.
Для створення матеріалу використовується HTTP-метод POST.
Перед відправленням першого запиту необхідно підготувати:
- сайт на Joomla 6;
- користувача Joomla з необхідними правами;
- API Token цього користувача;
- ID категорії, у якій буде створено матеріал;
- URL сайту;
- HTTP-клієнт, наприклад Postman або cURL.
Важливо. API виконує операції з правами користувача, якому належить токен. Тому для інтеграції краще використовувати окремого користувача та надати йому лише необхідні дозволи.
Базова адреса Web Services API формується від домену сайту. Наприклад, для:
https://example.org
базовий URL API буде:
https://example.org/api/index.php/v1
Для роботи з матеріалами використовується endpoint:
content/articles
Повна адреса для створення матеріалу:
https://example.org/api/index.php/v1/content/articles
Захищені API-запити повинні виконуватися від імені користувача Joomla, який має відповідні права доступу.
Для стандартної автентифікації за API Token токен передається в HTTP-заголовку:
X-Joomla-Token: YOUR_API_TOKEN
Для JSON-запиту також використовуються заголовки:
Accept: application/vnd.api+json
Content-Type: application/json
X-Joomla-Token: YOUR_API_TOKEN
Ніколи не публікуйте API Token. Не додавайте його до відкритого Git-репозиторію, frontend JavaScript або іншого коду, доступного відвідувачам сайту.
Для створення нового матеріалу необхідно відправити
POST-запит на:
https://example.org/api/index.php/v1/content/articles
Дані матеріалу передаються в JSON. Приклад базового набору полів:
{
"title": "Матеріал створений через Joomla API",
"alias": "material-stvorenyi-cherez-joomla-api",
"articletext": "<p>Цей матеріал створено через Joomla REST API.</p>",
"catid": 2,
"language": "*",
"metadesc": "",
"metakey": ""
}
Значення catid: 2 наведено лише як приклад.
У запиті потрібно передати ID реально існуючої категорії вашого сайту.
| Поле | Призначення |
|---|---|
title |
Назва матеріалу. |
alias |
Alias матеріалу, який Joomla може використовувати при формуванні URL. |
articletext |
Основний вміст матеріалу. Значення може містити HTML. |
catid |
ID категорії Joomla. |
language |
Мова матеріалу. Значення * означає всі мови. |
metadesc |
Meta Description матеріалу. |
metakey |
Meta Keywords. |
Для перевірки API без написання окремої програми зручно використовувати Postman.
-
Створіть новий запит та виберіть метод
POST. -
Вкажіть адресу:
https://example.org/api/index.php/v1/content/articles -
Додайте HTTP-заголовки:
Accept: application/vnd.api+json Content-Type: application/json X-Joomla-Token: YOUR_API_TOKEN - У розділі Body виберіть raw → JSON.
-
Передайте JSON із даними матеріалу:
{ "title": "Тестовий матеріал Joomla API", "alias": "testovyi-material-joomla-api", "articletext": "<p>Матеріал створено через API.</p>", "catid": 2, "language": "*", "metadesc": "", "metakey": "" } - Натисніть Send.
Якщо endpoint, токен, права користувача та передані дані коректні, Joomla обробить запит і поверне відповідь API.
Той самий запит можна виконати з командного рядка:
curl -X POST "https://example.org/api/index.php/v1/content/articles" \
-H "Accept: application/vnd.api+json" \
-H "Content-Type: application/json" \
-H "X-Joomla-Token: YOUR_API_TOKEN" \
-d '{
"title": "Матеріал створений через Joomla API",
"alias": "material-stvorenyi-cherez-joomla-api",
"articletext": "<p>Цей матеріал створено через Joomla REST API.</p>",
"catid": 2,
"language": "*",
"metadesc": "",
"metakey": ""
}'
Замініть example.org на домен свого сайту,
YOUR_API_TOKEN — на реальний API Token,
а catid — на ID потрібної категорії.
| HTTP-код | Що перевірити |
|---|---|
400 |
Коректність JSON та наявність даних, які очікує API endpoint. |
401 |
API Token та заголовок автентифікації. |
403 |
Права користувача, ACL та дозволи на роботу з потрібною категорією. |
404 |
URL API та правильність endpoint. |
API Token фактично дозволяє виконувати дії від імені користувача, тому доступ до нього потрібно захищати так само уважно, як облікові дані адміністратора.
- використовуйте HTTPS;
- не передавайте токен у frontend-код;
- не публікуйте токен у Git;
- створюйте для інтеграцій окремих користувачів;
- надавайте API-користувачу лише необхідні ACL-права;
- у разі витоку токена замініть або відкличте його;
- перевіряйте інтеграцію на тестовому сайті перед запуском у production.
Створення матеріалів через API особливо корисне там, де контент надходить із зовнішньої системи або повинен створюватися автоматично.
Наприклад:
- імпорт матеріалів з іншої CMS;
- синхронізація з внутрішньою системою компанії;
- автоматичне формування контенту зі стороннього сервісу;
- власна адміністративна програма для роботи з Joomla;
- інтеграція мобільного або вебзастосунку з Joomla.
Вбудований REST API Joomla дозволяє створювати матеріали без прямого доступу
до бази даних та без автоматизації панелі адміністратора.
Для створення матеріалу достатньо сформувати
POST-запит до content/articles,
передати API Token у заголовку X-Joomla-Token
та відправити дані матеріалу у форматі JSON.
На основі цього механізму можна будувати імпорт контенту, інтеграції із зовнішніми сервісами та власні інструменти автоматизації Joomla.
Використані джерела:
Joomla Programmers Documentation — Web Services
JoomTech Solutions — How to Create Articles with the Joomla 6 REST API