Import kontaktů ze souboru XLSX
/api/v2/import/contactsNač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ázev | Typ | Povinný | Popis | Příklad |
|---|---|---|---|---|
file | integer | ano | ID souboru, který je už na serveru, ze skupiny určené parametrem `table`. Soubor musí patřit vaší firmě. | 12 |
table | enum | ano | Odkud 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
| HTTP | Kdy | Podoba |
|---|---|---|
| 400 | Chybí `file` nebo `table`, `file` není kladné číslo, nebo `table` není `imports` ani `exports`. Tělo je `ERROR: invalid parameters`. | text |
| 400 | Soubor nejde přečíst jako tabulka. Tělo je `ERROR: cannot read spreadsheet`. | text |
| 404 | Soubor 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 |
| 401 | Chybí API token. Odpověď má hlavičku WWW-Authenticate: Bearer. | status-message |
| 401 | Neplatný, odvolaný nebo expirovaný API token (Bearer, api_token). Odpověď nemá hlavičku WWW-Authenticate. | status-message |
| 403 | API token se použil z IP adresy, která není u přístupu povolená. | status-message |