API

Použitie

Web procedúry API sa pripájajú na databázu systému BSW3.
Na prístup k údajom potrebujete systémový kód firmy (SysKod) a prihlasovacie údaje k tejto firme (Meno a Heslo užívateľa).
Prístup Vám môže prideliť správca programu BSW3 (webadmin).

Otestovať pripojenie môžete napríklad cez aplikáciu POSTMAN.
Overovanie requestu je typu "Basic Auth".

Príklad volania PHP HttpRequest-u s prihlasovacími udajmi v hlavičke (vygeneroval POSTMAN).

<?php

$request = new HttpRequest();
$request->setUrl('https://data.bns.sk/data/sortimenty');
$request->setMethod(HTTP_METH_GET);

$request->setHeaders(array(
    'Postman-Token' => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
    'Cache-Control' => 'no-cache',
    'Authorization' => 'Basic xxxxxxxxxxxxxxxxxxxx',
    'SysKod' => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
));

try {
    $response = $request->send();

    echo $response->getBody();
} catch (HttpException $ex) {
    echo $ex;
}

Číselníky

Skupiny - "https://data.bns.sk/Data/Skupiny"

Sortimenty - "https://data.bns.sk/Data/Sortimenty"

Značky - "https://data.bns.sk/Data/Znacky"

Série - "https://data.bns.sk/Data/Serie"

Použitia - "https://data.bns.sk/Data/Pouzitia"

Atributy - "https://data.bns.sk/Data/Atributy"

Merné jednotky - "https://data.bns.sk/Data/MerneJednotky"

Skupiny vlastností - "https://data.bns.sk/Data/VlastnostiSkupiny"

Typy vlastností - "https://data.bns.sk/Data/VlastnostiTypy"

Hodnoty pre pole Typ:
  • Z - Výber zo zoznamu
  • T - Text
  • D - Číslo
  • I - Celé číslo
  • H - Hmotnosť (s obalom)
  • N - Hmotnosť (bez obalu)
  • O - Objem (s obalom)
  • L - Objem (bez obalu)
  • R - Dĺžka (obalu)
  • F - Dĺžka (bez obalu)
  • S - Šírka (obalu)
  • J - Šírka (bez obalu)
  • V - Výška (obalu)
  • Y - Výška (bez obalu)
  • P - Množstvo MJ na palete
  • K - Množstvo MJ v kartóne

Typy príslušenstva - "https://data.bns.sk/Data/PrislusenstvoTypy"

Hodnoty pre pole Typ:
  • C - Voliteľné príslušenstvo
  • E - Povinné príslušenstvo

Produkty

Produkty - "https://data.bns.sk/Data/Produkty"

Keď je hodnota v poli "ProduktId" rovná nule tak sa jedná o hlavný produkt. Ak sa jedná o podprodukt tak v poli "ProduktId" je vyplnené Id hlavného produktu.

Vlastnosti produktov - "https://data.bns.sk/Data/VlastnostiProdukty"

Príslušenstvo produktov - "https://data.bns.sk/Data/PrislusenstvoProdukty"

V poli "ProduktId" je id produktu a v poli "ProduktId2" je id priradeného príslušenstva (produktu).

Obrázky

Produkty - "https://data.bns.sk/Data/ObrazkyProdukty"

Značky - "https://data.bns.sk/Data/ObrazkyZnacky"

Dokumenty (pdf a zip súbory)

Produkty - "https://data.bns.sk/Data/DokumentyProdukty"

Značky - "https://data.bns.sk/Data/DokumentyZnacky"

Overenie registrácie užívateľov

Overenie užívateľa - "https://data.bns.sk/Data/RegistraciaUzivatela?uext=MenoExternehoUzivatela&pext=HesloExternehoUzivatela"

Overí registráciu externého užívateľa podľa prihlasovacieho mena a hesla a vráti informácie o registrácii (Meno, Priezvisko, Adresa, Firma, ...).
Pozor ak budete požadovať informácie o registrácií s nesprávnym heslom viac ako 5x, tak sa konto užívateľa zablokuje a správcom daného webu bude odoslaná informácia o tomto zablokovaní.
Pole "Uzivatel/Spravca" určuje či je užívateľ správcom konta (môže meniť údaje firmy a pridávať, meniť užívateľov v rámci svojho konta). Ak nie je správca, tak môže meniť iba svoje údaje (meno, telefón, heslo, ... ).
Pole "Uzivatel/VyberFirmy" určuje či daný užívateľ sa môže prihlasovať aj do iných firiem ako do svojej (napr. obchodník, alebo správca celého webu). Čiže pri svojich prihlasovacích údajoch môže mať priradenú inú firmu ako mal pri predchádzajúcich výsledkoch tejto funkcie.
Pole "Uzivatel/TicketId" obsahuje Id identifikátor klúča
Pole "Uzivatel/Ticket" obsahuje klúč ktorým sa dá prihlásit do aplikacie kde má registrovaný užívateľ prístup. Prihlásiť sa dá použitím klúča v linke ako napr. https://data.bns.sk/Produkty?loginticket=40d945413b074d169146d31f1ddec3720n6ggdai892a6m66ps7nfkic4ledtkskpnk1e90jn56f2v7s7iohan1qe4m496zyrsvsce2p2xajncjinvgk5kkcw4xjx5kqghykaoq2q9pnmscbudqn0o.
Pole "Uzivatel/TicketPlatnyDo" definuje ako dlho je daný kľúč použiteľný.
Ak je pole "Firma/Kod" vyplnené, tak je to konto ktoré ma odsúhlasenú registráciu správcom webu. Takéto odsúhlasené konto ma prístup k oblastiam, ktoré sú pre neodsúhlasené kontá zablokované.

Aktivácia kľúča - Ticket

"https://data.bns.sk/Data/AktivujTicket?id=3"

"id" v linke obsahuje identifikátor kľúča ktorý chcete aktivovať.
Aktivácia predĺži životnosť klúča. Čas životnosti kľúča je nastavený v config súbore. Návratom funkcie je dátum a čas do kedy je kĺuč aktívny.

Odosielanie dokladu objednavky

"https://data.bns.sk/Data/BSW3PridajObjdenavku"

V tele odosialaného dotazu je nutné uviesť JSON data popisané nižšie.
Návratom je jedinečný identifikátor objednaávky a text chyby
Ak všetko prebehne v poriadku, tak návratové Id dokladu bude vyplnené ak nie tak bude vyplnená chyba. Id dokladu sa následne použije pri pridávaní položiek.

string(1) OsobaFirma - "F":firma, "O":osoba
string(20) KodRegistracie - Kód registácie v databáze webstránky eshop.
string(15) ICO - IČO firmy ak je fima
string(15) DIC - DIČ firmy ak je fima
string(22) ICDPH - IČDPH firmy ak je fima
string(150) Nazov - IČO firmy ak je fima

- dalšie polia su spoločné aj pre firmu aj pre osobu
string(150) Ulica
string(20) Cislo
string(60) Mesto
string(10) PSC
string(3) Krajina
string(100) Email
string(100) Telefon
string(50) TitulPred
string(100) Meno
string(100) Priezvisko
string(50) TitulZa
string(10) Linka
string(60) Web
string(4000) Popis - do popisu sa uvádza miesto dodania, sposob doručenia, platby, alebo poznámky objednavateľa, ...

Príklad volania vytvorenia hlavičky dokladu objednávky s nasledujúcimi hodnotami.

{
"OsobaFirma" : "F",
"KodRegistracie" : "",
"ICO" : "123456",
"DIC" : "123456",
"ICDPH" : "SK123456",
"Nazov" : "Pokusna Firma API",
"Ulica" : "Nadvorna",
"Cislo" : "1",
"Mesto" : "Zvolen",
"PSC" : "96001",
"Krajina" : "SK",
"Email" : "nejaky.pokus@bns.sk",
"Telefon" : "0912 345 678",
"TitulPred" : "",
"Meno" : "Jano",
"Priezvisko" : "Kováč",
"TitulZa" : "",
"Web" : "",
"Popis" : "pokus",
"VSymbol" : "A123456789",
"Linka":"MO"
}

Návratová hodnota môže vyzerať nasledovne

{
"Id": "00147782",
"Chyba": ""
}

<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://data.bns.sk/Data/BSW3PridajObjdenavku');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
    'follow_redirects' => TRUE
));
$request->setHeader(array(
    'SysKod' => '27b...',
    'Authorization' => 'Basic Um...',
    'Content-Type' => 'application/json'
));
$request->setBody('{
    "OsobaFirma" : "F",
    "KodRegistracie" : "",
    "ICO" : "123456",
    "DIC" : "123456",
    "ICDPH" : "SK123456",
    "Nazov" : "Pokusna Firma API",
    "Ulica" : "Nadvorna",
    "Cislo" : "16",
    "Mesto" : "Zvolen",
    "PSC" : "96001",
    "Krajina" : "SK",
    "Email" : "nejaky.pokus@bns.sk",
    "Telefon" : "0955 555 555",
    "TitulPred" : "",
    "Meno" : "Jano",
    "Priezvisko" : "Kováč",
    "TitulZa" : "",
    "Web" : "",
    "Popis" : "pokus",
    "VSymbol" : "A123456789",
    "Linka":"MO"
}
');
try {
    $response = $request->send();
    if ($response->getStatus() == 200) {
        echo $response->getBody();
    }
    else {
        echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
        $response->getReasonPhrase();
    }
}
catch(HTTP_Request2_Exception $e) {
    echo 'Error: ' . $e->getMessage();
}

Odosielanie polozky objednavky

"https://data.bns.sk/Data/BSW3PridajPolozkuObjdenavky"

V tele odosialaného dotazu je nutné uviesť JSON data popísané nižšie.
Návratom je jedinečný identifikátor položky objednaávky a text chyby
Ak všetko prebehne v poriadku, tak návratové Id položky bude vyplnené ak nie tak bude vyplnená chyba.

string(8) DokladId - Identifikator dokladu ktorý vracia procedúra na vytvorenie dokladu
int ProduktId - Id produktu
decimal Mnozstvo
decimal CenaZaMjBezDPH
decimal CenaCelkomBezDPH
decimal PercentoZlava
decimal CenaZlava
decimal CenaPoZlave
decimal PercentoProvizia
decimal CenaProvizia
decimal CenaPoProvizii
int PercentoDPH
decimal CenaDPH
decimal CenaZaMjsDPH
decimal CenaCelkomsDPH
decimal Poradie

Príklad volania vytvorenia položky dokladu objednávky s nasledujúcimi hodnotami.

{
"DokladId" : "00147782",
"ProduktId" : 59099,
"Mnozstvo" : 10,
"CenaCelkomsDPH" : 109.20,
"CenaCelkomBezDPH" : 91,
"PercentoDPH" : 20,
"CenaDPH" : 18.20,
"CenaPoProvizii" : 91,
"CenaPoZlave" : 91,
"CenaProvizia" : 0,
"CenaZlava" : 0,
"PercentoProvizia" : 0,
"PercentoZlava" : 0,
"CenaZaMjBezDPH" : 9.1,
"CenaZaMjsDPH" : 10.92,
"Poradie" : 1
}

Návratová hodnota môže vyzerať nasledovne

{
"Id": "00236285",
"Chyba": ""
}

<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://data.bns.sk/Data/BSW3PridajPolozkuObjdenavky');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
    'follow_redirects' => TRUE
));
$request->setHeader(array(
    'SysKod' => '27b...',
    'Authorization' => 'Basic Um...',
    'Content-Type' => 'application/json',
));
$request->setBody('{
    "DokladId" : "00147782",
    "ProduktId" : 59099,
    "Mnozstvo" : 10,
    "CenaCelkomsDPH" : 109.20,
    "CenaCelkomBezDPH" : 91,
    "PercentoDPH" : 20,
    "CenaDPH" : 18.20,
    "CenaPoProvizii" : 91,
    "CenaPoZlave" : 91,
    "CenaProvizia" : 0,
    "CenaZlava" : 0,
    "PercentoProvizia" : 0,
    "PercentoZlava" : 0,
    "CenaZaMjBezDPH" : 9.1,
    "CenaZaMjsDPH" : 10.92,
    "Poradie" : 1
    }
    ');
try {
    $response = $request->send();
    if ($response->getStatus() == 200) {
        echo $response->getBody();
    }
    else {
        echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
        $response->getReasonPhrase();
    }
}
catch(HTTP_Request2_Exception $e) {
    echo 'Error: ' . $e->getMessage();
}