Ben Croker
Lead Developer, Venveo
Add-On Developer, PutYourLightsOn
@ben_pylo
expressionengine’s
missing
api
Slide 2
Slide 2 text
No content
Slide 3
Slide 3 text
No content
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
No content
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
Your First Day As
The EE Pro
Slide 10
Slide 10 text
Task 1
News Dept.
Slide 11
Slide 11 text
Build a simple,
mobile-friendly,
publishing system
for news articles
“
“
Slide 12
Slide 12 text
No content
Slide 13
Slide 13 text
safecracker
form
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
?
Slide 16
Slide 16 text
Challenges
Create new categories
Update existing categories
Slide 17
Slide 17 text
Task 2
Sales Dept.
Slide 18
Slide 18 text
Build a task list
system with
commenting
“
“
Slide 19
Slide 19 text
No content
Slide 20
Slide 20 text
entry
category
Slide 21
Slide 21 text
status
Slide 22
Slide 22 text
status title
Slide 23
Slide 23 text
status title
delete
Slide 24
Slide 24 text
status title
delete
create
Slide 25
Slide 25 text
Challenges
Update statuses and titles inline
Delete entries
Create new entries on-the-fly
Slide 26
Slide 26 text
Task 3
Mobile App Dept.
Slide 27
Slide 27 text
Build an endpoint
that can be queried for
recently published
news articles
“
“
Slide 28
Slide 28 text
Mobile App
CMS
Return articles in
JSON format
Request new articles
since last check
Slide 29
Slide 29 text
Challenges
Request published entries
based on specific time
Speed and performance
Output entries in JSON format
Slide 30
Slide 30 text
Realisation
ExpressionEngine’s CRUD Functionality
is locked in the Control Panel
The only way OUT is with Templates
The only way IN is with Safecracker
Slide 31
Slide 31 text
ExpressionEngine
API Libraries
EE2 Native Libraries
Ellis Lab
Slide 32
Slide 32 text
ExpressionEngine API’s
Used mainly for Creating, Updating
and Deleting
Limited Retrieval
Inconsistent Syntax
Available in Back-end only
Slide 33
Slide 33 text
Channel Data
Library
Justin Kimbrell
Objective HTML
Slide 34
Slide 34 text
Channel Data Library
Retrieval of Content
(Channels, Entries, Categories, ...)
Abstracted Methods
Consistent Syntax
Available in Back-end only
Slide 35
Slide 35 text
EE Data API
Chris Imrie
Moresoda
Slide 36
Slide 36 text
EE Data API
CodeIgniter App
Very Basic Retrieval of
Channels and Entries
Available on Front-end
Slide 37
Slide 37 text
Entry API
Rein de Vries
Reinos.nl
Slide 38
Slide 38 text
Entry API
CRUD Capability on Entries
and Categories
REST, XML-RPC and SOAP
Commercial Add-on
Available on Front-end
Slide 39
Slide 39 text
Conclusion
ExpressionEngine
is missing a way of retrieving and
modifying content from outside the
Control Panel
Slide 40
Slide 40 text
Introducing
Open API
Slide 41
Slide 41 text
Open API
CRUD Capability
Free and Open Source
Proper API Docs
Available on Front-end
Slide 42
Slide 42 text
Open API Capabilities
Member Authentication
C(reate) R(ead) U(pdate) D(elete):
Channels, Channel Entries,
Categories, Category Groups,
Members,
...
Slide 43
Slide 43 text
Open API Architecture
HTTP GET & POST Requests
JSON Responses
Authenticated Sessions
Language Independent
(PHP, JavaScript, CURL, AJAX,...)
Slide 44
Slide 44 text
Open API
Open API Lib
Channel Data
Library
Read Create/Update/Delete
Front-End Request JSON Response
EE API Lib
Slide 45
Slide 45 text
Open API Docs
h p://docs.eeopenapi.apiary.io
Slide 46
Slide 46 text
Demos
Slide 47
Slide 47 text
ExpressionEngine
as a Platform
Requires a paradigm shi
in the level of freedom and control
we have over our content
Slide 48
Slide 48 text
Open API
h ps://github.com/putyourlightson/open-api
h p://docs.eeopenapi.apiary.io
Ben Croker
@ben_pylo