Changes

Jump to: navigation, search

Community:SummerOfCode15

1,487 bytes added, 13:17, 16 February 2015
Added some example rest APIs
| Define, test, and publish json hyperschemas for all release engineering APIs
| We have several APIs (e.g. clobberer, buildapi, mozpool, modern mapper, slaveapi, ...) but have no central standardised way of defining them, publishing them, documenting them, or sharing them. A cool project would be to use json hyperschema (see e.g. https://brandur.org/elegant-apis) to define all our apis, and have a framework for auto testing them, auto-documenting them, even potentially auto-generating client libraries for them e.g. in python, and auto-publishing the schemas to a central location for reference. Another interesting option might be using http://swagger.io/.
 
At the moment we have many systems that were developed before RelengAPI was created, and therefore not all our services are deployed into RelengAPI.
 
Since we have many systems deployed built on different technologies (RelengAPI and Buildbot are two examples of this) with many of them supporting a REST API, we wanted to define a standard way of describing these web services, that would be sufficiently generic that we could automatically generate documentation, generate client libraries (e.g. in python, node.js, go, java, …) that could interact with the API endpoints.
 
Example REST apis that we have are:
 
* Build API: https://wiki.mozilla.org/ReleaseEngineering/Applications/BuildAPI
* Mapper: https://wiki.mozilla.org/ReleaseEngineering/Applications/Mapper
* Clobberer: https://api.pub.build.mozilla.org/docs/usage/clobberer/#endpoints
* Slave API: http://mozilla-slaveapi.readthedocs.org/en/latest/api/#slaves-slave-actions-disable
 
This GSoC project would involve creating hyperschemas for the above APIs (and potentially others too), finding a good place to publish these references, and look at setting up some tools to generate documentation for these APIs, together with code generation of client libraries, and their associated documentation (godoc, javadoc, …) and if time allows, even auto-generation and deployment of new documentation, libraries, as and when these json hyper schemas get updated (perhaps with travis ci deploying to e.g. github pages or heroku).
| json, json hyperschema, solid programming skills, enthusiasm, code generation, web interface design
| [mailto:pmoore@mozilla.com Pete Moore]
Confirm
142
edits

Navigation menu