* [examples/openspending] - openspending v0.2 * [examples/openspending][m] - fix build * [examples/openspending][xs] - fix build * [examples/openspending][xs] - add prebuild step * [examples/openspending][m] - fix requested by demenech * [examples/openspending][sm] - remove links + fix bug
198 lines
5.6 KiB
Markdown
198 lines
5.6 KiB
Markdown
---
|
|
section: help
|
|
lead: true
|
|
title: REST resources
|
|
authors:
|
|
- Neil Ashton
|
|
---
|
|
OpenSpending pages generally support multiple representations, at least
|
|
a user-facing HTML version and a JSON object that represents the contained
|
|
data. For various technical and non-technical reasons, most of the data is
|
|
read-only.
|
|
|
|
Content negotiation can be performed either via HTTP ``Accept`` headers or
|
|
via suffixes in the resource URL. The following types are generally
|
|
recognized:
|
|
|
|
* **HTML** (Hyptertext Markup), MIME type ``text/html`` or any value not
|
|
otherwise in use, suffix ``.html``. This is the default representation.
|
|
* **JSON** (JavaScript Object Notation), MIME type ``application/json`` and
|
|
suffix ``.json``.
|
|
* **CSV** (Comma-Separated Values), MIME type ``text/csv`` and suffix
|
|
``.csv``. CSV is only supported where listings can be exported with some
|
|
application-level meaning.
|
|
|
|
The key resources in OpenSpending are datasets, entries, dimensions, and
|
|
dimension members. Each of these has a listing and an entity view that can
|
|
be accessed.
|
|
|
|
#### Listing datasets
|
|
|
|
GET /datasets.json
|
|
|
|
All datasets are listed, including their core metadata. Additionally, certain
|
|
parameters are given as facets (i.e. territories and languages of the
|
|
datasets). Both ``territories`` and ``languages`` can also be passed in as
|
|
query parameters to filter the result set. Supported formats are HTML, CSV and JSON.
|
|
|
|
"territories": [
|
|
/* ... */
|
|
{
|
|
"count": 2,
|
|
"url": "/datasets?territories=BH",
|
|
"code": "BH",
|
|
"label": "Bahrain"
|
|
},
|
|
/* ... */
|
|
],
|
|
"languages": /* Like territories. */
|
|
"datasets": [
|
|
{
|
|
"name": "cra",
|
|
"label": "Country Regional Analysis v2009",
|
|
"description": "The Country Regional Analysis published by HM Treasury.",
|
|
"currency": "GBP"
|
|
},
|
|
/* ... */
|
|
]
|
|
|
|
#### Getting dataset metadata
|
|
|
|
GET /{dataset}.json
|
|
|
|
Core dataset metadata is returned. This call does not have any
|
|
parameters. Supported formats are HTML and JSON.
|
|
|
|
{
|
|
"name": "cra",
|
|
"label": "Country Regional Analysis v2009",
|
|
"description": "The Country Regional Analysis published by HM Treasury.",
|
|
"currency": "GBP"
|
|
}
|
|
|
|
Another call is available to get the full model description of
|
|
the dataset in question, which includes the core metadata and also
|
|
a full description of all dimensions, measures, and views. The
|
|
format for this is always JSON::
|
|
|
|
GET /{dataset}/model.json
|
|
|
|
#### Listing dataset dimensions
|
|
|
|
GET /{dataset}/dimensions.json
|
|
|
|
A listing of dimensions, including type, description, and attribute
|
|
definitions is returned. This call does not have any parameters.
|
|
Supported formats are HTML and JSON.
|
|
|
|
[
|
|
{
|
|
"name": "from",
|
|
"html_url": "http://openspending.org/ukgov-finances-cra/from",
|
|
"label": "Paid from",
|
|
"key": "from",
|
|
"attributes": {
|
|
"gov_department": {
|
|
"column": null,
|
|
"facet": false,
|
|
"constant": "true",
|
|
"datatype": "constant",
|
|
"end_column": null
|
|
},
|
|
"name": {
|
|
"column": "dept_code",
|
|
"facet": false,
|
|
"constant": null,
|
|
"datatype": "string",
|
|
"end_column": null
|
|
},
|
|
"label": {
|
|
"column": "dept_name",
|
|
"facet": false,
|
|
"constant": null,
|
|
"datatype": "string",
|
|
"end_column": null
|
|
}
|
|
},
|
|
"type": "compound",
|
|
"description": "The entity that the money was paid from"
|
|
},
|
|
/* ... */
|
|
]
|
|
|
|
#### Listing dimension members
|
|
|
|
GET /{dataset}/{dimension}.json
|
|
|
|
The returned JSON representation contains the dimension metadata,
|
|
including type, label, description and attribute definitions.
|
|
|
|
{
|
|
"name": "from",
|
|
"html_url": "http://openspending.org/ukgov-finances-cra/from",
|
|
"label": "Paid from",
|
|
"key": "from",
|
|
"attributes": {
|
|
"gov_department": {
|
|
"column": null,
|
|
"facet": false,
|
|
"constant": "true",
|
|
"datatype": "constant",
|
|
"end_column": null
|
|
},
|
|
"name": {
|
|
"column": "dept_code",
|
|
"facet": false,
|
|
"constant": null,
|
|
"datatype": "string",
|
|
"end_column": null
|
|
},
|
|
"label": {
|
|
"column": "dept_name",
|
|
"facet": false,
|
|
"constant": null,
|
|
"datatype": "string",
|
|
"end_column": null
|
|
}
|
|
},
|
|
"type": "compound",
|
|
"description": "The entity that the money was paid from"
|
|
}
|
|
|
|
This call's return includes dimension metadata, but it may be too expensive
|
|
to call for just this aspect.
|
|
|
|
#### Getting dimension members
|
|
|
|
GET /{dataset}/{dimension}/{name}.json
|
|
|
|
This will return the data stored on a given member ``name`` of the
|
|
``dimension``, including its ``name``, ``label``, and any other
|
|
defined attributes.
|
|
|
|
{
|
|
"id": 2,
|
|
"name": "10",
|
|
"label": "Social protection",
|
|
"description": "Government outlays on social protection ...",
|
|
"level": "1"
|
|
}
|
|
|
|
#### Listing entries in a dataset
|
|
|
|
Listing all the entries in a dataset (and offering export functionality)
|
|
is handled by the full-text search. See [the search API](../search).
|
|
|
|
### Getting an entry
|
|
|
|
GET /{dataset}/entries/{id}.json
|
|
|
|
This will return a full representation of this entry, including all
|
|
measures and all attributes of all dimensions. The entry ``id`` is a
|
|
semi-natural key derived from dataset metadata which should be stable
|
|
across several loads.
|
|
|
|
A CSV representation is available but will only have one row.
|
|
|
|
**Up**: [OpenSpending API](../)
|