Import kontaktů ze souboru XLSX

POST
/api/v2/import/contacts

Načte tabulku XLSX, která už je na serveru, a zpracuje z ní kontakty firmy. Pro každý řádek (hlavičku na prvním řádku přeskočí) hledá nesmazaný kontakt firmy se shodným e-mailem. Když ho najde, upraví ho podle řádku, jinak založí nový.

Odkud se bere soubor

Operace nepřijímá soubor v těle požadavku. Pracuje se souborem, který už je na serveru, a najde ho podle dvojice file a table v rámci vaší firmy:

  • table=imports: soubor dříve nahraný k importu, například v aplikaci na obrazovce Import / Export.
  • table=exports: soubor vytvořený exportem kontaktů.

Postup v aplikaci popisuje návod Import / Export.

Co se v souboru čte

Čte se první (aktivní) list, sloupce A až V ve stejném pořadí, v jakém je vytváří export kontaktů (sloupec W s ID se ignoruje). Řádek se zpracuje, jen když je vyplněný sloupec A (Typ), B (Jmeno) a H (E-mail) a e-mail obsahuje @. Ostatní sloupce se uloží jako text, prázdná buňka je prázdný řetězec.

Sloupec Hlavička Povinnost
A Typ povinný
B Jmeno povinný
C až G Prijmeni, Mesto / Obec, Ulice, PSC, Telefon volitelné
H E-mail povinný, musí obsahovat @, slouží k nalezení existujícího kontaktu
I až V ICO, DIC, Poznamka, Datum narozeni, Kod, Druhy telefon, Web, Kontaktni osoba, Funkce kontaktni osoby, Nazev banky, Kod banky, Cislo uctu, IBAN, SWIFT volitelné

Odpověď

Úspěšné zpracování je HTTP 200 s Content-Type: text/html; charset=UTF-8. Tělo není JSON, ale text, kde každý řádek končí <br />:

  • INSERTED: {jméno} - kontakt byl založen,
  • UPDATED: {jméno} - existující kontakt byl upraven,
  • ERROR: INVALID ROW ({číslo řádku}) - ( ... ) - řádek se přeskočil, uvádí chybějící sloupce,
  • No rows processed - v souboru nebyl žádný datový řádek.

Chybný řádek zpracování nezastaví a odpověď má i tak HTTP 200, proto čtěte tělo. Řádky se ukládají postupně, dříve zpracované řádky zůstanou uložené i při chybě v pozdějším řádku. Selhání před zpracováním (neplatné parametry, soubor nenalezen nebo nečitelný) vrací HTTP 400 nebo 404 s Content-Type: text/plain; charset=UTF-8 a textem začínajícím ERROR:. Chyby přihlášení vrací JSON se status a message. Viz Chybové stavy.

Autentizace a oprávnění

Vyžaduje API token: Bearer v hlavičce nebo URL token.

Parametry

Query parametry

NázevTypPovinnýPopisPříklad
fileinteger anoID souboru, který je už na serveru, ze skupiny určené parametrem `table`. Soubor musí patřit vaší firmě. 12
tableenum anoOdkud je soubor. `imports` = soubor nahraný k importu, `exports` = soubor vytvořený exportem. Jiná hodnota je chyba. imports

Příklad požadavku

curl

curl -X POST 'https://www.elpokladny.cz/api/v2/import/contacts?file=12&table=imports' \
  -H 'Authorization: Bearer elp_live_example.example_secret'

PHP

<?php
$ch = curl_init('https://www.elpokladny.cz/api/v2/import/contacts?file=12&table=imports');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => array (
  0 => 'Authorization: Bearer elp_live_example.example_secret',
),
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;

javascript

const response = await fetch("https://www.elpokladny.cz/api/v2/import/contacts?file=12&table=imports", {
    "method": "POST",
    "headers": {
        "Authorization": "Bearer elp_live_example.example_secret"
    }
});
const data = await response.json();

Ukázkové odpovědi

Zpráva o zpracování řádků (HTTP 200)

text/html; charset=UTF-8

INSERTED: Jana Ukázková<br />UPDATED: Ukázkový odběratel s.r.o.<br />ERROR: INVALID ROW (4) - ( B - jmeno,  )<br />

Soubor nenalezen (HTTP 404)

text/plain; charset=UTF-8

ERROR: file not found

Neplatné parametry (HTTP 400)

text/plain; charset=UTF-8

ERROR: invalid parameters

Chybí platné přihlášení (HTTP 401)

application/json

{
  "status": "error",
  "message": "Unauthorized"
}

Možné chyby

Chybové stavy

HTTPKdyPodoba
400Chybí `file` nebo `table`, `file` není kladné číslo, nebo `table` není `imports` ani `exports`. Tělo je `ERROR: invalid parameters`. text
400Soubor nejde přečíst jako tabulka. Tělo je `ERROR: cannot read spreadsheet`. text
404Soubor s tímto ID ve vaší firmě neexistuje (`ERROR: file not found`), nebo už není na serveru (`ERROR: file does not exist on disk`). text
401Chybí API token. Odpověď má hlavičku WWW-Authenticate: Bearer. status-message
401Neplatný, odvolaný nebo expirovaný API token (Bearer, api_token). Odpověď nemá hlavičku WWW-Authenticate. status-message
403API token se použil z IP adresy, která není u přístupu povolená. status-message

Související návody