cAPI - Core
Version 1.3.6.1 Stable
Released on: Saturday, 29 October 2022
Maturity | Stable |
Released on | Saturday, 29 October 2022 |
What is cAPI?
Code named "Constant API", cAPI is the fantastic result of an effort to mesh the Slim micro-framework with the Joomla Framework / CMS. Once that goal was accomplished, it soon became obvious that just built a Joomla RESTful API was only the beginning! By leveraging Joomla's advanced "pluggable" architecture and robust ACL, cAPI can transform your website into a true middleware service for anything ranging from SQL servers, MongoDB servers and even Microsoft's Active Directory (think of the SSO possibilities!).
How does it work?
cAPI injects the Slim micro-framework into the Joomla application instance, allowing for service route plugins to be built at any level of the event stack. But that's only the beginning!
A Services Control Panel manages the creation of access tokens, Slim framework parameters and API rate limitation rules. This allows an administrator to create tokens mapped to specific Joomla users who in turn are assigned unique group permissions using Joomla ACL.
The service routes are built into Joomla plugins which can be enabled / disabled or assigned access permissions individually. This opens the door for development of feature expansions to the core cAPI services to expose 3rd party Joomla extensions, database querying or even remote LDAP as RESTful JSON APIs.
The following release includes a fix to resolve an icompatibility issue with PHP 8+ resulting from a deprecated function.
- Implemented fix to avoid deprecation error for function get_magic_quotes_gpc(). Tested successfully in PHP8.1 but still recommend running on stable version of PHP 7.4.x or lower.
- Updated version to 1.3.6.1
Previous release -
The following release includes a new user method allowing authorized administrators to return a list of all user accounts.
- Increment to version 1.3.6.
- Create new method GET /user/list/all (getUserListAll)
Updated documentation can be found here:
https://learn.getcapi.org
API Doc and Sandbox
Version 1.3.6 Stable
Released on: Friday, 07 September 2018
Maturity | Stable |
Released on | Friday, 07 September 2018 |
What is cAPI?
Code named "Constant API", cAPI is the fantastic result of an effort to mesh the Slim micro-framework with the Joomla Framework / CMS. Once that goal was accomplished, it soon became obvious that just built a Joomla RESTful API was only the beginning! By leveraging Joomla's advanced "pluggable" architecture and robust ACL, cAPI can transform your website into a true middleware service for anything ranging from SQL servers, MongoDB servers and even Microsoft's Active Directory (think of the SSO possibilities!).
How does it work?
cAPI injects the Slim micro-framework into the Joomla application instance, allowing for service route plugins to be built at any level of the event stack. But that's only the beginning!
A Services Control Panel manages the creation of access tokens, Slim framework parameters and API rate limitation rules. This allows an administrator to create tokens mapped to specific Joomla users who in turn are assigned unique group permissions using Joomla ACL.
The service routes are built into Joomla plugins which can be enabled / disabled or assigned access permissions individually. This opens the door for development of feature expansions to the core cAPI services to expose 3rd party Joomla extensions, database querying or even remote LDAP as RESTful JSON APIs.
The following release includes a new user method allowing authorized administrators to return a list of all user accounts.
- Increment to version 1.3.6.
- Create new method GET /user/list/all (getUserListAll)
Previous release - The following update is a minor bug fix to resolve an issue with a missing password field in Swagger UI for the POST / user/edit (create user) method.
- Increment version to 1.3.5.1
- Add password field to postUserEdit
- Remove capi folder from services/libraries as it is not needed for now.
- Remove capi from libraries list is there is no currently used services/capi library
Updated documentation can be found here:
https://learn.getcapi.org
API Doc and Sandbox
Version 1.3.5.1 Stable
Released on: Saturday, 11 August 2018
Maturity | Stable |
Released on | Saturday, 11 August 2018 |
What is cAPI?
Code named "Constant API", cAPI is the fantastic result of an effort to mesh the Slim micro-framework with the Joomla Framework / CMS. Once that goal was accomplished, it soon became obvious that just built a Joomla RESTful API was only the beginning! By leveraging Joomla's advanced "pluggable" architecture and robust ACL, cAPI can transform your website into a true middleware service for anything ranging from SQL servers, MongoDB servers and even Microsoft's Active Directory (think of the SSO possibilities!).
How does it work?
cAPI injects the Slim micro-framework into the Joomla application instance, allowing for service route plugins to be built at any level of the event stack. But that's only the beginning!
A Services Control Panel manages the creation of access tokens, Slim framework parameters and API rate limitation rules. This allows an administrator to create tokens mapped to specific Joomla users who in turn are assigned unique group permissions using Joomla ACL.
The service routes are built into Joomla plugins which can be enabled / disabled or assigned access permissions individually. This opens the door for development of feature expansions to the core cAPI services to expose 3rd party Joomla extensions, database querying or even remote LDAP as RESTful JSON APIs.
The following update is a minor bug fix to resolve an issue with a missing password field in Swagger UI for the POST / user/edit (create user) method.
- Increment version to 1.3.5.1
- Add password field to postUserEdit
- Remove capi folder from services/libraries as it is not needed for now.
- Remove capi from libraries list is there is no currently used services/capi library
Previous release - cAPI v1.3.5 a HUGE bug fix release which includes code updates for Joomla 3.8+ compatbility!
- Fix GET /tag/types response to JSON decode any encoded fields.
- Add en-GB language definition for COM_SERVICES_ITEM_DELETED_SUCCESSFULLY
- Add en-GB language definitions for token views.
- Add en-GB definition for COM_SERVICES_TOKENS_ACTIONS
- Update docblocks to parameterize license, copyright, author and version for build plan.
- Temporary update to improve compatibility with CORS on different browsers until a more granular solution is implemented.
- Allow for blank or null dlid values.
- Create validation rule class JFormRuleCapidlid for capidlid and move function setDlid() into this validation rule.This allows for dlid updates on save and save & close and ensures only validated input is saved.
- Resolve bug which prevented the cAPI download ID from properly being assigned to the extension update site.* Remove dedicated capi/dlid library and associated ARS dlid API methods and refactor that functionality into a custom Joomla field for com_services administration.
- Remove Akeeba Release System (ARS) API method GET /ars/dlid
- Update downloadid field schema
- Remove dlid from capi services and add capidlid.php custom field class to com_services models.
- Resolve issues with token and tokens views and configure administrator custom field token.xml
- Token custom field for administrator and site token edit view.Userid for site token edit view, required to force pre-population of userid of current session.
- Resolve bug with status icon in tokens list.
- Remove mode and debug from tokens administrative view.
- Update com_services admin images
- Update language definitions.
- Remove api_throttle front-end filter item
- Add userid.php class to /administrator/com_services/models/fields/
- Compatibility updates to /administrator/components/com_services/views/token/tmpl/edit.php
- Create com_services administrative model field class token.php
- Compatibility updates to /administrator/components/com_services/views/token/view.html.php
- Compatibility updates to /administrator/components/com_services/views/tokens/tmpl/default.php
- Update docblocks with variablized fields.
- Compatibility updates to /administrator/components/com_services/views/tokens/view.html.php
- Update docblocks with variablized fields.
- Corrections to controller.php docblock
- Remove history from component configuration.
- Create custom read-only front-end field userid.php to populate tokenform.
- Create custom front-end field type: token
- Remove fixed default token value in front-end view and make read-only
- Include front-end view classes for tokens.
- Update joomla-packager.xml to prevent errant deletion of build directory folder.
- Include installer structure.xml with com_services component.
- Compatibility updates to com_services services.xml
- Update joomla-packager to place media files in correct location in compiled package and updated services.xml to include parameters for media file installation.
- Increment version to 1.3.5 and updated copyright date to 2018.
- Resolve bug which results in the following error when any level of error reporting is enabled."NOTICE: Trying to get property of non-object"
- Include postflight() function in com_services script.php to automatically enable services plugins, included with pkg_capi_core, after they have been installed.
- Revert work on package manifest installer script.Move functionality into component installer script.
- Update joomla-packager.xml to handle Package install scripts.
- Update package script name and manifest reference to pkg_capi_core.php
- Include reference to package script file pkg_script.php
- Removed commented-out parameters from com_services services.xml
- Remove plugin install function from script.php
- Revert changes to language file folder definition.
- Ensure /installer/structure.xml is created in build, but removed from original directory /administrator/installer/
- Updated to accommodate structure.xml
- Compatibility updates to /components/com_services/services.php
- Compatibility updates to /components/com_services/router.php
- Compatibility updates to /components/com_services/controller.php
- Update copyright year in doc blocks
- Compatibility updates to /components/com_services/views/swaggeruimisc/view.html.php
- Compatibility updates to /components/com_services/views/swaggerui/view.html.php
- Compatibility updates to /components/com_services/views/slimphpframework/tmpl/default_filter.php
- Compatibility updates to /components/com_services/views/slimphpframework/view.html.php
- Compatibility updates to all front-end model fields. Includes two new fields:filemultiple.php modifiedby.php
- Add token form and filter xml files to front-end model forms.
- Compatibility updates to /components/com_services/models/slimphpframework.php
- Add front end models for token management.
- Compatibility update to /components/com_services/helpers/services.php
- Add front-end controllers for token management.
- Compatibility update to /components/com_services/controllers/slimphpframework.php
- Compatibility update to /plugins/search/services/services.xml
- Compatibility update to /plugins/search/services/services.php
- Add com_services media to component
- Update config.xml with comment block including latest examples of fields.
- Compatibility update to /administrator/components/com_services/script.php
- Compatibility update to com_services config.xml
- Compatibility updates to /administrator/components/com_services/controller.php
- Compatibility updates to /administrator/components/com_services/services.php
- New administrator model field modifiedby.php
- New administrator model field filemultiple.php
- Compatibility update to services.css
- Compatibility updates to /administrator/components/com_services/controllers/token.php
- Compatibility updates to /administrator/components/com_services/controllers/tokens.php
- New com_servers administrator helper class listhelper.php
- Compatibility updates to /administrator/components/com_services/helpers/services.php
- Compatibility updates to /administrator/components/com_services/models/fields/timeupdated.php
- Compatibility updates to /administrator/components/com_services/models/fields/timecreated.php
- Compatibility updates to /administrator/components/com_services/models/fields/foreignkey.php
- Compatibility updates to /administrator/components/com_services/models/fields/custom_field.php
- Compatibility updates to /administrator/components/com_services/models/fields/createdby.php
- Compatibility update: include /administrator/components/com_services/models/forms/filter_tokens.xml
- Remove token default setting in token.xml
- Compatiblity updates to /administrator/components/com_services/models/forms/token.xml
- TODO: These administrator model classes will needs to be updated in a future release:- slimphpframework.php - swaggerui.php
- Compatibility updates to /administrator/components/com_services/models/token.php
- Compatibility updates to /administrator/components/com_services/models/tokens.php
- New sql update script: update.mysql.utf8.sql
- Remove default time for checked_out_time and last_used.
- Update class ServicesTabletoken to match current Joomala development guidelines.
- Updated GET /token/manage/all to required either general core.admin or com_services core.admin in order to list all tokens.IMPORTANT: Within Service Control Panel > options > permissions, a group should NOT be given "Configure ACL & Options" privilege if the administrator does not intend that group to have core.admin privilege on com_services.
- Updated security on updateTokenServicesRestManage() and deleteTokenServicesRestManage() - restrict to core.edit.own privilege on specified $tokenid
- Remove check preventing requester from deleting the same token used to authenticate access to the method.Updated permissions to allow non-core.admin users to delete their own tokens.
- Update tokenServicesRestManage() to allow own-token updates in current session.
Updated documentation can be found here:
http://learn.getcapi.org
API Doc and Sandbox
Version 1.3.4.4 Stable
Released on: Sunday, 14 January 2018
Maturity | Stable |
Released on | Sunday, 14 January 2018 |
What is cAPI?
Code named "Constant API", cAPI is the fantastic result of an effort to mesh the Slim micro-framework with the Joomla Framework / CMS. Once that goal was accomplished, it soon became obvious that just built a Joomla RESTful API was only the beginning! By leveraging Joomla's advanced "pluggable" architecture and robust ACL, cAPI can transform your website into a true middleware service for anything ranging from SQL servers, MongoDB servers and even Microsoft's Active Directory (think of the SSO possibilities!).
How does it work?
cAPI injects the Slim micro-framework into the Joomla application instance, allowing for service route plugins to be built at any level of the event stack. But that's only the beginning!
A Services Control Panel manages the creation of access tokens, Slim framework parameters and API rate limitation rules. This allows an administrator to create tokens mapped to specific Joomla users who in turn are assigned unique group permissions using Joomla ACL.
The service routes are built into Joomla plugins which can be enabled / disabled or assigned access permissions individually. This opens the door for development of feature expansions to the core cAPI services to expose 3rd party Joomla extensions, database querying or even remote LDAP as RESTful JSON APIs.
cAPI v1.3.4.4 is a bug-fix release.
- Increment to version 1.3.4.4
- Update function createTokenServicesRestManage() to allow own-token creation by any registered user, while restriction token creation, on behalf of other users, for requesting accounts which have core.create privilege on com_services.
- Update docblock for updateTokenServicesRestManage() to include @throws Exception
- Configured createTokenServicesRestManage() to allow token creation for:
- Self
- Other users if core.admin or if core.manage
- If not core.admin, requesting user must have access to all groups of target user ID (when userid is defined)
Affects methods:
- POST /token/manage/userid/{userid}
- POST /token/manage/
cAPI v1.3.4.3 is a bug-fix release.
- Increment to version 1.3.4.3. Change joomlaID to j38
- Resolved errors caused by undeclared, nested class objects.
- Change minimum permission for GET component/model and GET component/list/all to core.login.admin
- TODO: Improve access control check compatibility with various security modes for core and 3rd party extensions.
cAPI v1.3.4.2 was a bug-fix release.
- Update version to 1.3.4.2
- Require "Super User" (core.admin) privileges to access complete components list.
- Create method GET /component/model to allow retrieving Model class information only. Helps with introspecting third-party Models which may not have known/standard Model methods.
- Include modelMethod and modelMethodArguments (json) request parameters to GET /component/model/data to accommodate different Model class getters.
- For GET /component/model/data, use call_user_func_array to call designated $modelMethod on $instance object with any number of arguments passed as JSON encoded array $modelMethodArguments.
- Include HTML error codes for invalid requests.
cAPI v1.3.4.1 was a bug-fix release.
- Remove unnecessary path debug in GET component/list/all response.
- Update URL for "Find out more about cAPI" link.
- Change $extension->name to $extension->element
- Update to version 1.3.4.1
This release also includes the following:
- Improve error trapping for GET component/model/data
- Validate getInstance for getComponentModelData
- Validate JTable::getInstance input for getComponentTableDataById
- Build advanced filtering for getComponentModelData
- Implement Joomla ACL per component and individual asset item.
- New method getComponentModelData
- Complete development on getComponentTableDataById.Include get_class_methods boolean check in URLparameter to allow class methods and associated parameters to be included in the response (requires core.edit for related component).
- Update getComponentTableData to getComponentTableDataById.Method will return table data for single ID request.
- Create method getComponentTableData
- New method getComponentTableFields for returning component fields.
- Initial work completed on getComponentListAll. Returns list of all components, along with table and model classes for "site" and "administrator" contexts.
- Include Basic Authentication SecurityScheme definition.
- Methods to allow Basic Authentication through Authorization header or force HTTP Apache Auth via URL variable basic_auth=true.
- Create new class ServicesJoomlaHelpersComponent().
- Increment to version 1.3.4.
Previous release:
- Remove extraneous tag_link_class parameter
- Increment cAPI version to 1.3.3
- Resolve bug with successful updating of dlid in update_sites table, extra_query field when editing the Download ID parameter in com_services component options.
Updated documentation can be found here:
http://learn.getcapi.org
API Doc and Sandbox
Version 1.3.3 Stable
Released on: Tuesday, 08 August 2017
Maturity | Stable |
Released on | Tuesday, 08 August 2017 |
What is cAPI?
Code named "Constant API", cAPI is the fantastic result of an effort to mesh the Slim micro-framework with the Joomla Framework / CMS. Once that goal was accomplished, it soon became obvious that just built a Joomla RESTful API was only the beginning! By leveraging Joomla's advanced "pluggable" architecture and robust ACL, cAPI can transform your website into a true middleware service for anything ranging from SQL servers, MongoDB servers and even Microsoft's Active Directory (think of the SSO possibilities!).
How does it work?
cAPI injects the Slim micro-framework into the Joomla application instance, allowing for service route plugins to be built at any level of the event stack. But that's only the beginning!
A Services Control Panel manages the creation of access tokens, Slim framework parameters and API rate limitation rules. This allows an administrator to create tokens mapped to specific Joomla users who in turn are assigned unique group permissions using Joomla ACL.
The service routes are built into Joomla plugins which can be enabled / disabled or assigned access permissions individually. This opens the door for development of feature expansions to the core cAPI services to expose 3rd party Joomla extensions, database querying or even remote LDAP as RESTful JSON APIs.
cAPI v1.3.3 includes a bug fix for the Download ID component parameter and how it populates extra_query field in the update_sites table. It's likely that the previous couple releases may not automatically update via the Joomla Updater (even with your Download ID configured). If that is the case, you should download and install cAPI Core v1.3.3, manually.
This release includes the following:
- Remove extraneous tag_link_class parameter
- Increment cAPI version to 1.3.3
- Resolve bug with successful updating of dlid in update_sites table, extra_query field when editing the Download ID parameter in com_services component options.
Previous release:
- Remove updateserver for services/slimjsonapiview plugin.Remove updateserver for services/slimjsonapiview plugin.
- Remove updateserver for services/slimjsonapimiddleware plugin
- Remove updateserver for services/slim
- Remove updateserver for services/rest plugin.
- Remove updateserver for services/joomla
- Remove updateserver for lib_services.
- Remove updateserver for com_services.
- Build component options fields and logic to control view-access to Swagger UI routes for each services plugin.
- Update Swagger definition description for cAPI.
- Bug fixes to authentication for getUserDetailByTypeValue.
- Allow Super Users (or where user's session matches requested user detail) to access getUserDetailByTypeValue
- Return responses for getUserDetailByTypeValue as object instead of as sub-elements of array[0].
- Require Super User permissions for getUserDetailByTypeValue.
- Update Joomla minimum version to 3.6.
- Update cAPI Core Package manifest file to include new include libraries and provide link to learn.getcapi.org.
- Add additional services folders to lib_services.xml manifest.
- Fix 500 error getCategoryListByIdCategories when searching category id which does not exist.
- Update zircote/swagger-php 2.0.10
- Update doctrine/annotations library
- Add symfony/finder libraries
- Fix typo in guzzlehttp vendor library folder name.
- Updated lib_services.xml manifest to include new ReactPHP libraries.
- Update Composer library files to include ReactPHP libraries.
- Add libraries and associated dependencies for ReactPHP
- Update zircote/swagger-php to v2.0.10
- Upgrade Slim Framework to v2.6.3
- Commit remaining unversioned files added to /libararies/services/
- Include web.config in /libraries/services/
- Commit updated symfony vendor library in /libraries/services/symfony to match J37.x
- Included updated psr vendor library in /libraries/services/psr
- Include updated Joomla vendor library in /libraries/services/joomla to match compatibility with Joomla 3.7.x
- Increment Joomla ID to j37
Updated documentation can be found here:
http://learn.getcapi.org
API Doc and Sandbox
Version 1.2.8 Stable
Released on: Thursday, 13 April 2017
Maturity | Stable |
Released on | Thursday, 13 April 2017 |
What is cAPI?
Code named "Constant API", cAPI is the fantastic result of an effort to mesh the Slim micro-framework with the Joomla Framework / CMS. Once that goal was accomplished, it soon became obvious that just built a Joomla RESTful API was only the beginning! By leveraging Joomla's advanced "pluggable" architecture and robust ACL, cAPI can transform your website into a true middleware service for anything ranging from SQL servers, MongoDB servers and even Microsoft's Active Directory (think of the SSO possibilities!).
How does it work?
cAPI injects the Slim micro-framework into the Joomla application instance, allowing for service route plugins to be built at any level of the event stack. But that's only the beginning!
A Services Control Panel manages the creation of access tokens, Slim framework parameters and API rate limitation rules. This allows an administrator to create tokens mapped to specific Joomla users who in turn are assigned unique group permissions using Joomla ACL.
The service routes are built into Joomla plugins which can be enabled / disabled or assigned access permissions individually. This opens the door for development of feature expansions to the core cAPI services to expose 3rd party Joomla extensions, database querying or even remote LDAP as RESTful JSON APIs.
The release of cAPI v1.2.8 includes new Joomal Tag methods to allow create / read / update / delete and tag search. The next version of cAPI will handle tag assignment to com_content items.
A new menu item view has been added to com_services to allow site admins to create Swagger UI interfaces for any Swagger JSON definition URLs.
Commit | Message | |
47818e5ed11 | Remove unnecessary language item definition. | |
f25e6b2d67d | Remove unnecessary array definition. | |
1d09ae78e87 | Remove slim_php_framework view and related files and language parameters as they are no longer needed. | |
956a56313ae | Symmetrically encrypt swaggerjson path parameter as "cryptoKey" key value store in user session. | |
a726cd3562a | Create service route getSlimSwaggerRemoteByUrl.Update com_services to use this route for the view swaggeruimisc. | |
982c4c98801 | Commit previously unversioned files. | |
2c50d5da210 | Menu item parameter configuration for swaggeruimisc view for com_services | |
c51921d1eaa | Create swaggeruimisc view for com_services to allow for front-end presentation of any pre-configured Swagger JSON definition file. | |
416cea8ca97 | Resolve issues with proper handling of CORS preflight requests. | |
745e2515fb8 | Fix bug with proper setting of Access-Control-Allow-Origin with respect to CORS. | |
9a91f513903 | Update token handling for parameter and header value to ensure acceptance. | |
adc6a78fb64 | Created PUT /tag and DELETE /tag methods.Working on Swagger docs. | |
75233fa07ad | Use jModel for postTag.Improve getTagNameById | |
82edd622fc9 | Complete initial work on postTag.TODO: Finish metadata handling and parameters. Finish swagger doc block. | |
a5cfd0d7c7f | getTagFields, postTag | |
83c97cd9f3e | getTagTypes, getTagSearch, getTagNameById | |
9d9bc9544a2 | Build new Tag methods. | |
a3e35260d55 | span title="Include "Authorization" in Access-Control-Allow-Headers as per request Include "Authorization" in Access-Control-Allow-Headers as per request https://www.annatech.com/forums/capi-wish-list/25-adding-authorization-in-htaccess.html#84 | |
ab554d3b9a9 | Update version and year. |
Updated documentation can be found here:
http://learn.getcapi.org
API Doc and Sandbox
Version 1.1 Stable
Released on: Saturday, 12 December 2015
Maturity | Stable |
Released on | Saturday, 12 December 2015 |
What is cAPI?
Code named "Constant API", cAPI is the fantastic result of an effort to mesh the Slim micro-framework with the Joomla Framework / CMS. Once that goal was accomplished, it soon became obvious that just built a Joomla RESTful API was only the beginning! By leveraging Joomla's advanced "pluggable" architecture and robust ACL, cAPI can transform your website into a true middleware service for anything ranging from SQL servers, MongoDB servers and even Microsoft's Active Directory (think of the SSO possibilities!).
How does it work?
cAPI injects the Slim micro-framework into the Joomla application instance, allowing for service route plugins to be built at any level of the event stack. But that's only the beginning!
A Services Control Panel manages the creation of access tokens, Slim framework parameters and API rate limitation rules. This allows an administrator to create tokens mapped to specific Joomla users who in turn are assigned unique group permissions using Joomla ACL.
The service routes are built into Joomla plugins which can be enabled / disabled or assigned access permissions individually. This opens the door for development of feature expansions to the core cAPI services to expose 3rd party Joomla extensions, database querying or even remote LDAP as RESTful JSON APIs.
Details coming soon!
IMPORTANT
Certain breaking changes had to be made to the naming convension of the a couple extenions in the core package, requiring a full uninstall before reinstalling v1.1.