42. The changing internet
● More devices
● More kinds of devices
● More sensors
● More kinds of sensors
● More data
● More kinds of data
● More connectivity
● More kinds of connectivity
73. Why hypermedia APIs?
Loose coupling between sender and receiver
Clients and servers can
evolve independently of one another
Driving application state by following links
74. Why hypermedia APIs?
Open source
Large community of developers
Low cost of entry means that even very small
businesses can use the technology
75.
76. Silos are bad
Unless you open them up, in which case...
They become repositories
Repositories are good
77. Add an API
Lower the barriers to participation
Use RESTful hypermedia standards
Make it easy to share
Publish the documentation
Make it easy to sign-up for an API key
Turning a silo into a repository
78. To a developer the API makes the organisation
look like a resource that can be programmed
like any other information system that has an API.
79. APIs change the
relationships between organisations
Traditional organisations
are becoming
“Programmable” organisations
80. Traditional business
No or limited data sharing
“Programmable” business
Data sharing through open hypermedia APIs
87. Disclaimer
These are just my personal views. Please don't
take them as being part of any official policy or
direction of the Joomla project.
88. Joomla Framework should be
the platform of choice for building
Internet of Things applications
Joomla CMS should be
the platform of choice for building
programmable organisations
89. How Joomla can help
● Make it easy to share data through hypermedia APIs
– Subject to access control
● Make it easy to manage APIs
– Developer/application registration
– API key control
– Rate-limiting, quotas, blocking
● Make it easy to remotely deploy and manage Joomla
installations via the API
● Make it easy to add new content types via the API
● Make it easy to consume data from other APIs
90. Joomla now
● Primarily used to build websites
● Only supports mobile through responsive
design
● No hypermedia API support
● Large, monolithic codebase
● Even components can't easily talk to one
another
93. Web API (eg. AJAX)
Get a list of articles:
GET /joomla:articles
GET /joomla:articles?page=3&perPage=10
Get a specific article:
GET /joomla:articles/123
Update an article:
PUT /joomla:articles/123
{”title”:”A new title for my content”, …}
94. Using the API directly
(this is just a wild guess about what it might look like)
Get a list of articles:
$args = array('page' => 3, 'perPage' => 10);
$input = new JInput($args);
$controller = JController::getInstance('joomla:articles');
$response = $controller->get($input);
99. Joomla Next steps...
● Define a generalised hypermedia API
– Web Services Working Group
● Define an architecture
– With web services at the core
● Implement the standard in code
● Provide client-side SDKs
● API support for current core content types
● API support for UCM
100. A web API for Joomla?
Github: https://github.com/chrisdavenport/j3-rest-api
(Pull requests welcome, of course)
Demo: http://demo.davenporttechnology.com/api
Use the HAL browser from here:
http://demo.davenporttechnology.com/api/hal-
browser/browser.html#http://demo.davenporttechnology.com/api