2014-10-31 02:56:29 +01:00
Json-RPC API
============
The Miniflux API is a way to interact programatically with your feeds, items, bookmarks and other data.
2016-12-30 00:52:37 +01:00
Developers can use this API to make desktop or mobile clients.
2014-10-31 02:56:29 +01:00
Protocol
--------
The API use the [JSON-RPC ](http://www.jsonrpc.org/ ) protocol because it's very simple.
JSON-RPC is a remote procedure call protocol encoded in JSON.
Almost the same thing as XML-RPC but with JSON.
We use the [version 2 ](http://www.jsonrpc.org/specification ) of the protocol.
You must call the API with a **POST** HTTP request.
Credentials
-----------
The first step is to retrieve API credentials and the URL endpoint.
2016-12-30 00:52:37 +01:00
They are available in **preferences > api** .
2014-10-31 02:56:29 +01:00
You must have these information:
2016-12-30 00:52:37 +01:00
- API endpoint: `https://your_domain.tld/jsonrpc.php`
2014-10-31 02:56:29 +01:00
- API username: `username`
2016-12-30 00:52:37 +01:00
- API token: `XXXXXX` (random token)
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
The API username is the same as your login username and the API token is generated automatically.
2014-10-31 02:56:29 +01:00
Authentication
--------------
The API use the HTTP Basic Authentication scheme described in [RFC2617 ](http://www.ietf.org/rfc/rfc2617.txt ).
Examples
--------
### Example with cURL
```bash
curl \
2016-12-30 00:52:37 +01:00
-u "username:password" \
-d '{"jsonrpc": "2.0", "method": "createFeed", "params": {"url": "http://images.apple.com/main/rss/hotnews/hotnews.rss"}, "id": 1}' \
https://localhost/jsonrpc.php
2014-10-31 02:56:29 +01:00
```
2016-12-30 00:52:37 +01:00
Success response:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"id": 1,
"result": 6
}
2014-10-31 02:56:29 +01:00
```
The `feed_id` is 6.
2016-12-30 00:52:37 +01:00
Error response:
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": false
}
2014-10-31 02:56:29 +01:00
```
Procedures
----------
2016-12-30 00:52:37 +01:00
### getVersion
2015-04-18 17:42:10 +02:00
2016-12-30 00:52:37 +01:00
- Purpose: **Get application version**
- Parameters: none
- Result on success: **version**
2015-04-18 17:42:10 +02:00
2016-12-30 00:52:37 +01:00
Request example:
2015-04-18 17:42:10 +02:00
```json
{
2016-12-30 00:52:37 +01:00
"jsonrpc": "2.0",
"method": "getVersion",
"id": 304873928
2015-04-18 17:42:10 +02:00
}
```
2016-12-30 00:52:37 +01:00
Response example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"result": "master",
"id": 304873928
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
### createUser
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
- Purpose: **Create new user** (accessible only by administrators)
- Parameters:
- **username** (string)
- **password** (string)
- **is_admin** (boolean, optional)
- Result on success: **user_id**
- Result on failure: **false**
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
Request example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"method": "createUser",
"id": 97055228,
"params": {
"username": "api_test",
"password": "test123"
}
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
Response example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"result": 2,
"id": 97055228
}
2014-10-31 02:56:29 +01:00
```
2017-01-02 23:40:53 +01:00
### removeUser
- Purpose: **Remove a user** (accessible only by administrators)
- Parameters:
- **user_id** (integer)
- Result on success: **true**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "removeUser",
"id": 2109613284,
"params": [
3
]
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"result": true,
"id": 2109613284
}
```
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
### getUserByUsername
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
- Purpose: **Get user** (accessible only by administrators)
- Parameters:
- **username** (string)
- Result on success: **user object**
- Result on failure: **false|null**
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
Request example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"method": "getUserByUsername",
"id": 1456121566,
"params": [
"api_test"
]
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
Response example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"result": {
"id": "2",
"username": "api_test",
"password": "$2y$10$FOzlRrLoHRI3Xj4YuV8z5O1jI4CKda61reX.g.Fm4ctYMijpOhTGu",
"is_admin": "0",
"last_login": null,
"api_token": "398c293808aaed9cf2be45cf8e4fa303be5cdbbf6c4a55fece6b585c6a6c",
"bookmarklet_token": "965e9049138e4e78c398dc369fc4ec529226055c6fd77a3d4119bc3a1b5e",
"cronjob_token": "a4f6e1f5fd655c7365ebddcaf1dfd5782669186ed85a788d8e52b8230399",
"feed_token": "62ed60fb75616d3f81a938206449a20fe30f0bf9db9bf0b93259821f5938",
"fever_token": "59253f797b3b1885e31449fa97e9348c127e4e10e4eea959a2555c1b3a1e",
"fever_api_key": "5e379736d05847f87c37a7d2f57ed234"
},
"id": 1456121566
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
### getFeeds
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
- Purpose: **Get all subscriptions**
- Parameters: none
- Result on success: **list of feed objects**
- Result on failure: **false**
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
Request example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"method": "getFeeds",
"id": 1189414818
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
Response example:
2015-12-25 12:05:01 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"result": [
{
"id": "1",
"user_id": "1",
"feed_url": "https:\/\/miniflux.net\/feed",
"site_url": "https:\/\/miniflux.net\/",
"title": "Miniflux",
"last_checked": "1483053994",
"last_modified": "Sun, 31 Jul 2016 16:54:32 GMT",
"etag": "W\/\"bdc7a83fd61620b778da350991501757\"",
"enabled": "1",
"download_content": "0",
"parsing_error": "0",
"rtl": "0",
"cloak_referrer": "0",
"parsing_error_message": null,
"expiration": "1483226794",
"groups": [
{
"id": "1",
"title": "open source software"
}
]
}
],
"id": 1189414818
2015-12-25 12:05:01 +01:00
}
```
2016-12-30 00:52:37 +01:00
### getFeed
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
- Purpose: **Get one subscription**
- Parameters:
- **feed_id** (integer)
- Result on success: **feed object**
- Result on failure: **null**
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
Request example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"method": "getFeed",
"id": 912101777,
"params": [
1
2014-10-31 02:56:29 +01:00
]
}
```
2016-12-30 00:52:37 +01:00
Response example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"result": {
"id": "1",
"user_id": "1",
"feed_url": "https:\/\/miniflux.net\/feed",
"site_url": "https:\/\/miniflux.net\/",
"title": "Miniflux",
"last_checked": "1483053994",
"last_modified": "Sun, 31 Jul 2016 16:54:32 GMT",
"etag": "W\/\"bdc7a83fd61620b778da350991501757\"",
"enabled": "1",
"download_content": "0",
"parsing_error": "0",
"rtl": "0",
"cloak_referrer": "0",
"parsing_error_message": null,
"expiration": "1483226794",
"groups": [
{
"id": "1",
"title": "open source software"
}
]
},
"id": 912101777
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
### createFeed
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
- Purpose: **Add new subscription**
- Parameters:
- **url** (string)
- **download_content** (boolean, optional)
- **rtl** (boolean, optional)
- **group_name** (string, optional)
- Result on success: **feed_id**
- Result on failure: **false**
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
Request example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"method": "createFeed",
"id": 315813488,
"params": {
"url": "https://miniflux.net/feed",
"group_name": "open source software"
}
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
Response example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"result": 1,
"id": 315813488
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
### removeFeed
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
- Purpose: **Create new user**
- Parameters:
- **feed_id** (integer)
- Result on success: **true**
- Result on failure: **false**
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
Request example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"method": "removeFeed",
"id": 1793804609,
"params": [
1
]
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
Response example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"result": true,
"id": 1793804609
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
### refreshFeed
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
- Purpose: **Refresh subscription** (synchronous call)
- Parameters:
- **feed_id** (integer)
- Result on success: **true**
- Result on failure: **false**
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
Request example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"method": "refreshFeed",
"id": 181234449,
"params": [
1
2014-10-31 02:56:29 +01:00
]
}
```
2016-12-30 00:52:37 +01:00
Response example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"result": true,
"id": 181234449
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
### getItems
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
- Purpose: **Get list o items**
- Parameters:
- **since_id** (integer, optional) Returns only feeds from this item id
- **item_ids** ([]integer, optional) Returns only items in this list
- **limit** (integer, optional, default=50) Change number of items returned
- Result on success: **list of item objects**
- Result on failure: **false**
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
Request example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"method": "getItems",
"id": 84429548,
"params": {
"since_id": 2
}
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
Response example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"result": [
{
"id": "3",
"checksum": "7f4b791f",
"title": "Miniflux 1.1.8 released",
"updated": "1442016000",
"url": "https:\/\/miniflux.net\/news\/version-1.1.8",
"enclosure_url": "",
"enclosure_type": "",
"bookmark": "0",
"feed_id": "1",
"status": "unread",
"content": "< ul > \n< li > Add feed groups (tags)< \/li > \n< li > Add custom rules directory support< \/li > \n< li > Add no referrer policy in meta tags and content security directives< \/li > \n< li > Update of PicoFeed with new scraper rules< \/li > \n< li > Enable Strict-Transport-Security header for HTTPS< \/li > \n< li > Change CSP directives to allow data url (Fix issue with Firefox 40)< \/li > \n< li > Toggle text direction for full content preview as well< \/li > \n< li > Add Russian translation< \/li > \n< li > Updated Czech translation< \/li > \n< li > Mark items on page 2+ read as well< \/li > \n< li > Allow to override the maximum feed size limit< \/li > \n< li > Added a config option to select how many concurrent refreshes are done on the subscription page< \/li > \n< li > Catch exceptions for image proxy< \/li > \n< li > Improve CSS for preview full content< \/li > \n< li > Minor feed edit dialog improvements< \/li > \n< li > Expose all feed errors to the frontend when adding a subscription< \/li > \n< li > Keep selected options on feed adding error< \/li > \n< li > Fix bug when the summery helper doesn' t contains whitespace< \/li > \n< li > Fix Fever API bug: enable send bookmark to third-party services< \/li > \n< \/ul > \n< p >< strong > Thanks to all contributors!< \/strong >< \/p > \n< p >< a href = \"https: \/\/miniflux.net \/miniflux-1.1.8.zip \" rel = \"noreferrer \" target = \"_blank \"> Download archive< \/a >< \/p > ",
"language": "",
"rtl": "0",
"author": "Fr\u00e9d\u00e9ric Guillot",
"site_url": "https:\/\/miniflux.net\/",
"feed_title": "Miniflux"
},
[..]
],
"id":84429548
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
### getItem
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
- Purpose: **Fetch one item**
- Parameters:
- **item_id** (integer)
- Result on success: **item object**
- Result on failure: **null**
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
Request example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"method": "getItem",
"id": 1323079112,
"params": [
1
]
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
Response example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"result": {
"id": "1",
"user_id": "1",
"feed_id": "1",
"checksum": "a86e22e4",
"status": "unread",
"bookmark": "0",
"url": "https:\/\/miniflux.net\/news\/version-1.1.10",
"title": "Miniflux 1.1.10 released",
"author": "Fr\u00e9d\u00e9ric Guillot",
"content": "< p > Here are the main changes of this version:< \/p > \n< ul > \n< li > Code cleanup< \/li > \n< li > Do not use anymore Closure compiler for Javascript< \/li > \n< li > Added the possibility to swipe to archive an item on mobile devices< \/li > \n< li > Make the whole menu row clickable on small screens< \/li > \n< li > Add API methods for groups< \/li > \n< li > Added Beanstalkd producer\/worker< \/li > \n< li > Use HTTP_HOST instead of SERVER_NAME to guess hostname< \/li > \n< li > Run php-cs-fixer on the code base< \/li > \n< li > Add sorting direction link to the history section< \/li > \n< li > Make read\/bookmark icons more usable in mobile view< \/li > \n< li > Record last login timestamp in the database< \/li > \n< li > Add japanese language< \/li > \n< li > Replace help window by layer< \/li > \n< li > Create automatically the favicon directory if missing< \/li > \n< li > Add group filter to history and bookmarks section< \/li > \n< li > Dependencies update< \/li > \n< \/ul > \n< p >< strong > Thanks to all contributors!< \/strong >< \/p > \n< p >< a href = \"https: \/\/miniflux.net \/miniflux-1.1.10.zip \" rel = \"noreferrer \" target = \"_blank \"> Download archive< \/a >< \/p > ",
"updated": "1469923200",
"enclosure_url": "",
"enclosure_type": "",
"language": "",
"rtl": "0"
},
"id": 1323079112
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
### changeItemsStatus
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
- Purpose: **Mark items as read/unread**
- Parameters:
- **item_ids** ([]integer)
- **status** (string, possible values: read or unread)
- Result on success: **true**
- Result on failure: **false**
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
Request example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"method": "changeItemsStatus",
"id": 155789655,
"params": [
[1],
"read"
]
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
Response example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"result": true,
"id": 155789655
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
### addBookmark
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
- Purpose: **Mark item as bookmark**
- Parameters:
- **item_id** (integer)
- Result on success: **true**
- Result on failure: **false**
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
Request example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"method": "addBookmark",
"id": 791748350,
"params": [
1
]
}
2014-10-31 02:56:29 +01:00
```
2016-12-30 00:52:37 +01:00
Response example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"result": true,
"id": 791748350
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
### removeBookmark
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
- Purpose: **Mark item as not bookmarked**
- Parameters:
- **item_id** (integer)
- Result on success: **true**
- Result on failure: **false**
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
Request example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"method": "removeBookmark",
"id": 16893793,
"params": [
1
]
}
2014-10-31 02:56:29 +01:00
```
2016-12-30 00:52:37 +01:00
Response example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"result": true,
"id": 16893793
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
### getGroups
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
- Purpose: **Get list of groups**
- Parameters: none
- Result on success: **list of group objects**
- Result on failure: **false**
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
Request example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"method": "getGroups",
"id": 1922098828
}
2014-10-31 02:56:29 +01:00
```
2016-12-30 00:52:37 +01:00
Response example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"result": [
{
"id": "1",
"user_id": "1",
"title": "open source software"
}
],
"id": 1922098828
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
### createGroup
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
- Purpose: **Add new group**
- Parameters:
- **title** (string)
- Result on success: **group_id**
- Result on failure: **false**
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
Request example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"method": "createGroup",
"id": 924207274,
"params": [
"foobar"
]
}
2014-10-31 02:56:29 +01:00
```
2016-12-30 00:52:37 +01:00
Response example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"result": 2,
"id": 924207274
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
### setFeedGroups
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
- Purpose: **Assign/Unassign groups to a subscription**
- Parameters:
- **feed_id** (integer)
- **group_ids** ([]integer)
- Result on success: **true**
- Result on failure: **false**
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
Request example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"method": "setFeedGroups",
"id": 594627291,
"params": [
1,
[2, 3]
]
}
2014-10-31 02:56:29 +01:00
```
2016-12-30 00:52:37 +01:00
Response example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"result": true,
"id": 594627291
2014-10-31 02:56:29 +01:00
}
```
2016-12-30 00:52:37 +01:00
### getFavicons
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
- Purpose: **Get list of favicons**
- Parameters: none
- Result on success: **list of favicon objects**
- Result on failure: **false**
2014-10-31 02:56:29 +01:00
2016-12-30 00:52:37 +01:00
Request example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"method": "getFavicons",
"id": 1029539064
}
2014-10-31 02:56:29 +01:00
```
2016-12-30 00:52:37 +01:00
Response example:
2014-10-31 02:56:29 +01:00
```json
2016-12-30 00:52:37 +01:00
{
"jsonrpc": "2.0",
"result": [
{
"feed_id": "1",
"hash": "bec82599c771aea672bea5a9a2988f150a849390",
"type": "image\/png",
"data_url": "data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAGJwAABicBTVTYxwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAALMSURBVHic7Zo7a1RRFIW\/I8YXaBBEJRJEU8RqQBBBQRBEWxHBwlZUsLRWUFBsA4L4G4IY0TaF2PhEEQwmhuADJIkRUUOMr2RZ3Em8mcxkzrkPtjhnwS7msveadT\/Ofc44SbSyllkHsFYEYB3AWhGAdQBrRQDWAawVAVgHsFYEYB3AWhGAdQBrLS\/L2Dm3CdgFbK3WDPC6Wi8kjWX03QBUgG3AdmAN8LFaT4CnCnjEdbW9zrk+YL3n\/AVJd2vmDwKngMNAW4O538BNoEfSfa+gzu0DzgBHl\/AFGAN6gcuSPjQ1lrSggHFAnnUsNdcO3AiYnas7wNraHCnfLcC9DL6TwNlGvvP+RQAAdgIjGULO1XOgs06WQ8BEDl8BPVRXeikAgK4CQgp4B7SnchwnOW\/k9RVwviwAp4HBgkIKuJ5aUd8K9P0JVMoA8LnAkAJmgSPA24J9BfTXA1DvKjAObOT\/k4BuScPpjWXcCM0Co8CnErynSFbHTIZZB5xYtDXnIZCuCeAkqUsa0AlcyeiXrtvAnpTvamA\/8CbQ50HR54C5egV0LHEtv5hj588t4dsBvA\/wmgbaigbwneTYanyzkayELDvf2\/RGBi4FelaKBnC1Wciq70Cg7y+gy8O3O9D3QHq+iJPgNc++R4G+\/ZJGPPqGSU68vlqX\/pAXwKCkl569XwK9b\/k0SZoleRL0VaEAngX0TgZ6Pw7obf7U91cr0x\/yAhgK6A0BIMB3ZUFyq5tJeQGELL2vAb1TkqYD+lcF9C5QXgAhO\/WjJF\/I8WYrL4CQnfoXfBep5V+KRgDWAawVAVgHsFYEYB3AWhGAdQBrRQDWAawVAVgHsFYEYB3AWi0PoN6Po3uBFZ7zA5ImvL7Iuc3ADk\/faUkPPXtxzu0m+a+Qj4Ykjc7P1gJoNbX8IRABWAewVgRgHcBaEYB1AGtFANYBrBUBWAewVssD+AMBy6wzsaDiAwAAAABJRU5ErkJggg=="
}
],
"id": 1029539064
2014-10-31 02:56:29 +01:00
}
2016-12-30 00:52:37 +01:00
```