Introduction
General information
Data format
json, html
Protocol
https
Type
REST
Encoding
UTF-8
Authentication
With a positive authorization, access to the API is limited by the rights and plan of the specific customer. When accessed via the API, the system behaves as if the administrator of the given customer account were logged in.
Base URL
https://api.onquanda.com/api/
Authorization
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
You can obtain the API key in the application under Settings / API keys, using the green "Add API key" button.
Access limits
To secure the system and ensure its normal operation, an access limit is implemented per API key. This limit prevents parallel access and access that is too frequent. Requests to the API will have to be serialized, and to free up resources after processing a request a certain time delay is also added. Otherwise an error return code is returned:
429 Too many requests
and the request must then be repeated.
Delay
The delay between the completion of the previous request and the start of the next one is set to 30ms.
Some calls may be limited by the amount of input data.
API structure
Individual API calls are structured into modules.
https://api.onquanda.com/api/{nazev_modulu}/…
HTTP methods used
Based on RFC 2616 section 9.1.2 (https://www.ietf.org/rfc/rfc2616.txt). Mapping to CRUD:
GET (read)
POST (create)
PUT (update)
DELETE (delete)
(help for the call)
PATCH (partial update)
URL addresses
Retrieving a list of objects (GET) and creating a new object (POST) in the form:
https://api.onquanda.com/api/{nazev_modulu}/{model}s/
Retrieving the detail of an object (GET) or updating it (PUT):
https://api.onquanda.com/api/{nazev_modulu}/{model}s/{id}/
Other calls take the form
If they concern more than one model:
https://api.onquanda.com/api/{nazev_modulu}/{volani}/
Multiple objects of one specific model:
https://api.onquanda.com/api/{nazev_modulu}/{model}s/{volani}/
A single specific object:
https://api.onquanda.com/api/{nazev_modulu}/{model}s/{id}/{volani}/
Types of API calls
Basic help
All types of API calls should support the OPTION method, which returns basic help for the call.
https://api.onquanda.com/api/newsletter/newsletters/77345/recipients/Response
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
}
}
}
}
This is automatically generated help and may not exactly correspond to specific properties, and it does not contain, for example, information about integrity or other constraints imposed by the system.
List of objects
All lists are available via the GET method and are paginated (the output includes the total number of objects and the URL of the next and previous page, respectively). Each object is represented by several of its basic attributes. These basic attributes are defined in the definition of each call. This is a minimal set that may be extended during development.
Example
https://api.onquanda.com/api/contact/contacts/Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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
Allows you to verify the connection functionality for GET and POST.
https://api.onquanda.com/api/helper/ping/https://api.onquanda.com/api/helper/ping/Enumerations
Contacts
Email sending status
- 1 = Send emails
- 2 = Cannot send (unsubscribed)
- 3 = Cannot send (consent expired)
- 4 = Cannot send (waiting for consent)
List of legal titles
- Legitimate interest of the controller
- Fulfilment of a legal obligation
- Performance of a contract or negotiation of its conclusion
- Consent to the processing of personal data
- Public interest
- Vital interest
List of purposes for processing personal data
- 1 = Not set (default)
- 2 = Sending commercial and advertising messages
- 3 = Direct marketing
- 4 = Improving products and services
- 5 = Sending news updates
- 6 = Response to expressed interest
- 7 = Providing professional content
- 8 = Running a customer competition
- 9 = Running educational events
- 10 = Conducting a marketing survey
- 11 = Conducting market research
- 12 = Performance of a purchase contract or negotiation of its conclusion
- 13 = Performance of a work contract or negotiation of its conclusion
- 14 = Fulfilment of employment contracts and obligations
- 15 = Protection of property and health
- 16 = Taking legal action
- 17 = Compliance with the accounting act
- 18 = Archiving in the public interest
- 19 = For statistical purposes
Surveys
Question types
- 1 = Short text
- 2 = Longer text
- 3 = Short text, 1 or more lines
- 4 = Number
- 5 = Number, 1 or more lines
- 6 = Date
- 7 = Date and/or time, 1 or more lines
- 8 = Dropdown menu
- 9 = List of radio buttons (radiobutton)
- 10 = List of checkboxes (checkbox)
- 11 = Rating scale
- 12 = Table of radio buttons (radiobuttons)
- 13 = Table of checkboxes (checkboxes)
- 14 = E-mail
- 15 = Upload file
- 16 = NPS (net promoter score)
Email campaigns
Email campaign types
- 10 = Simple email campaign
- 20 = Logic email campaign
- 30 = Email series
- 40 = Birthday email campaign
- 50 = Email campaign for anniversaries and holidays
- 60 = Email campaign with A/B testing
- 70 = Transactional email
Email campaign statuses
- 10 = Paused
- 20 = Ready to send / Sent / Activated
- 30 = Under construction
- 40 = Finished
Allowed attachment types for transactional emails
doc, docx, xls, xlsx, ppt, pptx, jpeg, jpg, gif, png, bmp and pdf
Maximum attachment size
20MB
API endpoints
Contacts
List of contacts
https://api.onquanda.com/api/contact/contacts/Query parameters
https://api.onquanda.com/api/contact/contacts/?tag=Zakaznici&tag=Ostrava&tags_behavior=or| Parameter | Type | Description | Note |
|---|---|---|---|
| tag | string | Tag name | The tag name is case-sensitive and diacritics-sensitive |
| tags_behavior | enum | and or or | "and" corresponds to the intersection, "or" corresponds to the union |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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"
}
]
}
Find contact ID by email
https://api.onquanda.com/api/contact/contacts/?email=petr.novak@quanda.czRequest
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
200 OK Content-Type: application/json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 9649947,
"email": "petr.novak@quanda.cz"
}
]
}
New contact
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"
}
}
}
}
}
}
}
Response
200 OK Content-Type: application/json
{
"contact_id": 9649947
}
Response when the number of contacts set by the plan is exceeded
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."
}
]
}
Response when limited by the customer's plan
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."
}
]
}
Contact detail
https://api.onquanda.com/api/contact/contacts/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Contact ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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
}
]
}
Response when the contact ID does not exist
404 Not Found Content-Type: application/json
{
"detail": "Nenalezeno."
}
Edit contact
To edit a contact, you can use the same endpoint as for creating a new contact. As needed, you can configure the overwriting of data and tags using the parameters:
"overwrite": true / false, "contact_tags_overwrite": true / false, "overwrite_companies": true / false, "company_tags_overwrite": true / false,
More about using these parameters can be found in the section Bulk import of contacts, tags and companies / Overwrite settings.
Delete contact
When a contact is deleted, all records linked to the contact are deleted. Deleting a contact thus removes the sending status (unsubscribe), and the contact is removed from all lists, email campaign statistics, survey respondent, form respondent.
Deleting contacts is disabled by default. If you need to enable deleting contacts, contact our support at email: support@onquanda.com.
https://api.onquanda.com/api/contact/contacts/{id}/| Type | Required | Read_only | Description | Max-length | |
|---|---|---|---|---|---|
| id | integer | false | true | ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
204 No content Content-Type: application/json
Tags
List of tags
https://api.onquanda.com/api/contact/contacttags/Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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
}
]
}
New tag
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
}
}
Response
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"
]
Tag detail
https://api.onquanda.com/api/contact/contacttags/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Tag ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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
}
404 Not Found Content-Type: application/json
{
"detail": "Nenalezeno."
}
Edit tag
https://api.onquanda.com/api/contact/contacttags/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Tag ID |
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
}
}
Response
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"
]
Delete tag
https://api.onquanda.com/api/contact/contacttags/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Tag ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
204 No Content Content-Type: application/json
Bulk import of contacts, tags and companies
Corresponds to the frontend feature "Bulk import of contacts". Ids are not used. The call is synchronous, and therefore the limit on the number of records is capped at 1 000 per call.
Basic description
Contacts
- Only the Contact object with a defined email attribute is required.
- When a "null" value is entered into an optional field, this value is interpreted as clearing the field. For boolean fields, a null value is considered invalid.
- If the ContactPurposeOfProcessing object is provided, it must have all attributes specified.
Contact tags
- To import tags for the imported contact, use "Contact.tags", which is entered in a format where individual tags are separated by a comma. E.g.: VIP,štítek 27,muž.
- Tags starting with the pair of characters *# are not processed but are evaluated as a special code. Such tags cannot be inserted using this method.
Companies
- If the Company object is provided, it must have the name attribute specified, which is required.
Overwrite settings
| Parameter | Type | Default | Description | Note |
|---|---|---|---|---|
| overwrite | boolean | false | Contact data overwrite setting | If the value is set to "false", a contact that already exists in Quanda will be skipped without any update. If the value is set to "true", the original data will be overwritten with new data. If the contact does not exist, it will be created. |
| overwrite_companies | boolean | false | Company data overwrite setting | If the value is set to "false", a company that already exists in Quanda will be skipped without any update. If the value is set to "true", the original data will be overwritten with new data. If the company does not exist, it will be created. |
| contact_tags_overwrite | boolean | true | Contact tags overwrite setting | If the value is set to "false", new tags are only added to the existing ones. If the value is set to "true", the contact's original tags will be deleted and replaced with new ones. Non-existent tags are created automatically. |
| company_tags_overwrite | boolean | true | Company tags overwrite setting | If the value is set to "false", new tags are only added to the existing ones. If the value is set to "true", the company's original tags will be deleted and replaced with new ones. Non-existent tags are created automatically. |
Bulk import of contacts
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"
}
}
}
},
"Company": {
"name": {
"type": "string",
"required": false,
"label": "Název firmy",
"max_length": 255
},
"ident_num": {
"type": "string",
"required": false,
"label": "IČ",
"max_length": 30
},
"vat_num": {
"type": "string",
"required": false,
"label": "DIČ",
"max_length": 30
},
"business_branch": {
"type": "string",
"required": false,
"label": "Obor podnikání",
"max_length": 255
},
"category": {
"type": "string",
"required": false,
"label": "Kategorie",
"max_length": 255
},
"employees": {
"type": "integer",
"required": false,
"label": "Počet zaměstnanců"
},
"bank_account_number": {
"type": "string",
"required": false,
"label": "Číslo účtu",
"max_length": 255
},
"bank": {
"type": "string",
"required": false,
"label": "Banka",
"max_length": 255
},
"custom_field_1": {
"type": "string",
"required": false,
"label": "Uživatelské pole 1",
"max_length": 255
},
"custom_field_2": {
"type": "string",
"required": false,
"label": "Uživatelské pole 2",
"max_length": 255
},
"custom_field_3": {
"type": "string",
"required": false,
"label": "Uživatelské pole 3",
"max_length": 255
},
"address_headquarter_street": {
"type": "string",
"required": false,
"label": "Ulice a číslo popisné",
"max_length": 255
},
"address_headquarter_city": {
"type": "string",
"required": false,
"label": "Město",
"max_length": 255
},
"address_headquarter_region": {
"type": "string",
"required": false,
"label": "Kraj",
"max_length": 255
},
"address_headquarter_zipcode": {
"type": "string",
"required": false,
"label": "PSČ",
"max_length": 20
},
"address_headquarter_country": {
"type": "string",
"required": false,
"label": "Země",
"max_length": 255
},
"address_postal_street": {
"type": "string",
"required": false,
"label": "Ulice a číslo popisné",
"max_length": 255
},
"address_postal_city": {
"type": "string",
"required": false,
"label": "Město",
"max_length": 255
},
"address_postal_region": {
"type": "string",
"required": false,
"label": "Kraj",
"max_length": 255
},
"address_postal_zipcode": {
"type": "string",
"required": false,
"label": "PSČ",
"max_length": 20
},
"address_postal_country": {
"type": "string",
"required": false,
"label": "Země",
"max_length": 255
},
"email": {
"type": "email",
"required": false,
"label": "E-mail",
"max_length": 255
},
"www": {
"type": "string",
"required": false,
"label": "www adresa",
"max_length": 255
},
"note": {
"type": "string",
"required": false,
"read_only": false,
"label": "Poznámka"
}
},
"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"
}
}
}
}
}
}
}
Response
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": []
}
Response when the number of contacts set by the plan is exceeded
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": []
}
Response when the import is limited by the customer's plan
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."
}
]
}
Response when the number of allowed records per call is exceeded
413 Request Entity Too Large
The maximum number of allowed records per call has been exceeded.
Importing multiple objects for a single Contact object
Multiple Company objects and multiple ContactPurposeOfProcessing objects can be assigned to a single Contact object. This can be achieved in two ways.
Method 1
To a single Contact object we assign at most one Company object or one ContactPurposeOfProcessing object, or both at the same time.
Company
| Field | Example | Note |
|---|---|---|
| Company | {“name”: ...} | The Company field contains the name field; a company with the name name is created or updated according to the other provided fields and the contact is assigned to this company. |
| Company | {} | For a new contact no company is created and it is not assigned to any; for an existing one no change regarding the company is made. |
| Company | null | For a new contact no company is created and it is not assigned to any; for an existing one the contact's assignment to a company is removed. |
| Company is not provided at all | Same as in the case of Company: {} |
ContactPurposeOfProcessing
| Field | Example | Note |
|---|---|---|
| ContactPurposeOfProcessing | {“purpose_of_processing”: … } | A processing purpose with the name purpose_of_processing is created for the given customer's account if it does not yet exist, and is then assigned to the given contact. If the given contact was already assigned to this processing purpose, the attributes of this assignment are updated. |
| ContactPurposeOfProcessing | {} | No processing purpose is created on the given customer's account. No processing purpose is assigned to the given contact either. If the ContactPurposeOfProcessing field is not provided, or is empty and a new contact is being created, then the default processing purpose for the given customer account is assigned to this contact and the status value of this processing purpose is set to 1 ("Send emails"). |
| ContactPurposeOfProcessing is not provided at all | Same as in the case of ContactPurposeOfProcessing: {}. If the ContactPurposeOfProcessing field is not provided, or is empty and a new contact is being created, then the default processing purpose for the given customer account is assigned to this contact and the status value of this processing purpose is set to 1 ("Send emails"). |
Method 2
To a single Contact object we assign multiple Company or ContactPurposeOfProcessing objects.
Companies
| Field | Example | Note |
|---|---|---|
| Companies | [ { “name”: … }, {“name”: … }, … ] | The Companies field contains a list of companies defined in the same way as in method 1. If the overwrite_companies parameter is set to True, the contact is first removed from all current companies and then added to the companies in the Companies field. If one of the companies in the Companies field does not exist, it will be created and the contact will be selected as the main contact of that company. If the overwrite_companies parameter is set to False, the contact is added to Companies. If the contact already appears in one of the Companies, that Company is ignored. If one of the companies in the Companies field does not exist, it will be created and the contact will be selected as the main contact of that company. |
| Companies | [] | Depending on the overwrite_companies parameter, the contact is removed from all companies in which it appears, or the number of companies in which the contact appears remains unchanged (see the point above). |
| The Companies field is not provided at all | Same as in the case of Companies: []. |
ContactPurposesOfProcessing
| Field | Example | Note |
|---|---|---|
| ContactPurposesOfProcessing | [ { “purpose_of_processing”: … }, {“purpose_of_processing”: … }, … ] | The ContactPurposesOfProcessing field contains a list of the contact's processing purposes defined in the same way as in method 1. |
| ContactPurposesOfProcessing | [] | Same as in the case of ContactPurposeOfProcessing: [] in method 1. |
| The ContactPurposesOfProcessing field is not provided at all | Same as in the case of ContactPurposesOfProcessing: []. |
Both methods are mutually exclusive, so a state where the data is in the format of both methods is undefined.
Data for "ContactPurposeOfProcessing"
| Field | Type | Required | Description | Note |
|---|---|---|---|---|
| "purpose_of_processing" | field | true | Purpose of processing personal data | See values in "Used enumerations" below. |
| "status" | choice | false | Email sending status | See values in "Used enumerations" below. |
| "contactpurposeofprocessing_status_ignore" | boolean | false | Do not overwrite the saved sending status | Allows you to keep and not overwrite the currently saved sending status even when overwriting of existing contacts is set to "overwrite". |
| "status_valid_to" | datetime | false | Valid until | Date and time |
| "legal_title_legitimate_interest_of_administrator" | boolean | false | Legitimate interest of the controller | Legal title |
| "legal_title_legitimate_fulfilling_legal_obligation" | boolean | false | Fulfilment of a legal obligation | Legal title |
| "legal_title_contract_fulfilling_or_negotiation_of_conclusion" | boolean | false | Performance of a contract or negotiation of its conclusion | Legal title |
| "legal_title_legitimate_consent_to_processing_personal_data" | boolean | false | Consent to the processing of personal data | Legal title |
| "legal_title_public_interest" | boolean | false | Public interest | Legal title |
| "legal_title_legitimate_vital_interest" | boolean | false | Vital interest | Legal title |
Data for "Company"
| Field | Type | Required | Description | Max-length |
|---|---|---|---|---|
| "name" | string | true | Company name | 255 |
| "ident_num" | string | false | Company ID number | 30 |
| "vat_num" | string | false | VAT number | 30 |
| "business_branch" | string | false | Field of business | 255 |
| "category" | string | false | Category | 255 |
| "employees" | integer | false | Number of employees | 255 |
| "bank_account_number" | string | false | Account number | 255 |
| "bank" | string | false | Bank | 255 |
| "custom_field_1" | string | false | Custom field 1 | 255 |
| "custom_field_2" | string | false | Custom field 2 | 255 |
| "custom_field_3" | string | false | Custom field 3 | 255 |
| "address_headquarter_street" | string | false | Street and house number | 255 |
| "address_headquarter_city" | string | false | City | 255 |
| "address_headquarter_region" | string | false | Region | 255 |
| "address_headquarter_zipcode" | string | false | Postal code | 255 |
| "address_headquarter_country" | string | false | Country | 255 |
| "address_postal_street" | string | false | Street and house number | 255 |
| "address_postal_city" | string | false | City | 255 |
| "address_postal_region" | string | false | Region | 255 |
| "address_postal_zipcode" | string | false | Postal code | 255 |
| "address_postal_country" | string | false | Country | 255 |
| "email" | false | 255 | ||
| "www" | string | false | www address | 255 |
| "tags" | string | false | Company tags | 255 |
| "assigned_customeruser" | false | Assigned to user | "dependencies" |
Email campaigns
List of email campaigns
https://api.onquanda.com/api/newsletter/campaigns/{campaign_type}/| URI Parameters | Type | Required | Note |
|---|---|---|---|
| campaign_type | integer | false | Email campaign type: 10 = Simple email campaign 20 = Logic email campaign 30 = Email series 40 = Birthday email campaign 50 = Email campaign for anniversaries and holidays 60 = Email campaign with A/B testing 70 = Transactional email |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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"
}
]
}
List of emails
https://api.onquanda.com/api/newsletter/newsletters/?campaing_name=Novinky&content_name=1 díl&content_email_subject=Květnové novinky z naší firmyQuery parameters
| Parameters | Description | Note |
|---|---|---|
| campaing_name | string example: campaing_name=Novinky | Filtering the list of sent email campaigns by campaign name |
| content_name | string example: content_name=1 díl | Filtering the list of sent email campaigns by email name |
| content_email_subject | string content_email_subject=Květnové novinky z naší firmy | Filtering the list of sent email campaigns by email subject |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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"
}
]
}
Email campaigns that do not use the "Email name" have an empty value in the "content_name" part.
List of campaigns sent after a specific date and time
Allows you to limit the list of sent emails only to those that were sent after a specific date and time. It is a string that matches the ISO 8601 date and time format.
/api/newsletter/newsletters/?sent_after=2020-7-1T09:00:00.00Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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"
}
]
}
Campaign detail and statistics
https://api.onquanda.com/api/newsletter/newsletters/{id}/| URI Parameters | Type | Required | Note |
|---|---|---|---|
| id | integer | false | newsletters/{id} = Campaign ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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"
}
| Attribute | Type | Description |
|---|---|---|
| id | integer | ID |
| created | datetime | Created |
| modified | datetime | Modified |
| started | datetime | Start time |
| resolve_in | integer | Evaluate in |
| resolved | boolean | Evaluated |
| position | integer | Order |
| sent_recipients_count | integer | Number of sent emails |
| delivered_recipients_count | integer | Number of delivered emails |
| not_delivered_recipients_count | integer | Number of undelivered emails |
| recipients_tracked_count_sum | integer | Total number of opened emails |
| tracked_recipients_count | integer | Number of uniquely opened emails |
| delivered_not_tracked_recipients_count | integer | Number of unopened emails |
| recipients_clicked_links_count | integer | Number of unique clicks |
| unsubscribed_recipients_count | integer | Number of unsubscribed recipients |
| url_stats | url | URL address for viewing statistics |
| label | string | Campaign name, Email name |
Email content
https://api.onquanda.com/api/newsletter/newsletters/{id}/content/| URI Parameters | Type | Required | Note |
|---|---|---|---|
| id | integer | true | newsletters/{id} = Campaign ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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/"
}
| Attributes | Type | Required | Read_only | Description | Max-length |
|---|---|---|---|---|---|
| id | integer | false | true | ID | |
| created | datetime | false | true | Created | |
| modified | datetime | false | true | Modified | |
| name | string | true | false | Email name | 255 |
| email_subject | string | true | false | Email subject | |
| email_body_html | string | true | false | Email content in HTML | |
| email_body_plain | string | true | false | Email content as "plain text" | |
| email_footer | string | false | false | Email footer | |
| is_spam | boolean | false | true | SPAM YES / NO | |
| spam_score | float | false | true | Spam score | |
| spam_data | string | false | true | Detailed report on the Spam score | |
| url_public_html_preview | url | false | true | URL address for email preview |
Email campaign type
https://api.onquanda.com/api/newsletter/newsletters/{id}/campaign/| URI Parameters | Type | Required | Note |
|---|---|---|---|
| id | integer | false | Campaign ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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": "..."
}
| Attributes | 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 |
Limitations
The "backward_write_to_erp_enabled" and "crm_activity_metadata" attributes are returned only if the customer's plan allows it.
Simple email campaign
Sending in one step
Sending an email campaign in one step allows quick sending of a prepared simple email campaign. In one step, recipients are set using the provided emails or tags and the send time is entered. Before sending, the email goes through the standard content check and SPAM check. However, test emails are not sent. Therefore we recommend thoroughly testing and configuring everything in advance directly in Quanda.
The campaign send time is not a required value. If the send time is not provided, the email campaign is sent immediately.
https://api.onquanda.com/api/newsletter/campaigns/{campaign_id}/one-step-send/| URI Parameters | Type | Required | Note |
|---|---|---|---|
| campaign_id | integer | true | Simple email campaign ID |
Request(Variant selecting recipients by emails)
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"send_datetime": "20250228T162480.000Z",
"emails": ["example1@example.com", "example2@example.com"]
}
The provided emails are used to look up contacts in Quanda. If found, Recipients of the email campaign are created from the contacts.
Recipients are not created based on the provided email addresses if the provided email address:
- does not exist (is not found among already created contacts),
- is unsubscribed,
- is invalid,
- is blacklisted,
- is not subscribed to the content category selected in the settings of the given email campaign.
Response
200 OK Content-Type: application/json
{
"not_found_emails": ["example2@example.com"]
}
Request(Variant selecting recipients by tags)
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"send_datetime": "20250228T162480.000Z",
"tags": [1, 2],
"tags_behavior": "or" (nebo "and")
}
Response
200 OK Content-Type: application/json
Response when blocked by the plan
403 Not available Content-Type: application/json
"Váš současný tarif nedovoluje vytvářet a odesílat jednoduché e-mailové kampaně pomocí API. Kontaktujte podporu na support@onquanda.com."
Response when the email campaign id is not found
404 Not Found Content-Type: application/json
{
"detail": "Nenalezeno."
}
Response when the selected email campaign has already been sent
400 Bad Request Content-Type: application/json
"E-mailová kampaň již byla odeslaná a není možné ji dále upravovat ani znova odesílat."
Response when the maximum number of inserted email addresses (50 000) is exceeded
400 Bad Request Content-Type: application/json
{
"emails": ["Byl překročen maximální počet vložených e-mailových adres (50 000) na jeden požadavek."]
}
New campaign and email content
https://api.onquanda.com/api/newsletter/campaigns/10/Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"name": "Název kampaně",
"content_category": "d0mtuf",
"language": "cs",
"manager_id": 708,
"assigned_customerusers": [2847,5273],
"template_id": 3636,
"html": "<!DOCTYPE html><html lang=\"cs\"><head><meta charset=\"UTF-8\"><title></title></head><body><p>Pokud nechcete dostávat další e-maily, snadno můžete jejich zasílání <a href=\"{{ unsubscribe_link }}\">úplně zrušit</a>.</p></body></html>",
"email_subject": "Předmět kampaně",
"sender_type": 10,
"sender_id": 493,
"custom_template_variables": {
"key_1": "value_1",
"key_2": "value_2",
"key_3": "value_3"
}
}
Email content using a saved template or custom HTML
Quanda allows you to create email content using a template saved in your account or using custom HTML. If you want to create email content using your own template, use the "template_id" parameter in the API call, specifying the id of the template you want to use.
If you want to create email content using custom HTML, use the „html“ parameter in the API call and attach the complete HTML code of the email.
Important notice: In order to send an email using custom HTML code, it must contain the unsubscribe tag {{ unsubscribe_link }}, for example in the form:
<p style="margin:0; font-family:Arial,Helvetica,sans-serif; font-size:11px; color:#ffffff; line-height:18px; mso-line-height-rule:exactly; text-align:center;">
Pokud už nechcete dostávat tyto e-maily, můžete
<a href="{{ unsubscribe_link }}" style="color:#ffffff; text-decoration:underline;">zrušit jejich odběr</a>.
</p>
Custom template content defined using inserted tags
In order to insert into the chosen template, according to "template_id", the html content sent via the API request in "custom_template_variables", the template must contain the tags {{ key_1 }}, {{ key_2 }} etc. These tags are then replaced in the email template by the content sent via "value_1", "value_2" etc.
Example of a tag and value
The "key_1" in the tag {{ key_1 }} can be replaced with a custom value. Using "value_1" we then insert, for example, text into the email. The resulting format will be:
{
"name": "Název kampaně",
"content_category": "d0mtuf",
"language": "cs",
"manager_id": 708,
"assigned_customerusers": [2847,5273],
"template_id": 3636,
"html": "",
"email_subject": "Předmět kampaně",
"sender_type": 10,
"sender_id": 493,
"custom_template_variables": {
"email_body_text_1": "Text, který se vloží do e-mailu na místo uvedené značky"
}
}
In this way you can insert into the email template:
- texts,
- links or parts of them,
- images and their names.
How to proceed?
- Create a new email.
- Into the places in the email that should be replaced with content sent via the API, insert the appropriate tags. Name the tags as needed. For example {{ nadpis_1 }}, {{ text_1 }}, {{ url_obrazku_1 }}, {{ url_odkazu_obrazku_1 }} etc.
- Always follow the correct tag format in the form: {{ ... }}.
- You can format and align text tags according to the requirements for the resulting format, color and placement.
- Save the email as a new template.
- In the template overview, hovering over a given template reveals its ID.
- Send an API request that will contain the individual tags (the tags in the API request must match those you have placed in the email template) and their content.
- Send a test email manually or via the API and verify that everything displays correctly. If not, check whether the tags match the API request and are part of the email template. If you are not sure what to do, write to us at email: support@onquanda.com.
Example of an email template with tags
In the email template, set rows and columns according to the desired final format of the email. You can combine images, text, other content, system tags and your own custom tags.

Response
201 Created Content-Type: application/json
{
"id": 89432,
"name": "Název kampaně",
"content_category": "d0mtuf",
"manager_id": 708,
"language": "cs",
"assigned_customerusers": [
2847,
5273
],
"sender_type": 10,
"sender_id": 493,
"reply_to_id": null
}
Response when blocked by the plan
403 Not available Content-Type: application/json
"Váš současný tarif nedovoluje vytvářet a odesílat jednoduché e-mailové kampaně pomocí API. Kontaktujte podporu na support@onquanda.com."
Response in case of HTML content validation error
400 Bad Request Content-Type: application/json
"Vložený HTML kód obsahuje chyby a proto z něj není možné vytvořit validní e-mail. Zkontrolujte vložené HTML, najděte chyby a opravte je. Pokud si nevíte rady využijte pro opravu nalezení a opravu chyb například Claude Code AI."
Response when the content category id does not exist
400 Bad Request Content-Type: application/json
"Objekt s identifier=d0mtuf neexistuje."
Response when the campaign manager id does not exist, the collaborator id does not exist, or the sender id does not exist
400 Bad Request Content-Type: application/json
"Chybný primární klíč \"7080\" - objekt neexistuje."
Response when the email template id was not found
400 Bad Request Content-Type: application/json
"ID e-mailové šablony nebylo nalezeno."
Response when the email campaign type id is provided incorrectly
400 Bad Request Content-Type: application/json
"\"323\" není platnou možností."
Edit email content
Applies only to a simple email campaign.
https://api.onquanda.com/api/newsletter/campaigns/{campaign_id}/content/| URI Parameters | Type | Required | Note |
|---|---|---|---|
| {campaign_id} | integer | true | {campaign_id} = Campaign ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"html": "<!DOCTYPE html><html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\"><head><meta charset=\"UTF-8\"><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"x-apple-disable-message-reformatting\"><meta name=\"color-scheme\" content=\"light dark\"><meta name=\"supported-color-schemes\" content=\"light dark\"><title>Quanda pro neziskové organizace</title><!--[if gte mso 15]><xml><o:OfficeDocumentSettings><o:AllowPNG/><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml><![endif]--><style>:root { color-scheme: light dark; } body, table, td, a { -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } table, td { mso-table-lspace: 0pt; mso-table-rspace: 0pt; } img { -ms-interpolation-mode: bicubic; border: 0; height: auto; line-height: 100%; outline: none; text-decoration: none; }...",
"email_subject": "Nový předmět kampaně"
}
Important notice:
In order to send an email using custom HTML code, it must contain the unsubscribe tag {{ unsubscribe_link }}, for example in the form:
<p style="margin:0; font-family:Arial,Helvetica,sans-serif; font-size:11px; color:#ffffff; line-height:18px; mso-line-height-rule:exactly; text-align:center;">
Pokud už nechcete dostávat tyto e-maily, můžete
<a href="{{ unsubscribe_link }}" style="color:#ffffff; text-decoration:underline;">zrušit jejich odběr</a>.
</p>
Response
200 OK Content-Type: application/json
Response in case of HTML content validation error
400 Bad Request Content-Type: application/json
"Vložený HTML kód obsahuje chyby a proto z něj není možné vytvořit validní e-mail. Zkontrolujte vložené HTML, najděte chyby a opravte je. Pokud si nevíte rady využijte pro opravu nalezení a opravu chyb například Claude Code AI."
Response when blocked by the plan
403 Not available Content-Type: application/json
"Váš současný tarif nedovoluje vytvářet a odesílat jednoduché e-mailové kampaně pomocí API. Kontaktujte podporu na support@onquanda.com."
Response when it is not a simple email campaign
404 Not Found Content-Type: application/json
"Nenalezeno."
Response when the specified campaign has already been sent
400 Bad Request Content-Type: application/json
"E-mailová kampaň již byla odeslána. Není možné ji upravovat."
Recipients
https://api.onquanda.com/api/newsletter/campaigns/{campaign_id}/add-contacts/Recipients can be selected using enumerated email addresses or using tags. The two methods cannot be combined with each other.
Request(Variant selecting recipients by emails)
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"emails": ["example1@example.com", "example2@example.com"]
}
The provided emails are used to look up contacts in Quanda. If found, Recipients of the email campaign are created from the contacts.
Recipients are not created based on the provided email addresses if the provided email address:
- does not exist (is not found among already created contacts),
- is unsubscribed,
- is invalid,
- is blacklisted,
- is not subscribed to the content category selected in the settings of the given email campaign.
Response
200 OK Content-Type: application/json
{
"not_found_emails": ["example2@example.com"]
}
Request(Variant selecting recipients by tags)
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"tags": [1, 2],
"tags_behavior": "or" (nebo "and")
}
Response
200 OK Content-Type: application/json
Response when blocked by the plan
403 Not available Content-Type: application/json
"Váš současný tarif nedovoluje vytvářet a odesílat jednoduché e-mailové kampaně pomocí API. Kontaktujte podporu na support@onquanda.com."
Response when the email campaign id is not found
404 Not Found Content-Type: application/json
{
"detail": "Nenalezeno."
}
Response when an incorrect email campaign type is selected
400 Bad Request Content-Type: application/json
"Přidávání příjemců pomocí e-mailových adres nebo štíků je podporováno pouze pro jednouché e-mailové kamapně. Zvolené id kampaně odpovídá jinému typu e-mailové kampaně."
Response when the selected email campaign has already been sent
400 Bad Request Content-Type: application/json
"Do této e-mailové kampaně není možné přidat příjemce. E-mailová kampaň již byla odeslaná a není možné ji dále upravovat."
Response when the maximum number of inserted email addresses (50 000) per request is exceeded
400 Bad Request Content-Type: application/json
{
"emails": ["Byl překročen maximální počet vložených e-mailových adres (50 000) na jeden požadavek."]
}
Sending test emails
https://api.onquanda.com/api/newsletter/campaigns/{campaign_id}/send-test/Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"emails": ["example1@example.com", "example2@example.com"]
}
Response
200 OK Content-Type: application/json
Response when blocked by the plan
403 Not available Content-Type: application/json
"Váš současný tarif nedovoluje vytvářet a odesílat jednoduché e-mailové kampaně pomocí API. Kontaktujte podporu na support@onquanda.com."
Response when the total limit for the number of sent test emails is exceeded
403 Not available Content-Type: application/json
"Váš limit pro počet odeslaných testovacích e-mailů byl překročen. Kontaktujte podporu na support@onquanda.com."
Response when the specified email campaign was not found
404 Not Found Content-Type: application/json
Response when the format of the email address to which the test email should be sent is incorrect
400 Bad Request Content-Type: application/json
{
"emails": [
"Vložte platnou e-mailovou adresu."
]
}
Response when the limit for the number of entered email addresses to which the test email should be sent is exceeded
400 Bad Request Content-Type: application/json
"Byl překročen maximální počet (3) zadaných e-mailových adres pro odeslání testovacího e-mailu."
Response when the email did not pass the content check
400 Bad Request Content-Type: application/json
{
"Nepovolená slova nebo slovní spojení": [
"Moneta"
],
"Nepovolené domény nebo url adresy": []
}
Response when the email campaign has no recipients selected
400 Bad Request Content-Type: application/json
"Testovací e-mail není možné odeslat. E-mailová kampaň nemá vybrané žádné příjemce."
Sending the campaign
https://api.onquanda.com/api/newsletter/campaigns/{campaign_id}/send/Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"send_datetime": "20250228T162480.000Z"
}
Response
200 OK Content-Type: application/json
Response when blocked by the plan
403 Not available Content-Type: application/json
"Váš současný tarif nedovoluje vytvářet a odesílat jednoduché e-mailové kampaně pomocí API. Kontaktujte podporu na support@onquanda.com."
Response when the email campaign id is not found
404 Not Found Content-Type: application/json
{
"detail": "Nenalezeno."
}
Response when the selected email campaign has already been sent
400 Bad Request Content-Type: application/json
"E-mailová kampaň již byla odeslaná a není možné ji dále upravovat ani znova odesílat."
Transactional emails
Sending a transactional email
https://api.onquanda.com/api/newsletter/campaign/{transactional_campaign_id}/add-contact/{contact_id}/| URI Parameters | Type | Required | Note |
|---|---|---|---|
| transactional_campaign_id | integer | true | Transactional email ID |
| contact_id | integer | true | Contact ID |
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"],
"custom_template_variables": {
"key_1": "value_1",
"key_2": "value_2",
"key_3": "value_3"
}
}
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"
},
"attachments": {
"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"
},
"custom_template_variables": {
"type": "collection",
"required": false,
"read_only": false,
"label": "Proměnné šablony",
"help": "Vlastní proměnné pro šablonu e-mailu ve formátu klíč–hodnota",
"spec": [
{
"name": "key_1",
"type": "string",
"label": "Klíč 1"
},
{
"name": "key_2",
"type": "string",
"label": "Klíč 2"
},
{
"name": "key_3",
"type": "string",
"label": "Klíč 3"
}
]
}
}
Allowed attachment types
doc, docx, xls, xlsx, ppt, pptx, jpeg, jpg, gif, png, bmp and pdf
Maximum attachment size
20MB
Custom template content defined using inserted tags
Define key-value pairs to replace custom tags in the email template. The key must match the name of the tag used in the email template (e.g. the key 'order_number' replaces the tag {{ order_number }} in the email template).
In order to insert into the chosen template, according to "template_id", the html content sent via the API request in "custom_template_variables", the email template must contain the tags {{ key_1 }}, {{ key_2 }} etc. These tags are then replaced in the email template by the content sent via "value_1", "value_2" etc.
Response
201 Created Content-Type: application/json
Response in case of a disallowed attachment type
400 Bad Request Content-Type: application/json
{
"attachments": [
"Příloha typu .exe není povolena"
]
}
Response in case of an invalid url or a non-existent file at the given 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"
}
Response when the campaign ID or contact ID does not exist
404 Not Found Content-Type: application/json
{
"detail": "Nenalezeno."
}
Sending a transactional email with a survey invitation with prefilled answers
- The transactional email being sent must contain a link to the survey.
- The individual IDs of questions and answers can be obtained using a separate API query described in the Surveys section.
- Prefilled answers cannot be further edited in the survey.
- If an answer is not prefilled, the respondent can select it.
https://api.onquanda.com/api/newsletter/campaign/{transactional_campaign_id}/add-contact/{contact_id}/| URI Parameters | Type | Required | Note |
|---|---|---|---|
| transactional_campaign_id | integer | true | Transactional email ID |
| contact_id | integer | true | Contact ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"survey_data": {
"question_answers": [
{
"_comment": "Krátký text",
"question_id": 58888,
"answer": "Ahoj"
},
{
"_comment": "Delší text",
"question_id": 58889,
"answer": "Dodnes je to druhé nejprodávanější album v historii. Ale vznikalo ve velkých bolestech po smrti zpěváka AC/DC. Ostatní chtěli kapelu rozpustit, nakonec nahráli album, ze kterého temné pocity přímo kapou. Back in Black se navždy zapsalo do uší a srdcí posluchačů."
},
{
"_comment": "Text (více řádků)",
"question_id": 58890,
"subquestion_answers": [
{
"subquestion_id": 1654,
"answer": "Kšiltovka"
},
{
"subquestion_id": 1655,
"answer": "Černé"
},
{
"subquestion_id": 1656,
"answer": "Zimní"
}
]
},
{
"_comment": "Datum",
"question_id": 58891,
"answer": "2025-07-25"
},
{
"_comment": "Datum (více řádků)",
"question_id": 58892,
"subquestion_answers": [
{
"subquestion_id": 145,
"answer": "2025-07-01"
},
{
"subquestion_id": 146,
"answer": "2025-07-02"
},
{
"subquestion_id": 147,
"answer": "2025-07-03"
}
]
},
{
"_comment": "Číslo",
"question_id": 58893,
"answer": "100"
},
{
"_comment": "Číslo (více řádků)",
"question_id": 58894,
"subquestion_answers": [
{
"subquestion_id": 2015,
"answer": "101"
},
{
"subquestion_id": 2016,
"answer": "102"
},
{
"subquestion_id": 2017,
"answer": "103"
}
]
},
{
"_comment": "Jedna odpověď",
"question_id": 58895,
"option_id": 46813
},
{
"_comment": "Více odpovědí",
"question_id": 58896,
"option_id": 31734
},
{
"question_id": 58896,
"option_id": 31736
},
{
"question_id": 58896,
"option_id": 31738
},
{
"_comment": "Rozbalovací menu",
"question_id": 58897,
"option_id": 16164
},
{
"_comment": "Škála spokojenosti",
"question_id": 58898,
"subquestion_answers": [
{
"subquestion_id": 29,
"option_id": 69
}
]
},
{
"_comment": "Škála souhlasu",
"question_id": 58899,
"subquestion_answers": [
{
"subquestion_id": 19,
"option_id": 31
}
]
},
{
"_comment": "% škála - předvyplněná hodnota 80 %",
"question_id": 58900,
"subquestion_answers": [
{
"subquestion_id": 15,
"answer": 80
}
]
},
{
"_comment": "Hvězdičkové hodnocení",
"question_id": 58901,
"subquestion_answers": [
{
"subquestion_id": 48,
"option_id": 370
}
]
},
{
"_comment": "Smajlíkové hodnocení",
"question_id": 58902,
"subquestion_answers": [
{
"subquestion_id": 39,
"option_id": 143
}
]
},
{
"_comment": "Škála postojů - předvyplněné hodnoty dle řádků jsou -2, 3 a -3",
"question_id": 58903,
"subquestion_answers": [
{
"subquestion_id": 11,
"answer": -2
},
{
"subquestion_id": 12,
"answer": 3
},
{
"subquestion_id": 13,
"answer": -3
}
]
},
{
"_comment": "NPS - Net promoter Score",
"question_id": 58904,
"subquestion_answers": [
{
"subquestion_id": 112,
"option_id": 1227
}
]
},
{
"_comment": "Tabulka (jedna odpověď)",
"question_id": 58905,
"subquestion_answers": [
{
"subquestion_id": 5320,
"option_id": 4005
},
{
"subquestion_id": 5321,
"option_id": 4007
}
]
},
{
"_comment": "Tabulka (více odpověďí)",
"question_id": 58906,
"subquestion_answers": [
{
"subquestion_id": 5434,
"option_id": 3938
},
{
"subquestion_id": 5435,
"option_id": 3937
}
]
},
{
"_comment": "Vytvořit kontakt",
"question_id": 58907,
"subquestion_answers": [
{
"subquestion_id": 52,
"answer": "Jan"
},
{
"subquestion_id": 53,
"answer": "Spáčil"
},
{
"subquestion_id": 54,
"answer": "spacil+1@quanda.com"
}
]
}
]
}
}
Note
In addition to prefilled answers, the Body can also contain the "send_anyway" and "attachments" items.
Response
201 Created Content-Type: application/json
Response when the campaign ID or contact ID does not exist
404 Not Found Content-Type: application/json
{
"detail": "Nenalezeno."
}
Email recipients
List of recipients
The list of recipients can be filtered using the parameters listed below.
https://api.onquanda.com/api/newsletter/newsletters/{id}/recipients/| URI Parameters | Type | Required | Note |
|---|---|---|---|
| id | integer | false | newsletters/{id} = Campaign ID |
https://api.onquanda.com/api/newsletter/newsletters/{id}/recipients/?message_id={id}| Query Parameters | Type | Required | Example | Note |
|---|---|---|---|---|
| message_id | integer | false | message_id=805501 | The ID of a specific email. For example, for a transactional email it returns a specific recipient. A call without this parameter returns a list of all recipients to whom the given transactional email was sent. |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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"
}
]
}
Recipient detail and statistics
https://api.onquanda.com/api/newsletter/newsletters/{newsletters_id}/recipients/{recipient_id}/| URI Parameters | Type | Required | Note |
|---|---|---|---|
| newsletters_id | integer | false | ID of the sent email |
| recipient_id | integer | false | Recipient ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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)"
}
Surveys
List of surveys
https://api.onquanda.com/api/survey/surveys/Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
200 OK Content-Type: application/json
{
"count": 5,
"next": null,
"previous": null,
"results": [
{
"id": 32505
},
{
"id": 74913
},
{
"id": 6260
},
{
"id": 8852
},
{
"id": 21373
}
]
}
Survey detail
https://api.onquanda.com/api/survey/surveys/{id}/| URI Parameters | Type | Required | Note |
|---|---|---|---|
| id | integer | false | Survey ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
200 OK Content-Type: application/json
{
"id": 32505,
"name": "Trendy e-mail marketingu 2017"
}
List of survey respondents
Every sent and saved survey has an assigned respondent. The Respondent ID does not correspond to the Contact ID. To find the contact that corresponds to the Respondent ID, a separate API call is required. The Contact ID for a saved survey is available only if the contact who filled in the survey was successfully identified. Contact identification occurs only if this contact entered the survey by clicking through an email invitation sent from Quanda.
https://api.onquanda.com/api/survey/surveys/{id}/respondents/| URI Parameters | Type | Required | Note |
|---|---|---|---|
| id | integer | false | surveys/{id} = Survey ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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 of a completed survey
If the survey uses a question of type Table (one answer) or Table (multiple answers), the resulting json uses "subtitle", which corresponds to the "Answer row name" item when entering the question.
https://api.onquanda.com/api/survey/surveys/{survey_id}/respondents/{respondent_id}/| URI Parameters | Type | Required | Note |
|---|---|---|---|
| survey_id | integer | false | Survey ID |
| respondent_id | integer | false | Respondent ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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
}
]
}
Survey structure
https://api.onquanda.com/api/survey/surveys/{survey_id}/questions/| URI Parameters | Type | Required | Note |
|---|---|---|---|
| survey_id | integer | true | Survey ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
200 OK Content-Type: application/json
[
{
"id": 58888,
"type": 1,
"text": "Krátký text",
"questions": [],
"question_answer_options": [],
"question_metadata": {}
},
{
"id": 58889,
"type": 2,
"text": "Delší text",
"questions": [],
"question_answer_options": [],
"question_metadata": {}
},
{
"id": 58890,
"type": 3,
"text": "Text (více řádků)",
"questions": [
{
"id": 1654,
"text": "Čepice"
},
{
"id": 1655,
"text": "Kalhoty"
},
{
"id": 1656,
"text": "Bunda"
}
],
"question_answer_options": [],
"question_metadata": {}
},
{
"id": 58891,
"type": 6,
"text": "Datum",
"questions": [],
"question_answer_options": [],
"question_metadata": {}
},
{
"id": 58892,
"type": 7,
"text": "Datum (více řádků)",
"questions": [
{
"id": 145,
"text": "První termín"
},
{
"id": 146,
"text": "Druhý termín"
},
{
"id": 147,
"text": "Třetí termín"
}
],
"question_answer_options": [],
"question_metadata": {
"input_type": "only_date"
}
},
{
"id": 58893,
"type": 4,
"text": "Číslo",
"questions": [],
"question_answer_options": [],
"question_metadata": {
"max": 100.0,
"min": 10.0,
"decimal_places": 1
}
},
{
"id": 58894,
"type": 5,
"text": "Číslo (více řádků)",
"questions": [
{
"id": 2015,
"text": "Hmotnost 1"
},
{
"id": 2016,
"text": "Hmotnost 2"
},
{
"id": 2017,
"text": "Hmotnost 3"
}
],
"question_answer_options": [],
"question_metadata": {
"min": 10,
"max": 100,
"sum": 100,
"sum_is_checked": true
}
},
{
"id": 58895,
"type": 9,
"text": "Jedna odpověď",
"questions": [],
"question_answer_options": [
{
"id": 46812,
"text": "modrá"
},
{
"id": 46813,
"text": "zelená"
},
{
"id": 46814,
"text": "červená"
},
{
"id": 46815,
"text": "žlutá"
},
{
"id": 46816,
"text": "fialová"
},
{
"id": 46817,
"text": "šedá"
}
],
"question_metadata": {}
},
{
"id": 58896,
"type": 10,
"text": "Více odpovědí",
"questions": [],
"question_answer_options": [
{
"id": 31734,
"text": "Banán"
},
{
"id": 31735,
"text": "Jablko"
},
{
"id": 31736,
"text": "Hruška"
},
{
"id": 31737,
"text": "Broskev"
},
{
"id": 31738,
"text": "Meruňka"
}
],
"question_metadata": {
"max_checked_options": null
}
},
{
"id": 58897,
"type": 8,
"text": "Rozbalovací menu",
"questions": [],
"question_answer_options": [
{
"id": 16162,
"text": "Škoda"
},
{
"id": 16163,
"text": "BMW"
},
{
"id": 16164,
"text": "Mercedes"
},
{
"id": 16165,
"text": "Peugeot"
},
{
"id": 16166,
"text": "Opel"
}
],
"question_metadata": {}
},
{
"id": 58898,
"type": 12,
"text": "Škála spokojenosti",
"questions": [
{
"id": 29,
"text": "Rychlost"
},
{
"id": 43,
"text": "Komunikace"
},
{
"id": 44,
"text": "Kompetentnost"
}
],
"question_answer_options": [
{
"id": 66,
"text": "Velmi nespokojen"
},
{
"id": 67,
"text": "Spíše nespokojen"
},
{
"id": 68,
"text": "Něco mezi"
},
{
"id": 69,
"text": "Spíše spokojen"
},
{
"id": 70,
"text": "Velmi spokojen"
}
],
"question_metadata": {}
},
{
"id": 58899,
"type": 12,
"text": "Škála souhlasu?",
"questions": [
{
"id": 19,
"text": "Vaše hodnocení"
}
],
"question_answer_options": [
{
"id": 31,
"text": "Rozhodně nesouhlasím"
},
{
"id": 32,
"text": "Spíše nesouhlasím"
},
{
"id": 33,
"text": "Něco mezi"
},
{
"id": 34,
"text": "Spíše souhlasím"
},
{
"id": 35,
"text": "Rozhodně souhlasím"
}
],
"question_metadata": {}
},
{
"id": 58900,
"type": 11,
"text": "% škála",
"questions": [
{
"id": 15,
"text": "Vaše hodnocení"
}
],
"question_answer_options": [],
"question_metadata": {
"range_start": 0,
"range_end": 100,
"range_step": 10
}
},
{
"id": 58901,
"type": 11,
"text": "Hvězdičkové hodnocení",
"questions": [
{
"id": 48,
"text": "Rychlost"
},
{
"id": 80,
"text": "Komunikace"
}
],
"question_answer_options": [
{
"id": 367,
"text": "Bez hodnocení"
},
{
"id": 368,
"text": "1"
},
{
"id": 369,
"text": "2"
},
{
"id": 370,
"text": "3"
},
{
"id": 371,
"text": "4"
},
{
"id": 372,
"text": "5"
}
],
"question_metadata": {}
},
{
"id": 58902,
"type": 11,
"text": "Smajlíkové hodnocení",
"questions": [
{
"id": 39,
"text": "Design"
},
{
"id": 80,
"text": "Kvalita"
}
],
"question_answer_options": [
{
"id": 139,
"text": "Bez hodnocení"
},
{
"id": 140,
"text": "1"
},
{
"id": 141,
"text": "2"
},
{
"id": 142,
"text": "3"
},
{
"id": 143,
"text": "4"
},
{
"id": 144,
"text": "5"
}
],
"question_metadata": {}
},
{
"id": 58903,
"type": 11,
"text": "Škála postojů",
"questions": [
{
"id": 11,
"text": "Pomalý - Rychlý"
},
{
"id": 12,
"text": "Špinavý - Čistý"
},
{
"id": 13,
"text": "Malý - Velký"
}
],
"question_answer_options": [],
"question_metadata": {
"range_start": -3,
"range_end": 3,
"range_step": 1
}
},
{
"id": 58904,
"type": 16,
"text": "NPS skóre",
"questions": [
{
"id": 112,
"text": "odpoved"
}
],
"question_answer_options": [
{
"id": 1222,
"text": "0"
},
{
"id": 1223,
"text": "1"
},
{
"id": 1224,
"text": "2"
},
{
"id": 1225,
"text": "3"
},
{
"id": 1226,
"text": "4"
},
{
"id": 1227,
"text": "5"
},
{
"id": 1228,
"text": "6"
},
{
"id": 1229,
"text": "7"
},
{
"id": 1230,
"text": "8"
},
{
"id": 1231,
"text": "9"
},
{
"id": 1232,
"text": "10"
}
],
"question_metadata": {}
},
{
"id": 58905,
"type": 12,
"text": "Tabulka (jedna odpověď)",
"questions": [
{
"id": 5320,
"text": "Paprika"
},
{
"id": 5321,
"text": "Mrkev"
}
],
"question_answer_options": [
{
"id": 4005,
"text": "Ano"
},
{
"id": 4006,
"text": "Nevim"
},
{
"id": 4007,
"text": "Ne"
}
],
"question_metadata": {}
},
{
"id": 58906,
"type": 13,
"text": "Tabulka (více odpovědí)",
"questions": [
{
"id": 5434,
"text": "Auto"
},
{
"id": 5435,
"text": "Autobus"
}
],
"question_answer_options": [
{
"id": 3937,
"text": "Ano"
},
{
"id": 3938,
"text": "Nevím"
},
{
"id": 3939,
"text": "Ne"
}
],
"question_metadata": {}
},
{
"id": 58907,
"type": 7,
"text": "Vytvořit kontakt",
"questions": [
{
"id": 52,
"text": "Jméno"
},
{
"id": 53,
"text": "Příjmení"
},
{
"id": 54,
"text": "E-mail"
},
{
"id": 55,
"text": "Pohlaví"
}
],
"question_answer_options": [],
"question_metadata": {}
}
]
Users
List of users
https://api.onquanda.com/api/customer/users/Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
200 OK Content-Type: application/json
{
"count": 3,
"next": null,
"previous": null,
"results": [
{
"id": 2847,
"email": "uzivatel_1@firma.cz",
"verified_email": true
},
{
"id": 6197,
"email": "uzivatel_2@firma.cz",
"verified_email": false
},
{
"id": 6121,
"email": "uzivatel_3@firma.cz",
"verified_email": false
}
]
}
Webhooks
A webhook is a tool for sending notifications about changes in Quanda to an external system via the HTTP protocol. Notifications are sent as POST requests to the chosen URL addresses.
Each webhook has the following properties set: url, event and optionally filters. When an event occurs in Quanda, all filters set in filters are evaluated against the input object. If all filter conditions are met, the webhook is sent to the specified URL.
Response
The response must be the HTTP code 200 OK.
Otherwise the call is repeated up to 5 times in sequence:
- 1st attempt: 30 s
- 2nd attempt: 300 s (5 minutes)
- 3rd attempt: 3000 s (50 minutes)
- 4th attempt: 30000 s (8:20 hours)
- 5th attempt: 300000 s (3.5 days)
List of webhooks
https://api.onquanda.com/api/webhook/webhooks/Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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": {}
}
]
}
Email sent
New webhook
https://api.onquanda.com/api/webhook/webhooks/The event newsletter_newsletter_sent occurs after all emails from the dispatch have been successfully sent to the email server. Two types of filters can be specified for this event:
| Filter | Type | Example | Description |
|---|---|---|---|
| contacts.tag.id | integer | { "contacts.tag.id": integer, } | Filters events only to those where the object has a link to at least one contact with a tag whose id is specified by the key value. |
| contacts.tag.name | string | { "contacts.tag.name": string, } | Filters events only to those where the object has a link to at least one contact with a tag whose name is specified by the key value. |
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"
}
}
Response
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": {}
}
Structure sent to the webhook url after an email is sent
Example
{
"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" is the ID of the email campaign. It can include multiple dispatches under separate "message id"s. For example, the "newsletter id" for a transactional email is always the same. However, each individual sent email has its own "message id". Thus, under a single "newsletter id" there can be several dozen or hundreds of "message id"s. A simple email campaign, on the other hand, contains only one "message id" for one "newsletter id".
Webhook detail
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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": {}
}
Edit webhook
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
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"
}
}
Response
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"
}
}
Delete webhook
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
204 No Content Content-Type: application/json
Recipient status change
New webhook
https://api.onquanda.com/api/webhook/webhooks/For the event newsletter_recipient_updated one filter can be specified:
| Filter | Type | Example | Description |
|---|---|---|---|
| campaign.type | choice | { "campaign.type": 70, } | Filters events only to the email campaign type according to the following enumeration: 10 = Simple, 20 = Logic, 30 = Email series, 40 = Birthday, 50 = Anniversaries and holidays, 60 = A / B testing, 70 = Transactional. |
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"
}
}
Response
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": {}
}
Structure sent to the webhook url after a recipient status change
Example webhook structure after an email is sent
{
"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
}
}
The values for the status field are:
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)
Example webhook structure when an open is recorded
{
"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
}
}
Example webhook structure on repeated email open
{
"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
}
}
Example webhook structure when a click is recorded
{
"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
}
}
Webhook detail
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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": {}
}
Edit webhook
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
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}
}
Response
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
}
}
Delete webhook
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
204 No Content Content-Type: application/json
Link click in an email
New webhook
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"
}
}
Response
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": {}
}
Structure sent to the webhook url after a click on a link in an email
Example
{
"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"
}
Webhook detail
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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": {}
}
Edit webhook
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"url": "URL pro zasílání webhooku",
"event": "recipient_clicked",
}
Response
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": {}
}
Delete webhook
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
204 No Content Content-Type: application/json
Email open
New webhook
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"
}
}
Response
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": {}
}
Structure sent to the webhook url after an email is opened
Example
{
"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"
}
Webhook detail
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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": {}
}
Edit webhook
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"url": "URL pro zasílání webhooku",
"event": "recipient_opened",
}
Response
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": {}
}
Delete webhook
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
204 No Content Content-Type: application/json
Unsubscribe
New webhook
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"
}
}
Response
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": {}
}
Structure sent to the webhook url after a recipient unsubscribes
Example
{
"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"
}
Webhook detail
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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": {}
}
Edit webhook
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"url": "URL pro zasílání webhooku",
"event": "recipient_unsubscribe",
}
Response
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": {}
}
Delete webhook
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
204 No Content Content-Type: application/json
Completed survey saved
New webhook
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"
}
}
Response
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": {}
}
Structure sent to the webhook url when a completed survey is saved
Example
{
"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"
}
Webhook detail
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
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": {}
}
Edit webhook
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Body
{
"url": "URL pro zasílání webhooku",
"event": "questionnaire_sent",
}
Response
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": {}
}
Delete webhook
https://api.onquanda.com/api/webhook/webhooks/{id}/| URI Parameters | Type | Required | Read_only | Name | Note |
|---|---|---|---|---|---|
| id | integer | false | true | ID | Webhook ID |
Request
Headers
{
"content-type": "application/json",
"authorization": "Token 7654gftr43er56ttzhba7634kajrnvd4"
}
Response
204 No Content Content-Type: application/json