Web APIs hub


 * See the prototype Web APIs hub here, this describes the project.

The Web APIs Hub invites new and experienced developers to try Wikimedia web APIs in a friendly environment.

Problem statement
Wikimedia has made its APIs freely available, but for external developers it is difficult to figure out what they can do with our APIs, and how. Our web APIs and their documentation are currently scattered across several projects, with no central location for people to learn about and build upon them. Thus is the problem the Web APIs hub wants to solve.

The main target audience for this hub are developers not developing, or even running, the MediaWiki software. We want to diminish the risk of confusing them by mixing the content relevant to the with the rest of mediawiki.org. We plan to address this risk by morphing the API: namespace into the Web APIs hub, controlling and contextualizing links to other part of mediawiki.org or other Wikimedia sites. We also want to try offering a different look & feel in this namespace.

The prototype at http://devhub.wmflabs.org borrows the Blueprint skin from the OOjs UI Living style guide while importing articles from mediawiki.org.

See also the ongoing list of requirements (under discussion).

Get involved
Our goals for October-December 2015 are to:
 * Map current use of Wikimedia web APIs (T114017|) to guide where to focus documentation effort.
 * Write more articles (anyone can help, see /Contributing)
 * Check the Phabricator board where we are tracking all the tasks: #Web-APIs-Hub
 * |Discuss on this page's talk page

Structure
The hub is divided into three sections:
 * Inspire: where cool projects are showcased; links to more detailed project description pages
 * Explore: where users can play with the API(s) in functional sandboxes
 * /Build: where all the static official documentation and pointers to data sets reside.

Early wireframes:

Metrics
T102079 "Metrics about the use of the Wikimedia web APIs"

We also have stats related to engagement with. We want to filter these down to the API: (and possibly Manual:) namespace.
 * https://stats.wikimedia.org/wikispecial/EN/ChartsWikipediaMEDIAWIKI.htm shows page views and edits for mediawiki.org (scroll right to see 2014-2015), but these aren't broken down by namespace
 * https://stats.wikimedia.org/wikispecial/EN/TablesWikipediaMEDIAWIKI.htm has various interesting counts for, including recently active editors
 * You can get page views from stats.grok.se, e.g. API:Web APIs hub page views in the last 90 days. Note mediawiki.org isn't in the http://stats.grok.se dropdown (T111662).

Personas
These represent the users we want to make happy first (T92941)
 * Ankita, mobile developer willing to use Wikimedia data to enhance mobile apps.
 * Alberto, data scientist employed at an organization gathering and releasing data that could be synced with Wikimedia's.
 * Reetta, cultural activist working on mass-upload activities for public institutions.
 * Yanhui, academic researcher needing a massive data set to sustain his thesis.

Inspire

 * A curated collection of projects created using data from Wikimedia projects.
 * Means of submitting a project to be considered for showcase.

Build

 * Documentation at different technical levels.
 * An organized list of APIs and datasets available.

Community

 * Way of requesting new datasets and/or APIs.
 * Related news, features, and announcements.
 * A way for the community to get in touch with WMF folks for help on projects.

Technical infrastructure

 * Possibility to customize the UI in order to provide a pleasant user experience.
 * Possibility to create and edit content comfortably, including the homepage, tutorials, project showcases, code examples and screenshots.
 * Possibility to export API documentation from source code in repositories.
 * Possibility to integrate API sandboxes.
 * Possibility to search all the content at once.
 * Possibility to translate manual documentation (not the strict API docs)

Internal resources for developers
The following is a list of resources housed across multiple locations to help developers build using Wikimedia data. Feel free to add to the list below.

Documentation API Sandbox
 * https://www.mediawiki.org/wiki/API
 * /w/api.php output (self-documenting MediaWiki entry point on every wiki)
 * https://meta.wikimedia.org/wiki/Research:Data
 * https://meta.wikimedia.org/wiki/Research:Data#API
 * http://gdash.wikimedia.org/
 * https://www.mediawiki.org/wiki/How_to_contribute
 * https://www.mediawiki.org/wiki/API:Client_code/Gold_standard (best practices for web API client library development)
 * https://doc.wikimedia.org/ (automatically-generated PHP, JavaScript and CSS documentation)
 * generated CSS Living style guide documentation currently at http://tools.wmflabs.org/styleguide/
 * various text files and sample HTML in

✅ ApiEx provides a link to "Try in sandbox", defaulting to enwiki. Also featured in section of landing page. Existing APIs
 * https://www.mediawiki.org/wiki/Extension:ApiSandbox
 * https://en.wikipedia.org/wiki/Special:ApiSandbox
 * https://www.wikidata.org/wiki/Special:ApiSandbox
 * Recent changes stream ✅ Web APIs hub article
 * The MediaWiki web API. It's self-documenting (Special:APIHelp) and has a sandbox. Most Wikimedia APIs are implemented as API actions or query submodules of the MediaWiki web API, including:
 * Wikidata API
 * Echo API
 * Flow API
 * Upload API
 * Commons API (but also has a specialized API at https://tools.wmflabs.org/magnus-toolserver/commonsapi.php)
 * Mobile (content) API
 * GeoData API ✅  Web APIs hub article
 * RESTBase (new). It's self-documenting (enwiki starting point) with a built-in sandbox
 * Parsoid API

Other internal(ish) projects
 * Language API (?)
 * Account Creation API (new?, was part of abandoned Extension:SignupAPI)
 * http://stats.wikimedia.org/EN/TablesWikipediaEN.htm#editdistribution
 * http://infodisiac.com/
 * http://seealso.org/
 * API:Client code (third-party client libraries for the MediaWiki web API)
 * API:Client code/Evaluations Features, maintenance status, documentation.

Developer hubs & API documentation
Best in Class human readable API documentation

SoundCloud

LA Metro

Open Street Maps (writing style, but not layout or design)

Other examples:

Programmable Web Twitter Google Facebook Evernote LinkedIn GitHub Amazon Dropbox Instagram Stripe Paypal Tumblr Last.fm Twillio Vimeo Pinterest The Guardian New York Times Mendeley Flickr
 * http://www.programmableweb.com/
 * https://engineering.twitter.com/
 * http://twitter.github.io/
 * https://dev.twitter.com/
 * https://dev.twitter.com/docs
 * https://dev.twitter.com/docs/api/1.1
 * https://dev.twitter.com/docs/streaming-apis
 * https://developers.google.com
 * https://developers.google.com/products/
 * https://developers.google.com/apis-explorer/
 * https://developers.google.com/oauthplayground/
 * https://developers.google.com/maps/
 * https://developers.google.com/maps/documentation/javascript/tutorial
 * https://developers.google.com/maps/documentation/javascript/examples/map-simple
 * https://www.google.com/drive/using-drive/
 * https://developers.facebook.com/
 * https://developers.facebook.com/docs/
 * https://developers.facebook.com/docs/graph-api/
 * https://developers.facebook.com/docs/reference/apis/
 * http://dev.evernote.com/
 * http://dev.evernote.com/doc/
 * http://dev.evernote.com/doc/reference/
 * http://dev.evernote.com/doc/articles/authentication.php
 * https://developer.linkedin.com/
 * https://developer.linkedin.com/documents/authentication
 * https://developer.linkedin.com/rest
 * http://developer.github.com/
 * http://developer.github.com/v3/
 * http://developer.github.com/guides/
 * https://developer.amazon.com/
 * http://aws.amazon.com/
 * http://aws.amazon.com/documentation/
 * https://www.dropbox.com/developers
 * https://www.dropbox.com/developers/sync
 * https://www.dropbox.com/developers/datastore
 * https://www.dropbox.com/developers/core
 * https://www.dropbox.com/developers/dropins/chooser/js
 * https://www.dropbox.com/developers/dropins/saver
 * http://instagram.com/developer/
 * http://instagram.com/developer/authentication/
 * https://stripe.com/docs
 * https://stripe.com/docs/api/curl
 * https://readme.io may be based off this?
 * https://developer.paypal.com/
 * https://developer.paypal.com/docs/
 * https://developer.paypal.com/docs/api/
 * http://developers.tumblr.com/
 * http://www.tumblr.com/docs/en/api/v2
 * http://www.last.fm/api
 * http://www.last.fm/api/intro
 * https://www.twilio.com/
 * https://www.twilio.com/docs
 * https://www.twilio.com/docs/api
 * https://www.twilio.com/docs/quickstart
 * http://developer.vimeo.com/
 * http://developer.vimeo.com/apis
 * http://developer.vimeo.com/apis/simple
 * http://developers.pinterest.com/
 * http://developers.pinterest.com/api_docs/
 * Developer hub
 * API explorer/sandbox
 * App showcase
 * Developer network
 * App gallery
 * API console/sandbox
 * API docs
 * Developer portal
 * API docs
 * https://www.flickr.com/services/api/
 * https://www.flickr.com/services/developer/
 * https://www.flickr.com/services/apps/about/
 * https://www.flickr.com/services/apps/create/

Sandbox Examples

 * Swagger
 * Redis

Data Sets

 * https://www.quora.com/Data/Where-can-I-find-large-datasets-open-to-the-public (big list)
 * http://www.reddit.com/r/datasets (another big list)
 * https://www.google.com/publicdata/directory
 * http://www.findthedata.org/
 * http://www.data.gov/
 * http://data.gov.uk/
 * https://www.opensciencedatacloud.org/publicdata/
 * http://www.pewinternet.org/datasets/
 * https://nycopendata.socrata.com/
 * http://www.quandl.com/