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 | IČ | 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" | false | 255 | ||
"www" | string | false | www adresa | 255 |
"tags" | string | false | Štítky firmy | 255 |
"assigned_customeruser" | 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