KeymanWeb Server Data API
The KeymanWeb Subscription Server has a RESTful JSON API which allows you to query it for information about available languages, keyboards and fonts.
Version Information and History
Version: 1.0
API usage
Version 1.0 of the API is a RESTful web service that returns only UTF-8 JSON format data. It can be called over HTTP or HTTPS. URIs in the data will reflect the protocol that is used to query the web service.
Endpoints
The two endpoints below can be used interchangeably. api.keyman.com is the modern endpoint; future services will be available there.
- https://api.keyman.com/cloud/4.0
- https://r.keymanweb.com/api/4.0
Interfaces
Call | Description |
---|---|
GET https://api.keyman.com/cloud/1.0/languages | Returns a Languages object, that contains a list of all language and keyboard combinations available on the server. This call will return full details of every language, keyboard and font combination. It is typically around 100KB. |
GET https://api.keyman.com/cloud/1.0/languages/aaa | Returns a Language object for a language identified by the language code aaa. |
GET http://api.keyman.com/cloud/1.0/keyboards | Returns a Keyboards object, that contains a list of all keyboards on the server. |
GET http://api.keyman.com/cloud/1.0/keyboards/european | Returns a Keyboard object for the keyboard identified by id european. |
Parameters
The parameters below are optional and can be provided as query parameters in the URL.
Parameter | Description |
---|---|
device | Optional. Can currently be "windows", "macosx", "iphone", "ipad", "androidphone", "androidtablet", "mobile", "desktop", "tablet", "any". The server will filter keyboards according to the device type. If absent, then "all" is used. |
languageidtype | Optional. Can currently be "iso6393" or "bcp47". If absent, then "iso6393" is used. |
version | Optional. The version of Keyman Engine, e.g. "10.0". If absent, uses "2.0". The server will filter keyboards that are available for that version of Keyman Engine. (See KeymanWeb Versioning for details on valid version numbers.) |
Structure
- Languages object. A list of languages available on the server. Contains the following members:
- languages: Array of Language objects (required)
- Keyboards object. A list of languages available on the server or for a given language. Contains the following members:
- keyboards: Array of Keyboard objects (required)
- Language object. Contains the following members:
- name: Name of language (required)
- id: ISO639-3 language code (required)
- keyboards: Array of Keyboard objects (optional)
- Keyboard object. Contains the following members:
- name: Name of keyboard (required)
- id: ID of keyboard, always matches the filename of the keyboard (required)
- uri: Canonical URI where keyboard .js can be downloaded (required)
- default: true if the keyboard is the recommended default for the language (if absent, then false).
- rtl: true if the keyboard targets a right-to-left script (if absent, then false).
- lastModified: Date the keyboard file was last updated. (required)
- fileSize: Size of the keyboard file in bytes. (required)
- fonts: array of Font objects that are available for use with the keyboard. (optional)
- languages: array of Language objects that are linked to the keyboard. (optional)
- Font object:
- name: Font face name as compiled into the font. (required)
- uri: Canonical URI where font .ttf/.otf can be downloaded. (required)
- fileSize: Size of the font file in bytes. (required)
- lastModified: Date the font file was last updated. (required)
- default: true if the font is the recommended default for the keyboard (if absent, then false).
Example Call
GET https://api.keyman.com/cloud/1.0/languages
Returns:
{"languages": [ {"name":"Ghotuo", "id":"aaa", "keyboards": [ {"id":"naijanfd10", "name":"Naija", "default":true, "uri":"http:\/\/r.keymanweb.com\/kmw\/naijanfd10.js", "fileSize":1351, "lastModified":"2012-03-02T16:36:15+11:00" } ] }, ... ] }