OpenDeviceLab.com provides a simple and freely accessible JSON-API to enable you to fetch and use all public information on the registered ODLs within your own data streams and -outputs.

The API and data is provided under a CC-BY-SA license. This means you are free to use the API to share and remix it's output, as long as you credit OpenDeviceLab.com and distribute the resulting work under a similar license (read the exact license terms here). Have fun!

Accessing the API

To access the API you just need to call our JSON based API. The API is accessible to everyone via:

http://api.opendevicelab.com/

The API is CORS- and JSONP-enabled.

Available Filters

You can filter the output to ODLs that are flagged as providing specific device brands. The following call would only return ODLs that provide Nokia AND HTC devices:

http://api.opendevicelab.com/?brands=Nokia,HTC

You can also filter the output to ODLs in specific countries. The following call would only return labs located in Germany OR the UK:

http://api.opendevicelab.com/?countries=Germany,United%20Kingdom

Use URL-encoding for any non-alphabetical characters (e.g. %20 for a space, like in "South%20Africa").

You can also filter by types:

http://api.opendevicelab.com/?types=virtual

This call would only return virtual labs (as opposed to resident or mobile ones - see the FAQ for a description of that).

And finally you can also combine multiple filters. Use the ampersand to separate key-value pairs, like in this combined call, that would return ODLs from Belgium OR South Africa, that provide Samsung AND RIM devices, and are of the type resident OR mobile:

http://api.opendevicelab.com/?countries=Belgium,South%20Africa&brands=Samsung,RIM&types=resident,mobile

API output

The API returns an array containing objects each representing an Open Device Lab. Here is an example of such an object:

{
	"id": 11,
	"name": "Testlab",
	"date": 1352305039,
	"open": 2,
	"closed": 0,
	"rating": 2.5,
	"description": "Lorem ipsum dolor sit amet",
	"type": "resident",
	"status": "just_established",
	"loc": {
		"city": "Berlin",
		"organization": "Jay's Homelab",
		"street_adress": "Holzweg 17",
		"state": "Berlin",
		"country": "Deutschland",
		"zip": "13187",
		"latlng": {
			"lat": 52.519171,
			"lng": 13.4060912
		}
	},
	"urls": [{
		"url": "http:\/\/lab-up.org",
		"type": "Website"
	},{
		"url": "http:\/\/twitter.com\/labuporg",
		"type": "Twitter"
	},{
		"url": "https:\/\/alpha.app.net\/labuporg",
		"type": "AppNet"
	}],
	"number_of_devices": 34,
	"brands_available": ["Apple", "HP", "HTC", "Nokia"],
	"donations": {
		"accepts_device_donations": true,
		"donations_received": 7,
		"incubation_needed": false
	},
	"comments": [{
		"author": "klick_ass",
		"gravatar": "http:\/\/www.gravatar.com\/avatar\/bbe6b7c...",
		"date": 1352663917,
		"content": "I liked the ODL!",
		"openclosed": "open",
		"rating": 4
	}, {
		"author": "Andre Jay Meissner",
		"gravatar": "http:\/\/www.gravatar.com\/avatar\/445a465...",
		"date": 1352663948,
		"content": "I absolutely DISLIKED that ODL!",
		"openclosed": "open",
		"rating": 1
	}]
}

Legend

id:
unique ID [int]
name:
name [string]
date:
creation date [timestamp in seconds]
open:
no. of people saying the ODL is open to the public [int]
closed:
no. of people saying the ODL is not open to the public [int]
rating:
average rating [float, max. 5.0]
description:
description the ODL provided on itself [string]
type:
resident | mobile | virtual [string]
status:
well_established | just_established | not_established (yet) [string]
loc:
ODL location information [object]
city:
city [string]
organization:
name of the organization (company etc.) hosting the lab [string]
street_adress:
street and house number [string]
state:
state [string]
country:
country [string]
zip:
ZIP code [string]
latlng:
geolocation [object]
lat:
latitude [float]
lng:
longitude [float]
urls:
URLs of online presences of this ODL [array of objects]
url:
a URL [string]
type:
what the above URL points to [enum: e.g. Website, Twitter, AppNet, GooglePlus, Facebook, otherSocialNetwork, Github, Bitbucket, otherSocialCodingPlatform, unclassified]
number_of_devices:
number of devices present at the ODL [int]
brands_available:
list of device brands present at the ODL [array of strings]
donations:
donation information [object]
accepts_device_donations:
this ODL would be happy to receive device donations [boolean]
dydd_donations_received:
number of devices donated via DYDD [integer]
incubation_needed:
this (unlisted) ODL needs device donations before it can open doors to the public [boolean]
comments:
user comments on this ODL [array of objects]
author:
comment author's name [string]
gravatar:
url to comment author's gravatar image [string]
date:
comment date [timestamp in seconds]
content:
comment itself [string]
openclosed:
ODL marked open or closed by comment author [enum: open, closed]
rating:
comment authors rating of this ODL in this comment [int, 0-5]

Examples for using this API

ODL Locator App for Pebble

The Pebble smartwatch helps to locate the nearest ODL with the ODL Locator App which accesses this API. Thanks for this contribution to Brian Rowe of the Fort Wayne ODL.

ODL Android App

There is an App for Android that leverages this API. Thanks for making this available to the fine guys at the ODL Mannheim.

Display Statistics across all ODLs

The full code (including a Kirby CMS plugin) for this can be viewed at the ODL FFM Website. Thanks for creating this tutorial.

Developer Relations and Sponsorship

A number of high tech companies already leverage the data shared via this directory to reach out to Open Device Labs, to supply these community hubs with software and hardware. It helps these companies to multiply their messaging across a highly motivated developer community AND it helps ODLs, ODL users, the tested platforms and their users. Everybody wins. It is a good thing to do.


Feedback welcome!

Found a bug? Have a feature request? Just want to tell us your grandma would have implemented this better? Wanna praise this being the holy grail to you? Do not hesitate to get in touch.