{"id":1893,"date":"2024-09-06T13:07:44","date_gmt":"2024-09-06T11:07:44","guid":{"rendered":"https:\/\/znackarna.xyz\/sprava-api\/"},"modified":"2025-03-10T15:26:29","modified_gmt":"2025-03-10T14:26:29","slug":"sprava-api","status":"publish","type":"post","link":"https:\/\/znackarna.xyz\/cs\/sprava-api\/","title":{"rendered":"Spr\u00e1va API"},"content":{"rendered":"<div class=\"wp-block-group notice yellow\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h4 class=\"wp-block-heading\" id=\"upozorneni\">UPOZORN\u011aN\u00cd<\/h4>\n\n\n\n<p>P\u0159\u00edklady mohou obsahovat jinou adresu URL. Je t\u0159eba ji zm\u011bnit podle URL va\u0161eho poskytovatele (nap\u0159. cloud.camstreamer.com).<\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading fa-regular fa-key\" id=\"vytvareni-a-pouzivani-tokenu-api\">Vytv\u00e1\u0159en\u00ed a pou\u017e\u00edv\u00e1n\u00ed token\u016f API<a class=\"copy-link\" href=\"#vytvareni-a-pouzivani-tokenu-api\" data-id=\"vytvareni-a-pouzivani-tokenu-api\" title=\"Copy link\"><\/a><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"autorizace\">Autorizace<a class=\"copy-link\" href=\"#autorizace\" data-id=\"autorizace\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<p>Ve\u0161ker\u00e1 komunikace se serverem API mus\u00ed b\u00fdt autorizov\u00e1na prost\u0159ednictv\u00edm p\u0159\u00edstupov\u00e9ho tokenu. Platn\u00fd token mus\u00ed b\u00fdt vlo\u017een do hlavi\u010dky ka\u017ed\u00e9ho vol\u00e1n\u00ed API. <strong>Token m\u016f\u017ee vytvo\u0159it u\u017eivatel s pln\u00fdmi p\u0159\u00edstupov\u00fdmi pr\u00e1vy.<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ujist\u011bte se, \u017ee v\u00e1\u0161 \u00fa\u010det m\u00e1 pln\u00e1 p\u0159\u00edstupov\u00e1 pr\u00e1va.\n<ul class=\"wp-block-list\">\n<li>Pokud je v\u00e1\u0161 \u00fa\u010det omezen, nebudete moci zobrazit polo\u017eku nab\u00eddky API.<\/li>\n\n\n\n<li>V takov\u00e9m p\u0159\u00edpad\u011b po\u017e\u00e1dejte spr\u00e1vce, aby v\u00e1m ud\u011blil pln\u00e1 p\u0159\u00edstupov\u00e1 pr\u00e1va k \u00fa\u010dtu.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Stiskn\u011bte ikonu u\u017eivatele v prav\u00e9m horn\u00edm rohu a vyberte mo\u017enost <i class=\"far fa-code\"><\/i> API.<\/li>\n\n\n\n<li>Stisknut\u00edm tla\u010d\u00edtka <strong>Vytvo\u0159it<\/strong> token API p\u0159id\u00e1te nov\u00fd p\u0159\u00edstupov\u00fd token a p\u0159\u00edstupov\u00e1 pr\u00e1va k n\u011bmu.<\/li>\n\n\n\n<li>Token pou\u017eijte v z\u00e1hlav\u00ed ka\u017ed\u00e9ho vol\u00e1n\u00ed API.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"autorizacni-hlavicka\">Autoriza\u010dn\u00ed hlavi\u010dka<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>\"Authorization : Bearer TOKEN\u201d<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"priklad-autorizace\">P\u0159\u00edklad autorizace<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -X POST -H 'Authorization: Bearer TOKEN' -H \"Content-Type: application\/json\" --data-binary '{\"query\":\"{cameraList{name}}\"}' https:\/\/system2.netrex.cz\/api\/graphql.php<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"uvod-do-graphql-api\">\u00davod do GraphQL API<a class=\"copy-link\" href=\"#uvod-do-graphql-api\" data-id=\"uvod-do-graphql-api\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<p>Port\u00e1l vyu\u017e\u00edv\u00e1 k p\u0159\u00edstupu k rozhran\u00ed API <a href=\"https:\/\/graphql.org\/\">jazyk GraphQL <\/a>, kter\u00fd je alternativou k roz\u0161\u00ed\u0159en\u011bj\u0161\u00edmu modelu REST. Server interpretuje \u0159et\u011bzec dotazu a vrac\u00ed odpov\u011b\u010f s daty v po\u017eadovan\u00e9m form\u00e1tu. Poskytuje komplexn\u00ed a jasn\u00fd popis dat v rozhran\u00ed API a d\u00e1v\u00e1 klientsk\u00fdm aplikac\u00edm mo\u017enost vy\u017e\u00e1dat si p\u0159esn\u011b ta data, kter\u00e1 pot\u0159ebuj\u00ed.  <\/p>\n\n\n\n<p>GraphQL pou\u017e\u00edv\u00e1 dva typy operac\u00ed. Dotazovac\u00ed operace se pou\u017e\u00edvaj\u00ed ke \u010dten\u00ed dat. Mutace slou\u017e\u00ed ke zm\u011bn\u011b dat. Jednotliv\u00e9 operace dotaz\u016f a mutac\u00ed se odes\u00edlaj\u00ed v po\u017eadavku POST na endpoint. Za adresu port\u00e1lu p\u0159idejte <strong>\u201eapi\/graphql.php\u201c<\/strong>.<\/p>\n\n\n\n<p>Koncov\u00fd bod z\u016fst\u00e1v\u00e1 konstantn\u00ed bez ohledu na prov\u00e1d\u011bnou operaci.<\/p>\n\n\n\n<div class=\"wp-block-group notice blue\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h4 class=\"wp-block-heading\" id=\"doporuceni\">DOPORU\u010cEN\u00cd<\/h4>\n\n\n\n<p>V\u00edce o jazyce GraphQL v tomto <a href=\"https:\/\/graphql.org\/learn\/\">\u010dl\u00e1nku<\/a>. V\u00edce o p\u0159echodu z REST na GraphQL v tomto <a href=\"https:\/\/docs.github.com\/en\/graphql\/guides\/migrating-from-rest-to-graphql\">\u010dl\u00e1nku<\/a>. <\/p>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"pouzivani-rozhrani-api\">Pou\u017e\u00edv\u00e1n\u00ed rozhran\u00ed API<a class=\"copy-link\" href=\"#pouzivani-rozhrani-api\" data-id=\"pouzivani-rozhrani-api\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<p>Podrobn\u00e1 dokumentace v\u0161ech dostupn\u00fdch typ\u016f, dotaz\u016f a mutac\u00ed rozhran\u00ed GraphQL API je k dispozici v Pr\u016fzkumn\u00edku API. Chcete-li jej otev\u0159\u00edt, sta\u010d\u00ed za adresu port\u00e1lu p\u0159idat<strong>\u201eapi\/explorer\/index.html\u201c<\/strong>. Nejd\u016fle\u017eit\u011bj\u0161\u00ed informace pro rychl\u00fd start jsou pops\u00e1ny v kapitole Nej\u010dast\u011bj\u0161\u00ed sc\u00e9n\u00e1\u0159e integrace API.  <\/p>\n\n\n\n<div class=\"wp-block-group notice yellow\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h4 class=\"wp-block-heading\" id=\"upozorneni\">UPOZORN\u011aN\u00cd<\/h4>\n\n\n\n<p>Ve\u0159ejn\u00e9 rozhran\u00ed API nepodporuje v\u0161echny akce, kter\u00e9 jsou podporov\u00e1ny v u\u017eivatelsk\u00e9m rozhran\u00ed. Pokud m\u00e1te z\u00e1jem o nepodporovanou akci, kontaktujte na\u0161i podporu. <\/p>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"api-explorer\">API Explorer<a class=\"copy-link\" href=\"#api-explorer\" data-id=\"api-explorer\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<p>K testov\u00e1n\u00ed dotaz\u016f doporu\u010dujeme pou\u017e\u00edt n\u00e1stroj API Explorer, kter\u00fd umo\u017e\u0148uje autorizovat u\u017eivatelsk\u00fd \u00fa\u010det a interaktivn\u011b testovat dotazy. API Explorer umo\u017e\u0148uje u\u017eivateli navrhovat, ov\u011b\u0159ovat a prov\u00e1d\u011bt konkr\u00e9tn\u00ed dotazy a mutace nad daty p\u0159ipojen\u00e9ho \u00fa\u010dtu. Pomoc\u00ed API Exploreru m\u016f\u017eete tak\u00e9 zobrazit a proch\u00e1zet strukturovanou dokumentaci v\u0161ech dotaz\u016f, mutac\u00ed a datov\u00fdch typ\u016f cloudov\u00e9ho rozhran\u00ed API. Dokumentaci otev\u0159ete kliknut\u00edm na polo\u017eku <strong>Docs <\/strong>v prav\u00e9m horn\u00edm rohu.<\/p>\n\n\n\n<p>Po otev\u0159en\u00ed se mus\u00edte p\u0159ihl\u00e1sit ke sv\u00e9mu cloudov\u00e9mu \u00fa\u010dtu. Stiskn\u011bte tla\u010d\u00edtko <strong>P\u0159ihl\u00e1sit <\/strong>v prav\u00e9m horn\u00edm rohu. Stisknut\u00edm tla\u010d\u00edtka <strong>Explorer <\/strong>zobraz\u00edte stromov\u00fd seznam v\u0161ech dotaz\u016f a mutac\u00ed, kter\u00fd usnad\u0148uje vytv\u00e1\u0159en\u00ed dotaz\u016f.<\/p>\n\n\n\n<div class=\"wp-block-group notice red\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h4 class=\"wp-block-heading\" id=\"varovani\">VAROV\u00c1N\u00cd<\/h4>\n\n\n\n<p>Pomoc\u00ed rozhran\u00ed API Pr\u016fzkumn\u00edka se m\u016f\u017eete dotazovat a upravovat data ve sv\u00e9m \u00fa\u010dtu. D\u00e1vejte pozor, abyste nesmazali nebo nezm\u011bnili d\u016fle\u017eit\u00e1 data. <\/p>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"vytvoreni-tokenu-api\">Vytvo\u0159en\u00ed tokenu API<a class=\"copy-link\" href=\"#vytvoreni-tokenu-api\" data-id=\"vytvoreni-tokenu-api\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<p>Token API se pou\u017e\u00edv\u00e1 k autorizaci p\u0159\u00edstupu klienta k aplika\u010dn\u00edmu rozhran\u00ed syst\u00e9mu a k aplika\u010dn\u00edmu rozhran\u00ed kamery, kter\u00e1 je p\u0159ipojena k port\u00e1lu.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>V prav\u00e9m horn\u00edm rohu stiskn\u011bte tla\u010d\u00edtko <i class=\"far fa-circle-user\"><\/i> s u\u017eivatelsk\u00fdm jm\u00e9nem, pod kter\u00fdm jste p\u0159ihl\u00e1\u0161eni.<\/li>\n\n\n\n<li>Otev\u0159ete kartu <i class=\"far fa-code\"><\/i> API.<\/li>\n\n\n\n<li>Stiskn\u011bte tla\u010d\u00edtko <strong>Vytvo\u0159it token API<\/strong>.<\/li>\n\n\n\n<li>Vypl\u0148te libovoln\u00fd n\u00e1zev tokenu.<\/li>\n\n\n\n<li>Vyberte po\u017eadovanou dobu platnosti tokenu.<\/li>\n\n\n\n<li>Potvr\u010fte tla\u010d\u00edtkem <strong>Ulo\u017eit <\/strong>.<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-group notice yellow\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h4 class=\"wp-block-heading\" id=\"upozorneni\">UPOZORN\u011aN\u00cd<\/h4>\n\n\n\n<p>Aby bylo mo\u017en\u00e9 token pou\u017e\u00edt pro autorizaci rozhran\u00ed API kamery, mus\u00ed b\u00fdt povoleno opr\u00e1vn\u011bn\u00ed Configuration.<\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading fa-regular fa-lock\" id=\"autorizace-pomoci-oauth2-protokolu\">Autorizace pomoc\u00ed OAuth2 protokolu<a class=\"copy-link\" href=\"#autorizace-pomoci-oauth2-protokolu\" data-id=\"autorizace-pomoci-oauth2-protokolu\" title=\"Copy link\"><\/a><\/h2>\n\n\n\n<p>Autoriza\u010dn\u00ed token lze z\u00edskat dv\u011bma zp\u016fsoby. Prvn\u00ed mo\u017enost\u00ed je vytvo\u0159it token v u\u017eivatelsk\u00e9m rozhran\u00ed. Tato mo\u017enost je nejjednodu\u0161\u0161\u00ed a doporu\u010duje se pro v\u011bt\u0161inu aplikac\u00ed API. K z\u00edsk\u00e1n\u00ed tokenu lze tak\u00e9 pou\u017e\u00edt protokol Oauth2. N\u00ed\u017ee popsan\u00e9 kroky popisuj\u00ed postup pro z\u00edsk\u00e1n\u00ed autoriza\u010dn\u00edho tokenu pomoc\u00ed protokolu OAuth2.    <\/p>\n\n\n\n<div class=\"wp-block-group notice blue\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h4 class=\"wp-block-heading\" id=\"doporuceni\">DOPORU\u010cEN\u00cd<\/h4>\n\n\n\n<p>K implementaci OAuth2 doporu\u010dujeme pou\u017e\u00edt n\u011bkterou z dostupn\u00fdch knihoven. <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/an-introduction-to-oauth-2\">Dal\u0161\u00ed informace a \u00favod do OAuth2<\/a>.<\/p>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"vytvoreni-klientske-aplikace\">Vytvo\u0159en\u00ed klientsk\u00e9 aplikace<a class=\"copy-link\" href=\"#vytvoreni-klientske-aplikace\" data-id=\"vytvoreni-klientske-aplikace\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<p>Nejprve vytvo\u0159\u00edme novou aplikaci OAuth2. Aplikace OAuth2 umo\u017e\u0148uje autorizaci k rozhran\u00ed API pomoc\u00ed libovoln\u00e9ho \u00fa\u010dtu vlastn\u00edka nebo hosta. Rozhran\u00ed pro spr\u00e1vu klientsk\u00e9 aplikace je dostupn\u00e9 po p\u0159ihl\u00e1\u0161en\u00ed k \u00fa\u010dtu.  <\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Stiskn\u011bte ikonu u\u017eivatele v prav\u00e9m horn\u00edm rohu a vyberte rozhran\u00ed API <i class=\"far fa-code\"><\/i>.<\/li>\n\n\n\n<li>Otev\u0159ete aplikaci OAuth2.<\/li>\n<\/ol>\n\n\n\n<p>Aplikace OAuth2 definuje \u017eadatele o p\u0159\u00edstup k rozhran\u00ed aplikace. Aplikaci lze pou\u017e\u00edt k autorizaci libovoln\u00e9ho syst\u00e9mov\u00e9ho \u00fa\u010dtu. <\/p>\n\n\n\n<div class=\"wp-block-group notice yellow\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h4 class=\"wp-block-heading\" id=\"upozorneni\">UPOZORN\u011aN\u00cd<\/h4>\n\n\n\n<p>Aplikaci mohou vytv\u00e1\u0159et pouze \u00fa\u010dty s pln\u00fdm p\u0159\u00edstupem.<\/p>\n<\/div><\/div>\n\n\n\n<p>P\u0159i vytv\u00e1\u0159en\u00ed aplikace je t\u0159eba zadat n\u00e1sleduj\u00edc\u00ed informace:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>N\u00e1zev \u2013 zadejte libovoln\u00fd n\u00e1zev, nap\u0159. \u201eMoje aplikace\u201c.<\/li>\n\n\n\n<li>Popis \u2013 zadejte libovoln\u00fd popis.<\/li>\n\n\n\n<li>Seznam adres URL p\u0159esm\u011brov\u00e1n\u00ed \u2013 zadejte adresu URL, na kterou bude u\u017eivatel po autorizaci p\u0159esm\u011brov\u00e1n.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-group notice green\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h4 class=\"wp-block-heading\" id=\"tip\">TIP<\/h4>\n\n\n\n<p>Pro ka\u017edou integraci doporu\u010dujeme vytvo\u0159it novou klientskou aplikaci.<\/p>\n<\/div><\/div>\n\n\n\n<p>Po vytvo\u0159en\u00ed aplikace OAuth2 aplikace vygeneruje:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>client_id \u2013 jedine\u010dn\u00fd identifik\u00e1tor aplikace,<\/li>\n\n\n\n<li>client_secret \u2013 kl\u00ed\u010d aplikace,<\/li>\n<\/ul>\n\n\n\n<p>kter\u00fd OAuth2 pou\u017e\u00edv\u00e1 k z\u00edsk\u00e1n\u00ed autoriza\u010dn\u00edho k\u00f3du \u201eAUTHORIZATION_CODE\u201c.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ziskani-autorizacniho-kodu\">Z\u00edsk\u00e1n\u00ed autoriza\u010dn\u00edho k\u00f3du<a class=\"copy-link\" href=\"#ziskani-autorizacniho-kodu\" data-id=\"ziskani-autorizacniho-kodu\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<div class=\"wp-block-group notice yellow\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h4 class=\"wp-block-heading\" id=\"upozorneni\">UPOZORN\u011aN\u00cd<\/h4>\n\n\n\n<p>P\u0159\u00edklady v bloc\u00edch ve stylu k\u00f3du mohou obsahovat jinou adresu URL. Pokud m\u00e1te \u00fa\u010det pod jin\u00fdm prodejcem, mus\u00edte jej zm\u011bnit podle adresy URL va\u0161eho prodejce (nap\u0159. cloud.camstreamer.com). <\/p>\n<\/div><\/div>\n\n\n\n<p>K z\u00edsk\u00e1n\u00ed autoriza\u010dn\u00edho k\u00f3du, kter\u00fd lze d\u00e1le vym\u011bnit za p\u0159\u00edstupov\u00fd token, se pou\u017e\u00edv\u00e1 koncov\u00fd bod https:\/\/system2.netrex.cz\/oauth2\/auth.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>POST:\nhttps:\/\/system2.netrex.cz\/oauth2\/auth\/?response_type=code&amp;client_id=CLIENT_ID&amp;redirect_uri=CALLBACK_URL&amp;scope=read,write<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"parametry-pozadavku\">Parametry po\u017eadavku<\/h4>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<figure class=\"wp-block-table is-style-regular\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\"><strong>Parametr<\/strong><\/th><th class=\"has-text-align-left\" data-align=\"left\"><strong>Popis<\/strong><\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\"><em>client_id<\/em><\/td><td class=\"has-text-align-left\" data-align=\"left\">Identifikuje klientskou aplikaci.<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><em>rozsah<\/em><\/td><td class=\"has-text-align-left\" data-align=\"left\">Seznam po\u017eadovan\u00fdch pr\u00e1v odd\u011blen\u00fdch \u010d\u00e1rkou. Mo\u017en\u00e1 pr\u00e1va jsou:<br>\u2013 read,<br>\u2013 write,<br>\u2013 liveview,<br>\u2013 audiotransmit,<br>\u2013 liveview_ptz,<br>\u2013 liveview_light,<br>\u2013 liveview_audioclip,<br>\u2013 recordings,<br>\u2013 recordings_delete,<br>\u2013 events.<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><em>redirect_url<\/em><\/td><td class=\"has-text-align-left\" data-align=\"left\">URL, na kterou m\u00e1 b\u00fdt autoriza\u010dn\u00ed k\u00f3d odesl\u00e1n. Mus\u00ed se shodovat s URL povolen\u00fdm v definici klientsk\u00e9 aplikace. <\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><em>state<\/em><\/td><td class=\"has-text-align-left\" data-align=\"left\">Nepovinn\u00fd bezpe\u010dnostn\u00ed parametr, kter\u00fd je beze zm\u011bny p\u0159ed\u00e1n zp\u011bt do redirect_url spolu s autoriza\u010dn\u00edm k\u00f3dem.<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>Nejprve budete p\u0159esm\u011brov\u00e1ni na p\u0159ihla\u0161ovac\u00ed obrazovku port\u00e1lu. Po p\u0159ihl\u00e1\u0161en\u00ed k \u00fa\u010dtu se zobraz\u00ed dialogov\u00e9 okno s \u017e\u00e1dost\u00ed o ud\u011blen\u00ed p\u0159\u00edstupu ke klientsk\u00e9 aplikaci. Po potvrzen\u00ed\/odm\u00edtnut\u00ed dialogu je p\u0159esm\u011brov\u00e1na redirect_url a do parametr\u016f GET je p\u0159id\u00e1n parametr \u201ecode\u201c s autoriza\u010dn\u00edm k\u00f3dem nebo parametr \u201eerror\u201c s d\u016fvodem chyby (\u201eaccess_denied\u201c, pokud u\u017eivatel \u017e\u00e1dost o p\u0159\u00edstup odm\u00edtl). Pokud byl v po\u017eadavku zad\u00e1n parametr \u201estate\u201c, bude k p\u0159esm\u011brov\u00e1n\u00ed p\u0159id\u00e1n tak\u00e9.   <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ziskani-pristupoveho-tokenu\">Z\u00edsk\u00e1n\u00ed p\u0159\u00edstupov\u00e9ho tokenu<a class=\"copy-link\" href=\"#ziskani-pristupoveho-tokenu\" data-id=\"ziskani-pristupoveho-tokenu\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<p>K z\u00edsk\u00e1n\u00ed p\u0159\u00edstupov\u00e9ho tokenu se pou\u017e\u00edv\u00e1 koncov\u00e9 m\u00edsto https:\/\/system2.netrex.cz\/oauth2\/token a p\u0159\u00edpadn\u011b tak\u00e9 token obnoven\u00ed.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>POST:\nhttps:\/\/system2.netrex.cz\/oauth2\/token?client_id=CLIENT_ID&amp;client_secret=CLIENT_SECRET&amp;grant_type=authorization_code&amp;code=AUTHORIZATION_CODE&amp;redirect_uri=CALLBACK_URL<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Parametr<\/th><th class=\"has-text-align-left\" data-align=\"left\">Popis<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\"><em>client_id<\/em><\/td><td class=\"has-text-align-left\" data-align=\"left\">Identifikuje klientskou aplikaci.<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><em>client_secret<\/em><\/td><td class=\"has-text-align-left\" data-align=\"left\">Tajn\u00fd kl\u00ed\u010d klientsk\u00e9 aplikace, s jeho\u017e pomoc\u00ed lze z\u00edskat trval\u00fd p\u0159\u00edstup k rozhran\u00ed API (p\u0159\u00edstupov\u00e9 a obnovovac\u00ed tokeny). Bez tohoto parametru je umo\u017en\u011bn pouze do\u010dasn\u00fd p\u0159\u00edstup (tj. pouze p\u0159\u00edstupov\u00fd token). V\u0161imn\u011bte si, \u017ee parametr <em>client_secret<\/em> nelze pou\u017e\u00edt tam, kde hroz\u00ed jeho \u00fanik. Nen\u00ed nap\u0159\u00edklad mo\u017en\u00e9 jej pou\u017e\u00edt v aplikac\u00edch v jazyce JavaScript.   <\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><em>redirect_url<\/em><\/td><td class=\"has-text-align-left\" data-align=\"left\">Jedna z adres URL p\u0159esm\u011brov\u00e1n\u00ed uveden\u00fdch v definici klientsk\u00e9 aplikace. V tomto kroku slou\u017e\u00ed pouze jako dodate\u010dn\u00fd bezpe\u010dnostn\u00ed prvek a k \u017e\u00e1dn\u00e9mu dal\u0161\u00edmu p\u0159esm\u011brov\u00e1n\u00ed nedoch\u00e1z\u00ed. <\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><em>grant_type<\/em><\/td><td class=\"has-text-align-left\" data-align=\"left\">Parametr ur\u010duj\u00edc\u00ed metodu autorizace. K dispozici jsou n\u00e1sleduj\u00edc\u00ed mo\u017enosti:<br>\u2013 <strong>auth_code<\/strong>. Jedn\u00e1 se o v\u00fdm\u011bnu autoriza\u010dn\u00edho k\u00f3du z p\u0159edchoz\u00edho kroku za p\u0159\u00edstupov\u00fd token.<br>\u2013 <strong>refresh_token<\/strong>. Jedn\u00e1 se o obnoven\u00ed nebo v\u00fdm\u011bnu za nov\u00fd p\u0159\u00edstupov\u00fd token na dal\u0161\u00ed obdob\u00ed.   <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"mozne-odpovedi-ve-formatu-json\">Mo\u017en\u00e9 odpov\u011bdi ve form\u00e1tu JSON:<\/h4>\n\n\n\n<p><code>{\"access_token\":\"ACCESS_TOKEN\",\"expires_in\":3600,\"refresh_token\":\"1234\"}<\/code>  \u2013 \u010casov\u011b neomezen\u00fd p\u0159\u00edstup k rozhran\u00ed API. Po vypr\u0161en\u00ed platnosti p\u0159\u00edstupov\u00e9ho tokenu lze obnoven\u00edm tokenu z\u00edskat nov\u00fd. Pro tento typ p\u0159\u00edstupu mus\u00edte v dotazu pou\u017e\u00edt client_secret.  <br><code>{\"access_token\":\"ACCESS_TOKEN\",\"expires_in\":3600}<\/code>  \u2013 Jednor\u00e1zov\u00fd p\u0159\u00edstup k rozhran\u00ed API, kter\u00fd se zru\u0161\u00ed po vypr\u0161en\u00ed platnosti p\u0159\u00edstupov\u00e9ho tokenu.<br><code>{\"error\":\"Error message\"}<\/code>  \u2013 Neplatn\u00fd po\u017eadavek nebo syst\u00e9mov\u00e1 chyba.<\/p>\n\n\n\n<p>Z\u00edskan\u00fd ACCESS_TOKEN lze vlo\u017eit do hlavi\u010dky ka\u017ed\u00e9ho vol\u00e1n\u00ed Graph API (\u201eAuthorization: Bearer TOKEN\u201c).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"zruseni-pristupoveho-tokenu\">Zru\u0161en\u00ed p\u0159\u00edstupov\u00e9ho tokenu<a class=\"copy-link\" href=\"#zruseni-pristupoveho-tokenu\" data-id=\"zruseni-pristupoveho-tokenu\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<p>P\u0159\u00edstupov\u00fd token lze kdykoli zru\u0161it v u\u017eivatelsk\u00e9m rozhran\u00ed nebo pomoc\u00ed rozhran\u00ed API. Ke zru\u0161en\u00ed p\u0159\u00edstupu se pou\u017e\u00edv\u00e1 koncov\u00fd bod https:\/\/system2.netrex.cz\/oauth2\/revoke. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>POST:\nhttps:\/\/system2.netrex.cz\/oauth2\/revoke?access_token=ACCESS_TOKEN<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Parametr<\/th><th class=\"has-text-align-left\" data-align=\"left\">Popis<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\"><em>access_token<\/em><\/td><td class=\"has-text-align-left\" data-align=\"left\">St\u00e1vaj\u00edc\u00ed token odstranit.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"odpoved-ve-formatu-json\">Odpov\u011b\u010f ve form\u00e1tu JSON:<\/h4>\n\n\n\n<p><code>{\"success\":true,\u201dmessage\u201d:\u201dInfo message\u201d}<\/code>  \u2013 Dan\u00fd p\u0159\u00edstupov\u00fd token (i s jeho obnovovac\u00edm tokenem) je zru\u0161en.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"uzivatelska-opravneni-pro-oauth2\">U\u017eivatelsk\u00e1 opr\u00e1vn\u011bn\u00ed pro OAuth2<a class=\"copy-link\" href=\"#uzivatelska-opravneni-pro-oauth2\" data-id=\"uzivatelska-opravneni-pro-oauth2\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<p>Syst\u00e9m rozli\u0161uje mezi u\u017eivateli s pln\u00fdm a \u010d\u00e1ste\u010dn\u00fdm p\u0159\u00edstupem, jejich\u017e zobrazen\u00ed m\u016f\u017ee b\u00fdt omezeno. Pokud pou\u017e\u00edv\u00e1te autorizaci Oauth2, \u00fadaje z\u00edskan\u00e9 prost\u0159ednictv\u00edm rozhran\u00ed API odpov\u00eddaj\u00ed p\u0159\u00edstupov\u00fdm pr\u00e1v\u016fm u\u017eivatele. Pokud chcete zajistit pln\u00fd p\u0159ehled, pou\u017eijte p\u0159i autorizaci OAuth2 \u00fa\u010det s pln\u00fdmi p\u0159\u00edstupov\u00fdmi pr\u00e1vy nebo vygenerujte statick\u00fd token API.  <\/p>\n\n\n\n<h2 class=\"wp-block-heading fa-regular fa-chart-tree-map\" id=\"bezne-scenare-integrace-api\">B\u011b\u017en\u00e9 sc\u00e9n\u00e1\u0159e integrace API<a class=\"copy-link\" href=\"#bezne-scenare-integrace-api\" data-id=\"bezne-scenare-integrace-api\" title=\"Copy link\"><\/a><\/h2>\n\n\n\n<div class=\"wp-block-group notice yellow\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h4 class=\"wp-block-heading\" id=\"upozorneni\">UPOZORN\u011aN\u00cd<\/h4>\n\n\n\n<p>P\u0159\u00edklady v bloc\u00edch ve stylu k\u00f3du mohou obsahovat jinou adresu URL. Pokud m\u00e1te \u00fa\u010det pod jin\u00fdm prodejcem, mus\u00edte jej zm\u011bnit podle adresy URL va\u0161eho prodejce (nap\u0159. cloud.camstreamer.com). <\/p>\n<\/div><\/div>\n\n\n\n<p>Pomoc\u00ed aplikace API Explorer m\u016f\u017eete snadno otestovat n\u00e1sleduj\u00edc\u00ed p\u0159\u00edklady. Kliknut\u00edm sem z\u00edsk\u00e1te informace o autorizaci API. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"organizace-objektu\">Organizace objekt\u016f<a class=\"copy-link\" href=\"#organizace-objektu\" data-id=\"organizace-objektu\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<p>Objekty u\u017eivatel, kamera, elektrick\u00fd vstup, p\u0159\u00edstrojov\u00e1 deska, slo\u017eka a dal\u0161\u00ed jsou uzly ve stromov\u00e9 struktu\u0159e. Tato struktura umo\u017e\u0148uje: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Z\u00edsk\u00e1n\u00ed agregovan\u00fdch metrik z v\u00edce objekt\u016f.<\/li>\n\n\n\n<li>Spr\u00e1va u\u017eivatelsk\u00fdch opr\u00e1vn\u011bn\u00ed pro skupinu objekt\u016f.<\/li>\n\n\n\n<li>Uspo\u0159\u00e1d\u00e1n\u00ed objekt\u016f do skupin pro lep\u0161\u00ed p\u0159ehlednost v u\u017eivatelsk\u00e9m rozhran\u00ed.<\/li>\n<\/ul>\n\n\n\n<p>Objekt slo\u017eky umo\u017e\u0148uje nekone\u010dn\u00e9 pono\u0159en\u00ed. N\u011bkter\u00e9 objekty, nap\u0159\u00edklad elektrick\u00fd vstup, jsou v\u017edy pono\u0159eny pod objekt kamery. <\/p>\n\n\n\n<p><strong>P\u0159\u00edklad<\/strong><\/p>\n\n\n\n<p>Seznam v\u0161ech polo\u017eek, kter\u00e9 m\u00e1 u\u017eivatel pr\u00e1vo zobrazit. M\u011bjte na pam\u011bti, \u017ee v p\u0159\u00edpad\u011b autorizace OAuth2 m\u016f\u017ee b\u00fdt token vyd\u00e1n hostuj\u00edc\u00edmu u\u017eivateli, kter\u00fd nevid\u00ed v\u0161echny polo\u017eky. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query {\n nodeList {\n  parent_node_id\n  node_id\n  type\n  name\n }\n}<\/code><\/pre>\n\n\n\n<p><strong>Odpov\u011b\u010f<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n \"data\": {\n  \"nodeList\": [\n   {\n    \"parent_node_id\": null,\n    \"node_id\": 138170,\n    \"type\": \"folder\",\n    \"name\": \"rootfolder\"\n   },\n   {\n    \"parent_node_id\": 138170,\n    \"node_id\": 138170,\n    \"type\": \"folder\",\n    \"name\": \"San Diego\"\n   },\n\u2026\n  ]\n }\n}<\/code><\/pre>\n\n\n\n<p>Pokud chceme z\u00edskat pouze objekty \u201ekamera\u201c, pou\u017eijeme nepovinn\u00fd typ parametru. V\u0161echny dostupn\u00e9 typy najdete ve vygenerovan\u00e9 dokumentaci v Pr\u016fzkumn\u00edku API. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query {\n nodeList(type:camera) {\n  parent_node_id\n  type\n  name\n  node_id\n }\n}<\/code><\/pre>\n\n\n\n<p><strong>Odpov\u011b\u010f<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n \"data\": {\n  \"nodeList\": [\n   {\n    \"parent_node_id\": 138170,\n    \"type\": \"camera\",\n    \"name\": \"ACCC8EE8A9CA\",\n    \"node_id\": 140094\n   }\n  ]\n }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ziskani-parametru-kamery\">Z\u00edsk\u00e1n\u00ed parametr\u016f kamery<a class=\"copy-link\" href=\"#ziskani-parametru-kamery\" data-id=\"ziskani-parametru-kamery\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<p>Typ kamery je nejobs\u00e1hlej\u0161\u00ed typ, kter\u00fd pou\u017e\u00edv\u00e1me p\u0159i stahov\u00e1n\u00ed z\u00e1znam\u016f a z\u00edsk\u00e1v\u00e1n\u00ed \u017eiv\u00e9ho vys\u00edl\u00e1n\u00ed. Dotaz na typ kamery vr\u00e1t\u00ed mnoho parametr\u016f o kame\u0159e. <\/p>\n\n\n\n<p><strong>P\u0159\u00edklad<\/strong><\/p>\n\n\n\n<p>Dotazem na typ kamery z\u00edsk\u00e1me informace o s\u00e9riov\u00e9m \u010d\u00edsle (serial_number), stavu p\u0159ipojen\u00ed (is_connected) a ip adrese kamery (source_ip). Povinn\u00fd parametr node_id lze zjistit pomoc\u00ed p\u0159edchoz\u00edho dotazu na cameraList nebo nodeList. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query {\n camera(node_id:140094){\n  name\n  serial_number\n  is_connected\n  connection{\n   source_ip\n  }\n }\n}<\/code><\/pre>\n\n\n\n<p><strong>Odpov\u011b\u010f<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n \"data\": {\n  \"camera\": {\n   \"name\": \"ACCC8EE8A9CA\",\n   \"serial_number\": \"ACCC8EE8A9CA\",\n   \"is_connected\": true,\n   \"connection\": {\n    \"source_ip\": \"211.21.111.111\"\n   }\n  }\n }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ziskani-metrik-kpi\">Z\u00edsk\u00e1n\u00ed metrik KPI<a class=\"copy-link\" href=\"#ziskani-metrik-kpi\" data-id=\"ziskani-metrik-kpi\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<p>Existuje n\u011bkolik typ\u016f, kter\u00e9 m\u016f\u017eete pou\u017e\u00edt k z\u00edsk\u00e1n\u00ed metrik KPI:<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"statisticdata\">statisticData<\/h5>\n\n\n\n<p>Vrac\u00ed jednu hodnotu pro jeden objekt (kameru). Pou\u017eijte ji k z\u00edsk\u00e1n\u00ed jedin\u00e9ho \u010d\u00edsla z jedin\u00e9 kamery. Nap\u0159\u00edklad: Po\u010det n\u00e1v\u0161t\u011bvn\u00edk\u016f z lid\u00ed po\u010d\u00edtaj\u00edc\u00edch kameru1.  <\/p>\n\n\n\n<p><strong>Dostupn\u00e9 metriky:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>peopleCount \u2013 po\u010det n\u00e1v\u0161t\u011bvn\u00edk\u016f.<\/li>\n\n\n\n<li>peopleCountIn \u2013 po\u010det n\u00e1v\u0161t\u011bvn\u00edk\u016f (pouze vstupy).<\/li>\n\n\n\n<li>peopleCountOut \u2013 po\u010det n\u00e1v\u0161t\u011bvn\u00edk\u016f (pouze v\u00fdstupy).<\/li>\n\n\n\n<li>transactionValueIn \u2013 hodnota kladn\u00fdch platebn\u00edch transakc\u00ed (n\u00e1sobeno x 100).<\/li>\n\n\n\n<li>transactionCountIn \u2013 po\u010det kladn\u00fdch platebn\u00edch transakc\u00ed.<\/li>\n\n\n\n<li>transactionValueOut \u2013 hodnota z\u00e1porn\u00fdch platebn\u00edch transakc\u00ed (n\u00e1sobeno x 100).<\/li>\n\n\n\n<li>transactionCountOut \u2013 po\u010det z\u00e1porn\u00fdch platebn\u00edch transakc\u00ed.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"statisticdatametric\">statisticDataMetric<\/h5>\n\n\n\n<p>Vrac\u00ed jednu hodnotu pro jeden objekt nebo v\u00edce objekt\u016f ve slo\u017ece. Dotazy na objekt slo\u017eky vracej\u00ed agregovanou hodnotu pro v\u0161echny objekty ve slo\u017ece. Tuto funkci pou\u017eijte k z\u00edsk\u00e1n\u00ed jedin\u00e9 agregovan\u00e9 hodnoty z v\u00edce kamer. Nap\u0159\u00edklad: Po\u010det n\u00e1v\u0161t\u011bvn\u00edk\u016f z jednoho obchodu, kde jsou v\u0161echny kamery obchodu ve slo\u017ece \u201eSan Diego\u201c.<\/p>\n\n\n\n<p><strong>Dostupn\u00e9 metriky:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>peopleCountAverage \u2013 po\u010det n\u00e1v\u0161t\u011bvn\u00edk\u016f.<\/li>\n\n\n\n<li>peopleCountIn \u2013 po\u010det n\u00e1v\u0161t\u011bvn\u00edk\u016f (pouze p\u0159\u00edchoz\u00ed).<\/li>\n\n\n\n<li>peopleCountOut \u2013 po\u010det n\u00e1v\u0161t\u011bvn\u00edk\u016f (pouze odchoz\u00edch).<\/li>\n\n\n\n<li>peopleCountPassBy \u2013 po\u010det n\u00e1v\u0161t\u011bvn\u00edk\u016f, kte\u0159\u00ed pro\u0161li kolem obchodu.<\/li>\n\n\n\n<li>transactionCountPositive \u2013 po\u010det pozitivn\u00edch transakc\u00ed.<\/li>\n\n\n\n<li>transactionCountNegative \u2013 po\u010det z\u00e1porn\u00fdch transakc\u00ed.<\/li>\n\n\n\n<li>transactionAmountPositive \u2013 hodnota kladn\u00fdch transakc\u00ed.<\/li>\n\n\n\n<li>transactionAmountNegative \u2013 hodnota z\u00e1porn\u00fdch transakc\u00ed.<\/li>\n\n\n\n<li>conversionCount \u2013 po\u010det konverz\u00ed; (po\u010det pozitivn\u00edch transakc\u00ed \/ po\u010det n\u00e1v\u0161t\u011bvn\u00edk\u016f) * 100.<\/li>\n\n\n\n<li>conversionAmount \u2013 \u00fatrata na n\u00e1v\u0161t\u011bvn\u00edka; (hodnota pozitivn\u00edch transakc\u00ed \/ po\u010det n\u00e1v\u0161t\u011bvn\u00edk\u016f).<\/li>\n\n\n\n<li>transactionAmountAverage \u2013 pr\u016fm\u011brn\u00e1 hodnota transakce (pouze kladn\u00e9 transakce).<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"statisticdatametricbygranularity\">statisticDataMetricByGranularity<\/h5>\n\n\n\n<p>Vr\u00e1t\u00ed v\u00edce hodnot (datov\u00fdch \u0159ad) v jednom dotazu. Dostupn\u00e9 metriky a agregace jsou shodn\u00e9 s v\u00fd\u0161e uvedenou statistikouDataMetric. Pou\u017eijte ji pro z\u00edsk\u00e1n\u00ed v\u00edce hodnot v jednom dotazu. Parametrem tohoto dotazu je granularita. Granularita ur\u010duje po\u010det vr\u00e1cen\u00fdch datov\u00fdch bod\u016f.    <\/p>\n\n\n\n<p><strong>Granularita:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>HQ \u2013 15 minut<\/li>\n\n\n\n<li>H \u2013 hodina<\/li>\n\n\n\n<li>H4 \u2013 4 hodiny<\/li>\n\n\n\n<li>H8 \u2013 8 hodin<\/li>\n\n\n\n<li>H12 \u2013 12 hodin<\/li>\n\n\n\n<li>D \u2013 den<\/li>\n\n\n\n<li>W \u2013 t\u00fdden<\/li>\n\n\n\n<li>M \u2013 m\u011bs\u00edc<\/li>\n<\/ul>\n\n\n\n<p>V\u0161echny metriky jsou v syst\u00e9mu ulo\u017eeny s rozli\u0161en\u00edm 15 minut. Pokud dotaz neodpov\u00edd\u00e1 15minutov\u00e9mu intervalu, rozhran\u00ed API vypo\u010d\u00edt\u00e1 v\u00fdsledek s pou\u017eit\u00edm bl\u00edzk\u00fdch interval\u016f. Parametry \u201eod\u201c a \u201edo\u201c jsou ve form\u00e1tu \u010dasov\u00e9ho raz\u00edtka Unix. Pro \u00fa\u010dely testov\u00e1n\u00ed m\u016f\u017eete pou\u017e\u00edt <a href=\"https:\/\/www.epochconverter.com\/\" data-type=\"link\" data-id=\"https:\/\/www.epochconverter.com\/\">p\u0159evodn\u00edk \u010dasov\u00fdch raz\u00edtek Unix Timestamp<\/a>.<\/p>\n\n\n\n<p><strong>P\u0159\u00edklad 1 \u2013 na\u010dten\u00ed jedn\u00e9 hodnoty<\/strong><\/p>\n\n\n\n<p>Dotaz na slo\u017eku vr\u00e1t\u00ed agregovan\u00fd peopleCountAverage pro v\u0161echny kamery ve slo\u017ece.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query {\n statisticDataMetric(from:1589186000, to:1589186780, type:peopleCountAverage,node_id:140094)\n}\u200b<\/code><\/pre>\n\n\n\n<p><strong>Odpov\u011b\u010f<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n \"data\": {\n  \"statisticDataMetric\": 57\n }\n}<\/code><\/pre>\n\n\n\n<p><strong>P\u0159\u00edklad 2 \u2013 Z\u00edsk\u00e1n\u00ed v\u00edce hodnot (\u010dasov\u00e9 \u0159ady)<\/strong><\/p>\n\n\n\n<p>Dotaz na slo\u017eku vr\u00e1t\u00ed agregovan\u00fd peopleCountAverage s granularitou 15 minut.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n statisticDataMetricByGranularity(from: 1589186000, to: 1589186780, type: peopleCountAverage, node_id: 63575, granularity: HQ) {\n  from\n  to\n  value\n }\n}<\/code><\/pre>\n\n\n\n<p><strong>Odpov\u011b\u010f<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n \"data\": {\n  \"statisticDataMetricByGranularity\": [\n   {\n    \"from\": 1589185800,\n    \"to\": 1589186700,\n    \"value\": 20\n   },\n   {\n    \"from\": 1589186700,\n    \"to\": 1589187600,\n    \"value\": 12\n   }\n   \u2026\n  ]\n }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"zobrazeni-ziveho-prenosu-z-kamery\">Zobrazen\u00ed \u017eiv\u00e9ho p\u0159enosu z kamery<a class=\"copy-link\" href=\"#zobrazeni-ziveho-prenosu-z-kamery\" data-id=\"zobrazeni-ziveho-prenosu-z-kamery\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<p>Dotazem na typ kamery zjist\u00edte adresu URL pro p\u0159\u00edstup k \u017eiv\u00e9mu vys\u00edl\u00e1n\u00ed. Port\u00e1l podporuje n\u011bkolik protokol\u016f pro streamov\u00e1n\u00ed videa. Protokoly se li\u0161\u00ed v z\u00e1vislosti na p\u0159\u00edstupu ke kame\u0159e:  <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>P\u0159\u00edstup v r\u00e1mci m\u00edstn\u00ed s\u00edt\u011b:\n<ul class=\"wp-block-list\">\n<li>rtsp \u2013 Oby\u010dejn\u00fd ne\u0161ifrovan\u00fd protokol RTSP.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>P\u0159\u00edstup p\u0159es ve\u0159ejn\u00fd internet:\n<ul class=\"wp-block-list\">\n<li>rtsp \u2013 Oby\u010dejn\u00fd ne\u0161ifrovan\u00fd protokol RTSP.<\/li>\n\n\n\n<li>rtsph \u2013 Ne\u0161ifrovan\u00e9 RTSP p\u0159es HTTP.<\/li>\n\n\n\n<li>rtsphs \u2013 \u0160ifrovan\u00e9 RTSP p\u0159es HTTPS.<\/li>\n\n\n\n<li>rtspws \u2013 Ne\u0161ifrovan\u00e9 RTSP p\u0159es WebSocket.<\/li>\n\n\n\n<li>rtspwss \u2013 RTSP over WebSocket Secure.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"zabezpeceni-pristupu-k-zivemu-vysilani\">Zabezpe\u010den\u00ed p\u0159\u00edstupu k \u017eiv\u00e9mu vys\u00edl\u00e1n\u00ed<\/h4>\n\n\n\n<p>Dotaz API na adresu URL pro streamov\u00e1n\u00ed vygeneruje odkaz RTSP, kter\u00fd je platn\u00fd po dobu 30 sekund. Po uplynut\u00ed 30 sekund nebo odpojen\u00ed p\u0159ehr\u00e1va\u010de nebude mo\u017en\u00e9 p\u0159ehr\u00e1va\u010d p\u0159ipojit a aplikace si mus\u00ed vy\u017e\u00e1dat nov\u00fd odkaz RTSP. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"videoprehravac\"><strong>Videop\u0159ehr\u00e1va\u010d<\/strong><\/h4>\n\n\n\n<p>Pro p\u0159ehr\u00e1v\u00e1n\u00ed \u017eiv\u00e9ho videa ze syst\u00e9mu doporu\u010dujeme pou\u017e\u00edt n\u00e1\u0161 webov\u00fd p\u0159ehr\u00e1va\u010d, kter\u00fd je k dispozici v \u00falo\u017ei\u0161ti GitLab. P\u0159ehr\u00e1va\u010d vyu\u017e\u00edv\u00e1 kombinaci protokolu WebSocket Secure a RTSP a je vhodn\u00fd pro p\u0159ehr\u00e1v\u00e1n\u00ed vide\u00ed kdekoli na internetu. <\/p>\n\n\n\n<p><strong>P\u0159\u00edklad<\/strong><\/p>\n\n\n\n<p>Tento p\u0159\u00edklad ukazuje, jak z\u00edskat video stream pro vzd\u00e1len\u00fd p\u0159ehr\u00e1va\u010d. V\u011bt\u0161ina kamer umo\u017e\u0148uje streamov\u00e1n\u00ed r\u016fzn\u00fdch profil\u016f (rozli\u0161en\u00ed a sn\u00edm\u00e1n\u00ed). Dotazem na typ streamProfile zjist\u00edte dostupn\u00e9 profily.  <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query {\n camera(node_id:140094){\n  stream_profiles{\n   stream_profile_id\n   width\n   height\n  }\n }\n}<\/code><\/pre>\n\n\n\n<p><strong>Odpov\u011b\u010f<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n \"data\": {\n  \"camera\": {\n   \"stream_profiles\": [\n    {\n     \"stream_profile_id\": 120846,\n     \"width\": 800,\n     \"height\": 450\n    },\n    {\n     \"stream_profile_id\": 120850,\n     \"width\": 1920,\n     \"height\": 1080\n    }\n   ]\n  }\n }\n}<\/code><\/pre>\n\n\n\n<p>Dal\u0161\u00edm dotazem z\u00edsk\u00e1te adresu RTSP a adresu URL pro aktu\u00e1ln\u011b generovan\u00fd stream RTSP.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query {\n camera(node_id:140094){\n  live_view(stream_profile_id:120850){\n   remote{\n    rtsp{\n     url\n    }\n   }\n  }\n }\n}<\/code><\/pre>\n\n\n\n<p><strong>Odpov\u011b\u010f<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n \"data\": {\n  \"camera\": {\n   \"live_view\": {\n    \"remote\": {\n     \"rtsp\": {\n      \"url\": \"rtsp:\/\/nvhs10.survilla.net:2554\/nvhs10~1600421245~9469bb1a2b831031456ef9c4abc182573d7a86a9f305f54df18621a9484d6134\"\n     }\n    }\n   }\n  }\n }\n}<\/code><\/pre>\n\n\n\n<p>N\u011bkter\u00e9 kamery podporuj\u00ed v\u00edce videokan\u00e1l\u016f. Nap\u0159\u00edklad kamery s v\u00edce optikami nebo virtu\u00e1ln\u00ed pohledy 180\u00b0 kamer. Kan\u00e1l lze vybrat pomoc\u00ed voliteln\u00e9ho parametru video_channel_node_id v typu live_view (stream_profile_id: 120850, video_channel_node_id: 1000). Seznam videokan\u00e1l\u016f jednotliv\u00fdch kamer je k dispozici v typu kamery.   <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"zobrazeni-a-stazeni-nahravky\">Zobrazen\u00ed a sta\u017een\u00ed nahr\u00e1vky<a class=\"copy-link\" href=\"#zobrazeni-a-stazeni-nahravky\" data-id=\"zobrazeni-a-stazeni-nahravky\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<p>Proces prohl\u00ed\u017een\u00ed \/ stahov\u00e1n\u00ed z\u00e1znamu je rozd\u011blen do t\u0159\u00ed krok\u016f:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Zkontrolujte dostupnost z\u00e1znamu a z\u00edskejte recording_id.<\/li>\n\n\n\n<li>P\u0159\u00edprava z\u00e1znamu v po\u017eadovan\u00e9m rozli\u0161en\u00ed.<\/li>\n\n\n\n<li>Z\u00edskejte adresu URL pro sta\u017een\u00ed z\u00e1znamu.<\/li>\n<\/ol>\n\n\n\n<p>N\u00e1sleduj\u00edc\u00ed p\u0159\u00edklad ukazuje cel\u00fd proces.<\/p>\n\n\n\n<p><strong>P\u0159\u00edklad<\/strong><\/p>\n\n\n\n<p>Recording_id je jedine\u010dn\u00fd identifik\u00e1tor z\u00e1znamu. Vytvo\u0159\u00ed se p\u0159i kontrole dostupnosti pomoc\u00ed n\u00e1sleduj\u00edc\u00edho dotazu. Pt\u00e1me se tak\u00e9 na dostupn\u00e9 velikosti z\u00e1znam\u016f, kter\u00e9 pou\u017eijeme v dal\u0161\u00edm kroku. Nejvy\u0161\u0161\u00ed dostupn\u00e1 velikost odpov\u00edd\u00e1 v\u00fdchoz\u00edmu rozli\u0161en\u00ed z\u00e1znamu a je nejrychleji p\u0159ipravena. Parametry \u201eod\u201c a \u201edo\u201c definuj\u00ed po\u017eadovan\u00e9 \u010dasov\u00e9 obdob\u00ed z\u00e1znamu.    <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query{\n camera(node_id:62303){\n  recordings(from:1589190089, to:1589190689){\n   recording_id\n   duration\n   download_url\n   outputs{\n    height\n   }\n  }\n }\n}<\/code><\/pre>\n\n\n\n<p>Odpov\u011b\u010f<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n \"data\": {\n  \"camera\": {\n   \"recordings\": [\n    {\n     \"recording_id\": \"xRMElmAkh3\",\n     \"duration\": 598,\n     \"download_url\": null,\n     \"outputs\": [\n      {\n       \"height\": 480\n      },\n      {\n       \"height\": 720\n      },\n      {\n       \"height\": 800\n      }\n     ]\n    }\n   ]\n  }\n }\n}<\/code><\/pre>\n\n\n\n<p>Pokud odpov\u011b\u010f obsahuje pr\u00e1zdn\u00e9 pole, zkontrolujte v u\u017eivatelsk\u00e9m rozhran\u00ed, zda dan\u00e1 kamera nahr\u00e1v\u00e1 nebo nahr\u00e1vala ve zvolen\u00e9m intervalu. Nyn\u00ed zavol\u00e1me mutaci pro p\u0159\u00edpravu z\u00e1znamu, jej\u00edmi\u017e parametry jsou recording_id a height z p\u0159edchoz\u00edho kroku. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mutation{\n recordingPrepare(recording_id:\"xRMElmAkh3\", height:720)\n}<\/code><\/pre>\n\n\n\n<p><strong>Odpov\u011b\u010f<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n \"data\": {\n  \"recordingPrepare\": true\n }\n}<\/code><\/pre>\n\n\n\n<p>Hodnota true znamen\u00e1, \u017ee p\u0159\u00edprava z\u00e1znamu byla \u00fasp\u011b\u0161n\u011b zah\u00e1jena. Stav p\u0159\u00edpravy se zjist\u00ed dotazem na typ z\u00e1znamu, jeho\u017e parametrem je recording_id. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query{\n recording(recording_id:\"6RjiHGzqCE\"){\n  progress\n  download_url\n }\n}<\/code><\/pre>\n\n\n\n<p><strong>Odpov\u011b\u010f<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n \"data\": {\n  \"recording\": {\n   \"progress\": 100,\n   \"download_url\": \"https:\/\/cloud.camstreamer.com\/api\/download.php?auth_key=2YwmG01NAeNYz4m1bZfwIKLOaoHeCfxH\"\n  }\n }\n}<\/code><\/pre>\n\n\n\n<p>V odpov\u011bdi vid\u00edme \u201epokrok: 100\u201c. Nahr\u00e1v\u00e1n\u00ed je p\u0159ipraveno a download_url obsahuje adresu URL pro stahov\u00e1n\u00ed. Pokud se nahr\u00e1vka st\u00e1le p\u0159ipravuje, obsahuje download_url hodnotu \u201enull\u201c a progress vyjad\u0159uje stav zpracov\u00e1n\u00ed v procentech.<br>Nepou\u017eit\u00e9 ID nahr\u00e1vky vypr\u0161\u00ed za hodinu. Adresa URL pro sta\u017een\u00ed nahr\u00e1vky vypr\u0161\u00ed za 24 hodin. Pokud je nahr\u00e1vka sta\u017eena, adresa URL pro sta\u017een\u00ed vypr\u0161\u00ed po 6 hodin\u00e1ch.    <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"parovani-prvku-pomoci-externiho-id\">P\u00e1rov\u00e1n\u00ed prvk\u016f pomoc\u00ed extern\u00edho ID<a class=\"copy-link\" href=\"#parovani-prvku-pomoci-externiho-id\" data-id=\"parovani-prvku-pomoci-externiho-id\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<p>P\u0159i dotazov\u00e1n\u00ed typu NodeList lze u v\u0161ech polo\u017eek ve stromov\u00e9 struktu\u0159e zobrazit extern\u00ed ID, kter\u00e9 bylo zad\u00e1no v u\u017eivatelsk\u00e9m rozhran\u00ed. Extern\u00ed ID slou\u017e\u00ed k jednozna\u010dn\u00e9 identifikaci polo\u017eky pro integraci do slu\u017eeb t\u0159et\u00edch stran. Extern\u00ed ID lze vytvo\u0159it v sekci API.  <\/p>\n\n\n\n<p><strong>P\u0159\u00edklad<\/strong><\/p>\n\n\n\n<p>N\u00e1sleduj\u00edc\u00ed dotaz vr\u00e1t\u00ed seznam uzl\u016f v\u010detn\u011b odpov\u00eddaj\u00edc\u00edch extern\u00edch ID.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query{\n nodeList {\n  name\n  external_id\n }\n}<\/code><\/pre>\n\n\n\n<p><strong>Odpov\u011b\u010f<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n \"data\": {\n  \"nodeList\": [\n   {\n    \"name\": \"Folder\",\n    \"external_id\": \"001\"\n   },\n   {\n    \"name\": \"ACCC8EE8A9CA\",\n    \"external_id\": \"camera1\"\n   }\n  ]\n }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"pristup-ke-kamere-a-rozhrani-kamery-vapix\">P\u0159\u00edstup ke kame\u0159e a rozhran\u00ed kamery VAPIX<a class=\"copy-link\" href=\"#pristup-ke-kamere-a-rozhrani-kamery-vapix\" data-id=\"pristup-ke-kamere-a-rozhrani-kamery-vapix\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<p>Kamera p\u0159ipojen\u00e1 ke cloudu obdr\u017e\u00ed jedine\u010dnou adresu URL, kter\u00e1 umo\u017e\u0148uje vzd\u00e1len\u00fd p\u0159\u00edstup ke kame\u0159e. ULR se v\u017edy skl\u00e1d\u00e1 ze s\u00e9riov\u00e9ho \u010d\u00edsla kamery a dom\u00e9n prvn\u00edho a druh\u00e9ho \u0159\u00e1du device-connect.net. <br>https:\/\/SerialNumber.device-connect.net\/ <a href=\"https:\/\/SerialNumber.device-connect.net\/%0A\"><br><\/a> Takov\u00fd p\u0159\u00edstup je vhodn\u00fd zejm\u00e9na pro programov\u00e9 ovl\u00e1d\u00e1n\u00ed kamery prost\u0159ednictv\u00edm rozhran\u00ed VAPIX. VAPIX je aplika\u010dn\u00ed rozhran\u00ed, kter\u00e9 umo\u017e\u0148uje ovl\u00e1dat kameru a m\u011bnit jej\u00ed parametry.<br>Pro autorizaci p\u0159\u00edstupu ke kame\u0159e a jej\u00edmu rozhran\u00ed VAPIX API je t\u0159eba vygenerovat token API s opr\u00e1vn\u011bn\u00edm Configuration (DEVICE_ACCESS_TOKEN). P\u0159esn\u00fd postup generov\u00e1n\u00ed tokenu naleznete v tomto \u010dl\u00e1nku.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"priklad-pozadavku-na-rozhrani-api-kamery\">P\u0159\u00edklad po\u017eadavku na rozhran\u00ed API kamery<\/h4>\n\n\n\n<p>Na z\u00e1klad\u011b adresy URL a p\u0159\u00edstupov\u00e9ho k\u00f3du DEVICE_ACCESS_TOKEN m\u016f\u017eete zadat po\u017eadavek na rozhran\u00ed VAPIX kamery:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:\/\/serialnumber.device-connect.net\/axis-cgi\/param.cgi?action=update&amp;ImageSource.I0.Sensor.Brightness=89&amp;root.ImageSource.I0.Sensor.ColorLevel=91&amp;DEVICE_ACCESS_TOKEN=NvA7fxxxxxtYVQ<\/code><\/pre>\n\n\n\n<p>kde:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>serialnumber je s\u00e9riov\u00e9 \u010d\u00edslo kamery,<\/li>\n\n\n\n<li>\/axis-cgi\/param.cgi je standardn\u00ed adresa URL rozhran\u00ed VAPIX,<\/li>\n\n\n\n<li>?action=update&amp;ImageSource.I0.Sensor.Brightness=89&amp;root.ImageSource.I0.Sensor.ColorLevel=91 je po\u017eadavek VAPIX. V tomto p\u0159\u00edpad\u011b m\u011bn\u00edme jas a sytost obrazu, <\/li>\n\n\n\n<li>&amp;DEVICE_ACCESS_TOKEN=NvA7fxxxxxtYVQ je jednor\u00e1zov\u00fd p\u0159\u00edstupov\u00fd token uveden\u00fd jako posledn\u00ed parametr dotazu.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"priklad-volani-api-aplikace-camstreamer\">P\u0159\u00edklad vol\u00e1n\u00ed <a href=\"https:\/\/support.camstreamer.com\/hc\/en-us\/categories\/360001899777--API-Documentation\" data-type=\"link\" data-id=\"https:\/\/support.camstreamer.com\/hc\/en-us\/categories\/360001899777--API-Documentation\">API aplikace CamStreamer<\/a><\/h4>\n\n\n\n<p>Dotaz na seznam dostupn\u00fdch stream\u016f ve kamery:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:\/\/accc8ed8cbf0.device-connect.net\/local\/camstreamer\/stream\/list.cgi?DEVICE_ACCESS_TOKEN=D8PxS7HyQZepEwM4<\/code><\/pre>\n\n\n\n<p>Dotaz na spu\u0161t\u011bn\u00ed konkr\u00e9tn\u00edho streamu v kame\u0159e:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:\/\/accc8ed8cbf6.device-connect.net\/local\/camstreamer\/stream\/set.cgi?stream_id=36559&amp;enabled=1&amp;DEVICE_ACCESS_TOKEN=D8PxS7HyQZepEwM4<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"chybove-odpovedi-a-limity\">Chybov\u00e9 odpov\u011bdi a limity<a class=\"copy-link\" href=\"#chybove-odpovedi-a-limity\" data-id=\"chybove-odpovedi-a-limity\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"limit-api\">Limit API<\/h4>\n\n\n\n<p>Limit pro dotazy API pro jeden \u00fa\u010det:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>1 dotaz za sekundu,<\/li>\n\n\n\n<li>10 000 dotaz\u016f\/den.<\/li>\n<\/ul>\n\n\n\n<p>P\u0159i dotazov\u00e1n\u00ed na metriky (nap\u0159\u00edklad po\u010det n\u00e1v\u0161t\u011bvn\u00edk\u016f) je o\u010dek\u00e1van\u00e1 velikost dotazu n\u00e1sleduj\u00edc\u00ed:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Maxim\u00e1ln\u00ed rozsah 1 rok,<\/li>\n\n\n\n<li>5 metrik (nap\u0159\u00edklad v\u011btve, kamery nebo r\u016fzn\u00e9 metriky).<\/li>\n<\/ul>\n\n\n\n<p>U dotaz\u016f v\u011bt\u0161\u00edch ne\u017e v\u00fd\u0161e uveden\u00e1 velikost je t\u0159eba vyhodnotit maxim\u00e1ln\u00ed po\u010det dotaz\u016f za sekundu individu\u00e1ln\u011b.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"chybove-odpovedi\">Chybov\u00e9 odpov\u011bdi<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n \"errors\": [\n  {\n   \"message\": \"Invalid or empty access token.\",\n   \"category\": \"authError\"\n  }\n ]\n}<\/code><\/pre>\n\n\n\n<p>Chyb\u00ed p\u0159\u00edstupov\u00fd token: Zkontrolujte, zda byl autoriza\u010dn\u00ed token vlo\u017een do z\u00e1hlav\u00ed ve spr\u00e1vn\u00e9m form\u00e1tu.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n \"errors\": [\n  {\n   \"message\": \"Access token expired.\",\n   \"category\": \"expired\"\n  }\n ]\n}<\/code><\/pre>\n\n\n\n<p>Vypr\u0161ela platnost p\u0159\u00edstupov\u00e9ho tokenu: V \u010d\u00e1sti API v syst\u00e9mu se ujist\u011bte, \u017ee je token platn\u00fd. V p\u0159\u00edpad\u011b tokenu OAuth2 po\u017e\u00e1dejte o obnoven\u00ed tokenu. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n \"errors\":[\n  {\n   \"message\":\"Request to an unknown or unavailable platform.\",\n   \"category\":\"client\"\n  }\n ]\n}<\/code><\/pre>\n\n\n\n<p>Neplatn\u00fd p\u0159\u00edstupov\u00fd token: Zkontrolujte, zda byl autoriza\u010dn\u00ed token vlo\u017een do hlavi\u010dky ve spr\u00e1vn\u00e9m form\u00e1tu. Token je vlo\u017een do z\u00e1hlav\u00ed, ale nen\u00ed platn\u00fd. <\/p>\n\n\n\n<h2 class=\"wp-block-heading fa-regular fa-arrow-up-right-from-square\" id=\"nastaveni-externiho-id\">Nastaven\u00ed extern\u00edho ID<a class=\"copy-link\" href=\"#nastaveni-externiho-id\" data-id=\"nastaveni-externiho-id\" title=\"Copy link\"><\/a><\/h2>\n\n\n\n<p>Extern\u00ed ID slou\u017e\u00ed k jednozna\u010dn\u00e9 identifikaci prvku pro integraci do slu\u017eeb t\u0159et\u00edch stran. Extern\u00ed ID se pou\u017e\u00edv\u00e1 jako jedine\u010dn\u00fd identifik\u00e1tor ka\u017ed\u00e9ho prvku p\u0159i dotazov\u00e1n\u00ed prost\u0159ednictv\u00edm rozhran\u00ed API po jeho zad\u00e1n\u00ed do syst\u00e9mu. Extern\u00ed ID se tak\u00e9 pou\u017e\u00edv\u00e1 k nastaven\u00ed zkratek pro ovl\u00e1d\u00e1n\u00ed monitorovac\u00ed stanice.  <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"pridani-externiho-id\">P\u0159id\u00e1n\u00ed extern\u00edho ID<a class=\"copy-link\" href=\"#pridani-externiho-id\" data-id=\"pridani-externiho-id\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>V prav\u00e9m horn\u00edm rohu stiskn\u011bte tla\u010d\u00edtko <i class=\"far fa-circle-user\"><\/i> se sv\u00fdm u\u017eivatelsk\u00fdm jm\u00e9nem.<\/li>\n\n\n\n<li>Otev\u0159ete kartu <i class=\"far fa-code\"><\/i> API.<\/li>\n\n\n\n<li>Vyberte rozhran\u00ed aplikace <i class=\"far fa-arrow-up-right-from-square\"><\/i> External ID.<\/li>\n\n\n\n<li>Stiskn\u011bte tla\u010d\u00edtko <i class=\"far fa-plus\"><\/i> <strong>P\u0159idat identifik\u00e1tor<\/strong>.<\/li>\n\n\n\n<li>Kliknut\u00edm do textov\u00e9ho pole Polo\u017eka otev\u0159ete okno stromu polo\u017eek.\n<ul class=\"wp-block-list\">\n<li>Vyberte slo\u017eku nebo polo\u017eku, kter\u00e9 chcete p\u0159i\u0159adit extern\u00ed ID.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Vypl\u0148te extern\u00ed identifik\u00e1tor.<\/li>\n\n\n\n<li>Potvr\u010fte tla\u010d\u00edtkem <strong>Ulo\u017eit <\/strong>.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"uprava-externiho-id\">\u00daprava extern\u00edho ID<a class=\"copy-link\" href=\"#uprava-externiho-id\" data-id=\"uprava-externiho-id\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Stiskn\u011bte tla\u010d\u00edtko <i class=\"far fa-pen-to-square\"><\/i> vedle p\u0159\u00edslu\u0161n\u00e9ho extern\u00edho ID.<\/li>\n\n\n\n<li>Upravte pot\u0159ebn\u00e9 parametry.<\/li>\n\n\n\n<li>Potvr\u010fte tla\u010d\u00edtkem <strong>Ulo\u017eit <\/strong><\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"odstraneni-externiho-id\">Odstran\u011bn\u00ed extern\u00edho ID<a class=\"copy-link\" href=\"#odstraneni-externiho-id\" data-id=\"odstraneni-externiho-id\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Stiskn\u011bte tla\u010d\u00edtko <i class=\"far fa-x\"><\/i> vedle extern\u00edho ID, kter\u00e9 chcete odstranit.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dotazovani-na-externi-id-v-api\">Dotazov\u00e1n\u00ed na extern\u00ed ID v API<a class=\"copy-link\" href=\"#dotazovani-na-externi-id-v-api\" data-id=\"dotazovani-na-externi-id-v-api\" title=\"Copy link\"><\/a><\/h3>\n\n\n\n<p>Informace a p\u0159\u00edklady dotazov\u00e1n\u00ed naleznete v \u010dl\u00e1nku B\u011b\u017en\u00e9 sc\u00e9n\u00e1\u0159e integrace rozhran\u00ed API.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>UPOZORN\u011aN\u00cd P\u0159\u00edklady mohou obsahovat jinou adresu URL. Je t\u0159eba ji zm\u011bnit podle URL va\u0161eho poskytovatele (nap\u0159. cloud.camstreamer.com). Vytv\u00e1\u0159en\u00ed a pou\u017e\u00edv\u00e1n\u00ed token\u016f API Autorizace Ve\u0161ker\u00e1 komunikace se serverem API mus\u00ed b\u00fdt&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"_searchwp_excluded":"","wds_primary_category":43,"footnotes":""},"categories":[47,43,44],"tags":[],"class_list":["post-1893","post","type-post","status-publish","format-standard","hentry","category-aplikace-acap","category-cloud-cs","category-nahravky"],"acf":[],"_links":{"self":[{"href":"https:\/\/znackarna.xyz\/cs\/wp-json\/wp\/v2\/posts\/1893","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/znackarna.xyz\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/znackarna.xyz\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/znackarna.xyz\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/znackarna.xyz\/cs\/wp-json\/wp\/v2\/comments?post=1893"}],"version-history":[{"count":4,"href":"https:\/\/znackarna.xyz\/cs\/wp-json\/wp\/v2\/posts\/1893\/revisions"}],"predecessor-version":[{"id":2974,"href":"https:\/\/znackarna.xyz\/cs\/wp-json\/wp\/v2\/posts\/1893\/revisions\/2974"}],"wp:attachment":[{"href":"https:\/\/znackarna.xyz\/cs\/wp-json\/wp\/v2\/media?parent=1893"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/znackarna.xyz\/cs\/wp-json\/wp\/v2\/categories?post=1893"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/znackarna.xyz\/cs\/wp-json\/wp\/v2\/tags?post=1893"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}