x

Obecné informace

 

Formát dat

json, html

Protokol

https

Typ

REST

Kódování

UTF-8

Autentizace

Při pozitivní autorizaci je přístup k API omezen právy a tarifem konkrétního zákazníka. Systém se při přístupu přes API chová, jako by byl přihlášen administrátor daného zákaznického účtu.

Základní URL

https://api.onquanda.com/api/

Autorizace

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

API klíč je možné získat v aplikaci v Nastavení / API klíče, pomocí zeleného tlačítka "Přidat API klíč".

Omezení přístupu

V rámci zabezpečení systému a jeho běžného fungovaní je implementováno omezení přístupu na jeden API klíč. Toto omezení zamezí paralelnímu přístupu a příliš častému přístupu. Požadavky na API budou muset být serializovány a z důvodu uvolnění prostředků po zpracování požadavku bude přidána i jistá časová prodleva. V opačném případě bude vrácen chybový návratový kód:

429 Too many requests

a požadavek musí být poté zopakován.

Prodleva

Prodleva mezi dokončením předchozího požadavku a počátkem následujícího je nastavena na 30ms.

Některá volání mohou být omezena množstvím vstupních dat.

Struktura API

Jednotlivá API volání jsou strukturována do modulů.

https://api.onquanda.com/api/{nazev_modulu}/…

Použité HTTP metody

Vychází z RFC 2616 odst. 9.1.2 (https://www.ietf.org/rfc/rfc2616.txt). Vazba na CRUD:

GET
(čtení)
POST
(vytvoření)
PUT
(aktualizace)
DELETE
(mazání)
OPTION
(nápověda k volání)
PATCH
(partial update)

URL adresy

Získání seznamu objektů (GET) a vytvoření nového objektu (POST) ve tvaru:

https://api.onquanda.com/api/{nazev_modulu}/{model}s/

Získání detailu objektu (GET) nebo jeho update (PUT):

https://api.onquanda.com/api/{nazev_modulu}/{model}s/{id}/

Další volání mají tvar

Pokud se týkají více než jednoho modelu:

https://api.onquanda.com/api/{nazev_modulu}/{volani}/

Více objektů jednoho konkrétního modelu:

https://api.onquanda.com/api/{nazev_modulu}/{model}s/{volani}/

Jednoho konkrétního objektu:

https://api.onquanda.com/api/{nazev_modulu}/{model}s/{id}/{volani}/

Druhy volání API

Základní nápověda

Všechny druhy volání API by měly podporovat metodu OPTION, která vrací základní nápovědu k volání.

OPTION
https://api.onquanda.com/api/newsletter/newsletters/77345/recipients/

Odpověď

200 OK
Content-Type: application/json
{"name": "Recipient List", 
"description": "",
"renders": [
"application/json",
"text/html"
],
"parses": [
"application/json",
"application/x-www-form-urlencoded",
"multipart/form-data"
],
"actions": {
"GET": {
"id": {
"type": "integer",
"required": false,
"read_only": true,
"label": "ID"
},
"email": {
"type": "email",
"required": false,
"read_only": false,
"label": "email",
"max_length": 255
},
"tracked": {
"type": "boolean",
"required": false,
"read_only": true
},
"clicked": {
"type": "boolean",
"required": false,
"read_only": true
},
"unsubscribed": {
"type": "boolean",
"required": false,
"read_only": true
},
"status": {
"type": "string",
"required": false,
"read_only": true
},
"data": {
"type": "json",
"required": false,
"read_only": true
}
}
}
}

 

Jedná se o automaticky generovanou nápovědu a nemusí tak zcela přesně odpovídat specifickým vlastnostem a neobsahuje například informace o integritních nebo jiných omezení kladených systémem.

Seznam objektů

Všechny seznamy jsou k dispozici metodou GET a jsou stránkované (ve výstupu je celkový počet objektů a URL následující, resp. předchozí stránky). Každý objekt je reprezentován několika svými základními atributy. V definici jednotlivých volání jsou tyto základní atributy definovány. Jedná se o minimální výčet, který se může v průběhu vývoje rozšířit.

Příklad

GET
https://api.onquanda.com/api/contact/contacts/


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"count": 124439,
"next": "https://api.onquanda.com/api/contact/contacts/?page=2",
"previous": null,
"results": [
{
"id": 1049682,
"email": "info+1@quanda.com"
},
{
"id": 1049683,
"email": "info+2@quanda.com"
}
]
}

Ping

Umožňuje prověřit funkčnost spojení pro GET a POST.

GET
https://api.onquanda.com/api/helper/ping/
POST
https://api.onquanda.com/api/helper/ping/

Číselníky

Kontakty

Status zasílání e-mailů

1 = Zasílat e-maily
2 = Nemůžeme zasílat (odhlásil se)
3 = Nemůžeme zasílat (vypršel souhlas)
4 = Nemůžeme zasílat (čekáme na souhlas)

Seznam právních titulů

Oprávněný zájem správce
Plnění právní povinnosti
Plnění smlouvy nebo jednání o jejím uzavření
Souhlas se zpracováním osobních údajů
Veřejný zájem
Životně důležitý zájem

Seznam účelů zpracování osobních údajů

1 = Nenastaven (výchozí)
2 = Zasílání obchodních a reklamních sdělení
3 = Direct marketing
4 = Zlepšování produktů a služeb
5 = Zasílání informací o novinkách
6 = Reakce na projevený zájem
7 = Poskytnutí odborného obsahu
8 = Realizace zákaznické soutěže
9 = Realizace vzdělávacích akcí
10 = Realizace marketingového průzkumu
11 = Realizace průzkumu trhu
12 = Plnění kupní smlouvy nebo jednání o jejím uzavření
13 = Plnění smlouvy o dílo nebo jednání o jejím uzavření
14 = Plnění pracovněprávních smluv a povinností
15 = Ochrana majetku a zdraví
16 = Uplatnění právních kroků
17 = Plnění zákona o účetnictví
18 = Archivace ve veřejném zájmu
19 = Pro statistické účely

Dotazníky

Typy otázek

1 = Krátký text
2 = Delší text
3 = Krátký text - 1 nebo více řádků
4 = Číslo
5 = Číslo - 1 nebo více řádků
6 = Datum
7 = Datum anebo čas - 1 nebo více řádků
8 = Rozbalovací menu
9 = Seznam přepínačů (radiobutton)
10 = Seznam zaškrtávacích polí (checkbox)
11 = Stupňovitá škála
12 = Tabulka přepínačů (radiobuttonů)
13 = Tabulka zaškrtávacích polí (checkboxů)
14 = E-mail
15 = Vložit soubor
16 = NPS (net promoter score)

E-mailové kampaně

Typy e-mailových kampaní

10 = Jednoduchá e-mailová kampaň
20 = Logická e-mailová kampaň
30 = E-mailový seriál
40 = Narozeninová e-mailová kampaň
50 = E-mailová kampaň pro výročí a svátky
60 = E-mailová kampaň s A/B testováním
70 = Transakční e-mail

Stavy e-mailových kampaní

10 = Pozastavená
20 = Připravena k odeslání / Odeslaná / Aktivovaná
30 = Ve výstavbě
40 = Ukončená

Povolené typy příloh transakčních e-mailů

doc, docx, xls, xlsx, ppt, pptx, jpeg, jpg, gif, png, bmp a pdf

Maximální velikost přílohy

20MB


API endpoints

Kontakty

Seznam kontaktů

GET
https://api.onquanda.com/api/contact/contacts/


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"count": 330,
"next": "https://api.onquanda.com/api/contact/contacts/?page=2",
"previous": null,
"results": [
{
"id": 9272515,
"email": "prvni@prvni.cz"
},
{
"id": 6464018,
"email": "druhy@gmail.com"
},
{
"id": 8127767,
"email": "treti@seznam.cz"
}
]
}

Najít ID kontaktu pomocí e-mailu

GET
https://api.onquanda.com/api/contact/contacts/?email=petr.novak@quanda.cz


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 9649947,
"email": "petr.novak@quanda.cz"
}
]
}

Nový kontakt

PUT
https://api.onquanda.com/api/contact/importer/single/


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"overwrite": true,
"contact_tags_overwrite": true,
"overwrite_companies": true,
"company_tags_overwrite": true,
"data": {
"Contact": {
"email": "petr.novak@quanda.cz",
"source": "Veletrh",
"title_before": "Ing.",
"first_name": "Petr",
"last_name": "Novák",
"sex": "Muž",
"birthdate": "06.05.1981",
"occupation": "Ekonom",
"phone_home": "+420602123456",
"phone_work": "+420987654321",
"mobile": "+42603123456",
"address_work_street": "Jarní 58",
"address_work_city": "Praha 9",
"address_work_zipcode": "19000",
"address_work_country": "CZ",
"main_company": "ABC a.s.",
"note": "Zasílat e-maily maximálně 2x týdně",
"custom_field_1": "ForArch2019",
"erp_ident_num": "A124578",
"salutation_last_name": "Vážený pane Nováku",
"salutation_first_name": "Dobrý den, Petře",
"salutation_last_name_vocative": "Nováku",
"salutation_first_name_vocative": "Petře",
"tags": "VIP,Praha,OP356"
},
"ContactPurposeOfProcessing": {
"purpose_of_processing": 1,
"status_valid_to": "23.12.2020 14:30:00",
"status": 1,
"contactpurposeofprocessing_status_ignore": false,
"legal_title_legitimate_interest_of_administrator": true
},
"Company": {
"name": "ABC a.s.",
"tags": "Dodavatel,Praha"
}
}
}

 

Schema
{
"name": "Contact List",
"description": "",
"renders": [
"application/json",
"text/html"
],
"parses": [
"application/json",
"application/x-www-form-urlencoded",
"multipart/form-data"
],
"actions": {
"PUT": {
"id": {
"type": "integer",
"required": false,
"read_only": true,
"label": "ID"
},
"created": {
"type": "datetime",
"required": false,
"read_only": true,
"label": "Vytvořeno",
"help_text": "admin-vytvoreno_help"
},
"modified": {
"type": "datetime",
"required": false,
"read_only": true,
"label": "Změněno",
"help_text": "admin-zmeneno_help"
},
"email": {
"type": "email",
"required": true,
"read_only": false,
"label": "E-mail (hlavní e-mail)",
"help_text": "admin-email_help",
"max_length": 150
},
"title_before": {
"type": "string",
"required": false,
"read_only": false,
"label": "Titul",
"help_text": "admin-titul_help",
"max_length": 255
},
"first_name": {
"type": "string",
"required": false,
"read_only": false,
"label": "Jméno",
"help_text": "admin-jmeno_help",
"max_length": 255
},
"second_name": {
"type": "string",
"required": false,
"read_only": false,
"label": "Prostřední jméno",
"help_text": "admin-prostredni_jmeno_help",
"max_length": 255
},
"last_name": {
"type": "string",
"required": false,
"read_only": false,
"label": "Příjmení",
"help_text": "admin-prijmeni_help",
"max_length": 255
},
"title_after": {
"type": "string",
"required": false,
"read_only": false,
"label": "Titul za",
"help_text": "admin-titul_za_help",
"max_length": 255
},
"salutation": {
"type": "string",
"required": false,
"read_only": false,
"label": "Oslovení",
"help_text": "admin-osloveni_help",
"max_length": 255
},
"salutation_last_name": {
"type": "string",
"required": false,
"read_only": false,
"label": "Kompletní oslovení s příjmením",
"help_text": "admin-osloveni_komplet_prijmeni_help",
"max_length": 255
},
"salutation_first_name": {
"type": "string",
"required": false,
"read_only": false,
"label": "Kompletní oslovení se jménem",
"help_text": "admin-osloveni_komplet_krestni_help",
"max_length": 255
},
"salutation_last_name_vocative": {
"type": "string",
"required": false,
"read_only": false,
"label": "Příjmení v 5 pádu",
"help_text": "admin-osloveni_prijmeni_5_pad_help",
"max_length": 255
},
"salutation_first_name_vocative": {
"type": "string",
"required": false,
"read_only": false,
"label": "Jméno v 5 pádu",
"help_text": "admin-osloveni_krestni_5_pad_help",
"max_length": 255
},
"email_2": {
"type": "email",
"required": false,
"read_only": false,
"label": "E-mail 2",
"help_text": "admin-email_2_help",
"max_length": 150
},
"email_3": {
"type": "email",
"required": false,
"read_only": false,
"label": "E-mail 3",
"help_text": "admin-email_3_help",
"max_length": 150
},
"sex": {
"type": "choice",
"required": false,
"read_only": false,
"label": "Pohlaví",
"help_text": "admin-pohlavi_help",
"choices": [
{
"value": "male",
"display_name": "Muž"
},
{
"value": "female",
"display_name": "Žena"
}
]
},
"source": {
"type": "string",
"required": false,
"read_only": false,
"label": "Zdroj",
"help_text": "admin-zdroj_help",
"max_length": 255
},
"recommended_by": {
"type": "string",
"required": false,
"read_only": false,
"label": "Doporučeno kým",
"help_text": "admin-doporuceno_help",
"max_length": 255
},
"birthdate": {
"type": "date",
"required": false,
"read_only": false,
"label": "Datum narození",
"help_text": "admin-datum_narozeni_help"
},
"anniversary": {
"type": "date",
"required": false,
"read_only": false,
"label": "Datum svátku / výročí",
"help_text": "Datum svátku nebo výročí uvádějte ve tvaru 1.1.2021 nebo 01.01.2021"
},
"occupation": {
"type": "string",
"required": false,
"read_only": false,
"label": "Funkce",
"help_text": "admin-funkce_help",
"max_length": 255
},
"double_opt_in_status": {
"type": "choice",
"required": false,
"read_only": false,
"label": "?",
"help_text": "admin-contact-double_opt_in_status_help",
"choices": [
{
"value": 0,
"display_name": "?"
},
{
"value": 1,
"display_name": "?"
},
{
"value": 2,
"display_name": "?"
}
]
},
"www": {
"type": "url",
"required": false,
"read_only": false,
"label": "Www adresa",
"help_text": "Vyplňte adresu Vašeho webu",
"max_length": 255
},
"phone_home": {
"type": "string",
"required": false,
"read_only": false,
"label": "Telefon domů",
"help_text": "Telefonní číslo uvádějte ve tvaru: +420123456789",
"max_length": 50
},
"phone_work": {
"type": "string",
"required": false,
"read_only": false,
"label": "Telefon práce",
"help_text": "Telefonní číslo uvádějte ve tvaru: +420123456789",
"max_length": 50
},
"mobile": {
"type": "string",
"required": false,
"read_only": false,
"label": "Mobil",
"help_text": "Telefonní číslo uvádějte ve tvaru: +420123456789",
"max_length": 50
},
"address_work_street": {
"type": "string",
"required": false,
"read_only": false,
"label": "Ulice a číslo popisné",
"help_text": "admin-adresa_prace_ulice_help",
"max_length": 255
},
"address_work_city": {
"type": "string",
"required": false,
"read_only": false,
"label": "Město",
"help_text": "admin-adresa_prace_mesto_help",
"max_length": 255
},
"address_work_region": {
"type": "string",
"required": false,
"read_only": false,
"label": "Kraj",
"help_text": "admin-adresa_prace_region_help",
"max_length": 255
},
"address_work_zipcode": {
"type": "string",
"required": false,
"read_only": false,
"label": "PSČ",
"help_text": "Poštovní směrovací číslo uvádějte ve tvaru \"000 00\" nebo \"00000\"",
"max_length": 20
},
"address_work_country": {
"type": "string",
"required": false,
"read_only": false,
"label": "Země",
"help_text": "admin-adresa_prace_zeme_help",
"max_length": 255
},
"address_home_street": {
"type": "string",
"required": false,
"read_only": false,
"label": "Ulice a číslo popisné",
"help_text": "admin-adresa_domu_ulice_help",
"max_length": 255
},
"address_home_city": {
"type": "string",
"required": false,
"read_only": false,
"label": "Město",
"help_text": "admin-adresa_domu_mesto_help",
"max_length": 255
},
"address_home_region": {
"type": "string",
"required": false,
"read_only": false,
"label": "Kraj",
"help_text": "admin-adresa_domu_region_help",
"max_length": 255
},
"address_home_zipcode": {
"type": "string",
"required": false,
"read_only": false,
"label": "PSČ",
"help_text": "Pro PSČ použijte formát 000 00 nebo 00000",
"max_length": 20
},
"address_home_country": {
"type": "string",
"required": false,
"read_only": false,
"label": "Země",
"help_text": "admin-adresa_domu_zeme_help",
"max_length": 255
},
"custom_field_1": {
"type": "string",
"required": false,
"read_only": false,
"label": "Uživatelské pole 1",
"max_length": 255
},
"custom_field_2": {
"type": "string",
"required": false,
"read_only": false,
"label": "Uživatelské pole 2",
"max_length": 255
},
"custom_field_3": {
"type": "string",
"required": false,
"read_only": false,
"label": "Uživatelské pole 3",
"max_length": 255
},
"custom_field_4": {
"type": "string",
"required": false,
"read_only": false,
"label": "Uživatelské pole 4",
"max_length": 255
},
"custom_field_5": {
"type": "string",
"required": false,
"read_only": false,
"label": "Uživatelské pole 5",
"max_length": 255
},
"custom_field_6": {
"type": "string",
"required": false,
"read_only": false,
"label": "Uživatelské pole 6",
"max_length": 255
},
"tags": {
"type": "field",
"required": false,
"read_only": true,
"label": "Tags",
"child": {
"type": "nested object",
"required": false,
"read_only": true,
"children": {
"id": {
"type": "integer",
"required": false,
"read_only": true,
"label": "ID"
},
"created": {
"type": "datetime",
"required": false,
"read_only": true,
"label": "Vytvořeno",
"help_text": "admin-vytvoreno_help"
},
"modified": {
"type": "datetime",
"required": false,
"read_only": true,
"label": "Změněno",
"help_text": "admin-zmeneno_help"
},
"name": {
"type": "string",
"required": true,
"read_only": false,
"label": "Název",
"help_text": "admin-tags-nazev_help",
"max_length": 255
},
"contacts_count": {
"type": "integer",
"required": false,
"read_only": true,
"label": "api-contact-pocet_kontaktu_stitku"
}
}
}
},
"note": {
"type": "string",
"required": false,
"read_only": false,
"label": "Poznámka",
"help_text": "admin-poznamka_help"
},
"main_company": {
"type": "nested object",
"required": false,
"read_only": true,
"label": "Main company",
"children": {
"id": {
"type": "integer",
"required": false,
"read_only": true,
"label": "ID"
},
"name": {
"type": "string",
"required": true,
"read_only": false,
"label": "Název firmy",
"help_text": "ABC, a.s.",
"max_length": 255
}
}
},
"owner": {
"type": "field",
"required": false,
"read_only": false,
"label": "Vlastník kontaktu",
"help_text": "Vlastník kontaktu je jeden z Uživatelů uložených v Quandě."
},
"erp_ident_num": {
"type": "string",
"required": false,
"read_only": false,
"label": "Helios person number",
"help_text": "admin-kontakt-erp_ident_num_pl_help"
},
"content_categories": {
"type": "field",
"required": false,
"read_only": true,
"label": "Content categories",
"child": {
"type": "nested object",
"required": false,
"read_only": true,
"children": {
"identifier": {
"type": "string",
"required": true,
"read_only": false,
"label": "Identifier"
},
"is_enabled": {
"type": "boolean",
"required": true,
"read_only": false,
"label": "Is enabled"
},
"timestamp": {
"type": "datetime",
"required": false,
"read_only": true,
"label": "Timestamp"
}
}
}
},
"companies": {
"type": "field",
"required": false,
"read_only": true,
"label": "Companies",
"child": {
"type": "nested object",
"required": false,
"read_only": true,
"children": {
"id": {
"type": "integer",
"required": false,
"read_only": true,
"label": "ID"
},
"name": {
"type": "string",
"required": true,
"read_only": false,
"label": "Název firmy",
"help_text": "ABC, a.s.",
"max_length": 255
}
}
}
},
"purposes_of_processing": {
"type": "field",
"required": false,
"read_only": true,
"label": "Purposes of processing",
"child": {
"type": "nested object",
"required": false,
"read_only": true,
"children": {
"purpose_of_processing": {
"type": "integer",
"required": true,
"read_only": false,
"label": "Purpose of processing"
},
"status": {
"type": "choice",
"required": false,
"read_only": false,
"label": "Status zasílání e-mailů",
"help_text": "admin-contact-ucel_zpracovani-status_help",
"choices": [
{
"value": 1,
"display_name": "Zasílat e-maily"
},
{
"value": 2,
"display_name": "Nemůžeme zasílat (odhlášení)"
},
{
"value": 3,
"display_name": "Nemůžeme zasílat (vypršel souhlas)"
},
{
"value": 4,
"display_name": "Nemůžeme zasílat (čekáme na souhlas)"
}
]
},
"status_valid_to": {
"type": "datetime",
"required": false,
"read_only": false,
"label": "Platnost do",
"help_text": "admin-contact-ucel_zpracovani-status_platny_do_help"
},
"status_paused_to": {
"type": "datetime",
"required": false,
"read_only": false,
"label": "Admin-contact-ucel_zpracovani-status_pozastaven_do",
"help_text": "admin-contact-ucel_zpracovani-status_pozastaven_do_help"
},
"legal_title_legitimate_interest_of_administrator": {
"type": "boolean",
"required": false,
"read_only": false,
"label": "Oprávněný zájem správce"
},
"legal_title_legitimate_fulfilling_legal_obligation": {
"type": "boolean",
"required": false,
"read_only": false,
"label": "Plnění právní povinnosti"
},
"legal_title_contract_fulfilling_or_negotiation_of_conclusion": {
"type": "boolean",
"required": false,
"read_only": false,
"label": "Plnění smlouvy nebo jednání o jejím uzavření"
},
"legal_title_legitimate_consent_to_processing_personal_data": {
"type": "boolean",
"required": false,
"read_only": false,
"label": "Souhlas se zpracováním osobních údajů"
},
"legal_title_public_interest": {
"type": "boolean",
"required": false,
"read_only": false,
"label": "Veřejný zájem"
},
"legal_title_legitimate_vital_interest": {
"type": "boolean",
"required": false,
"read_only": false,
"label": "Životně důležitý zájem"
}
}
}
}
}
}
}

 

Odpověď

200 OK
Content-Type: application/json
{
"contact_id": 9649947
}

 

Odpověď v případě překročení počtu kontaktů nastavený tarifem

200 OK
Content-Type: application/json
{
"contact_id": 9667546,
"warnings": [
{
"code": "001",
"message": "Došlo k překročení limitu počtu kontaktů nastaveným aktuálním tarifem zákazníka. Kontaktujte prosím Quanda support."
}
]
}

 

Odpověď v případě omezení tarifem zákazníka

400 Bad Request
Content-Type: application/json
{
"errors": [
{
"code": "501",
"message": "Tarif zákazníka omezil přidávání nových kontaktů. Kontaktujte prosím Quanda support."
}
]
}

 

Detail kontaktu

GET
https://api.onquanda.com/api/contact/contacts/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID kontaktu 


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"id": 9649947,
"created": "2021-12-15T12:35:40.833792",
"modified": "2024-06-20T11:19:20.794174",
"email": "petr.novak@quanda.cz",
"title_before": "Ing.",
"first_name": "Petr",
"second_name": "",
"last_name": "Novák",
"title_after": "",
"salutation": "",
"salutation_last_name": "Vážený pane Nováku",
"salutation_first_name": "Dobrý den, Petře",
"salutation_last_name_vocative": "Nováku",
"salutation_first_name_vocative": "Petře",
"email_2": "",
"email_3": "",
"sex": "male",
"source": "Veletrh",
"recommended_by": "",
"birthdate": "1981-05-06",
"anniversary": "2023-06-29",
"occupation": "Ekonom",
"double_opt_in_status": 0,
"www": "",
"phone_home": "+420602123456",
"phone_work": "+420987654321",
"mobile": "+42603123456",
"address_work_street": "Jarní 58",
"address_work_city": "Praha 9",
"address_work_region": "",
"address_work_zipcode": "19000",
"address_work_country": "CZ",
"address_home_street": "",
"address_home_city": "",
"address_home_region": "",
"address_home_zipcode": "",
"address_home_country": "",
"custom_field_1": "ForArch2019",
"custom_field_2": "Odesílatel: Quanda International s.r.o., Národních hrdinů 44, Dolní Počernice, 190 12 Praha 9",
"custom_field_3": "Obchodní sdělení.",
"custom_field_4": "ahoj",
"custom_field_5": "",
"custom_field_6": "",
"tags": [
{
"id": 66875,
"created": "2023-10-31T16:48:03.105883",
"modified": "2023-10-31T16:48:03.105909",
"name": "OP356",
"contacts_count": 5
},
{
"id": 66874,
"created": "2023-10-31T16:48:03.095789",
"modified": "2023-10-31T16:48:03.095820",
"name": "Praha",
"contacts_count": 5
},
{
"id": 45385,
"created": "2018-03-23T09:05:09.057457",
"modified": "2018-03-23T09:05:09.057490",
"name": "VIP",
"contacts_count": 109
}
],
"note": "Zasílat e-maily maximálně 2x týdně",
"main_company": {
"id": 1419671,
"name": "ABC a.s."
},
"owner": null,
"erp_ident_num": "A124578",
"content_categories": [
{
"identifier": "d0mtuf",
"is_enabled": true,
"timestamp": null
}
],
"companies": [
{
"id": 1419671,
"name": "ABC a.s."
}
],
"purposes_of_processing": [
{
"purpose_of_processing": 1,
"status": 3,
"status_valid_to": "2020-12-23T14:30:00",
"status_paused_to": null,
"legal_title_legitimate_interest_of_administrator": true,
"legal_title_legitimate_fulfilling_legal_obligation": false,
"legal_title_contract_fulfilling_or_negotiation_of_conclusion": false,
"legal_title_legitimate_consent_to_processing_personal_data": false,
"legal_title_public_interest": false,
"legal_title_legitimate_vital_interest": false
}
]
}

 

Odpověď v případě neexistujícího ID kontaktu

404 Not Found
Content-Type: application/json
{
"detail": "Nenalezeno."
}

Úprava kontaktu

Pro úpravu konaktu je možné využít stejný end point jako pro vytváření nového kontaktu. Podle potřeby je možné nastavit přepisování údajů a štíků pomocí parametrů:

"overwrite": true / false,
"contact_tags_overwrite": true / false,
"overwrite_companies": true / false,
"company_tags_overwrite": true / false,

Více o používaní těchto parametrů najdte v části Hromadný import kontaktů, štítků a firem / Nastavení přepisování.

Smazání kontaktu

Při smazání kontaktu dochází ke smazání všech na kontakt napojených záznamů. Při smazání kontaktu se tak vymaže status zasílání (odhlášení), kontakt bude odebrán se všech seznamů - statistiky e-mailových kampaní, respondent dotazníku, respondent formuláře. 

DELETE
https://api.onquanda.com/api/contact/contacts/{id}/
  Type Required Read_only Popis Max-length
id integer false true ID  


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

204 No content
Content-Type: application/json

Štítky

Seznam štítků

GET
https://api.onquanda.com/api/contact/contacttags/


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"count": 151,
"next": "https://quanda.onquanda.com/api/contact/contacttags/?page=2",
"previous": null,
"results": [
{
"id": 31765,
"name": "Praha",
"contacts_count": 27
},
{
"id": 25868,
"name": "VIP",
"contacts_count": 76
},
{
"id": 25959,
"name": "Dodavatel",
"contacts_count": 69
}
]
}

Nový štítek

POST
https://api.onquanda.com/api/contact/contacttags/


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"name": "Název štítku"
}
Schema
{
"name": {
"type": "string",
"required": true,
"read_only": false,
"label": "Název",
"max_length": 255
}
}

 

Odpověď

200 OK
Content-Type: application/json
{
"id": 66828,
"created": "2022-06-08T19:45:29.669932",
"modified": "2022-06-08T19:45:29.670005",
"name": "Název štítku",
"contacts_count": 0
}
400 Bad Request
Content-Type: application/json
[
    "Štítek, který chcete vytvořit již existuje"
]

Detail štítku

GET
https://api.onquanda.com/api/contact/contacttags/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID štítku


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"id": 66828,
"created": "2022-06-08T19:45:29.669932",
"modified": "2022-06-08T19:45:29.670005",
"name": "Název štítku",
"contacts_count": 488
}
HTTP 404 Not Found
Content-Type: application/json
{
"detail": "Nenalezeno."
}

Úprava štítku

PUT
https://api.onquanda.com/api/contact/contacttags/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID štítku


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"name": "Nový název štítku",
}
Schema
{
"name": {
"type": "string",
"required": true,
"read_only": false,
"label": "Název",
"max_length": 255
}
}

 

Odpověď

200 OK
Content-Type: application/json
{
"id": 31765,
"created": "2017-05-16T16:21:41.402352",
"modified": "2023-04-24T17:10:34.970675",
"name": "Nový název štítku",
"contacts_count": 100
}
400 Bad Request
Content-Type: application/json
[
    "Štítek, který chcete vytvořit již existuje"
]

Smazání štítku

DELETE
https://api.onquanda.com/api/contact/contacttags/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID štítku


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

HTTP 204 No Content
Content-Type: application/json

Hromadný import kontaktů, štítků a firem

Odpovídá frontendové části funkci "Hromadný import kontaktů". Nepoužívají se id. Volání je synchronní, a proto je limit počtu záznamů omezen na 1 000 na jedno volání.

Základní popis

Kontakty

  • Povinný je pouze objekt Contact s definovaným atributem e-mail.
  • Při zadání "null" hodnoty do nepovinného pole bude tato hodnota interpretována jako vyprázdnění pole. U polí typu boolean je null hodnota považována za nevalidní.
  • Pokud je uveden objekt ContactPurposeOfProcessing, musí mít uveden všechny atributy.

Štítky kontaktů

  • Pro import štítků k importovanému kontaktu slouží "Contact.tags", který se zadává ve formátu, kdy jsou jednotlivé štítky odděleny čárkou. Např: VIP,štítek 27,muž.
  • Štítky začínající dvojicí znaků *# se nezpracují, ale jsou vyhodnoceny jako speciální kód. Takového štítky nelze pomocí této metody vložit.

Firmy

  • Pokud je uveden objekt Company, musí mít uveden atribut name (tedy Company.name).

 

Nastavení přepisování

Parametr Typ Default Popis Poznámka
overwrite boolean false Nastavení přepisování dat kontaktů Pokud je nastavena hodnota "false", bude kontakt, který již v Quandě existuje, přeskočen bez jakékoliv aktualizace. Pokud je nastavena hodnota "true", dojde k přepsání původních dat daty novými. Pokud kontakt neexistuje, bude vytvořen.
overwrite_companies boolean false Nastavení přepisování dat firem Pokud je nastavena hodnota "false", bude firma, která již v Quandě existuje, přeskočena bez jakékoliv aktualizace. Pokud je nastavena hodnota "true",  dojde k přepsání původních dat daty novými. Pokud firma neexistuje, bude vytvořena.
contact_tags_overwrite boolean true Nastavení přepisování štítků kontaktů Pokud je nastavena hodnota "false", nové štítky se pouze doplní k již stávajícím. Pokud je nastavena hodnota na "true", původní štítky kontaktu budou smazány a nahrazeny novými. Neexistující štítky se automaticky založí.
company_tags_overwrite boolean true Nastavení přepisování štítků firem Pokud je nastavena hodnota "false", nové štítky se pouze doplní k již stávajícím. Pokud je nastavena hodnota na "true", původní štítky firmy budou smazány a nahrazeny novými. Neexistující štítky se automaticky založí.

 

Hromadný import kontaktů

PUT
https://api.onquanda.com/api/contact/importer/


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"overwrite": true,
"contact_tags_overwrite": true,
"overwrite_companies": true,
"company_tags_overwrite": true,
"data": [
{
"Contact": {
"email": "petr.novak@quanda.cz",
"source": "Veletrh",
"title_before": "Ing.",
"first_name": "Petr",
"last_name": "Novák",
"sex": "Muž",
"birthdate": "06.05.1981",
"occupation": "Ekonom",
"phone_home": "+420602123456",
"phone_work": "+420987654321",
"mobile": "+42603123456",
"address_work_street": "Jarní 58",
"address_work_city": "Praha 9",
"address_work_zipcode": "19000",
"address_work_country": "CZ",
"main_company": "ABC a.s.",
"note": "Zasílat e-maily maximálně 2x týdně",
"custom_field_1": "ForArch2019",
"erp_ident_num": "A124578",
"salutation_last_name": "Vážený pane Nováku",
"salutation_first_name": "Dobrý den, Petře",
"salutation_last_name_vocative": "Nováku",
"salutation_first_name_vocative": "Petře",
"tags": "VIP,Praha,OP356"
},
"ContactPurposeOfProcessing": {
"purpose_of_processing": 1,
"status_valid_to": "23.12.2020 14:30:00",
"status": 1,
"legal_title_legitimate_interest_of_administrator": true
},
"Company": {
"name": "ABC a.s.",
"tags": "Dodavatel,Praha"
}
}
]
}

 

Schema
{
"name": "Contact List",
"description": "",
"renders": [
"application/json",
"text/html"
],
"parses": [
"application/json",
"application/x-www-form-urlencoded",
"multipart/form-data"
],
"actions": {
"PUT": {
"id": {
"type": "integer",
"required": false,
"read_only": true,
"label": "ID"
},
"created": {
"type": "datetime",
"required": false,
"read_only": true,
"label": "Vytvořeno",
"help_text": "admin-vytvoreno_help"
},
"modified": {
"type": "datetime",
"required": false,
"read_only": true,
"label": "Změněno",
"help_text": "admin-zmeneno_help"
},
"email": {
"type": "email",
"required": true,
"read_only": false,
"label": "E-mail (hlavní e-mail)",
"help_text": "admin-email_help",
"max_length": 150
},
"title_before": {
"type": "string",
"required": false,
"read_only": false,
"label": "Titul",
"help_text": "admin-titul_help",
"max_length": 255
},
"first_name": {
"type": "string",
"required": false,
"read_only": false,
"label": "Jméno",
"help_text": "admin-jmeno_help",
"max_length": 255
},
"second_name": {
"type": "string",
"required": false,
"read_only": false,
"label": "Prostřední jméno",
"help_text": "admin-prostredni_jmeno_help",
"max_length": 255
},
"last_name": {
"type": "string",
"required": false,
"read_only": false,
"label": "Příjmení",
"help_text": "admin-prijmeni_help",
"max_length": 255
},
"title_after": {
"type": "string",
"required": false,
"read_only": false,
"label": "Titul za",
"help_text": "admin-titul_za_help",
"max_length": 255
},
"salutation": {
"type": "string",
"required": false,
"read_only": false,
"label": "Oslovení",
"help_text": "admin-osloveni_help",
"max_length": 255
},
"salutation_last_name": {
"type": "string",
"required": false,
"read_only": false,
"label": "Kompletní oslovení s příjmením",
"help_text": "admin-osloveni_komplet_prijmeni_help",
"max_length": 255
},
"salutation_first_name": {
"type": "string",
"required": false,
"read_only": false,
"label": "Kompletní oslovení se jménem",
"help_text": "admin-osloveni_komplet_krestni_help",
"max_length": 255
},
"salutation_last_name_vocative": {
"type": "string",
"required": false,
"read_only": false,
"label": "Příjmení v 5 pádu",
"help_text": "admin-osloveni_prijmeni_5_pad_help",
"max_length": 255
},
"salutation_first_name_vocative": {
"type": "string",
"required": false,
"read_only": false,
"label": "Jméno v 5 pádu",
"help_text": "admin-osloveni_krestni_5_pad_help",
"max_length": 255
},
"email_2": {
"type": "email",
"required": false,
"read_only": false,
"label": "E-mail 2",
"help_text": "admin-email_2_help",
"max_length": 150
},
"email_3": {
"type": "email",
"required": false,
"read_only": false,
"label": "E-mail 3",
"help_text": "admin-email_3_help",
"max_length": 150
},
"sex": {
"type": "choice",
"required": false,
"read_only": false,
"label": "Pohlaví",
"help_text": "admin-pohlavi_help",
"choices": [
{
"value": "male",
"display_name": "Muž"
},
{
"value": "female",
"display_name": "Žena"
}
]
},
"source": {
"type": "string",
"required": false,
"read_only": false,
"label": "Zdroj",
"help_text": "admin-zdroj_help",
"max_length": 255
},
"recommended_by": {
"type": "string",
"required": false,
"read_only": false,
"label": "Doporučeno kým",
"help_text": "admin-doporuceno_help",
"max_length": 255
},
"birthdate": {
"type": "date",
"required": false,
"read_only": false,
"label": "Datum narození",
"help_text": "admin-datum_narozeni_help"
},
"anniversary": {
"type": "date",
"required": false,
"read_only": false,
"label": "Datum svátku / výročí",
"help_text": "Datum svátku nebo výročí uvádějte ve tvaru 1.1.2021 nebo 01.01.2021"
},
"occupation": {
"type": "string",
"required": false,
"read_only": false,
"label": "Funkce",
"help_text": "admin-funkce_help",
"max_length": 255
},
"double_opt_in_status": {
"type": "choice",
"required": false,
"read_only": false,
"label": "?",
"help_text": "admin-contact-double_opt_in_status_help",
"choices": [
{
"value": 0,
"display_name": "?"
},
{
"value": 1,
"display_name": "?"
},
{
"value": 2,
"display_name": "?"
}
]
},
"www": {
"type": "url",
"required": false,
"read_only": false,
"label": "Www adresa",
"help_text": "Vyplňte adresu Vašeho webu",
"max_length": 255
},
"phone_home": {
"type": "string",
"required": false,
"read_only": false,
"label": "Telefon domů",
"help_text": "Telefonní číslo uvádějte ve tvaru: +420123456789",
"max_length": 50
},
"phone_work": {
"type": "string",
"required": false,
"read_only": false,
"label": "Telefon práce",
"help_text": "Telefonní číslo uvádějte ve tvaru: +420123456789",
"max_length": 50
},
"mobile": {
"type": "string",
"required": false,
"read_only": false,
"label": "Mobil",
"help_text": "Telefonní číslo uvádějte ve tvaru: +420123456789",
"max_length": 50
},
"address_work_street": {
"type": "string",
"required": false,
"read_only": false,
"label": "Ulice a číslo popisné",
"help_text": "admin-adresa_prace_ulice_help",
"max_length": 255
},
"address_work_city": {
"type": "string",
"required": false,
"read_only": false,
"label": "Město",
"help_text": "admin-adresa_prace_mesto_help",
"max_length": 255
},
"address_work_region": {
"type": "string",
"required": false,
"read_only": false,
"label": "Kraj",
"help_text": "admin-adresa_prace_region_help",
"max_length": 255
},
"address_work_zipcode": {
"type": "string",
"required": false,
"read_only": false,
"label": "PSČ",
"help_text": "Poštovní směrovací číslo uvádějte ve tvaru \"000 00\" nebo \"00000\"",
"max_length": 20
},
"address_work_country": {
"type": "string",
"required": false,
"read_only": false,
"label": "Země",
"help_text": "admin-adresa_prace_zeme_help",
"max_length": 255
},
"address_home_street": {
"type": "string",
"required": false,
"read_only": false,
"label": "Ulice a číslo popisné",
"help_text": "admin-adresa_domu_ulice_help",
"max_length": 255
},
"address_home_city": {
"type": "string",
"required": false,
"read_only": false,
"label": "Město",
"help_text": "admin-adresa_domu_mesto_help",
"max_length": 255
},
"address_home_region": {
"type": "string",
"required": false,
"read_only": false,
"label": "Kraj",
"help_text": "admin-adresa_domu_region_help",
"max_length": 255
},
"address_home_zipcode": {
"type": "string",
"required": false,
"read_only": false,
"label": "PSČ",
"help_text": "Pro PSČ použijte formát 000 00 nebo 00000",
"max_length": 20
},
"address_home_country": {
"type": "string",
"required": false,
"read_only": false,
"label": "Země",
"help_text": "admin-adresa_domu_zeme_help",
"max_length": 255
},
"custom_field_1": {
"type": "string",
"required": false,
"read_only": false,
"label": "Uživatelské pole 1",
"max_length": 255
},
"custom_field_2": {
"type": "string",
"required": false,
"read_only": false,
"label": "Uživatelské pole 2",
"max_length": 255
},
"custom_field_3": {
"type": "string",
"required": false,
"read_only": false,
"label": "Uživatelské pole 3",
"max_length": 255
},
"custom_field_4": {
"type": "string",
"required": false,
"read_only": false,
"label": "Uživatelské pole 4",
"max_length": 255
},
"custom_field_5": {
"type": "string",
"required": false,
"read_only": false,
"label": "Uživatelské pole 5",
"max_length": 255
},
"custom_field_6": {
"type": "string",
"required": false,
"read_only": false,
"label": "Uživatelské pole 6",
"max_length": 255
},
"tags": {
"type": "field",
"required": false,
"read_only": true,
"label": "Tags",
"child": {
"type": "nested object",
"required": false,
"read_only": true,
"children": {
"id": {
"type": "integer",
"required": false,
"read_only": true,
"label": "ID"
},
"created": {
"type": "datetime",
"required": false,
"read_only": true,
"label": "Vytvořeno",
"help_text": "admin-vytvoreno_help"
},
"modified": {
"type": "datetime",
"required": false,
"read_only": true,
"label": "Změněno",
"help_text": "admin-zmeneno_help"
},
"name": {
"type": "string",
"required": true,
"read_only": false,
"label": "Název",
"help_text": "admin-tags-nazev_help",
"max_length": 255
},
"contacts_count": {
"type": "integer",
"required": false,
"read_only": true,
"label": "api-contact-pocet_kontaktu_stitku"
}
}
}
},
"note": {
"type": "string",
"required": false,
"read_only": false,
"label": "Poznámka",
"help_text": "admin-poznamka_help"
},
"main_company": {
"type": "nested object",
"required": false,
"read_only": true,
"label": "Main company",
"children": {
"id": {
"type": "integer",
"required": false,
"read_only": true,
"label": "ID"
},
"name": {
"type": "string",
"required": true,
"read_only": false,
"label": "Název firmy",
"help_text": "ABC, a.s.",
"max_length": 255
}
}
},
"owner": {
"type": "field",
"required": false,
"read_only": false,
"label": "Vlastník kontaktu",
"help_text": "Vlastník kontaktu je jeden z Uživatelů uložených v Quandě."
},
"erp_ident_num": {
"type": "string",
"required": false,
"read_only": false,
"label": "Helios person number",
"help_text": "admin-kontakt-erp_ident_num_pl_help"
},
"content_categories": {
"type": "field",
"required": false,
"read_only": true,
"label": "Content categories",
"child": {
"type": "nested object",
"required": false,
"read_only": true,
"children": {
"identifier": {
"type": "string",
"required": true,
"read_only": false,
"label": "Identifier"
},
"is_enabled": {
"type": "boolean",
"required": true,
"read_only": false,
"label": "Is enabled"
},
"timestamp": {
"type": "datetime",
"required": false,
"read_only": true,
"label": "Timestamp"
}
}
}
},
"companies": {
"type": "field",
"required": false,
"read_only": true,
"label": "Companies",
"child": {
"type": "nested object",
"required": false,
"read_only": true,
"children": {
"id": {
"type": "integer",
"required": false,
"read_only": true,
"label": "ID"
},
"name": {
"type": "string",
"required": true,
"read_only": false,
"label": "Název firmy",
"help_text": "ABC, a.s.",
"max_length": 255
}
}
}
},
"purposes_of_processing": {
"type": "field",
"required": false,
"read_only": true,
"label": "Purposes of processing",
"child": {
"type": "nested object",
"required": false,
"read_only": true,
"children": {
"purpose_of_processing": {
"type": "integer",
"required": true,
"read_only": false,
"label": "Purpose of processing"
},
"status": {
"type": "choice",
"required": false,
"read_only": false,
"label": "Status zasílání e-mailů",
"help_text": "admin-contact-ucel_zpracovani-status_help",
"choices": [
{
"value": 1,
"display_name": "Zasílat e-maily"
},
{
"value": 2,
"display_name": "Nemůžeme zasílat (odhlášení)"
},
{
"value": 3,
"display_name": "Nemůžeme zasílat (vypršel souhlas)"
},
{
"value": 4,
"display_name": "Nemůžeme zasílat (čekáme na souhlas)"
}
]
},
"status_valid_to": {
"type": "datetime",
"required": false,
"read_only": false,
"label": "Platnost do",
"help_text": "admin-contact-ucel_zpracovani-status_platny_do_help"
},
"status_paused_to": {
"type": "datetime",
"required": false,
"read_only": false,
"label": "Admin-contact-ucel_zpracovani-status_pozastaven_do",
"help_text": "admin-contact-ucel_zpracovani-status_pozastaven_do_help"
},
"legal_title_legitimate_interest_of_administrator": {
"type": "boolean",
"required": false,
"read_only": false,
"label": "Oprávněný zájem správce"
},
"legal_title_legitimate_fulfilling_legal_obligation": {
"type": "boolean",
"required": false,
"read_only": false,
"label": "Plnění právní povinnosti"
},
"legal_title_contract_fulfilling_or_negotiation_of_conclusion": {
"type": "boolean",
"required": false,
"read_only": false,
"label": "Plnění smlouvy nebo jednání o jejím uzavření"
},
"legal_title_legitimate_consent_to_processing_personal_data": {
"type": "boolean",
"required": false,
"read_only": false,
"label": "Souhlas se zpracováním osobních údajů"
},
"legal_title_public_interest": {
"type": "boolean",
"required": false,
"read_only": false,
"label": "Veřejný zájem"
},
"legal_title_legitimate_vital_interest": {
"type": "boolean",
"required": false,
"read_only": false,
"label": "Životně důležitý zájem"
}
}
}
}
}
}
}

 

Odpověď

200 OK
Content-Type: application/json
{
"stats": {
"total": 1,
"invalid": 0,
"skipped": 0,
"updated": 0,
"created": 1
},
"stats_v2": {
"total": 1,
"total_contacts": 1,
"total_companies": 1,
"created_contacts": 1,
"created_companies": 0,
"invalid": 0,
"updated_contacts": 0,
"updated_companies": 1,
"skipped": 0,
"ignored_contact_tags": 0,
"ignored_company_tags": 0,
"ignored_contactpurposeofprocessing_status": 0
},
"invalid_list": [],
"warnings": [],
"errors": []
}

 

Odpověď v případě překročení počtu kontaktů nastavený tarifem

200 OK
Content-Type: application/json
{
"stats": {
"total": 1,
"invalid": 0,
"skipped": 0,
"updated": 0,
"created": 1
},
"stats_v2": {
"total": 1,
"total_contacts": 1,
"total_companies": 1,
"created_contacts": 1,
"created_companies": 1,
"invalid": 0,
"updated_contacts": 0,
"updated_companies": 0,
"skipped": 0,
"ignored_contact_tags": 0,
"ignored_company_tags": 0,
"ignored_contactpurposeofprocessing_status": 0
},
"invalid_list": [],
"warnings": [
{
"code": "001",
"message": "Došlo k překročení limitu počtu kontaktů nastaveným aktuálním tarifem zákazníka. Kontaktujte prosím Quanda support."
}
],
"errors": []
}

 

Odpověď v případě omezení importu tarifem zákazníka

200 OK
Content-Type: application/json
{
"stats": {
"total": 0,
"invalid": 0,
"skipped": 0,
"updated": 0,
"created": 0
},
"stats_v2": {
"total": 0,
"total_contacts": 0,
"total_companies": 0,
"created_contacts": 0,
"created_companies": 0,
"invalid": 0,
"updated_contacts": 0,
"updated_companies": 0,
"skipped": 0,
"ignored_contact_tags": 0,
"ignored_company_tags": 0,
"ignored_contactpurposeofprocessing_status": 0
},
"invalid_list": [],
"warnings": [],
"errors": [
{
"code": "501",
"message": "Tarif zákazníka omezil přidávání nových kontaktů. Kontaktujte prosím Quanda support."
}
]
}

 

Odpověď v případě překročení počtu povolených záznamů na jedno volání

413 Request Entity Too Large
Byl překročen maximální počet povolených záznamů na jedno volání.

 

Import více objektů k jednomu objektu Contact

K jednomu objektu Contact lze přiřadit více objektů Company a více objektů ContactPurposeOfProcessing. Toho lze docílit dvěma způsoby.

 

1. způsob

K jednomu objektu Contact přiřazujeme maximálně jeden objekt Company nebo jeden objekt ContactPurposeOfProcessing nebo oba současně.

Company
Pole Příklad Poznámka
Company {“name”: ...} Pole Company obsahuje pole name, společnost s názvem name se založí nebo aktualizuje dle dalších uvedených polí a kontakt je této firmě přiřazen.
Company {} U nového kontaktu se nevytvoří žádná firma, ani se do žádné nepřiřadí, u již existujícího se neprovede žádná změna pro firmu.
Company  null U nového kontaktu se nevytvoří žádná firma, ani se do žádné nepřiřadí, u již existujícího se odstraní přiřazení kontaktu do firmy.
Company není vůbec uvedeno   Stejné jako v případě Company: {}
ContactPurposeOfProcessing
Pole Příklad Poznámka
ContactPurposeOfProcessing {“purpose_of_processing”: … } Účel zpracování s názvem purpose_of_processing se založí pro účet daného zákazníka, pokud již neexistuje, a následně přiřadí danému kontaktu. Pokud by již daný kontakt k tomuto účelu zpracování přiřazen byl, dojde k aktualizaci atributů tohoto přiřazení.
ContactPurposeOfProcessing {} K žádnému vytvoření účelu zpracování na účtu daného zákazníka nedojde. Nedojde ani k přiřazení žádného účelu zpracování pro daný kontakt.

Pokud pole ContactPurposeOfProcessing není uvedeno, nebo je prázdné a dochází k vytvoření nového kontaktu, pak tomuto kontaktu je přiřazen výchozí účel zpracování pro daný účet zákazníka a hodnota statusu tohoto účelu zpracování je nastavena na 1 ("Zasílat e-maily").
ContactPurposeOfProcessing není vůbec uvedeno   Stejné jako v případě ContactPurposeOfProcessing: {}.

Pokud pole ContactPurposeOfProcessing není uvedeno, nebo je prázdné a dochází k vytvoření nového kontaktu, pak tomuto kontaktu je přiřazen výchozí účel zpracování pro daný účet zákazníka a hodnota statusu tohoto účelu zpracování je nastavena na 1 ("Zasílat e-maily").

 

2. způsob

K jednomu objektu Contact přiřazujeme více objektů Company nebo ContactPurposeOfProcessing.

Companies
Pole Příklad Poznámka
Companies [ { “name”: … }, {“name”: … }, … ] Pole Companies obsahuje list společností definovaných stejně jako ve způsobu 1.

Pokud je parametr overwrite_companies nastaven na hodnotu True, kontakt je nejprve odebrán ze všech dosavadních společností a poté přidán do společností v poli Companies. Pokud některá ze společností v poli Companies neexistuje, bude vytvořena a kontakt bude zvolen jako hlavní kontakt této společnosti.

Pokud je parametr overwrite_companies nastaven na hodnotu False, kontakt je přidán do Companies. Pokud kontakt v některé z Companies již figuruje, je tato Company ignorována. Pokud některá ze společností v poli Companies neexistuje, bude vytvořena a kontakt bude zvolen jako hlavní kontakt této společnosti.
Companies [] V závislosti na parametru overwrite_companies je kontakt odebrán ze všech firem, ve kterých figuruje, nebo počet firem, ve kterých kontakt figuruje zůstane neměnný (viz bod výše).
Pole Companies není vůbec uvedeno   Stejné jako v případě Companies: [].
ContactPurposesOfProcessing
Pole Příklad Poznámka
ContactPurposesOfProcessing [ { “purpose_of_processing”: … }, {“purpose_of_processing”: … }, … ] Pole ContactPurposesOfProcessing obsahuje list účelů zpracování kontaktu definovaných stejně jako ve způsobu 1.
ContactPurposesOfProcessing [] Stejné jako v případě ContactPurposeOfProcessing: [] ve způsobu 1.
Pole ContactPurposesOfProcessing není vůbec uvedeno   Stejné jako v případě ContactPurposesOfProcessing: [].

Oba způsoby jsou navzájem disjunktní, tudíž stav, kdy data jsou ve formátu obou způsobů není definován.

 

Data pro "ContactPurposeOfProcessing"

Pole Type Required Popis Poznámka
"purpose_of_processing" field true Účel zpracování osobních údajů Hodnoty viz "Používané číselníky" níže.
"status" choice false Status zasílání e-mailů Hodnoty viz "Používané číselníky" níže.
"contactpurposeofprocessing_status_ignore" boolean false Nepřepisovat uložený status odesílání Umožňuje zachovat a nepřepisovat aktuálně uložený status odesílání i při nastavení přepisování stávajících kontaktů na "overwrite".
"status_valid_to" datetime false Platnost do Datum a čas
"legal_title_legitimate_interest_of_administrator" boolean false Oprávněný zájem správce Právní titul
"legal_title_legitimate_fulfilling_legal_obligation" boolean false Plnění právní povinnosti Právní titul
"legal_title_contract_fulfilling_or_negotiation_of_conclusion" boolean false Plnění smlouvy nebo jednání o jejím uzavření Právní titul
"legal_title_legitimate_consent_to_processing_personal_data" boolean false Souhlas se zpracováním osobních údajů Právní titul
"legal_title_public_interest" boolean false Veřejný zájem Právní titul
"legal_title_legitimate_vital_interest" boolean false Životně důležitý zájem Právní titul

Data pro "Company"

Pole Type Required Popis Max-length
"name" string true Název firmy 255
"ident_num" string false 30
"vat_num" string false DIČ 30
"business_branch" string false Obor podnikání 255
"category" string false Kategorie 255
"employees" integer false Počet zaměstnanců 255
"bank_account_number" string false Číslo účtu 255
"bank" string false Banka 255
"custom_field_1" string false Uživatelské pole 1 255
"custom_field_2" string false Uživatelské pole 2 255
"custom_field_3" string false Uživatelské pole 3 255
"address_headquarter_street" string false Ulice a číslo popisné 255
"address_headquarter_city" string false Město 255
"address_headquarter_region" string false Kraj 255
"address_headquarter_zipcode" string false PSČ 255
"address_headquarter_country" string false Země 255
"address_postal_street" string false Ulice a číslo popisné 255
"address_postal_city" string false Město 255
"address_postal_region" string false Kraj 255
"address_postal_zipcode" string false PSČ 255
"address_postal_country" string false Země 255
"email" email false E-mail 255
"www" string false www adresa 255
"tags" string false Štítky firmy 255
"assigned_customeruser" email false Přiděleno uživateli "dependencies"

 

E-mailové kampaně

Seznam e-mailových kampaní

GET
https://api.onquanda.com/api/newsletter/campaigns/{campaign_type}/

 

URI Parameters Type Required Poznámka
campaign_type integer false Typ e-mailové kampaně:
10 = Jednoduchá e-mailová kampaň
20 = Logická e-mailová kampaň
30 = E-mailový seriál
40 = Narozeninová e-mailová kampaň
50 = E-mailová kampaň pro výročí a svátky
60 = E-mailová kampaň s A/B testováním
70 = Transakční e-mail


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"count": 3,
"next": null,
"previous": null,
"results": [
{
"id": 43491,
"name": "10 most common mistakes to avoid in the implementation of the online survey",
"state": 20,
"activated_at": "2017-12-02T17:10:08.643985",
"email_subject": "10 most common mistakes to avoid in the implementation of the online survey"
},
{
"id": 43492,
"name": "10 nejčastějších chyb při realizaci online průzkumů",
"state": 20,
"activated_at": "2017-12-02T17:10:08.643985",
"email_subject": "10 nejčastějších chyb při realizaci online průzkumů"
},
{
"id": 43500,
"name": "10 způsobů, jak připravit obsah",
"state": 20,
"activated_at": "2017-12-02T17:10:08.643985",
"email_subject": "10 způsobů, jak připravit kvalitní a hodnotný obsah Vašeho e-mailu"
}
]
}

Seznam newsletterů

GET
https://api.onquanda.com/api/newsletter/newsletters/?campaing_name=Novinky&content_name=1 díl&content_email_subject=Květnové novinky z naší firmy

 

Query parameters

Parameters Popis Poznámka
campaing_name string
příklad: campaing_name=Novinky
Filtrování seznamu odeslaných e-mailových kampaní podle názvu kampaně
content_name string
příklad: content_name=1 díl
Filtrování seznamu odeslaných e-mailových kampaní podle názvu e-mailu
content_email_subject string
content_email_subject=Květnové novinky z naší firmy
Filtrování seznamu odeslaných e-mailových kampaní podle předmětu e-mailu


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"count": 491,
"next": "https://quanda.onquanda.com/api/newsletter/newsletters/?page=2",
"previous": null,
"results": [
{
"id": 99716,
"campaign_name": "Seriál pro nové zákazníky",
"content_name": "Díl 3.",
"content_email_subject": "Odešlete jednoduchou e-mailovou kampaň."
},
{
"id": 99941,
"campaign_name": "Seriál pro nové zákazníky",
"content_name": "Díl 5.",
"content_email_subject": "Vytvořte a odešlete dotazník."
},
{
"id": 160983,
"campaign_name": "Novinky z naší firmy",
"content_name": "",
"content_email_subject": "Květnové novinky"
}
]
}

 

E-mailové kampaně, které nepoužívají "Název e-mailu" mají prázdnou hodnotu v části "content_name".

Seznam odeslaných kampaní po určitém datumu a čase

Umožňuje omezit seznam odeslaných e-mailů pouze na takové, které byly odeslány po určitém datu a čase. Jedná se o řetězec, který odpovídá formátu pro datum a čas ISO 8601.

GET
/api/newsletter/newsletters/?sent_after=2020-7-1T09:00:00.00


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
    "count": 6,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 160710,
            "campaign_name": "test Q",
            "content_name": "",
            "content_email_subject": "nové API"
        },
        {
            "id": 103347,
            "campaign_name": "2. Díl - Trial: Naimportujte své kontakty do Quandy.",
            "content_name": "2. Díl",
            "content_email_subject": "Naimportujte své kontakty do Quandy."
        },
        {
            "id": 103432,
            "campaign_name": "5. Díl - Trial: Vytvořte a odešlete dotazník.",
            "content_name": "5. Díl",
            "content_email_subject": "Vytvořte a odešlete dotazník."
        },
        {
            "id": 159474,
            "campaign_name": "Přání k svátkům 2",
            "content_name": "Přání k svátku",
            "content_email_subject": "{{ contact_salutation_first_name_vocative }}, všechno nejlepší k dnešnímu svátku!"
        },
        {
            "id": 103351,
            "campaign_name": "4. Díl - Trial: Vytvořte formulář a umístěte ho na svůj web.",
            "content_name": "4. Díl",
            "content_email_subject": "Vytvořte formulář a umístěte ho na svůj web."
        },
        {
            "id": 81103,
            "campaign_name": "Příklady předmětů z blogu",
            "content_name": "60+ příkladů na předmět emailu",
            "content_email_subject": "60+ příkladů pro poutavý předmět emailu"
        }
    ]
}

Odeslání transakčního e-mailu

PUT
https://api.onquanda.com/api/newsletter/campaign/{transactional_campaign_id}/add-contact/{contact_id}/

 

URI Parameters Type Required Poznámka
transactional_campaign_id integer true ID transakčního e-mailu
contact_id integer true ID kontaktu

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"send_anyway": true,
"attachments": ["https://www.quanda.cz/media/download/ebook-jak-napsat-predmet-emailu/e-book-jak-napsat-predmet-e-mailu.pdf"]
}
Schema
{
"send_anyway": {
"type": "boolean",
"required": false,
"read_only": false,
"label": "Odeslat vždy",
"help": "Pokud je uvedeno true, transakční e-mail je odeslán vždy a to i v případě, že je daný kontakt odhlášen"
},
"attachements": {
"type": "string",
"required": false,
"read_only": false,
"label": "Příloha",
"help": "URL adresa souboru, který má být odeslán jako příloha transakčního e-mailu"
}
}

 

Povolené typy příloh

doc, docx, xls, xlsx, ppt, pptx, jpeg, jpg, gif, png, bmp a pdf

Maximální velikost přílohy

20MB

 

Odpověď

201 Created
Content-Type: application/json

 

Odpověď v případě nepovoleného typu přílohy

400 Bad Request
Content-Type: application/json
{
"attachments": [
"Příloha typu .exe není povolena"
]
}

 

Odpověď v případě neplatné url nebo neexistujícího souboru na dané url

400 Bad Request
Content-Type: application/json
{
"error": "Na uvedené adrese se nenachází žádný soubor nebo uvedená url adresa není platná. Zkontrolujte zadanou adresu: https://ww.quanda.cz/media/download/ebook-jak-napsat-predmet-emailu/e-book-jak-napsat-predmet-e-mailu.pdf"
}

 

Odpověď v případě neexistujícího ID kampaně nebo ID kontaktu

404 Not Found
Content-Type: application/json
{
"detail": "Nenalezeno."
}

Detail a statistiky kampaně

GET
https://api.onquanda.com/api/newsletter/newsletters/{id}/
URI Parameters Type Required Poznámka
id integer false newsletters/{id} = ID kampaně


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"id": 159995,
"created": "2024-07-02T10:14:18.768038",
"modified": "2024-07-02T13:00:37.096525",
"started": "2024-07-02T13:00:36.211077",
"resolve_in": 7,
"resolved": false,
"position": 0,
"sent_recipients_count": 1,
"delivered_recipients_count": 1,
"not_delivered_recipients_count": 0,
"recipients_tracked_count_sum": 2,
"tracked_recipients_count": 1,
"delivered_not_tracked_recipients_count": 0,
"recipients_clicked_links_count": 0,
"unsubscribed_recipients_count": 0,
"url_stats": "https://quanda.onquanda.com/newsletter/campaign/141076/stats_detail/159995/",
"label": "Novinky z naší firmy",
"last_sent": "2024-07-02T13:00:36.775487"
}

 

Atribut Typ Popis
id integer ID
created datetime Vytvořeno
modified datetime Změněno
started datetime Čas spuštění
resolve_in integer Vyhodnotit za
resolved boolean Vyhodnoceno
position integer Pořadí
sent_recipients_count integer Počet odeslaných e-mailů
delivered_recipients_count integer Počet doručených e-mailů
not_delivered_recipients_count integer Počet nedoručených e-mailů
recipients_tracked_count_sum integer Počet otevřených e-mailů celkem
tracked_recipients_count integer Počet otevřených e-mailů unikátně
delivered_not_tracked_recipients_count integer Počet neotevřených e-mailů
recipients_clicked_links_count integer Počet unikátních prokliků
unsubscribed_recipients_count integer Počet odhlášených příjemců
url_stats url URL adresa pro zobrazení statistik
label string Název kampaně - Název e-mailu

Obsah e-mailu

GET
https://api.onquanda.com/api/newsletter/newsletters/{id}/content/
URI Parameters Type Required Poznámka
id integer false newsletters/{id} = ID kampaně


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"id": 17128,
"created": "2015-08-26T14:19:21.509501",
"modified": "2018-09-25T13:43:59.052404",
"name": "Název e-mailu č.1",
"email_subject": "Plánová údržba systému Quanda",
"email_body_html": "<html><head><style>\n@media only screen {\n html {\n min-height: 100%;\n background: #f3f3f3;\n }\n}\n@media only screen and (max-width: 596px) {\n .small-float-center {\n margin: 0 auto !important;\n float: none !important;\n text-align: center !important;\n }\n\n .small-text-center {\n text-align: center !important;\n }\n\n .small-text-left {\n text-align: left !important;\n }\n\n .small-text-right {\n text-align: right !important;\n }\n}\n@media only screen and (max-width: 596px) {\n .hide-for-large {\n display: block !important;\n width: auto !important;\n overflow: visible !important;\n max-height: none !important;\n font-size: inherit !important;\n line-height: inherit !important;\n }\n}\n@media only screen and (max-width: 596px) {\n .hide-for-mobile {\n mso-hide: all;\n display: none !important;\n width: 0 !important;\n overflow: hidden !important;\n max-height: 0 !important;\n font-size: 0 !important;\n line-height: 0 !important;\n }\n\n .fullwidth-mobile {\n width: 100% !important;\n }\n\n .fullwidth-mobile img {\n max-width: none !important;\n }\n}\n@media only screen and (max-width: 596px) {\n table.body table.container .hide-for-large,\ntable.body table.container .row.hide-for-large {\n display: table !important;\n width: 100% !important;\n }\n}\n@media only screen and (max-width: 596px) {\n table.body table.container .callout-inner.hide-for-large {\n display: table-cell !important;\n width: 100% !important;\n }\n}\n@media only screen and (max-width: 596px) {\n table.body table.container .show-for-large {\n display: none !important;\n width: 0;\n mso-hide: all;\n overflow: hidden;\n }\n}\n@media only screen and (max-width: 596px) {\n table.body img {\n max-width: none !important;\n height: auto;\n }\n\n .special-button table {\n min-width: 200px;\n }\n\n table.body center {\n min-width: 0 !important;\n }\n\n table.body .container {\n width: 100% !important;\n }\n\n table.body .help-container {\n width: 100% !important;\n }\n\n table.body .columns,\ntable.body .column {\n height: auto !important;\n -moz-box-sizing: border-box;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n }\n\n table.body .columns .column,\ntable.body .columns .columns,\ntable.body .column .column,\ntable.body .column .columns {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n table.body .collapse .columns,\ntable.body .collapse .column {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n td.small-1,\nth.small-1 {\n display: inline-block !important;\n width: 8.33333% !important;\n }\n\n td.small-2,\nth.small-2 {\n display: inline-block !important;\n width: 16.66667% !important;\n }\n\n td.small-3,\nth.small-3 {\n display: inline-block !important;\n width: 25% !important;\n }\n\n td.small-4,\nth.small-4 {\n display: inline-block !important;\n width: 33.33333% !important;\n }\n\n td.small-5,\nth.small-5 {\n display: inline-block !important;\n width: 41.66667% !important;\n }\n\n td.small-6,\nth.small-6 {\n display: inline-block !important;\n width: 50% !important;\n }\n\n td.small-7,\nth.small-7 {\n display: inline-block !important;\n width: 58.33333% !important;\n }\n\n td.small-8,\nth.small-8 {\n display: inline-block !important;\n width: 66.66667% !important;\n }\n\n td.small-9,\nth.small-9 {\n display: inline-block !important;\n width: 75% !important;\n }\n\n td.small-10,\nth.small-10 {\n display: inline-block !important;\n width: 83.33333% !important;\n }\n\n td.small-11,\nth.small-11 {\n display: inline-block !important;\n width: 91.66667% !important;\n }\n\n td.small-12,\nth.small-12 {\n display: inline-block !important;\n width: 100% !important;\n }\n\n .columns td.small-12,\n.column td.small-12,\n.columns th.small-12,\n.column th.small-12 {\n display: block !important;\n width: 100% !important;\n }\n\n table.body td.small-offset-1,\ntable.body th.small-offset-1 {\n margin-left: 8.33333% !important;\n Margin-left: 8.33333% !important;\n }\n\n table.body td.small-offset-2,\ntable.body th.small-offset-2 {\n margin-left: 16.66667% !important;\n Margin-left: 16.66667% !important;\n }\n\n table.body td.small-offset-3,\ntable.body th.small-offset-3 {\n margin-left: 25% !important;\n Margin-left: 25% !important;\n }\n\n table.body td.small-offset-4,\ntable.body th.small-offset-4 {\n margin-left: 33.33333% !important;\n Margin-left: 33.33333% !important;\n }\n\n table.body td.small-offset-5,\ntable.body th.small-offset-5 {\n margin-left: 41.66667% !important;\n Margin-left: 41.66667% !important;\n }\n\n table.body td.small-offset-6,\ntable.body th.small-offset-6 {\n margin-left: 50% !important;\n Margin-left: 50% !important;\n }\n\n table.body td.small-offset-7,\ntable.body th.small-offset-7 {\n margin-left: 58.33333% !important;\n Margin-left: 58.33333% !important;\n }\n\n table.body td.small-offset-8,\ntable.body th.small-offset-8 {\n margin-left: 66.66667% !important;\n Margin-left: 66.66667% !important;\n }\n\n table.body td.small-offset-9,\ntable.body th.small-offset-9 {\n margin-left: 75% !important;\n Margin-left: 75% !important;\n }\n\n table.body td.small-offset-10,\ntable.body th.small-offset-10 {\n margin-left: 83.33333% !important;\n Margin-left: 83.33333% !important;\n }\n\n table.body td.small-offset-11,\ntable.body th.small-offset-11 {\n margin-left: 91.66667% !important;\n Margin-left: 91.66667% !important;\n }\n\n table.body table.columns td.expander,\ntable.body table.columns th.expander {\n display: none !important;\n }\n\n table.body .right-text-pad,\ntable.body .text-pad-right {\n padding-left: 10px !important;\n }\n\n table.body .left-text-pad,\ntable.body .text-pad-left {\n padding-right: 10px !important;\n }\n\n table.menu {\n width: 100% !important;\n }\n\n table.menu td,\ntable.menu th {\n width: auto !important;\n display: inline-block !important;\n }\n\n table.menu.vertical td,\ntable.menu.vertical th,\ntable.menu.small-vertical td,\ntable.menu.small-vertical th {\n display: block !important;\n }\n\n table.menu[align=\"center\"] {\n width: auto !important;\n }\n\n table.button.small-expand,\ntable.button.small-expanded {\n width: 100% !important;\n }\n\n table.button.small-expand table,\ntable.button.small-expanded table {\n width: 100%;\n }\n\n table.button.small-expand table a,\ntable.button.small-expanded table a {\n text-align: center !important;\n width: 100% !important;\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n table.button.small-expand center,\ntable.button.small-expanded center {\n min-width: 0;\n }\n}\n</style><link href=\"https://fonts.googleapis.com/css?family=Anton|Lobster|Montserrat:400,700|Oswald:400,700|Playfair+Display:400,700|Raleway:400,700|Roboto+Condensed:400,700|Roboto:400,500,700&subset=latin-ext\" rel=\"stylesheet\"><!--[if gte mso 7]><xml>\n <o:OfficeDocumentSettings>\n <o:AllowPNG/>\n <o:PixelsPerInch>96</o:PixelsPerInch>\n </o:OfficeDocumentSettings>\n</xml><![endif]--><!--[if gte mso 9]>\n <style>\n li {\n text-indent: -1em; /* Normalise space between bullets and text */\n }\n </style>\n <![endif]--></link></head><body style=\"min-width: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; margin: 0; Margin: 0; padding: 0; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; mso-line-height-rule: exactly; font-size: 16px; width: 100%;\"><table class=\"body\" height=\"100%\" style=\"border-spacing: 0; border-collapse: collapse; padding: 0; vertical-align: top; text-align: left; background: #f3f3f3; height: 100%; width: 100%; mso-line-height-rule: exactly; font-size: 16px; background-color: #eeeeee;\" width=\"100%\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td align=\"center\" class=\"float-center\" style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; mso-line-height-rule: exactly; font-size: 16px; margin: 0 auto; Margin: 0 auto; float: none; text-align: center; border-collapse: collapse;\" valign=\"top\"><div class=\"hide-for-mobile\"><div><center style=\"width: 100%; min-width: 580px;\"><table align=\"center\" class=\"container float-center\" style=\"border-spacing: 0; border-collapse: collapse; padding: 0; vertical-align: top; margin: 0 auto; Margin: 0 auto; float: none; text-align: center; background-color: #eeeeee; width: 650px;\" width=\"650\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td colspan=\"3\" height=\"0\" style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; height: 0px; line-height: 0px; border-collapse: collapse;\"></td></tr><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; width: 0px; border-collapse: collapse;\" width=\"0\"></td><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; border-collapse: collapse;\"><table class=\"row\" style=\"border-spacing: 0; border-collapse: collapse; vertical-align: top; text-align: left; padding: 0; width: 100%; position: relative; display: table;\" width=\"100%\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><th class=\"large-6 small-12 last right content-exclude\" style=\"mso-line-height-rule: exactly; font-size: 16px; padding-top: 0; padding-bottom: 0; text-align: right; width: 274px; padding-left: 8px; padding-right: 16px; padding: 0px;\"><table style=\"border-spacing: 0; border-collapse: collapse; padding: 0; vertical-align: top; text-align: left; width: 100%;\" width=\"100%\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td colspan=\"3\" height=\"15\" style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; height: 15px; line-height: 15px; border-collapse: collapse;\"></td></tr><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; width: 0px; border-collapse: collapse;\" width=\"0\"></td><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; border-collapse: collapse;\"><div class=\"sc-bdVaJa gzwiaj\" style=\"text-align: right; box-sizing: border-box; font-family: Roboto, helvetica, arial, sans-serif; font-size: 12px; font-weight: 400; font-style: normal; text-decoration: none; color: #000000;\">Zobrazit <a class=\"content-exclude hide-for-mobile\" href=\"{{ html_link }}\" style=\"mso-line-height-rule: exactly; text-decoration: underline; color: #000000;\">v prohlížeči</a></div></td><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; width: 0px; border-collapse: collapse;\" width=\"0\"></td></tr><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td colspan=\"3\" height=\"25\" style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; height: 25px; line-height: 25px; border-collapse: collapse;\"></td></tr></tbody></table></th></tr></tbody></table></td><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; width: 0px; border-collapse: collapse;\" width=\"0\"></td></tr></tbody></table></center></div></div><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-spacing: 0; border-collapse: collapse; padding: 0; vertical-align: top; text-align: left;\" width=\"100%\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; background-color: #eeeeee; background-repeat: no-repeat; background-size: auto; background-position: center center; background-image: url(); border-collapse: collapse;\"><div><center style=\"width: 100%; min-width: 580px;\"><table align=\"center\" class=\"container float-center\" style=\"border-spacing: 0; border-collapse: collapse; padding: 0; vertical-align: top; margin: 0 auto; Margin: 0 auto; float: none; text-align: center; width: 650px;\" width=\"650\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; background-color: #ffffff; background-repeat: no-repeat; background-size: auto; background-position: center center; background-image: url(); border-collapse: collapse;\"><table class=\"row\" style=\"border-spacing: 0; border-collapse: collapse; vertical-align: top; text-align: left; padding: 0; width: 100%; position: relative; display: table;\" width=\"100%\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: center;\"><th style=\"mso-line-height-rule: exactly; font-size: 16px; padding-top: 0; padding-bottom: 0; width: 0px; padding: 0px;\" width=\"0px\"></th><th class=\"small-12 columns large-12 first last\" style=\"mso-line-height-rule: exactly; font-size: 16px; padding-top: 0; padding-bottom: 0; margin: 0 auto; Margin: 0 auto; padding-left: 0px; padding-right: 0px; width: 650px;\"><table style=\"border-spacing: 0; border-collapse: collapse; padding: 0; vertical-align: top; text-align: left; width: 100%;\" width=\"100%\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><th class=\"hide-for-mobile\" style=\"mso-line-height-rule: exactly; font-size: 16px; padding-top: 0; padding-bottom: 0; width: 0px; padding: 0px;\" width=\"0px\"></th><th style=\"mso-line-height-rule: exactly; font-size: 16px; padding-top: 0; padding-bottom: 0; padding: 0px;\"><table align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"container float-center\" style=\"border-spacing: 0; border-collapse: collapse; padding: 0; vertical-align: top; margin: 0 auto; Margin: 0 auto; float: none; text-align: center; width: 100%;\" width=\"100%\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td colspan=\"3\" height=\"25\" style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; height: 25px; line-height: 25px; border-collapse: collapse;\"></td></tr><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; width: 25px; border-collapse: collapse;\" width=\"25\"></td><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; border-collapse: collapse;\"><div class=\"sc-bwzfXH fICNhB\" color=\"#000000\" font-family=\"georgia,palatino,Times New Roman,Georgia,serif\" font-size=\"16px\" font-style=\"normal\" font-weight=\"400\" style=\"font-family: georgia, palatino, 'Times New Roman', Georgia, serif; font-size: 16px; color: #000000; font-weight: 400; font-style: normal; text-decoration: none; line-height: 24px; width: 100%;\" text-decoration=\"none\"><p style=\"Margin: 0 0 0 10px; mso-line-height-rule: exactly; margin: 0px; hyphens: none; font-family: georgia, palatino, 'Times New Roman', Georgia, serif; font-size: 16px; color: #000000; font-weight: 400; font-style: normal; text-decoration: none; line-height: 24px;\"><p style=\"margin: 0px; line-height: 24px;\"> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; margin: 0px;\" width=\"100%\"><tr><td><img alt=\"\" height=\"128\" src=\"http://quanda.onquanda.com/media/uploaded/27/ba/9259ce6d21d3d893b660fe451686/upgrade.png\" style=\"display: block;\" width=\"160\"/></td></tr></table></p>\n<p style=\"margin: 0px; line-height: 24px;\"><br/>{{ contact_salutation }},<br/><br/>dnes <strong>26.8. 2015 od 16:00</strong> proběhne plánovaná<strong> údržba systému Quanda</strong>. Systém bude nedostupný cca 20-30 minut.</p>\n<p style=\"margin: 0px; line-height: 24px;\">Všechny e-maily budou v pořádku odeslány a doručeny.<br/><br/></p>\n<p style=\"margin: 0px; line-height: 24px;\"><span style=\"line-height: 1.6;\">Děkujeme za pochopení.</span></p>\n<p style=\"margin: 0px; line-height: 24px;\"><span style=\"line-height: 1.6;\">V případě jakýchkoliv dotazů nás, prosím, kontaktujte na telefonu +420 603 734 514 nebo na e-mailu support@onquanda.com.<br/><br/></span></p>\n<p style=\"margin: 0px; line-height: 24px;\">Hezký den,<br/><br/><span style=\"line-height: 1.6;\">tým Quanda<br/></span></p>\n<p style=\"margin: 0px; line-height: 24px;\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; margin: 0px;\" width=\"100%\"><tr><td><img alt=\"\" height=\"37\" src=\"http://quanda.onquanda.com/media/uploaded/4b/e9/2cf63dc0c23bd1a5d770a2e3af40/logo_quanda-2_1.png\" style=\"display: block;\" width=\"147\"/></td></tr></table></p></p></div></td><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; width: 25px; border-collapse: collapse;\" width=\"25\"></td></tr><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td colspan=\"3\" height=\"25\" style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; height: 25px; border-collapse: collapse;\"></td></tr></tbody></table></th><th class=\"hide-for-mobile\" style=\"mso-line-height-rule: exactly; font-size: 16px; padding-top: 0; padding-bottom: 0; width: 0px; padding: 0px;\" width=\"0px\"></th><th class=\"expander\" style=\"mso-line-height-rule: exactly; font-size: 16px; padding-top: 0; padding-bottom: 0; visibility: hidden; width: 0; padding: 0;\"></th></tr></tbody></table></th><th style=\"mso-line-height-rule: exactly; font-size: 16px; padding-top: 0; padding-bottom: 0; width: 0px; padding: 0px;\" width=\"0px\"></th></tr></tbody></table></td></tr></tbody></table></center></div></td></tr></tbody></table><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-spacing: 0; border-collapse: collapse; padding: 0; vertical-align: top; text-align: left;\" width=\"100%\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; background-color: #eeeeee; background-repeat: no-repeat; background-size: auto; background-position: center center; background-image: url(); border-collapse: collapse;\"><div><center style=\"width: 100%; min-width: 580px;\"><table align=\"center\" class=\"container float-center\" style=\"border-spacing: 0; border-collapse: collapse; padding: 0; vertical-align: top; margin: 0 auto; Margin: 0 auto; float: none; text-align: center; width: 650px;\" width=\"650\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; background-color: #eeeeee; background-repeat: no-repeat; background-size: auto; background-position: center center; background-image: url(); border-collapse: collapse;\"><table class=\"row\" style=\"border-spacing: 0; border-collapse: collapse; vertical-align: top; text-align: left; padding: 0; width: 100%; position: relative; display: table;\" width=\"100%\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: center;\"><th style=\"mso-line-height-rule: exactly; font-size: 16px; padding-top: 0; padding-bottom: 0; width: 0px; padding: 0px;\" width=\"0px\"></th><th class=\"small-12 columns large-12 first last\" style=\"mso-line-height-rule: exactly; font-size: 16px; padding-top: 0; padding-bottom: 0; margin: 0 auto; Margin: 0 auto; padding-left: 0px; padding-right: 0px; width: 650px;\"><table style=\"border-spacing: 0; border-collapse: collapse; padding: 0; vertical-align: top; text-align: left; width: 100%;\" width=\"100%\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><th class=\"hide-for-mobile\" style=\"mso-line-height-rule: exactly; font-size: 16px; padding-top: 0; padding-bottom: 0; width: 0px; padding: 0px;\" width=\"0px\"></th><th style=\"mso-line-height-rule: exactly; font-size: 16px; padding-top: 0; padding-bottom: 0; padding: 0px;\"><table align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"container float-center\" style=\"border-spacing: 0; border-collapse: collapse; padding: 0; vertical-align: top; margin: 0 auto; Margin: 0 auto; float: none; text-align: center; width: 100%;\" width=\"100%\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td colspan=\"3\" height=\"25\" style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; height: 25px; line-height: 25px; border-collapse: collapse;\"></td></tr><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; width: 25px; border-collapse: collapse;\" width=\"25\"></td><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; border-collapse: collapse;\"><div class=\"sc-bwzfXH aEdEw\" color=\"#000000\" font-family=\"georgia,palatino,Times New Roman,Georgia,serif\" font-size=\"14px\" font-style=\"normal\" font-weight=\"400\" style=\"font-family: georgia, palatino, 'Times New Roman', Georgia, serif; font-size: 14px; color: #000000; font-weight: 400; font-style: normal; text-decoration: none; line-height: 21px; width: 100%;\" text-decoration=\"none\"><p style=\"Margin: 0 0 0 10px; mso-line-height-rule: exactly; margin: 0px; hyphens: none; font-family: georgia, palatino, 'Times New Roman', Georgia, serif; font-size: 14px; color: #000000; font-weight: 400; font-style: normal; text-decoration: none; line-height: 21px;\"><p style=\"margin: 0px; line-height: 24px;\">{{ contact_custom_field_3 }}</p>\n<p style=\"margin: 0px; line-height: 24px;\">{{ contact_custom_field_4 }}</p></p></div></td><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; width: 25px; border-collapse: collapse;\" width=\"25\"></td></tr><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td colspan=\"3\" height=\"25\" style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; height: 25px; border-collapse: collapse;\"></td></tr></tbody></table></th><th class=\"hide-for-mobile\" style=\"mso-line-height-rule: exactly; font-size: 16px; padding-top: 0; padding-bottom: 0; width: 0px; padding: 0px;\" width=\"0px\"></th><th class=\"expander\" style=\"mso-line-height-rule: exactly; font-size: 16px; padding-top: 0; padding-bottom: 0; visibility: hidden; width: 0; padding: 0;\"></th></tr></tbody></table></th><th style=\"mso-line-height-rule: exactly; font-size: 16px; padding-top: 0; padding-bottom: 0; width: 0px; padding: 0px;\" width=\"0px\"></th></tr></tbody></table></td></tr></tbody></table></center></div></td></tr></tbody></table><div><div><center style=\"width: 100%; min-width: 580px;\"><table align=\"center\" class=\"container float-center\" style=\"border-spacing: 0; border-collapse: collapse; padding: 0; vertical-align: top; margin: 0 auto; Margin: 0 auto; float: none; text-align: center; background-color: #eeeeee; width: 650px;\" width=\"650\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; width: 0px; border-collapse: collapse;\" width=\"0\"></td><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; border-collapse: collapse;\"><table class=\"row\" style=\"border-spacing: 0; border-collapse: collapse; vertical-align: top; text-align: left; padding: 0; width: 100%; position: relative; display: table;\" width=\"100%\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><th class=\"large-12 small-12 first last center content-exclude\" style=\"mso-line-height-rule: exactly; font-size: 16px; padding-top: 0; padding-bottom: 0; text-align: center; width: 564px; padding-left: 16px; padding-right: 16px; padding: 0px;\"><table style=\"border-spacing: 0; border-collapse: collapse; padding: 0; vertical-align: top; text-align: left; width: 100%;\" width=\"100%\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td colspan=\"3\" height=\"25\" style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; height: 25px; line-height: 25px; border-collapse: collapse;\"></td></tr><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; width: 0px; border-collapse: collapse;\" width=\"0\"></td><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; border-collapse: collapse;\"><div class=\"sc-bdVaJa gzwiaj\" style=\"text-align: center; box-sizing: border-box; font-family: Roboto, helvetica, arial, sans-serif; font-size: 12px; font-weight: 400; font-style: normal; text-decoration: none; color: #000000;\">Pokud nechcete dostávat další e-maily, snadno se můžete <a class=\"content-exclude\" href=\"{{ unsubscribe_link }}\" style=\"mso-line-height-rule: exactly; text-decoration: underline; color: #000000;\">odhlásit.</a></div></td><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; width: 0px; border-collapse: collapse;\" width=\"0\"></td></tr><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td colspan=\"3\" height=\"0\" style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; height: 0px; line-height: 0px; border-collapse: collapse;\"></td></tr></tbody></table></th></tr><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><th class=\"large-12 small-12 first last center content-exclude\" style=\"mso-line-height-rule: exactly; font-size: 16px; padding-top: 0; padding-bottom: 0; text-align: center; width: 564px; padding-left: 16px; padding-right: 16px; padding: 0px;\"><table style=\"border-spacing: 0; border-collapse: collapse; padding: 0; vertical-align: top; text-align: left; width: 100%;\" width=\"100%\"><tbody><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td colspan=\"3\" height=\"25\" style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; height: 25px; line-height: 25px; border-collapse: collapse;\"></td></tr><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td colspan=\"3\" height=\"15\" style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; height: 15px; line-height: 15px; border-collapse: collapse;\"></td></tr></tbody></table></th></tr></tbody></table></td><td style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; width: 0px; border-collapse: collapse;\" width=\"0\"></td></tr><tr style=\"padding: 0; vertical-align: top; text-align: left;\"><td colspan=\"3\" height=\"0\" style=\"-webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; padding: 0; vertical-align: top; text-align: left; mso-line-height-rule: exactly; font-size: 16px; height: 0px; line-height: 0px; border-collapse: collapse;\"></td></tr></tbody></table></center></div></div></td></tr></tbody></table></body></html>",
"email_body_plain": "Zobrazit \n{{ contact_salutation }},dnes 26.8. 2015 od 16:00\n proběhne plánovaná údržba systému Quanda\n. Systém bude nedostupný cca 20-30 minut.\nVšechny e-maily budou v pořádku odeslány a doručeny.\nDěkujeme za pochopení.\nV případě jakýchkoliv dotazů nás, prosím, kontaktujte na telefonu +420 603 734 514 nebo na e-mailu support@onquanda.com.\nHezký den,tým Quanda\n{{ contact_custom_field_3 }}\n{{ contact_custom_field_4 }}\nPokud nechcete dostávat další e-maily, snadno se můžete ",
"email_footer": "<p>{{ contact_custom_field_3 }}</p>\r\n<p>{{ contact_custom_field_4 }}</p>",
"is_spam": false,
"spam_score": 0.0,
"spam_data": "",
"url_public_html_preview": "https://quanda.onquanda.com/newsletter/html-preview/b74e6909902edf35a1c9c5e97c769216/"
}

 

Atributy Type Required Read_only Popis Max-length
id integer false true ID  
created datetime false true Vytvořeno  
modified datetime false true Změněno  
name string true false Název e-mailu 255
email_subject string true false Předmět e-mailu  
email_body_html string true false Obsah e-mailu v HTML  
email_body_plain string true false Obsah e-mailu jak "plain text"  
email_footer string false false Patička e-mailu  
is_spam boolean false true SPAM ANO / NE  
spam_score float false true Spam skóre  
spam_data string false true Detailní report k Spam skóre  
url_public_html_preview url false true URL adresa pro náhled e-mailu  

Typ e-mailové kampaně

GET
https://api.onquanda.com/api/newsletter/newsletters/{id}/campaign/
URI Parameters Type Required Poznámka
id integer false newsletters/{id} = ID kampaně


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"id": 17438,
"created": "2015-09-14T13:29:32.143661",
"modified": "2022-01-18T11:50:40.377976",
"name": "Průzkum spokojenosti zaměstnanců 2015",
"campaign_type": 10,
"backward_write_to_erp_enabled": false,
"crm_activity_metadata": "..."
}

 

Atributy Type Required Read_only Label Max-length
id integer false true ID  
created datetime false true    
modified datetime false true    
name string true false   255
campaign_type choice true false    
backward_write_to_erp_enabled boolean false false    
crm_activity_metadata string false false    

Omezení

Atributy "backward_write_to_erp_enabled" a "crm_activity_metadata" jsou vráceny, pouze pokud to tarif zákazníka umožňuje.

Příjemci e-mailů

Seznam příjemců

Seznam příjemců může být filtrován pomocí níže uvedených parametrů.

GET
https://api.onquanda.com/api/newsletter/newsletters/{id}/recipients/
URI Parameters Type Required Poznámka
id integer false newsletters/{id} = ID kampaně
GET
https://api.onquanda.com/api/newsletter/newsletters/{id}/recipients/?message_id={id}
Query Parameters Type Required Příklad Poznámka
message_id integer false message_id=805501 ID specifického e-mailu. Například pro transakční e-mail vrátí konkrétního příjemce. Volání bez tohoto parametru vrátí seznam všech příjemců, kterým byl daný transakční e-mail odeslán.

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 126878177,
"email": "info@quanda.cz",
"tracked": true,
"clicked": true,
"unsubscribed": false,
"status": "delivered",
"sent_at": "2020-09-10T10:00:40.983297"
}
]
}

Detail příjemce

GET
https://api.onquanda.com/api/newsletter/newsletters/{id}/recipients/{id}/
URI Parameters Type Required Poznámka
id integer false newsletters/{id} = ID kampaně
id integer false recipients/{id} = ID příjemce

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"id": 277631513,
"email": "spacil+4002@quanda.com",
"tracked": true,
"opened": true,
"opened_at": "2024-09-13T13:47:44",
"last_opened_at": "2024-09-13T13:50:43",
"opened_at_list": [
"2024-09-13T13:47:44",
"2024-09-13T13:47:51",
"2024-09-13T13:47:51",
"2024-09-13T13:48:16",
"2024-09-13T13:48:16",
"2024-09-13T13:48:12",
"2024-09-13T13:48:18",
"2024-09-13T13:48:20",
"2024-09-13T13:49:57",
"2024-09-13T13:50:43"
],
"clicked": true,
"unsubscribed": false,
"unsubscribed_at": null,
"status": "delivered",
"data": null,
"sent_at": "2024-09-13T13:47:37",
"link_clicks": [
{
"link": {
"url": "http://www.quanda.cz",
"social_type": null,
"position_type": "button",
"text": "Zjistěte více",
"title": "Zjistěte více"
},
"clicked_at": "2024-09-13T13:47:57"
}
],
"spam_complained_at": null,
"bounce_reason": null,
"not_delivered_at": null,
"user_agent": "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)"
}

Dotazníky

Seznam dotazníků

GET
https://api.onquanda.com/api/survey/surveys/

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"count": 5,
"next": null,
"previous": null,
"results": [
{
"id": 32505
},
{
"id": 74913
},
{
"id": 6260
},
{
"id": 8852
},
{
"id": 21373
}
]
}

 

Detail dotazníku

GET
https://api.onquanda.com/api/survey/surveys/{id}/
URI Parameters Type Required Poznámka
id integer false surveys/{id} = ID dotazníku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"id": 32505,
"name": "Trendy e-mail marketingu 2017"
}

 

Seznam respondentů dotazníku

Každý odeslaný a uložený dotazník má přiděleného respondeta. Respondent ID neodpovídá Contact ID. Pro zjištění kontaktu, který odpovídá Respondent ID, je potřeba samostatné API volání. Contact ID u uloženého dotazníku je dostupný pouze v případě, že došlo k úspěšné identifikaci kontaktu, který dotazník vyplnil. K identifikaci kontaktu dochází pouze v případě, pokud tento kontakt vstoupil do dotazníku proklikem z e-mailové pozvánky odeslané z Quandy.

GET
https://api.onquanda.com/api/survey/surveys/{id}/respondents/
URI Parameters Type Required Poznámka
id integer false surveys/{id} = ID dotazníku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"count": 5,
"next": "https://quanda.onquanda.com/api/survey/surveys/32505/respondents/?page=2",
"previous": null,
"results": [
{
"id": 120073
},
{
"id": 120686
},
{
"id": 120688
},
{
"id": 120689
},
{
"id": 120690
}
]
}

 

Detail vyplněného dotazníku

Pokud je v dotazníku použita otázka typu Tabulka přepínačů (radiobuttonů) nebo Tabulka zaškrtávacích polí (checkboxů) je ve výsledném JASONu použit "subtitle", který odpovídá položce "Možnosti" při zadávání otázky.

GET
https://api.onquanda.com/api/survey/surveys/{id}/respondents/{id}/
URI Parameters Type Required Poznámka
id integer false surveys/{id} = ID dotazníku
id integer false respondents/{id} = ID respondenta

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"id": 127681,
"url_questionnaire": "https://quanda.onquanda.com/survey/respondent/32505/127681/",
"survey_name": "Trendy e-mail marketingu 2017",
"answers": [
{
"title": "Jak často měníte svou e-mailovou adresu?",
"answer": "Nikdy",
"type": 9,
"is_answered": true
},
{
"title": "U jakého poskytovatele máte registrovaný e-mail, který nejčastěji používáte?",
"answer": "Používám svůj firemní e-mail",
"type": 9,
"is_answered": true
},
{
"title": "Jakého e-mailové klienta nejčastěji používáte?",
"answer": "Outlook",
"type": 9,
"is_answered": true
},
{
"title": "Používáte synchronizaci e-mailů mezi mobilním telefonem a PC?",
"answer": "Ano",
"type": 9,
"is_answered": true
},
{
"title": "Používáte automatické třídění e-mailů v doručené poště?",
"answer": "Ne",
"type": 9,
"is_answered": true
},
{
"title": "Na jakém zařízení nejčastěji čtete Vaše e-maily?",
"subtitle": "v práci / kanceláři",
"answer": "Stolní počítač",
"type": 12,
"is_answered": true
},
{
"title": "Na jakém zařízení nejčastěji čtete Vaše e-maily?",
"subtitle": "mimo práci / kancelář",
"answer": "Mobil",
"type": 12,
"is_answered": true
},
{
"title": "Očekáváte, že obsah e-mailu, který Vám přijde:",
"answer": "bude kompletní a nebude již potřeba navštívit web pro zobrazení všech informací",
"type": 9,
"is_answered": true
},
{
"title": "Jaký preferujete formát, ve kterém dostáváte e-maily?",
"answer": "HTML (e-mail s obrázky, odkazy atd.)",
"type": 9,
"is_answered": true
},
{
"title": "Očekáváte, že e-maily, které Vám přijdou, budou obsahovat:",
"answer": "Kombinaci obrázků a textu, kde text převažuje",
"type": 9,
"is_answered": true
},
{
"title": "Očekáváte, že obsah e-mailu, který Vám přijde, se po otevření:",
"answer": "zobrazí tak, že vidíte hlavní informace na obrazovce a nevadí Vám rolovat, pokud je e-mail delší",
"type": 9,
"is_answered": true
},
{
"title": "Svou e-mailovou schránku kontrolujete o víkendu",
"answer": "vždy (i v sobotu i v neděli)",
"type": 9,
"is_answered": true
},
{
"title": "Na co se podíváte jako první, když se rozhodujete, zda otevřete e-mail, který jste dostali?",
"answer": "Jméno (adresa) odesílatele",
"type": 9,
"is_answered": true
},
{
"title": "Cítili jste se někdy zmanipulováni k otevření prodejního e-mailu jeho předmětem?",
"answer": "Ano",
"type": 9,
"is_answered": true
},
{
"title": "Navštívili jste někdy stránky firmy, jako výsledek přijatého e-mailu, který jste ale neotevřeli?",
"answer": "Ano",
"type": 9,
"is_answered": true
},
{
"title": "Nakoupili jste někdy od firmy, jako výsledek přijatého e-mailu, který jste ale neotevřeli?",
"answer": "Ne",
"type": 9,
"is_answered": true
},
{
"title": "Kolik registrací k pravidelnému odběru newsletterů, tipů apod. aktuálně máte?",
"answer": "6 - 10",
"type": 9,
"is_answered": true
},
{
"title": "Když dostanete nevyžádaný obchodní e-mail poprvé, jak zareagujete?",
"answer": "Vymažu ho",
"type": 9,
"is_answered": true
},
{
"title": "Když dostanete nevyžádaný obchodní e-mail od stejného odesílatele opakovaně, jak zareagujete?",
"answer": "Odhlásím se z odběru",
"type": 9,
"is_answered": true
},
{
"title": "Když dostanete nevyžádaný obchodní e-mail, který neobsahuje odkaz (link) pro odhlášení, jak zareagujete?",
"answer": "Označím jako spam",
"type": 9,
"is_answered": true
},
{
"title": "Používáte při registracích a odběru novinek svůj běžný e-mail nebo máte zřízený speciální e-mail pro tyto účely?",
"answer": "Používám svou běžnou (hlavní) e-mailovou adresu",
"type": 9,
"is_answered": true
},
{
"title": "Jak často si kupujete produkty nebo služby na základě e-mailů, které dostanete?",
"answer": "Dvakrát ročně",
"type": 9,
"is_answered": true
},
{
"title": "Kolik obchodních e-mailů, které Vám přijdou, si skutečně přečtete?",
"answer": "Většinu",
"type": 9,
"is_answered": true
},
{
"title": "Vaše zaměstnání",
"answer": "Podnikatel / živnostník",
"type": 9,
"is_answered": true
},
{
"title": "Jste",
"answer": "Žena",
"type": 9,
"is_answered": true
},
{
"title": "Váš věk",
"answer": "51 - 65 let",
"type": 9,
"is_answered": true
},
{
"title": "Vaše nejvyšší dosažené vzdělání",
"answer": "Vysokoškolské",
"type": 9,
"is_answered": true
},
{
"title": "Chci poslat celkové výsledky tohoto průzkumu na e-mailovou adresu",
"answer": "langerova@audica.cz",
"type": 14,
"is_answered": true
}
]
}

 


Webhooky

 

Webhook je nástroj pro zasílání notifikací o změnách v Quandě do externího systému skrz protokol HTTP. Notifikace jsou odesílány jako požadavky typu POST na zvolené URL adresy.

Každý webhook má nastaveny vlastnosti: url, event a případně filters. Pokud v Quandě nastane událost, vyhodnotí se nad vstupním objektem všechny nastavené filtry z filters. V případě, že jsou všechny podmínky filtrů splněny, dojde k odeslání webhooku na zadanou URL.

Odpověď

Odpověď musí být kód HTTP 200 OK.

V opačném případě se volání maximálně 5x zopakuje postupně:
1. pokus: 30 s
2. pokus: 300 s (5 minut)
3. pokus: 3000 s (50 minut)
4. pokus: 30000 s (8:20 hodin)
5. pokus: 300000 s (3,5 dne)
Konec

Seznam webhooků

GET
https://api.onquanda.com/api/webhook/webhooks/

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

200 OK
Content-Type: application/json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 26213,
"url": "URL pro zasílání webhooku",
"event": "Typ události",
"filters": {}
}
]
}

 

Odeslání e-mailu

Nový webhook

POST
https://api.onquanda.com/api/webhook/webhooks/

 

Událost newsletter_newsletter_sent nastává po úspěšném odeslání všech e-mailů z odesílky na e-mailový server. Pro tuto událost lze specifikovat dva typy filtrů:

 Filtr Typ Příklad Popis
contacts.tag.id integer {
"contacts.tag.id": integer,
}
Filtruje události pouze na ty, kde existuje vazba objektu alespoň na jeden kontakt se štítkem s id specifikovaným hodnotou klíče.
contacts.tag.name string {
"contacts.tag.name": string,
}
Filtruje události pouze na ty, kde existuje vazba objektu alespoň na jeden kontakt se štítkem s názvem specifikovaným hodnotou klíče.


Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"url": "URL adresa pro zasílání webhooku",
"event": newsletter_newsletter_sent,
"filters": null
}
Schema
{
"url": {
"type": "url",
"required": true,
"read_only": false,
"label": "Vložte platnou URL",
"max_length": 1024
},
"event": {
"type": "choice",
"required": true,
"read_only": false,
"label": "Zvolte událost",
"choices": [
{
"value": "newsletter_newsletter_sent",
"display_name": "Odeslání e-mailu"
},
{
"value": "newsletter_recipient_updated",
"display_name": "Změna stavu příjemce"
},
{
"value": "recipient_clicked",
"display_name": "Klik na odkaz v e-mailu"
},
{
"value": "recipient_opened",
"display_name": "Otevření e-mailu"
},
{
"value": "recipient_unsubscribe",
"display_name": "Odhlášení"
},
{
"value": "questionnaire_sent",
"display_name": "Uložení vyplněného dotazníku"
}
]
},
"filters": {
"type": "field",
"required": false,
"read_only": false,
"label": "Filters"
}
}

 

Odpověď

201 Created
Content-Type: application/json
{
"id": 26428,
"created": "2023-04-12T14:35:34.320552",
"modified": "2023-04-12T14:35:34.320566",
"url": "URL pro zasílání webhooku",
"event": "newsletter_newsletter_sent",
"filters": {}
}

 

Struktura zaslaná na url webhooku po odeslání e-mailu

Příklad
{
"newsletter": {
"id": 61471
},
"webhook": {
"occured": "2023-04-11T20:23:10.803103",
"id": 15628,
"event": "newsletter_newsletter_sent"
},
"campaign": {
"campaign_type": 70
},
"message": {
"id": 805501
}
}

 

"newsletter id" je ID e-mailové kampaně. Ta v sobě může zahrnovat více odesílek pod samostatnými "message id". Například "newsletter id" pro transakční e-mail je vždy stejné. Avšak každý jednotlivý odeslaný e-mail má své vlastní "message id". Pod jedním "newsletter id" tak může být i několik desítek nebo stovek "message id". Jednoduchá e-mailová kampaň naopak obsahuje pro jedno "newsletter id" pouze jedno "message id".

Detail webhooku

GET
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"

 

Odpověď

201 Created
Content-Type: application/json
{
"id": 26428,
"created": "2023-04-12T14:35:34.320552",
"modified": "2023-04-12T14:35:34.320566",
"url": "URL pro zasílání webhooku",
"event": "newsletter_newsletter_sent",
"filters": {}
}

Upravení webhooku

PUT
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"url": "URL pro zasílání webhooku",
"event": "newsletter_newsletter_sent",
"filters": {
"contacts.tag.name": "VIP"
}
}

 

Odpověď

200 OK 
Content-Type: application/json
{
"id": 26429,
"created": "2023-04-12T16:42:42.657397",
"modified": "2023-04-12T16:46:20.523741",
"url": "URL pro zasílání webhooku",
"event": "newsletter_newsletter_sent",
"filters": {
"contacts.tag.name": "VIP"
}
}

 

Smazání webhooku

DELETE
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

204 No Content 
Content-Type: application/json

 

Změna stavu příjemce

Nový webhook

POST
https://api.onquanda.com/api/webhook/webhooks/

 

Pro událost newsletter_recipient_updated lze specifikovat jeden filtr:

 Filtr Typ Příklad Popis
campaign.type choice {
"campaign.type": 70,
}
Filtruje události pouze na typ e-mailové kampaně dle následujícího číselníku: 10 = Jednoduchá, 20 = Logická, 30 = E-mailový seriál, 40 = Narozeninová, 50 = Výročí a svátky, 60 = A / B testování, 70 = Transakční.

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"url": "URL adresa pro zasílání webhooku",
"event": newsletter_recipient_updated,
"filters": null
}
Schema
{
"url": {
"type": "url",
"required": true,
"read_only": false,
"label": "Vložte platnou URL",
"max_length": 1024
},
"event": {
"type": "choice",
"required": true,
"read_only": false,
"label": "Zvolte událost",
"choices": [
{
"value": "newsletter_newsletter_sent",
"display_name": "Odeslání e-mailu"
},
{
"value": "newsletter_recipient_updated",
"display_name": "Změna stavu příjemce"
},
{
"value": "recipient_clicked",
"display_name": "Klik na odkaz v e-mailu"
},
{
"value": "recipient_opened",
"display_name": "Otevření e-mailu"
},
{
"value": "recipient_unsubscribe",
"display_name": "Odhlášení"
},
{
"value": "questionnaire_sent",
"display_name": "Uložení vyplněného dotazníku"
}
]
},
"filters": {
"type": "field",
"required": false,
"read_only": false,
"label": "Filters"
}
}

 

Odpověď

201 Created
Content-Type: application/json
{
"id": 26428,
"created": "2023-04-12T14:35:34.320552",
"modified": "2023-04-12T14:35:34.320566",
"url": "URL pro zasílání webhooku",
"event": "newsletter_recipient_updated",
"filters": {}
}

 

Struktura zaslaná na url webhooku po změně stavu příjemce

Příklad struktury webhooku po odeslání e-mailu
{
"newsletter": {
"id": 61471
},
"webhook": {
"occured": "2023-04-12T17:33:12.666395",
"id": 15631,
"event": "newsletter_recipient_updated"
},
"recipient": {
"blacklist_type": null,
"updated_data": {
"status": {
"old_value": 5,
"new_value": 2
}
},
"id": 160103722
}
}

 

Hodnoty pro pole status jsou:

1 = e-mail nebyl odeslán (čeká ve frontě)
2 = e-mail byl doručen
3 = e-mail nebyl doručen
4 = e-mail byl vyřazen z odesílání z důvodu blacklistace kontaktu
5 = e-mail byl odeslán
6 = e-mail byl vyřazen z odesílání z důvodu nastaveného omezovače (pouze pro ERP automatizace)

 

Příklad struktury webhooku při zaznamenání otevření
{
"newsletter": {
"id": 61471
},
"webhook": {
"occured": "2023-04-12T17:37:04.050773",
"id": 15631,
"event": "newsletter_recipient_updated"
},
"recipient": {
"blacklist_type": null,
"updated_data": {
"last_tracked_at": {
"old_value": null,
"new_value": "2023-04-12T17:37:00"
},
"tracked_count": {
"old_value": 0,
"new_value": 1
},
"tracked_at": {
"old_value": null,
"new_value": "2023-04-12T17:37:00"
},
"tracked": {
"old_value": false,
"new_value": true
},
"tracked_count_unique": {
"old_value": 0,
"new_value": 1
},
"tracked_agent": {
"old_value": null,
"new_value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0 Thunderbird/102.9.1"
}
},
"id": 160103722
}
}

 

Příklad struktury webhooku při opakovaném otevření e-mailu
{
"newsletter": {
"id": 61471
},
"webhook": {
"occured": "2023-04-12T20:44:10.381694",
"id": 15631,
"event": "newsletter_recipient_updated"
},
"recipient": {
"blacklist_type": null,
"updated_data": {
"last_tracked_at": {
"old_value": "2023-04-12T20:18:03",
"new_value": "2023-04-12T20:34:02"
},
"tracked_count": {
"old_value": 5,
"new_value": 6
}
},
"id": 160103722
}
}

 

Příklad struktury webhooku při zaznamenání prokliku
{
"newsletter": {
"id": 61471
},
"webhook": {
"occured": "2023-04-12T17:38:24.969181",
"id": 15631,
"event": "newsletter_recipient_updated"
},
"recipient": {
"blacklist_type": null,
"updated_data": {
"clicked_at": {
"old_value": null,
"new_value": "2023-04-12T17:38:24.958933"
},
"clicked_agent": {
"old_value": null,
"new_value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"
},
"clicked": {
"old_value": false,
"new_value": true
}
},
"id": 160103722
}
}

Detail webhooku

GET
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"

 

Odpověď

201 Created
Content-Type: application/json
{
"id": 26428,
"created": "2023-04-12T14:35:34.320552",
"modified": "2023-04-12T14:35:34.320566",
"url": "URL pro zasílání webhooku",
"event": "newsletter_recipient_updated",
"filters": {}
}

Upravení webhooku

PUT
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"url": "URL pro zasílání webhooku",
"event": "newsletter_recipient_updated",
"filters": {"campaign.type": 70}
}

 

Odpověď

200 OK 
Content-Type: application/json
{
"id": 26429,
"created": "2023-04-12T16:42:42.657397",
"modified": "2023-04-12T16:46:20.523741",
"url": "URL pro zasílání webhooku",
"event": "newsletter_recipient_updated",
"filters": {
"campaign.type": 70
}
}

 

Smazání webhooku

DELETE
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

204 No Content 
Content-Type: application/json

 

Klik na odkaz v e-mailu

Nový webhook

POST
https://api.onquanda.com/api/webhook/webhooks/

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"url": "URL adresa pro zasílání webhooku",
"event": recipient_clicked,
}
Schema
{
"url": {
"type": "url",
"required": true,
"read_only": false,
"label": "Vložte platnou URL",
"max_length": 1024
},
"event": {
"type": "choice",
"required": true,
"read_only": false,
"label": "Zvolte událost",
"choices": [
{
"value": "newsletter_newsletter_sent",
"display_name": "Odeslání e-mailu"
},
{
"value": "newsletter_recipient_updated",
"display_name": "Změna stavu příjemce"
},
{
"value": "recipient_clicked",
"display_name": "Klik na odkaz v e-mailu"
},
{
"value": "recipient_opened",
"display_name": "Otevření e-mailu"
},
{
"value": "recipient_unsubscribe",
"display_name": "Odhlášení"
},
{
"value": "questionnaire_sent",
"display_name": "Uložení vyplněného dotazníku"
}
]
},
"filters": {
"type": "field",
"required": false,
"read_only": false,
"label": "Filters"
}
}

 

Odpověď

201 Created
Content-Type: application/json
{
"id": 26428,
"created": "2023-04-12T14:35:34.320552",
"modified": "2023-04-12T14:35:34.320566",
"url": "URL pro zasílání webhooku",
"event": "recipient_clicked",
"filters": {}
}

 

Struktura zaslaná na url webhooku po kliku na odkaz v e-mailu

Příklad
{
"newsletter": {
"id": 61471
},
"webhook": {
"occured": "2023-04-13T11:27:59.071136",
"id": 15633,
"event": "recipient_clicked"
},
"contact": {
"id": 5954884
},
"link": {
"id": 1138717,
"url": "http://www.quanda.cz?utm_source=Quanda&utm_medium=email&utm_campaign=18+zp%C5%AFsob%C5%AF%2C+jak+budovat+datab%C3%A1zi&utm_content=18+zp%C5%AFsob%C5%AF%2C+jak+budovat+vlastn%C3%AD+rozs%C3%A1hlou+datab%C3%A1zi"
},
"recipient": {
"id": 160103855
},
"campaign": {
"id": 43502
},
"timestamp": "2023-04-13T11:27:59.049783"
}

Detail webhooku

GET
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"

 

Odpověď

201 Created
Content-Type: application/json
{
"id": 26428,
"created": "2023-04-12T14:35:34.320552",
"modified": "2023-04-12T14:35:34.320566",
"url": "URL pro zasílání webhooku",
"event": "recipient_clicked",
"filters": {}
}

Upravení webhooku

PUT
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"url": "URL pro zasílání webhooku",
"event": "recipient_clicked",
}

 

Odpověď

200 OK 
Content-Type: application/json
{
"id": 26429,
"created": "2023-04-12T16:42:42.657397",
"modified": "2023-04-12T16:46:20.523741",
"url": "URL pro zasílání webhooku",
"event": "recipient_clicked",
"filters": {}
}

 

Smazání webhooku

DELETE
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

204 No Content 
Content-Type: application/json

 

Otevření e-mailu

Nový webhook

POST
https://api.onquanda.com/api/webhook/webhooks/

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"url": "URL adresa pro zasílání webhooku",
"event": recipient_opened,
}
Schema
{
"url": {
"type": "url",
"required": true,
"read_only": false,
"label": "Vložte platnou URL",
"max_length": 1024
},
"event": {
"type": "choice",
"required": true,
"read_only": false,
"label": "Zvolte událost",
"choices": [
{
"value": "newsletter_newsletter_sent",
"display_name": "Odeslání e-mailu"
},
{
"value": "newsletter_recipient_updated",
"display_name": "Změna stavu příjemce"
},
{
"value": "recipient_clicked",
"display_name": "Klik na odkaz v e-mailu"
},
{
"value": "recipient_opened",
"display_name": "Otevření e-mailu"
},
{
"value": "recipient_unsubscribe",
"display_name": "Odhlášení"
},
{
"value": "questionnaire_sent",
"display_name": "Uložení vyplněného dotazníku"
}
]
},
"filters": {
"type": "field",
"required": false,
"read_only": false,
"label": "Filters"
}
}

 

Odpověď

201 Created
Content-Type: application/json
{
"id": 26428,
"created": "2023-04-12T14:35:34.320552",
"modified": "2023-04-12T14:35:34.320566",
"url": "URL pro zasílání webhooku",
"event": "recipient_opened",
"filters": {}
}

 

Struktura zaslaná na url webhooku po otevření e-mailu

Příklad
{
"newsletter": {
"id": 61471
},
"webhook": {
"occured": "2023-04-13T13:25:05.955656",
"id": 15634,
"event": "recipient_opened"
},
"contact": {
"id": 5955025
},
"recipient": {
"id": 160103875
},
"campaign": {
"id": 43502
},
"timestamp": "2023-04-13T13:25:02"
}

Detail webhooku

GET
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"

 

Odpověď

201 Created
Content-Type: application/json
{
"id": 26428,
"created": "2023-04-12T14:35:34.320552",
"modified": "2023-04-12T14:35:34.320566",
"url": "URL pro zasílání webhooku",
"event": "recipient_opened",
"filters": {}
}

Upravení webhooku

PUT
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"url": "URL pro zasílání webhooku",
"event": "recipient_opened",
}

 

Odpověď

200 OK 
Content-Type: application/json
{
"id": 26429,
"created": "2023-04-12T16:42:42.657397",
"modified": "2023-04-12T16:46:20.523741",
"url": "URL pro zasílání webhooku",
"event": "recipient_opened",
"filters": {}
}

 

Smazání webhooku

DELETE
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

204 No Content 
Content-Type: application/json

 

Odhlášení

Nový webhook

POST
https://api.onquanda.com/api/webhook/webhooks/

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"url": "URL adresa pro zasílání webhooku",
"event": recipient_unsubscribe,
}
Schema
{
"url": {
"type": "url",
"required": true,
"read_only": false,
"label": "Vložte platnou URL",
"max_length": 1024
},
"event": {
"type": "choice",
"required": true,
"read_only": false,
"label": "Zvolte událost",
"choices": [
{
"value": "newsletter_newsletter_sent",
"display_name": "Odeslání e-mailu"
},
{
"value": "newsletter_recipient_updated",
"display_name": "Změna stavu příjemce"
},
{
"value": "recipient_clicked",
"display_name": "Klik na odkaz v e-mailu"
},
{
"value": "recipient_opened",
"display_name": "Otevření e-mailu"
},
{
"value": "recipient_unsubscribe",
"display_name": "Odhlášení"
},
{
"value": "questionnaire_sent",
"display_name": "Uložení vyplněného dotazníku"
}
]
},
"filters": {
"type": "field",
"required": false,
"read_only": false,
"label": "Filters"
}
}

 

Odpověď

201 Created
Content-Type: application/json
{
"id": 26428,
"created": "2023-04-12T14:35:34.320552",
"modified": "2023-04-12T14:35:34.320566",
"url": "URL pro zasílání webhooku",
"event": "recipient_unsubscribe",
"filters": {}
}

 

Struktura zaslaná na url webhooku po odhlášení příjemce

Příklad
{
"newsletter": {
"id": 61471
},
"webhook": {
"occured": "2023-04-13T10:27:40.808893",
"id": 15632,
"event": "recipient_unsubscribe"
},
"contact": {
"id": 2638657
},
"recipient": {
"id": 160103854
},
"campaign": {
"id": 43502
},
"timestamp": "2023-04-13T10:27:40.683674"
}

Detail webhooku

GET
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"

 

Odpověď

201 Created
Content-Type: application/json
{
"id": 26428,
"created": "2023-04-12T14:35:34.320552",
"modified": "2023-04-12T14:35:34.320566",
"url": "URL pro zasílání webhooku",
"event": "recipient_unsubscribe",
"filters": {}
}

Upravení webhooku

PUT
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"url": "URL pro zasílání webhooku",
"event": "recipient_unsubscribe",
}

 

Odpověď

200 OK 
Content-Type: application/json
{
"id": 26429,
"created": "2023-04-12T16:42:42.657397",
"modified": "2023-04-12T16:46:20.523741",
"url": "URL pro zasílání webhooku",
"event": "recipient_unsubscribe",
"filters": {}
}

 

Smazání webhooku

DELETE
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

204 No Content 
Content-Type: application/json

 

Uložení vyplněného dotazníku

Nový webhook

POST
https://api.onquanda.com/api/webhook/webhooks/

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"url": "URL adresa pro zasílání webhooku",
"event": questionnaire_sent,
}
Schema
{
"url": {
"type": "url",
"required": true,
"read_only": false,
"label": "Vložte platnou URL",
"max_length": 1024
},
"event": {
"type": "choice",
"required": true,
"read_only": false,
"label": "Zvolte událost",
"choices": [
{
"value": "newsletter_newsletter_sent",
"display_name": "Odeslání e-mailu"
},
{
"value": "newsletter_recipient_updated",
"display_name": "Změna stavu příjemce"
},
{
"value": "recipient_clicked",
"display_name": "Klik na odkaz v e-mailu"
},
{
"value": "recipient_opened",
"display_name": "Otevření e-mailu"
},
{
"value": "recipient_unsubscribe",
"display_name": "Odhlášení"
},
{
"value": "questionnaire_sent",
"display_name": "Uložení vyplněného dotazníku"
}
]
},
"filters": {
"type": "field",
"required": false,
"read_only": false,
"label": "Filters"
}
}

 

Odpověď

201 Created
Content-Type: application/json
{
"id": 26428,
"created": "2023-04-12T14:35:34.320552",
"modified": "2023-04-12T14:35:34.320566",
"url": "URL pro zasílání webhooku",
"event": "questionnaire_sent",
"filters": {}
}

 

Struktura zaslaná na url webhooku při uložení vyplněného dotazníku

Příklad
{
"webhook": {
"occured": "2023-04-13T14:21:33.059464",
"id": 15635,
"event": "questionnaire_sent"
},
"survey": {
"name": "Spokojenost se supportem",
"id": 86755
},
"respondent": {
"id": 324179
},
"timestamp": "2023-04-13T14:21:32.811107"
}

Detail webhooku

GET
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"

 

Odpověď

201 Created
Content-Type: application/json
{
"id": 26428,
"created": "2023-04-12T14:35:34.320552",
"modified": "2023-04-12T14:35:34.320566",
"url": "URL pro zasílání webhooku",
"event": "questionnaire_sent",
"filters": {}
}

Upravení webhooku

PUT
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"url": "URL pro zasílání webhooku",
"event": "questionnaire_sent",
}

 

Odpověď

200 OK 
Content-Type: application/json
{
"id": 26429,
"created": "2023-04-12T16:42:42.657397",
"modified": "2023-04-12T16:46:20.523741",
"url": "URL pro zasílání webhooku",
"event": "questionnaire_sent",
"filters": {}
}

 

Smazání webhooku

DELETE
https://api.onquanda.com/api/webhook/webhooks/{id}/
URI Parameters Type Required Read_only Název Poznámka
id integer false true ID ID webhooku

 

Request

Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}

 

Odpověď

204 No Content 
Content-Type: application/json