Naše JSON-RPC rozhraní myšlenkově vychází z XML-RPC, ale řeší některé jeho nedostatky pro jednodušší používání.
Název volané metody je cesta v URL, takže například volání metody items
se zapíše jako /items
.
Tento JSON-RPC server umožňuje volání metod několika způsoby:
_
, _callback
, nebo callback
. Jakmile volání obsahu jeden z těchto parametrů, automaticky se odpovídá pomocí JSONP. Více o JSONP na Wikipedii.Content-Type: application/x-www-form-urlencoded
.application/json
, text/json
, nebo text/plain
pro JSON a application/bson
pro BSON.Rozhraní odpovídá buďto JSONem, jebo BSONem a to podle HTTP hlavičky Accept. Výchozí formát odpovědi je JSON.
Odpověď vždy obsahuje objekt s klíči status a status_message
. Status je číselný stav vyřízení volání podobný stavovým kódům HTTP, ale může se lišit tam, kde neexistuje odpovídající HTTP status. Status_message
pak obsahuje textový popis výsledku volání. V případě úspěšného volání je odpověď {“status”:200, “status_message”: “OK”}
.
Pokud volání vrací nějaká data, kořenový objekt obsahuje ještě klíč s názvem volané metody.
GET /system_list_methods HTTP/1.0
User-Agent: curl/7.37.1
Host: dummy.grandit.cz:1200
Accept: */*
HTTP/1.1 200 OK
Content-Type: application/json
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: Reply-OK-Only
Connection: Close
Content-Length: __
{
"status_message": "OK",
"system_list_methods": [
"system_alive",
"system_list_methods",
"system_method_help",
"system_method_info",
"system_method_sig",
"system_multicall",
"system_status",
],
"status": 200
}
Pokud do vstupního pole, zadáte adresu našeho RPC rozhraní, můžete klikem na tlačítko načíst jeho konfiguraci. S konfigurací rozhraní se načítají jak signatury metod, tak nápověda. Pomocí tohoto rozhraní je také možné jednotlivé metody provolat a zovnou se podívat na návratové hodnoty.
Dokumentaci k jednotlivým RPC metodám je možné najít přímo v jejich nápovědě.
Všechny metody přijímají parametr service
, který obsahuje identifikační token pro danou službu, která toto API využívá.
POST /login HTTP/1.1
Connection: close
Content-Type: application/json
...
{"username":"testovac@lukoko.name", "password":"9ae67653e0672fa20832b2490ba2dc8068325b93", "service":"cnc"}
HTTP/1.1 200 OK
Content-Type: application/json
...
{
"status":200,
"login":{
"username":"testovac@lukoko.name",
...
"id":9171036,
"session":"O6m0wIzWmO5l1Qf5rGyjstxArb4F9yds",
...
"attributes":{
"newsletter":true,
"country":"CZ",
"terms_of_use":1,
"email":"testovac@lukoko.name",
"address":[],
"password":"9ae67653e0672fa20832b2490ba2dc8068325b93",
"rh":"63920ee2f1e1e525f528412c27ee16dd6f033bef",
"gdpr":true
},
...
"partner_id":21,
"email":"testovac@lukoko.name"
},
"status_message":"OK"
}
POST /library HTTP/1.1
Connection: close
Content-Type: application/json
{"user_id":9171036,"service":"cnc", "signature":"777a88518896b05e0f9c2e533f7e5c676c5a0ece79531017f519e5af50712ad1"}
HTTP/1.1 200 OK
Content-Type: application/json
...
{
"status": 200,
"status_message": "OK",
"library": [
{
...
"title": "E15 - 16.6.2020",
"title_id": 1336,
"image": [
"http://img.floowie.com/..................",
],
"content_type": [
"emag_publication"
],
"provider": "floowiecnc",
"title_name": "E15",
"id": "pu/434895/1336",
...
},
{
...
"title": "E15 - 15.6.2020",
"title_id": 1336,
"image": [
"http://img.floowie.com/........",
],
...
"content_type": [
"emag_publication"
],
"provider": "floowiecnc",
"title_name": "E15",
"id": "pu/434837/1336",
...
},
{
...
"title": "F.O.O.D. - 07/2020",
"title_id": 1253,
"image": [
"http://img.floowie.com/img.php?type=x-larl",
],
...
"content_type": [
"emag_publication"
],
"provider": "floowiecnc",
"title_name": "Lidé a Země",
"id": "pu/434525/1255",
...
}
]
}