Hypermedia
Keepeek API is hypermedia driven. Each resource representation contains links to navigate to related sub-resources and get available transitions on the resource state.
Keepeek recommend to use links provided in the representation instead of building uri based on pattern. URI layout may change in future API release.
Javascript client can rely on traverson library.
Following schema is an example of resource tree.
api
+---dam
| +---folder-tree
| | \---10
| | +---children
| | | \---20
| | | \---medias
| | \---medias
| +---folders
| | +---10
| | | \---medias
| | \---20
| | \---medias
| \---medias
| \---12
\---doc
From the API root endpoint, client can navigate to the folder tree traversing relations between api --> dam --> folder-tree
- Get root endpoint:
GET http://baobab.keepeek.com/api HTTP/1.1
[...]
HTTP/1.1 200 OK
Content-Type: application/hal+json;version=1;charset=UTF-8
[...]
{
"version": 1,
"release": "3.7.9",
"_links": {
"self": {"href": "http://baobab.keepeek.com/api"},
"curies": [ {
"name": "kpk",
"href": "http://baobab.keepeek.com/api/doc/rels/{rel}",
"templated": true
}],
"kpk:dam": {"href": "http://baobab.keepeek.com/api/dam"},
"help": {"href": "http://baobab.keepeek.com/api/doc"}
}
}
- Get dam uri using kpk:dam relation type : http://baobab.keepeek.com/api/dam
GET http://baobab.keepeek.com/api/dam HTTP/1.1
[...]
HTTP/1.1 200 OK
Content-Type: application/hal+json;version=1;charset=UTF-8
[...]
{"_links": {
"self": {"href": "http://baobab.keepeek.com/api/dam"},
"curies": [ {
"name": "kpk",
"href": "http://baobab.keepeek.com/api/doc/rels/{rel}",
"templated": true
}],
"kpk:folders": {"href": "http://baobab.keepeek.com/api/dam/folders"},
"kpk:folder-tree": {"href": "http://baobab.keepeek.com/api/dam/folder-tree"},
"kpk:medias": {"href": "http://baobab.keepeek.com/api/dam/medias"}
}}
- Get folder-tree uri using kpk:folder-tree relation type : http://baobab.keepeek.com/api/dam/folder-tree
GET http://baobab.keepeek.com/api/dam/folder-tree HTTP/1.1
[...]
HTTP/1.1 200 OK
Content-Type: application/hal+json;version=1;charset=UTF-8
[...]
{
"_links": {
"self": {"href": "http://baobab.keepeek.com/api/dam/folder-tree"},
"curies": [ {
"name": "kpk",
"href": "http://baobab.keepeek.com/api/doc/rels/{rel}",
"templated": true
}]
},
"_embedded": {"child": [
{
"id": 434,
"title": "Documentation technique",
"description": "",
"treeMediaCount": 47,
"hasChildren": true,
"_links": {
"self": {"href": "http://baobab.keepeek.com/api/dam/folder-tree/434"},
"kpk:folder": {"href": "http://baobab.keepeek.com/api/dam/folders/434"},
"kpk:medias": {"href": "http://baobab.keepeek.com/api/dam/folder-tree/434/medias"}
}
},
{
"id": 435,
"title": "Equipes",
"description": "",
"treeMediaCount": 75,
"hasChildren": false,
"_links": {
"self": {"href": "http://baobab.keepeek.com/api/dam/folder-tree/432"},
"kpk:folder": {"href": "http://baobab.keepeek.com/api/dam/folders/432"},
"kpk:medias": {"href": "http://baobab.keepeek.com/api/dam/folder-tree/432/medias"}
}
},
[...]
{
"id": 436,
"title": "Sites et infrastructures",
"description": "",
"treeMediaCount": 180,
"hasChildren": true,
"_links": {
"self": {"href": "http://baobab.keepeek.com/api/dam/folder-tree/431"},
"kpk:folder": {"href": "http://baobab.keepeek.com/api/dam/folders/431"},
"kpk:medias": {"href": "http://baobab.keepeek.com/api/dam/folder-tree/431/medias"}
}
}
]},
"childrenCount": 8
}
To retrieve children nodes of a node, you can use this request :
GET http://baobab.keepeek.com/api/dam/folder-tree/434
[...]
HTTP/1.1 200 OK
Content-Type: application/hal+json;version=1;charset=UTF-8
[...]
{
"id": 434,
"title": "Documentation technique",
"description": "<p>Description</p>",
"_links": {
"self": {
"href": "http://baobab.keepeek.com/api/dam/folder-tree/434"
},
"curies": [
{
"name": "kpk",
"href": "http://baobab.keepeek.com/api/doc/rels/{rel}",
"templated": true
}
],
"kpk:folder": {
"href": "http://baobab.keepeek.com/api/dam/folders/434"
},
"kpk:medias": {
"href": "http://baobab.keepeek.com/api/dam/folder-tree/434/medias"
}
},
"_embedded": {
"child": [
{
"id": 362,
"title": "Cartographie",
"description": "<p>EN</p>",
"treeMediaCount": 11,
"hasChildren": false,
"_links": {
"self": {
"href": "http://baobab.keepeek.com/api/dam/folder-tree/434/children/362"
},
"kpk:folder": {
"href": "http://baobab.keepeek.com/api/dam/folders/362"
},
"kpk:medias": {
"href": "http://baobab.keepeek.com/api/dam/folder-tree/434/children/362/medias"
}
}
},
{
"id": 361,
"title": "Schéma",
"description": "",
"treeMediaCount": 16,
"hasChildren": false,
"_links": {
"self": {
"href": "http://baobab.keepeek.com/api/dam/folder-tree/434/children/361"
},
"kpk:folder": {
"href": "http://baobab.keepeek.com/api/dam/folders/361"
},
"kpk:medias": {
"href": "http://baobab.keepeek.com/api/dam/folder-tree/434/children/361/medias"
}
}
},
{
"id": 368,
"title": "Guide d'installation",
"description": "",
"treeMediaCount": 4,
"hasChildren": false,
"_links": {
"self": {
"href": "http://baobab.keepeek.com/api/dam/folder-tree/434/children/368"
},
"kpk:folder": {
"href": "http://baobab.keepeek.com/api/dam/folders/368"
},
"kpk:medias": {
"href": "http://baobab.keepeek.com/api/dam/folder-tree/434/children/368/medias"
}
}
},
{
"id": 363,
"title": "Maquette",
"description": "",
"treeMediaCount": 9,
"hasChildren": false,
"_links": {
"self": {
"href": "http://baobab.keepeek.com/api/dam/folder-tree/434/children/363"
},
"kpk:folder": {
"href": "http://baobab.keepeek.com/api/dam/folders/363"
},
"kpk:medias": {
"href": "http://baobab.keepeek.com/api/dam/folder-tree/434/children/363/medias"
}
}
},
{
"id": 365,
"title": "Réglementation",
"description": "",
"treeMediaCount": 2,
"hasChildren": false,
"_links": {
"self": {
"href": "http://baobab.keepeek.com/api/dam/folder-tree/434/children/365"
},
"kpk:folder": {
"href": "http://baobab.keepeek.com/api/dam/folders/365"
},
"kpk:medias": {
"href": "http://baobab.keepeek.com/api/dam/folder-tree/434/children/365/medias"
}
}
},
{
"id": 414,
"title": "Etude",
"description": "",
"treeMediaCount": 12,
"hasChildren": false,
"_links": {
"self": {
"href": "http://baobab.keepeek.com/api/dam/folder-tree/434/children/414"
},
"kpk:folder": {
"href": "http://baobab.keepeek.com/api/dam/folders/414"
},
"kpk:medias": {
"href": "http://baobab.keepeek.com/api/dam/folder-tree/434/children/414/medias"
}
}
}
]
},
"childrenCount": 6
}