JSON API pro zjišťování cen MtG karet



Podobné dokumenty
API pro volání služby kurzovního lístku KB

GP webpay: Správa objednávek, Web Services

Artlingua Translation API

Dokumentace k API SSLmarketu. verze 1.3

Příručka pro potvrzování zůstatku vydavatelům karetních platebních prostředků

RESTful API TAMZ 1. Cvičení 11

BI-AWD. Administrace Webového a Databázového serveru Virtualizace HTTP serveru

Platební systém XPAY [

Protokol HTTP 4IZ228 tvorba webových stránek a aplikací

Počítačové sítě II 17. WWW, HTTP. Miroslav Spousta, 2005

Anabix API. Popis způsobu používání služby

Počítačové sítě II. 18. World Wide Web, HTTP Miroslav Spousta,

Webové služby. Martin Sochor

HTTP protokol. HTTP protokol - úvod. Zpracoval : Petr Novotný novotny0@students.zcu.cz

WWW technologie. HTTP protokol

Dokumentace ke službě SMS Connect.

Hypertext Transfer Protocol (HTTP/1.1 RFC 2616) Počítačové sítě Pavel Šinták

Rozhraní pro docházkové systémy verze 2

Manuál pro implementaci služby PLATBA 24. Datum: 17. prosince 2014 Verze: 1.49

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

B2B SOAP - popis funkcionality

1. Obsah. Publikováno:

Funkční specifikace ABOKWS. Aplikační rozhraní elektronického bankovnictví ABO-K. Verze 0.5

2N Helios IP HTTP API

HTTP protokol. Zpracoval : Petr Novotný

Obsah. Kdo jsme? Co vám přinášíme s naší bránou? Jak si otevřu bránu na klikniavolej.cz?... 3

PODMÍNKY POSKYTOVÁNÍ PŘÍSTUPU K PORTÁLU NAMĚŘENÝCH DAT POMOCÍ WEBOVÝCH SLUŽEB SPOLEČNOSTI ČEZ DISTRIBUCE, A. S.

HLÁŠENÍ DODÁVEK LÉČIVÝCH PŘÍPRAVKŮ UVEDENÝCH NA TRH V ČR DRŽITELI ROZHODNUTÍ O REGISTRACI LP - REG13

2N Helios IP HTTP API

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Rodina protokolů TCP/IP, verze 2.3. Část 10: World Wide Web

sms.sluzba.cz API_XML30 pro textové SMS zprávy do ČR a do zahraničí

IBOD - API. Rozhraní pro přípis bodů partnery programu ibod

wplatba SOAP api Technická dokumentáce

Principy fungování WWW serverů a browserů. Internetové publikování

CREDITAS API A OTEVŘENÉ BANKOVNICTVÍ - MANUÁL

International Olympiad in Informatics 2013

Tvorba informačních systémů

Technická specifikace SMS Platby

Geis Point Plugin Map

Webové Aplikace (6. přednáška)

TRANSPORTY výbušnin (TranV)

Vývojařská Plzeň AngularJS

Chybová hlášení METODIKA MET-01/2014. SZR-56-1/OPICT-2013 počet stran 28 přílohy 0. Nahrazuje:

Platební systém XPAY [

Reranking založený na metadatech

Manuál pro implementaci aplikace Na poštu

Popis B2B rozhraní pro elektronickou neschopenku

Dokumentace k nevizuálnímu rozhraní aplikace DopisOnline

Platba za zboží prostřednictvím Raiffeisenbank

Zápasíme s REST API. Lukáš Křečan REST API Architect GoodData

Dokumentace ke službě SMS Connect.

Instalace a konfigurace web serveru. WA1 Martin Klíma

Michal Krátký, Miroslav Beneš

WWW dotazovací služby pro prostorová data URM. Jiří Čtyroký Útvar rozvoje hl. m. Prahy

API pro službu mobilem.cz, verze XML 5.04

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Synchronizace CRM ESO9 a MS Exchange

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Nástroje pro FlowSpec a RTBH. Jiří Vraný, Petr Adamec a Josef Verich CESNET. 30. leden 2019 Praha

Referenční rozhraní národního konektoru Národního kontaktního místa pro ehealth úloha pacientský souhrn

Technické řešení. Poskytování časových razítek. v. 1.0

Geis Point SOAP WebServices Interface

Od CGI k FastCGI. Uvedené dílo podléhá licenci Creative Commons Uved te autora 3.0 Česko.

Manuál pro implementaci služby PLATBA 24. Datum: 22. října 2015 Verze: 1.50

2N Helios IP HTTP API

Integrovaný agent obchodníka elektronického obchodu (IMA) Příručka správce

Zadání příkazu k převodu do zahraničí a v cizí měně do tuzemska ve službě ČSOB BusinessBanking 24

63. ročník Matematické olympiády 2013/2014

Tvorba informačních systémů

Administrační rozhraní Manuál pro klienty

Příručka pro vyhledávání v digitálním archivu Aip Safe III

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Implementační manuál aplikace Essox Lite pro programátora/webmastera e-shopu

Zpráva o zhotoveném plnění

Y36PSI IPv6. Jan Kubr - 7_IPv6 Jan Kubr 1/29

Nastavení telefonu Sony Ericsson T300

Platební brána GoPay. GoPay. Integrační manuál. verze 1.9

Zabezpečená middleware komunikace

ERP-001, verze 2_10, platnost od

Technická specifikace Platební brána IBS

Obsah Princip API...2 Funkce activate-user...3 Funkce deactivate-user...4 Funkce vlc-playlist...5 Funkce identify-user...6

Distribuované systémy a výpočty

Zadání příkazu k převodu do zahraničí, v cizí měně do tuzemska a svolení k SEPA inkasu ve službě ČSOB InternetBanking 24

mbank.cz mtransfer Okamžitá notifikace o mtransferu Dokumentace pro externího partnera

podnikatele ve formě PDF dokumentu nebo budou jednotlivé datové položky rozvedeny v XML subelementech.

ilé aspekty distribuovaných objektových systémů

E-shop k FlexiBee. FlexiBee Developers Day Tomáš Hruška, Arit s.r.o. INFORMAČNÍ TECHNOLOGIE

Uživatelská příručka SBOX

DUM 06 téma: Tvorba makra pomocí VBA

Třetí skupina zadání projektů do předmětu Algoritmy II, letní semestr 2017/2018

Popis XML rozhraní Veřejného webu RŽP

Příručka uživatele HELPDESK GEOVAP

Knihovna DebugComLib

Programování v C++ 1, 5. cvičení

ZP API V1.0 Návod pro vývojáře SW

Elektronická evidence tržeb. P r a h a 2. srpna 2016

Knihovna RecDBXLib ZÁZNAMY V DATABOXU TXV

Jak nasadit konverzní ko d

Transkript:

JSON API pro zjišťování cen MtG karet Autor: Ing. Jiří Bažant Verze: 1.0 Datum: 20.9.2014

Changelog Verze Datum Autor Poznámka 1.0 17.9.2014 Ing. Jiří Bažant 20.9.2014 Ing. Jiří Bažant Oprava příkladu SHA-1 hashe a jeho použití. 1

Obsah Changelog...1 Úvod...3 Bezpečnost...3 Volání rozhraní...3 Hlavičky odpovědi...3 Tělo odpovědi...3 Metody...4 shops-available...4 Struktura požadavku...4 Příklad požadavku...4 Příklad OK odpovědi...5 Příklad chybové odpovědi...5 find-price...6 Struktura požadavku...6 Sestavení podpisu požadavku...7 Příklad požadavku...8 Příklad OK odpovědi...8 Příklad chybové odpovědi...9 Limity volání...10 Testovací účet...10 Přepnutí do ostrého provozu...10 2

Úvod API umožňuje třetí straně zjistit cenu jednotlivých MtG karet v českých internetových obchodech. Rozhraní implementuje klient-server architekturu, kdy jako server vystupuje portál mtgim.cz. Klient pro komunikaci se servrem používá zasílání JSON požadavků. Rozhraní implementuje dvě metody, které jsou popsány dále v tomto dokumentu. Bezpečnost Všechna volání API metod musí obsahovat parametr AccessKey. Některé metody dále vyžadují podpis požadavku pomocí parametru Signature. AccessKey slouží k identifikaci uživatele v rámci systému. Signature slouží ke kontrole původu požadavku. Signature je hash získaný algoritmem SHA-1, jehož vstupem je zřetězení hodnot AccessKey, Secret, názvu metody a všech hodnot požadavku. Přesný postup sestavení Signature je popsán v sekci Sestavení podpisu požadavku u jednotlivých metod, které podpis vyžadují. Hodnoty AccessKey a Secret jsou uživateli předány při zřízení účtu. Jsou pro každého uživatele unikátní a jsou vázány na IP, nebo rozsah IP uvedený při podpisu smlouvy. Volání rozhraní JSON Server se nachází na adrese http://mtgim.cz/mtg-api. Volání rozhraní se provádí pomocí POST požadavku, který v těle požadavku obsahuje JSON objekt s parametry požadavku. Odpověď od serveru v hlavičce obsahuje návratový kód a v těle JSON objekt s odpovědí. Hlavičky odpovědi Návratové kódy jsou řízeny HTTP standartem. Tzn. 200 identifikuje validní odpověď. V těle odpovědi jsou poté požadovaná data. Všechny ostatní kódy znamenají chybový stav. Chybové stavy 4XX jsou vyhrazeny pro chyby klienta (neplatná metoda, chybný podpis požadavku, ). Chyby 5XX jsou vyhrazeny pro chyby na straně serveru (rozhraní nedostupné, chybná odpověď od e-shopu,...). Tělo odpovědi Tělo odpovědi je vždy tvořeno JSON objektem. V případě návratového kódu 200 obsahuje tělo požadovaná data. Konkrétní tvar odpovědi je závislý na volané metodě. V případě chybové odpovědi tělo obsahuje položku error s doplňujícím popisem chyby. 3

Metody shops-available Metoda slouží pro získání obchodů, pro které je možné se dotazovat na cenu karty. Vrací seznam klíč-hodnota párů, kde klíč je id obchodu a hodnota je český název obchodu. ID obchodu je povinný parametr metody find-price. Tento požadavek není nutné podepisovat. Výsledek volání je možné dlouhodobě cachovat. Struktura požadavku Adresa: /shops-available Struktura požadavku: Název Typ Popis Příklad AccessKey String Unikátní identifikátor přidělený při vytvoření účtu. testkey Struktura odpovědi: Název Typ Popis Příklad data Object Objekt obsahující klíč-hodnota dvojice s názvy obchodů. (Viz výše) { 'cernyrytir': 'Černý Rytíř', 'rishada': 'Rishada' } Příklad požadavku curl -H 'Accept: application/json' -H 'Content-type: application/json' -X POST -d '{"AccessKey": "testkey"}' http://mtgim.cz/mtg-api/shops-available > POST /mtg-api/shops-available HTTP/1.1 > User-Agent: curl/7.37.0 > Host: mtgim.cz > Accept: application/json > Content-type: application/json > Content-Length: 24 > > {"AccessKey": "testkey"} 4

Příklad OK odpovědi < HTTP/1.1 200 OK < Date: Tue, 16 Sep 2014 22:29:19 GMT < Server: Apache/2.4.9 (Unix) PHP/5.5.13 < X-Powered-By: PHP/5.5.13 < Content-Length: 123 < Content-Type: application/json < < {"data":{"cernyrytir":"\u010cern\u00fd Ryt\u00ed\u0159","mystic":"Mystic Shop","najada":"Naj\u00e1da","rishada":"Rishada"}} Příklad chybové odpovědi < HTTP/1.1 400 Bad Request < Date: Tue, 16 Sep 2014 22:29:19 GMT < Server: Apache/2.4.9 (Unix) PHP/5.5.13 < X-Powered-By: PHP/5.5.13 < Content-Length: 37 < Content-Type: application/json < < {"error : Invalid params specified } 5

find-price Metoda slouží k dohledání cen karet v daném obchodě. Vstupem je hledaný řetězec z názvu karty, ID obchodu, ve kterém se má cena hledat, a provedení karty (obyčejné / foil). Výsledkem je seznam karet obsahujících daný řetězec ve svém názvu a jejich cena v daném obchodě. Maximální počet vrácených položek je závislý na e-shopu. Obvykle se pohybuje mezi 30 50 kartami. Struktura požadavku Adresa: /find-price Struktura požadavku: Název Typ Popis Příklad AccessKey String Unikátní identifikátor přidělený při vytvoření účtu. testkey CardName String Hledaný řetězec z názvu karty. Disenchant Shop String Identifikátor obchodu, ve kterém se má cena vyhledávat. FoilType String Identifikátor typu karty: R pouze obyčejné karty F pouze foilové karty A všechny karty Rishada R Struktura odpovědi: Název Typ Popis Příklad data Object Pole obsahující objekty s jednotlivými výsledky vyhledávání. Object Struktura jednoho záznamu. name String Název karty. Disenchant expansion String Název edice karty. Mercedian Masques amount Number Počet karet skladem. 4 value Number Cena karty v Kč. 15 quality String Kvalita karty. V případě nearmint nebo mint non-foil karty je pole prázdné. foil, lightly played 6

Sestavení podpisu požadavku Každý požadavek na cenu karty musí být podepsán. Podpis je SHA-1 hash ze zřetězení AccessKey, Secret, názvu metody a všech hodnot požadavku. Tedy: sha1(accesskey + Secret + 'find-price' + CardName + Shop + FoilType) Příklad sestavení řetězce: AccessKey: testkey Secret: testsecret CardName: Disenchant Shop: rishada FoilType: R Sestavený řetězec: testkeytestsecretfind-pricedisenchantrishadar SHA-1: fdfc0f4016a5d24ede15d610a7598c46e0d26a8a Příklad implmentace v PHP5: function getrequestfindpricebody ( $accesskey, $secret, $cardname, $shop, $foiltype ) { $signature = getfindpricesignature( $accesskey, $secret, $cardname, $shop, $foiltype ); $req_params = array( 'AccessKey' => $accesskey, 'CardName' => $cardname, 'Shop' => $shop, 'FoilType' => $foiltype, 'Signature' => $signature, ); return json_encode($req_params); } function getfindpricesignature ( $accesskey, $secret, $cardname, $shop, $foiltype ) { return sha1( 7

} ); $accesskey. $secret. 'find-price'. $cardname. $shop. $foiltype Příklad požadavku curl -H 'Accept: application/json' -H 'Content-type: application/json' -X POST -d '{"AccessKey": "testkey", "CardName": "Disenchant", "Shop": "rishada", "FoilType": "R", "Signature": "fdfc0f4016a5d24ede15d610a7598c46e0d26a8a"}' http://mtgim.cz/mtg-api/find-price > POST /mtg-api/find-price HTTP/1.1 > User-Agent: curl/7.37.0 > Host: mtgim.cz > Accept: application/json > Content-type: application/json > Content-Length: 143 > > {"AccessKey": "testkey", "CardName": "Disenchant", "Shop": "rishada", "FoilType": "R", "Signature": "fdfc0f4016a5d24ede15d610a7598c46e0d26a8a"} Příklad OK odpovědi < HTTP/1.1 200 OK < Date: Tue, 16 Sep 2014 22:34:09 GMT < Server: Apache/2.4.9 (Unix) PHP/5.5.13 < X-Powered-By: PHP/5.5.13 < Content-Length: 596 < Content-Type: application/json < < {"data":[{"name":"testovaci karticka","expansion":"return to Ravnica","amount":0,"value":0,"quality":""},{"name":"Testovaci karticka","expansion":"return to Ravnica","amount":1,"value":100,"quality":""}, {"name":"testovaci karticka","expansion":"return to Ravnica","amount":2,"value":200,"quality":""},{"name":"Testovaci karticka","expansion":"return to Ravnica","amount":3,"value":300,"quality":""}, {"name":"testovaci karticka","expansion":"return to Ravnica","amount":4,"value":400,"quality":""},{"name":"Testovaci karticka","expansion":"return to Ravnica","amount":5,"value":500,"quality":""}]} 8

Příklad chybové odpovědi < HTTP/1.1 401 Unauthorized < Date: Tue, 16 Sep 2014 22:29:19 GMT < Server: Apache/2.4.9 (Unix) PHP/5.5.13 < X-Powered-By: PHP/5.5.13 < Content-Length: 26 < Content-Type: application/json < < {"error : Invalid signature } 9

Limity volání Počet volání rozhraní z jednoho účtu je omezen na 200 volání za den. V případě překročení této hranice může server na každé další volání odpovědět HTTP hlavičkou 403 a chybou Day limit exceeded. < HTTP/1.1 403 Forbidden < Date: Tue, 16 Sep 2014 22:29:19 GMT < Server: Apache/2.4.9 (Unix) PHP/5.5.13 < X-Powered-By: PHP/5.5.13 < Content-Length: 31 < Content-Type: application/json < < {"error : Day limit exceeded } Pokud by byl tento limit byl pro vaše použití příliž nízký, lze smluvně upravit jeho hodnotu. Testovací účet Pro testování by měl být využit testovací účet. Ten umožňuje libovolný počet volání rozhraní. Při použití tohoto účtu jsou vždy vrácena statická testovací data. (Nelze jej tedy použít pro koncové uživatele.) Tento účet také není závislý na použitém eshopu a tudíž nedochází k neovlivnitelným výpadkům služby. Je ovšem třeba brát zřetel, že odpověď od ostrého eshopu bude trvat značně delší dobu. (Obvykle řádově v jednotkách sekund.) Pro testovací účet použijte tyto údaje: AccessKey: testkey Secret: testsecret Tyto údaje jsou také použity ve všech příkladech v této dokumentaci. Přepnutí do ostrého provozu Přepnutí do ostrého provozu se provádí po podpisu smlouvy a úspěšné implementaci komunikace přes testovací přístupy. V rámci smlouvy musíte uvést rozsah IP adres, ze kterých budete k API přistupovat v ostrém provozu. Od mtgim.cz vám budou následně zaslány ostré přístupové údaje (AccessKey a Secret) pro tento rozsah. 10