本页列举了joomla核心提供的所有API接口
This page lists the endpoints available in Joomla by example of curl commands.
Every URL requires authentication unless designated a public URL. For security in Joomla 4.0.0 we plan to make the default Api Application require a Super User account (as the API Application is brand new), this may get relaxed as the API stabilizes and is well tested in the community. If you are using the basic authentication plugin (currently the only shipped plugin as of Joomla 4 alpha 10) it requires the addition to the curl commands below using --user user_name:password
Every URL needs to be prepended with the Joomla host before the path (e.g. instead of /api/index.php/v1/article you need http://example.com/api/index.php/v1/article)
Any names of properties in curly brackets ({}) indicate the property is a variable that should be substituted.
Unless otherwise noted these APIs were introduced in Joomla 4. For more information on the Joomla API Specification (as opposed to this list of URLs and options) please visit the Joomla Api Specification.
Where end points require the value of {app} the variable currently takes two values, site (front end), or administrator {back end)
curl -X GET /api/index.php/v1/banners
curl -X GET /api/index.php/v1/banners/{banner_id}
curl -X DELETE /api/index.php/v1/banners/{banner_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/banners -d
{
"catid": 3,
"clicks": 0,
"custombannercode": "",
"description": "Text",
"metakey": "",
"name": "Name",
"params": {
"alt": "",
"height": "",
"imageurl": "",
"width": ""
}
}
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/banners/{banner_id} -d
{
"alias": "name",
"catid": 3,
"description": "New Text",
"name": "New Name"
}
curl -X GET /api/index.php/v1/banners/clients
curl -X GET /api/index.php/v1/banners/clients/{client_id}
curl -X DELETE /api/index.php/v1/banners/clients/{client_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/banners/clients -d
{
"contact": "Name",
"email": "这个 E-mail 受反垃圾邮件程序保护,您需要启用 JavaScript 才能查看。",
"extrainfo": "",
"metakey": "",
"name": "Clients",
"state": 1
}
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/banners/clients/{client_id} -d
{
"contact": "new Name",
"email": "这个 E-mail 受反垃圾邮件程序保护,您需要启用 JavaScript 才能查看。",
"name": "Clients"
}
curl -X GET /api/index.php/v1/banners/categories
curl -X GET /api/index.php/v1/banners/categories/{category_id}
curl -X DELETE /api/index.php/v1/banners/categories/{category_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/banners/categories -d
{
"access": 1,
"alias": "cat",
"extension": "com_banners",
"language": "*",
"note": "",
"parent_id": 1,
"published": 1,
"title": "Title"
}
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/banners/categories/{category_id} -d
{
"alias": "cat",
"note": "Some Text",
"parent_id": 1,
"title": "New Title"
}
curl -X GET /api/index.php/v1/banners/contenthistory/{banner_id}
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/banners/contenthistory/keep/{contenthistory_id}
curl -X DELETE /api/index.php/v1/banners/contenthistory/{contenthistory_id}
curl -X GET /api/index.php/v1/config/application
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/config/application -d
{
"debug": true,
"sitename": "123"
}
curl -X GET /api/index.php/v1/config/{component_name}
Example “component_name” is “com_content”.
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/config/application -d
{
"link_titles": 1
}
curl -X GET /api/index.php/v1/contact
curl -X GET /api/index.php/v1/contact/{contact_id}
curl -X DELETE /api/index.php/v1/contact/{contact_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/contact -d
{
"alias": "contact",
"catid": 4,
"language": "*",
"name": "Contact"
}
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/contact/{contact_id} -d
{
"alias": "contact",
"catid": 4,
"name": "New Contact"
}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/contact/form/{contact_id} -d
{
"contact_email": "这个 E-mail 受反垃圾邮件程序保护,您需要启用 JavaScript 才能查看。",
"contact_message": "some text",
"contact_name": "name",
"contact_subject": "subject"
}
curl -X GET /api/index.php/v1/fields/contact/contact
curl -X GET /api/index.php/v1/fields/contact/contact/{field_id}
curl -X DELETE /api/index.php/v1/fields/contact/contact/{field_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/fields/contact/contact -d
{
"access": 1,
"context": "com_contact.contact",
"default_value": "",
"description": "",
"group_id": 0,
"label": "contact field",
"language": "*",
"name": "contact-field",
"note": "",
"params": {
"class": "",
"display": "2",
"display_readonly": "2",
"hint": "",
"label_class": "",
"label_render_class": "",
"layout": "",
"prefix": "",
"render_class": "",
"show_on": "",
"showlabel": "1",
"suffix": ""
},
"required": 0,
"state": 1,
"title": "contact field",
"type": "text"
}
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/fields/contact/contact/{field_id} -d
{
"title": "new contact field",
"name": "contact-field",
"label": "contact field",
"default_value": "",
"type": "text",
"note": "",
"description": "Some New Text"
}
curl -X GET /api/index.php/v1/fields/groups/contact/contact
curl -X GET /api/index.php/v1/fields/groups/contact/contact/{group_id}
curl -X DELETE /api/index.php/v1/fields/groups/contact/contact/{group_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/fields/groups/contact/contact -d
{
"access": 1,
"context": "com_contact.contact",
"default_value": "",
"description": "",
"group_id": 0,
"label": "contact field",
"language": "*",
"name": "contact-field3",
"note": "",
"params": {
"class": "",
"display": "2",
"display_readonly": "2",
"hint": "",
"label_class": "",
"label_render_class": "",
"layout": "",
"prefix": "",
"render_class": "",
"show_on": "",
"showlabel": "1",
"suffix": ""
},
"required": 0,
"state": 1,
"title": "contact field",
"type": "text"
}
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/fields/groups/contact/contact/{group_id} -d
{
"title": "new contact group",
"note": "",
"description": "new description"
}
curl -X GET /api/index.php/v1/content/articles
curl -X GET /api/index.php/v1/content/articles/{article_id}
curl -X DELETE /api/index.php/v1/content/articles/{article_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/content/articles -d
{
"alias": "my-article",
"articletext": "My text",
"catid": 64,
"language": "*",
"metadesc": "",
"metakey": "",
"title": "Here's an article"
}
Currently the options mentioned here are required properties. However the intention is currently to make AT LEAST metakey and metadesc optional in the API.
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/content/articles/{article_id} -d
{
"catid": 64,
"title": "Updated article"
}
curl -X GET /api/index.php/v1/languages
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/languages -d
{
"package": "pkg_fr-FR"
}
curl -X GET /api/index.php/v1/languages/content
curl -X GET /api/index.php/v1/v1/languages/content/{language_id}
curl -X DELETE /api/index.php/v1/languages/content/{language_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/languages/content -d
{
"access": 1,
"description": "",
"image": "fr_FR",
"lang_code": "fr-FR",
"metadesc": "",
"metakey": "",
"ordering": 1,
"published": 0,
"sef": "fk",
"sitename": "",
"title": "French (FR)",
"title_native": "Français (France)"
}
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/languages/content/{language_id} -d
{
"description": "",
"lang_code": "en-GB",
"metadesc": "",
"metakey": "",
"sitename": "",
"title": "English (en-GB)",
"title_native": "English (United Kingdom)"
}
curl -X GET /api/index.php/v1/languages/overrides/{app}/{lang_code}
curl -X GET /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id}
curl -X DELETE /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/languages/overrides/{app}/{lang_code} -d
{
"key":"new_key",
"override": "text"
}
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id} -d
{
"key":"new_key",
"override": "new text"
}
var app - enum {"site", "administrator"}
var lang_code - string Example: “fr-FR“, “en-GB“ you can get lang_code from v1/languages/content
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/languages/overrides/search -d
{
"searchstring": "JLIB_APPLICATION_ERROR_SAVE_FAILED",
"searchtype": "constant"
}
var searchtype - enum {“constant”, “value”}. “constant” search by constant name, “value” - search by constant value
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/languages/overrides/search/cache/refresh
curl -X GET /api/index.php/v1/menus/{app}
curl -X GET /api/index.php/v1/menus/{app}/{menu_id}
curl -X DELETE /api/index.php/v1/menus/{app}/{menu_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/menus/{app} -d
{
"client_id": 0,
"description": "The menu for the site",
"menutype": "menu",
"title": "Menu"
}
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/menus/{app}/{menu_id} -d
{
"menutype": "menu",
"title": "New Menu"
}
curl -X GET /api/index.php/v1/menus/{app}/items/types
curl -X GET /api/index.php/v1/menus/{app}/items
curl -X GET /api/index.php/v1/menus/{app}/items/{menu_item_id}
curl -X DELETE /api/index.php/v1/menus/{app}/items/{menu_item_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/menus/{app}/items -d
{
"access": "1",
"alias": "",
"associations": {
"en-GB": "",
"fr-FR": ""
},
"browserNav": "0",
"component_id": "20",
"home": "0",
"language": "*",
"link": "index.php?option=com_content&view=form&layout=edit",
"menutype": "mainmenu",
"note": "",
"params": {
"cancel_redirect_menuitem": "",
"catid": "",
"custom_cancel_redirect": "0",
"enable_category": "0",
"menu-anchor_css": "",
"menu-anchor_title": "",
"menu-meta_description": "",
"menu-meta_keywords": "",
"menu_image": "",
"menu_image_css": "",
"menu_show": "1",
"menu_text": "1",
"page_heading": "",
"page_title": "",
"pageclass_sfx": "",
"redirect_menuitem": "",
"robots": "",
"show_page_heading": ""
},
"parent_id": "1",
"publish_down": "",
"publish_up": "",
"published": "1",
"template_style_id": "0",
"title": "title",
"toggle_modules_assigned": "1",
"toggle_modules_published": "1",
"type": "component"
}
Example for "Create Article Page"
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/menus/{app}/items/{menu_item_id} -d
{
"component_id": "20",
"language": "*",
"link": "index.php?option=com_content&view=form&layout=edit",
"menutype": "mainmenu",
"note": "",
"title": "new title",
"type": "component"
}
Example for "Create Article Page"
curl -X GET /api/index.php/v1/messages
curl -X GET /api/index.php/v1/messages/{message_id}
curl -X DELETE /api/index.php/v1/messages/{message_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/messages -d
{
"message": "<p>text</p>",
"state": 0,
"subject": "text",
"user_id_from": 773,
"user_id_to": 772
}
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/messages/{message_id} -d
{
"message": "<p>new text</p>",
"subject": "new text",
"user_id_from": 773,
"user_id_to": 772
}
curl -X GET /api/index.php/v1/modules/types/{app}
curl -X GET /api/index.php/v1/modules/{app}
curl -X GET /api/index.php/v1/modules/{app}/{module_id}
curl -X DELETE /api/index.php/v1/modules/{app}/{module_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/modules/{app} -d
{
"access": "1",
"assigned": [
"101",
"105"
],
"assignment": "0",
"client_id": "0",
"language": "*",
"module": "mod_articles_archive",
"note": "",
"ordering": "1",
"params": {
"bootstrap_size": "0",
"cache": "1",
"cache_time": "900",
"cachemode": "static",
"count": "10",
"header_class": "",
"header_tag": "h3",
"layout": "_:default",
"module_tag": "div",
"moduleclass_sfx": "",
"style": "0"
},
"position": "",
"publish_down": "",
"publish_up": "",
"published": "1",
"showtitle": "1",
"title": "Title"
}
Example for "Articles - Archived"
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/modules/{app}/{module_id} -d
{
"access": "1",
"client_id": "0",
"language": "*",
"module": "mod_articles_archive",
"note": "",
"ordering": "1",
"title": "New Title"
}
Example for "Articles - Archived"
curl -X GET /api/index.php/v1/newsfeeds/feeds
curl -X GET /api/index.php/v1/newsfeeds/feeds/{feed_id}
curl -X DELETE /api/index.php/v1/newsfeeds/feeds/{feed_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/newsfeeds/feeds -d
{
"access": 1,
"alias": "alias",
"catid": 5,
"description": "",
"images": {
"float_first": "",
"float_second": "",
"image_first": "",
"image_first_alt": "",
"image_first_caption": "",
"image_second": "",
"image_second_alt": "",
"image_second_caption": ""
},
"language": "*",
"link": "http://samoylov/joomla/gsoc19_webservices/index.php",
"metadata": {
"hits": "",
"rights": "",
"robots": "",
"tags": {
"tags": "",
"typeAlias": null
}
},
"metadesc": "",
"metakey": "",
"name": "Name",
"ordering": 1,
"params": {
"feed_character_count": "",
"feed_display_order": "",
"newsfeed_layout": "",
"show_feed_description": "",
"show_feed_image": "",
"show_item_description": ""
},
"published": 1
}
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/newsfeeds/feeds/{feed_id} -d
{
"access": 1,
"alias": "test2",
"catid": 5,
"description": "",
"link": "http://samoylov/joomla/gsoc19_webservices/index.php",
"metadesc": "",
"metakey": "",
"name": "Test"
}
curl -X GET /api/index.php/v1/privacy/request
curl -X GET /api/index.php/v1/privacy/request/{request_id}
curl -X GET /api/index.php/v1/privacy/request/export/{request_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/privacy/request -d
{
"email":"这个 E-mail 受反垃圾邮件程序保护,您需要启用 JavaScript 才能查看。",
"request_type":"export"
}
curl -X GET /api/index.php/v1/privacy/consent
curl -X GET /api/index.php/v1/privacy/consent/{consent_id}
curl -X DELETE /api/index.php/v1/privacy/consent/{consent_id}
curl -X GET /api/index.php/v1/redirect
curl -X GET /api/index.php/v1/redirect/{redirect_id}
curl -X DELETE /api/index.php/v1/redirect/{redirect_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/redirect -d
{
"comment": "",
"header": 301,
"hits": 0,
"new_url": "/content/art/99",
"old_url": "/content/art/12",
"published": 1,
"referer": ""
}
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/redirect/{redirect_id} -d
{
"new_url": "/content/art/4",
"old_url": "/content/art/132"
}
curl -X GET /api/index.php/v1/tags
curl -X GET /api/index.php/v1/tags/{tag_id}
curl -X DELETE /api/index.php/v1/tags/{tag_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/tags -d
{
"access": 1,
"access_title": "Public",
"alias": "test",
"description": "",
"language": "*",
"note": "",
"parent_id": 1,
"path": "test",
"published": 1,
"title": "test"
}
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/tags/{tag_id} -d
{
"alias": "test",
"title": "new title"
}
curl -X GET /api/index.php/v1/templates/styles/{app}
curl -X GET /api/index.php/v1/templates/styles/{app}/{template_style_id}
curl -X DELETE /api/index.php/v1/templates/styles/{app}/{template_style_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/templates/styles/{app} -d
{
"home": "0",
"params": {
"fluidContainer": "0",
"logoFile": "",
"sidebarLeftWidth": "3",
"sidebarRightWidth": "3"
},
"template": "cassiopeia",
"title": "cassiopeia - Some Text"
}
curl -X PATCH -H "Content-Type: application/json" /api/index.php/v1/templates/styles/{app}/{template_style_id} -d
{
"template": "cassiopeia",
"title": "new cassiopeia - Default"
}
curl -X GET /api/index.php/v1/users
curl -X GET /api/index.php/v1/users/{user_id}
curl -X DELETE /api/index.php/v1/users/{user_id}
curl -X POST -H "Content-Type: application/json" /api/index.php/v1/users -d
{
"block": "0",
"email": "这个 E-mail 受反垃圾邮件程序保护,您需要启用 JavaScript 才能查看。