EEUK & Open API Revealed

22 May 2013

I had the pleas­ure of reveal­ing Open API, my latest cre­ation for Expres­sion­En­gine, in my present­a­tion at EEUK 2013. Open API is a front-end, http-based API for Expres­sion­En­gine that provides authen­tic­a­tion and CRUD (create/​read/​update/​delete) func­tion­al­ity to con­tent and data in the CMS.

Ben eeuk 01

In my talk I presen­ted a scen­ario in which I asked the mem­bers of the audi­ence to ima­gine their first day in a new job as an EE pro”. Their hypo­thet­ic­al back­ground was in front-end/design/EE with pro­fi­cient skills in HTML, CSS, JavaS­cript and some basic PHP, and they were hired to cre­ate intern­al sys­tems for the company.

I then pro­ceeded to present them with the tasks that they would be expec­ted to com­plete based on vari­ous require­ments and expect­a­tions of how the end res­ult should look and work. The three tasks were all very reas­on­able requests, noth­ing out of the ordin­ary or that could be seen as overly com­plex, how­ever each of the tasks presen­ted chal­lenges relat­ing spe­cific­ally to get­ting con­tent in and out of Expres­sion­En­gine that would either make them impossible to do or that would require workarounds.


Next I looked at some of the options that are out there: the nat­ive Expres­sion­En­gine API Lib­rar­ies, Chan­nel Data, EE Data API, Entry API, and explained why each of these was either unsuit­able or not ideal for the chal­lenges men­tioned above. I came to the con­clu­sion that:

Expres­sion­En­gine is miss­ing a way of retriev­ing and modi­fy­ing con­tent from out­side the Con­trol Panel”

I then intro­duced Open API as a solu­tion and explained its features:

  • Mem­ber authen­tic­a­tion and authen­tic­ated sessions
  • CRUD cap­ab­il­ity on chan­nels, entries, cat­egor­ies, cat­egory groups, mem­bers, etc.
  • Free and open source
  • Prop­er API documentation

And presen­ted its archi­tec­ture in a simple visu­al­isa­tion (reveal­ing the teas­er I pre­vi­ously pos­ted). Open API uses the Chan­nel Data lib­rary for read requests and the Expres­sion­En­gine API Lib­rar­ies for create/​update/​delete requests, which has the bene­fit of ensur­ing that any third-party exten­sions that hook into the API will still work. Any requests that are not sup­por­ted by the Expres­sion­En­gine API Lib­rar­ies will be pro­cessed by the Open API Lib­rary which can be exten­ded to add fur­ther fea­tures and capabilities.

Open API architecture

I showed Open API in action by giv­ing a live demo of three web apps that I had developed spe­cific­ally for the present­a­tion. Unsur­pris­ingly each of the apps ful­filled each of the tasks that I had presen­ted earli­er and the Open API was able to address all of the chal­lenges that Expres­sion­En­gine nat­ively could not. The apps were all Javas­cript apps that used AJAX to com­mu­nic­ate with Open API and were able to retrieve, update, cre­ate and delete con­tent in the CMS.

My clos­ing slide hits home with the fol­low­ing statement:

Expres­sion­En­gine as a Plat­form – requires a paradigm shift in the level of free­dom and con­trol we have over our content”

I believe that con­tent free­dom is essen­tial for Expres­sion­En­gine to really become a Plat­form and that releas­ing Open API to the com­munity was a big step in the right direction.

Open API is avail­able here and you can view my present­a­tion slides here.

Conference name tag