PHP (Guzzle) PHP (cURL) cURL JavaScript Python

Вступ

Π¦Π΅ сторінка Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†Ρ–Ρ— API KWIGA. Π—Π° допомогою Ρ†ΡŒΠΎΠ³ΠΎ API Π²ΠΈ ΠΌΠ°Ρ”Ρ‚Π΅ ΠΌΠΎΠΆΠ»ΠΈΠ²Ρ–ΡΡ‚ΡŒ Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ дСякі Π΄Ρ–Ρ— Π²Ρ–Π΄ свого Ρ–ΠΌΠ΅Π½Ρ– Π² ΠΏΠ΅Π²Π½ΠΈΡ… ΠΊΠ°Π±Ρ–Π½Π΅Ρ‚Π°Ρ….

Для Ρ‚ΠΎΠ³ΠΎ Ρ‰ΠΎΠ± ΡƒΠ²Ρ–ΠΌΠΊΠ½ΡƒΡ‚ΠΈ API, Π² особистому ΠΊΠ°Π±Ρ–Π½Π΅Ρ‚Ρ– Π² Ρ€ΠΎΠ·Π΄Ρ–Π»Ρ– settings ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ Π²Ρ–Π΄ΠΌΡ–Ρ‚ΠΈΡ‚ΠΈ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π½ΠΈΠΉ чСкбокс. ΠŸΡ–ΡΠ»Ρ Ρ†ΡŒΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅ Π·Π³Π΅Π½Π΅Ρ€ΠΎΠ²Π°Π½ΠΈΠΉ Ρ‚ΠΎΠΊΠ΅Π½ для API Ρ‚Π° ΠΎΡ‚Ρ€ΠΈΠΌΠ°Π½ΠΈΠΉ Ρ…Π΅Ρˆ ΠΊΠ°Π±Ρ–Π½Π΅Ρ‚Ρƒ, які ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½Ρ– для ΠΏΠΎΠ΄Π°Π»ΡŒΡˆΠΈΡ… Π·Π²Π΅Ρ€Π½Π΅Π½ΡŒ Π΄ΠΎ API.

ΠŸΡ€ΠΈ ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°Ρ†Ρ–Ρ— Ρ‚ΠΎΠΊΠ΅Π½Π° ΠΉΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½Π° пСрСвипустити, Ρ‰ΠΎ Π·Ρ€ΠΎΠ±ΠΈΡ‚ΡŒ ΠΌΠΈΠ½ΡƒΠ»ΠΈΠΉ Ρ‚ΠΎΠΊΠ΅Π½ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΠΌ Ρ– Π·Π³Π΅Π½Π΅Ρ€ΡƒΡ” Π½ΠΎΠ²ΠΈΠΉ.

API доступний Ρ‚Ρ–Π»ΡŒΠΊΠΈ для Ρ‚ΠΈΡ… користувачів, Ρƒ ΠΊΠΎΠ³ΠΎ Π² ΠΊΠ°Π±Ρ–Π½Π΅Ρ‚Ρ– Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ API.

API ΠΌΠ°Ρ” обмСТСння Π½Π° ΠΊΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ Π·Π²Π΅Ρ€Π½Π΅Π½ΡŒ 200 Π·Π°ΠΏΠΈΡ‚Ρ–Π² Π½Π° Ρ…Π²ΠΈΠ»ΠΈΠ½Ρƒ.

Π‘Π°Π·ΠΎΠ²Π° Ρ€ΠΎΠ±ΠΎΡ‚Π° Π· API

<?php
// Get contact by ID

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/contacts/{id}', $options);

$result = json_decode($response->getBody());
?>
<?php
// Get contact by ID

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/contacts/{id}');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request GET 'https://api.kwiga.com/contacts/{id}' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'
// Get contact by ID
const url = 'https://api.kwiga.com/contacts/{id}';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Get contact by ID
import requests

url = 'https://api.kwiga.com/contacts/{id}'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()

Всі Π·Π°ΠΏΠΈΡ‚ΠΈ ΠΏΠΎΠ²ΠΈΠ½Π½Ρ– надсилатися Π½Π° Π΄ΠΎΠΌΠ΅Π½:

https://api.kwiga.com

Для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†Ρ–Ρ— ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ”ΠΌΠΎ API-Ρ‚ΠΎΠΊΠ΅Π½ Π² ΠΎΠ΄Π½ΠΎΠΌΡƒ Π· Π²Π°Ρ€Ρ–Π°Π½Ρ‚Ρ–Π²:

Для Ρ–Π΄Π΅Π½Ρ‚ΠΈΡ„Ρ–ΠΊΠ°Ρ†Ρ–Ρ— ΠΊΠ°Π±Ρ–Π½Π΅Ρ‚Ρƒ, Π² якому Π²Ρ–Π΄Π±ΡƒΠ²Π°ΡŽΡ‚ΡŒΡΡ Π΄Ρ–Ρ—, ΠΎΠ±ΠΎΠ²'язково ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ”ΠΌΠΎ Ρ…Π΅Ρˆ-ΠΊΠ°Π±Ρ–Π½Π΅Ρ‚Ρƒ Π² ΠΎΠ΄Π½ΠΎΠΌΡƒ Π· Π²Π°Ρ€Ρ–Π°Π½Ρ‚Ρ–Π²:

PUT Ρ‚Π° DELETE Π·Π°ΠΏΠΈΡ‚ΠΈ ΠΌΠΎΠΆΠ½Π° надсилати POST-Π·Π°ΠΏΠΈΡ‚ΠΎΠΌ Ρ–Π· зазначСнням Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° _method Π· ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ (PUT Π°Π±ΠΎ DELETE).

Встановити Π»ΠΎΠΊΠ°Π»Ρ–Π·Π°Ρ†Ρ–ΡŽ Π΄ΠΎΠ²Ρ–Π΄Π½ΠΈΠΊΡ–Π² Ρ‚Π° ΠΏΠΎΠ²Ρ–Π΄ΠΎΠΌΠ»Π΅Π½ΡŒ Π²Π°Π»Ρ–Π΄Π°Ρ†Ρ–Ρ— ΠΌΠΎΠΆΠ½Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ:

X-Language: {locale}

Locale Description
en English (default)
cs Czech
de German
el Greek
es Spanish
fr Franch
it Italian
ka Georgian
lv Polish
pl Polish
pt Portuguese
ro Romanian
ru Russian
uk Ukrainian
zh Chinese (Simplified)

Помилки

Код ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ ЗначСння
400 Bad Request - Π’Π°Ρˆ Π·Π°ΠΏΠΈΡ‚ Π½Π΅Π²Ρ–Ρ€Π½ΠΈΠΉ.
401 Unauthorized - Π’Π°Ρˆ API-ΠΊΠ»ΡŽΡ‡ Π½Π΅Π²Ρ–Ρ€Π½ΠΈΠΉ.
403 Forbidden - Π—Π°ΠΏΠΈΡ‚Π°Π½ΠΈΠΉ рСсурс Π·Π°Ρ…ΠΎΠ²Π°Π½ Ρ‚Π° доступний лишС адміністраторам.
404 Not Found - НС Π·Π½Π°ΠΉΠ΄Π΅Π½ΠΎ. Π’ΠΊΠ°Π·Π°Π½Π° сторінка Π½Π΅ Π·Π½Π°ΠΉΠ΄Π΅Π½Π°.
405 Method Not Allowed - ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΈΠΉ. Π‘Π΅Ρ€Π²Π΅Ρ€Ρƒ Π²Ρ–Π΄ΠΎΠΌΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π°ΠΏΠΈΡ‚Ρƒ, Π°Π»Π΅ Ρ†Ρ–Π»ΡŒΠΎΠ²ΠΈΠΉ рСсурс Π½Π΅ ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΡƒΡ” Ρ†Π΅ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.
422 Unprocessable entity - Π‘ΡƒΡ‚Π½Ρ–ΡΡ‚ΡŒ Π½Π΅ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ ΠΎΠ±Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ.
429 Too Many Requests - Π”ΡƒΠΆΠ΅ Π±Π°Π³Π°Ρ‚ΠΎ Π·Π°ΠΏΠΈΡ‚Ρ–Π² - Π’ΠΈ надсилаєтС Π½Π°Π΄Ρ‚ΠΎ Π±Π°Π³Π°Ρ‚ΠΎ Π·Π°ΠΏΠΈΡ‚Ρ–Π², Π·ΡƒΠΏΠΈΠ½Ρ–Ρ‚ΡŒΡΡ!
500 Internal Server Error - Π’Π½ΡƒΡ‚Ρ€Ρ–ΡˆΠ½Ρ ΠΏΠΎΠΌΠΈΠ»ΠΊΠ° сСрвСра. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ–Π· нашим сСрвСром. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Ρ–Ρ‚ΡŒ спробу ΠΏΡ–Π·Π½Ρ–ΡˆΠ΅.
503 Service Unavailable - ΠΌΠΈ тимчасово Π²Ρ–Π΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ– Π²Ρ–Π΄ ΠΌΠ΅Ρ€Π΅ΠΆΡ– Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π΅Ρ…Π½Ρ–Ρ‡Π½Π΅ обслуговування. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Ρ–Ρ‚ΡŒ спробу ΠΏΡ–Π·Π½Ρ–ΡˆΠ΅.

CRM. ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΈ

Бписок ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ–Π²

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Get contacts list

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/contacts', $options);

$result = json_decode($response->getBody());
?>


# ---
# Paginated example
# ---

<?php
// Get contacts list with pagination

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/contacts?page=1&per_page=15', $options);

$result = json_decode($response->getBody());
?>


# ---
# Filtered example
# ---

<?php
// Get contacts list with filters

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/contacts?page=1&per_page=15&filters[date_from]=2022-04-27&filters[search]=example.com&with_offers=1', $options);

$result = json_decode($response->getBody());
?>
<?php
// Get contacts list

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/contacts');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>


# ---
# Paginated example
# ---

<?php
// Get contacts list with pagination

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/contacts?page=1&per_page=15');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>


# ---
# Filtered example
# ---

<?php
// Get contacts list with filters

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/contacts?page=1&per_page=15&filters[date_from]=2022-04-27&filters[search]=example.com&with_offers=1');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request GET 'https://api.kwiga.com/contacts' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'


# ---
# Paginated example
# ---

curl --location --request GET 'https://api.kwiga.com/contacts?page=1&per_page=15' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'


# ---
# Filtered example
# ---

curl --location --request GET 'https://api.kwiga.com/contacts?page=1&per_page=15&filters[date_from]=2022-04-27&filters[search]=example.com&with_offers=1' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'
// Get contacts list
const url = 'https://api.kwiga.com/contacts';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });


# ---
# Paginated example
# ---

// Get contacts list with pagination
const url = 'https://api.kwiga.com/contacts?page=1&per_page=15';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });


# ---
# Filtered example
# ---

// Get contacts list with filters
const url = 'https://api.kwiga.com/contacts?page=1&per_page=15&filters[date_from]=2022-04-27&filters[search]=example.com&with_offers=1';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Get contacts list
import requests

url = 'https://api.kwiga.com/contacts'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()


# ---
# Paginated example
# ---

# Get contacts list with pagination
import requests

url = 'https://api.kwiga.com/contacts?page=1&per_page=15'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()


# ---
# Filtered example
# ---

# Get contacts list with filters
import requests

url = 'https://api.kwiga.com/contacts?page=1&per_page=15&filters[date_from]=2022-04-27&filters[search]=example.com&with_offers=1'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
  "data": [
    {
      "id": 1,
      "created_at": "2022-02-04T12:17:32.000000Z",
      "email": "test@example.com",
      "first_name": "James",
      "last_name": "Bond",
      "phone": "+380931234567",
      "tags": [
          {
              "id": 93,
              "name": "test-tag"
          }
      ],
      "offers": [
          {
              "id": 8,
              "unique_offer_code": "ptJmPPXVYs0t",
              "title": "ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ #8",
              "limit_type": {
                  "id": 1,
                  "name": "НСограничСно"
              },
              "limit_of_sales": null
          }
      ]
    },
    "utm": {
        "utm_source": [
            "test-source"
        ],
        "utm_campaign": [],
        "utm_medium": [],
        "utm_term": [
            "test-term"
        ],
        "utm_content": []
    },
    {
      "id": 2,
      "created_at": "2022-02-04T12:17:32.000000Z",
      "email": "test2@example.com",
      "first_name": "Petr",
      "last_name": "Ivanov",
      "phone": "+380983234512",
      "tags": [],
      "offers": []
    }
  ],
  "links": {
        "first": "https://api.kwiga.com/contacts?page=1",
        "last": "https://api.kwiga.com/contacts?page=2",
        "prev": null,
        "next": "https://api.kwiga.com/contacts?page=2"
   },
   "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 2,
        "links": [
            {
                "url": null,
                "label": "&laquo; translation missing: ua.pagination_prev",
                "active": false
            },
            {
                "url": "https://api.kwiga.com/contacts?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": "https://api.kwiga.com/contacts?page=2",
                "label": "2",
                "active": false
            },
            {
                "url": "https://api.kwiga.com/contacts?page=2",
                "label": "translation missing: ua.pagination_next &raquo;",
                "active": false
            }
        ],
        "path": "https://api.kwiga.com/contacts",
        "per_page": 15,
        "to": 2,
        "total": 3
    }
}

GET https://api.kwiga.com/contacts

URL Parameters

β–Έ filters object optional
Filter parameters
is_active integer optional
Π€Ρ–Π»ΡŒΡ‚Ρ€ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ… ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ–Π²
date_from datetime optional
Π€Ρ–Π»ΡŒΡ‚Ρ€ Π·Π° Π΄Π°Ρ‚ΠΎΡŽ створСння. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ 'Π²Ρ–Π΄'
date_to datetime optional
Π€Ρ–Π»ΡŒΡ‚Ρ€ Π·Π° Π΄Π°Ρ‚ΠΎΡŽ створСння. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ 'Π΄ΠΎ'
last_activity_from datetime optional
Π€Ρ–Π»ΡŒΡ‚Ρ€ Π·Π° Π΄Π°Ρ‚ΠΎΡŽ ΠΎΡΡ‚Π°Π½Π½ΡŒΠΎΡ— активності. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ 'Π²Ρ–Π΄'
last_activity_to datetime optional
Π€Ρ–Π»ΡŒΡ‚Ρ€ Π·Π° Π΄Π°Ρ‚ΠΎΡŽ ΠΎΡΡ‚Π°Π½Π½ΡŒΠΎΡ— активності. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ 'Π΄ΠΎ'
search string optional
Π€Ρ–Π»ΡŒΡ‚Ρ€ ΠΏΠΎ email, Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρƒ, ΠŸΠ†Π‘
utm_source string optional
utm_source
utm_campaign string optional
utm_campaign
utm_medium string optional
utm_medium
utm_term string optional
utm_term
utm_content string optional
utm_content
offers integer[] optional
offers ids
products integer[] optional
products ids

with_orders boolean optional
Π”ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΎ ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–ΡŽ ΠΏΠΎ замовлСнням Ρ‚Π° пропозиціям ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°
with_certificates boolean optional
Π”ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΎ ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–ΡŽ ΠΏΠΎ сСртифікатам ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°
page integer optional
НомСр сторінки
Default: 1
per_page integer optional
ΠšΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ–Π² Π²ΠΈΠ±Ρ–Ρ€ΠΊΠΈ
Default: 15
sort_by string optional
Possible values: asc, desc

ΠžΡ‚Ρ€ΠΈΠΌΠ°Π½Π½Ρ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρƒ

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Get contact by ID

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/contacts/{id}', $options);

$result = json_decode($response->getBody());
?>
<?php
// Get contact by ID

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/contacts/{id}');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request GET 'https://api.kwiga.com/contacts/{id}' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'
// Get contact by ID
const url = 'https://api.kwiga.com/contacts/{id}';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Get contact by ID
import requests

url = 'https://api.kwiga.com/contacts/{id}'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
    "data": {
        "id": 132,
        "email": "bond@example.com",
        "first_name": "James",
        "last_name": "Bond",
        "phone_number": "931234567",
        "tags": [],
        "created_at": "2023-06-26T19:01:00.000000Z",
        "additional_fields": [
            {
                "id": 110,
                "field": {
                    "id": 17,
                    "title": "test global",
                    "is_local": false
                },
                "value": "this is test value"
            }
        ]
    }
}

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

URL Parameters

with_certificates boolean optional
Π”ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΎ ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–ΡŽ ΠΏΠΎ сСртифікатам ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°

БтворСння ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρƒ

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Create new contact

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
    'json' => [
        'first_name' => 'James',
        'last_name' => 'Bond',
        'email' => 'bond@example.com',
        'send_activation_email' => true,
        'phone' => '+380931234567',
        'manager_ids' => [264, 288],
        'additional_fields' => [{"field_id"=>17, "value"=>"this is test value"}],
    ],
];

$response = $client->request('POST', '/contacts', $options);

$result = json_decode($response->getBody());
?>
<?php
// Create new contact

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/contacts');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');

$data = [
    'first_name' => 'James',
    'last_name' => 'Bond',
    'email' => 'bond@example.com',
    'send_activation_email' => true,
    'phone' => '+380931234567',
    'manager_ids' => [264, 288],
    'additional_fields' => [{"field_id"=>17, "value"=>"this is test value"}],
];

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request POST 'https://api.kwiga.com/contacts' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>' \
--data-raw '{"first_name":"James","last_name":"Bond","email":"bond@example.com","send_activation_email":true,"phone":"+380931234567","manager_ids":[264,288],"additional_fields":[{"field_id":17,"value":"this is test value"}]}'
// Create new contact
const url = 'https://api.kwiga.com/contacts';

const options = {
  method: 'POST',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
  body: JSON.stringify({
    'first_name': 'James',
    'last_name': 'Bond',
    'email': 'bond@example.com',
    'send_activation_email': true,
    'phone': '+380931234567',
    'manager_ids': [264, 288],
    'additional_fields': [{"field_id"=>17, "value"=>"this is test value"}]
  })
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Create new contact
import requests

url = 'https://api.kwiga.com/contacts'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

data = {
    'first_name': 'James',
    'last_name': 'Bond',
    'email': 'bond@example.com',
    'send_activation_email': true,
    'phone': '+380931234567',
    'manager_ids': [264, 288],
    'additional_fields': [{"field_id"=>17, "value"=>"this is test value"}],
}

response = requests.post(url, headers=headers, json=data)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
    "data": {
        "id": 132,
        "email": "bond@example.com",
        "first_name": "James",
        "last_name": "Bond",
        "phone_number": "931234567",
        "tags": [],
        "created_at": "2023-06-26T19:01:00.000000Z",
        "additional_fields": [
            {
                "id": 110,
                "field": {
                    "id": 17,
                    "title": "test global",
                    "is_local": false
                },
                "value": "this is test value"
            }
        ]
    }
}

POST https://api.kwiga.com/contacts

Request

email string required
Email - ΠΌΠ°Ρ” Π±ΡƒΡ‚ΠΈ ΡƒΠ½Ρ–ΠΊΠ°Π»ΡŒΠ½ΠΈΠΌ Ρƒ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠ°Π±Ρ–Π½Π΅Ρ‚Ρƒ
phone string optional
НомСр Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρƒ - Ρ„ΠΎΡ€ΠΌΠ°Ρ‚: +{ΠΊΠΎΠ΄ ΠΊΡ€Π°Ρ—Π½ΠΈ}{Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½}
ΠŸΡ€ΠΈΠΊΠ»Π°Π΄: +380930123456
first_name string optional
Π†ΠΌ'я
last_name string optional
ΠŸΡ€Ρ–Π·Π²ΠΈΡ‰Π΅
tags string[] optional
Π’Π΅Π³ΠΈ
send_activation_email boolean optional
Надіслати Π²Ρ–Ρ‚Π°Π»ΡŒΠ½ΠΈΠΉ лист
locale string optional
Мова ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρƒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ– iso_2
Допустимі Π²Π°Ρ€Ρ–Π°Π½Ρ‚ΠΈ: `en` (Π·Π° замовчуванням), `cs`, `de`, `el`, `es`, `fr`, `it`, `ka`, `lv`, `pl`, `pt`, `ro`, `ru`, `uk`, `zh`
create_order boolean optional
Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ пустС замовлСння
order_stage_id integer optional
Π†Π΄Π΅Π½Ρ‚ΠΈΡ„Ρ–ΠΊΠ°Ρ‚ΠΎΡ€ статусу замовлСння Ρƒ Π²ΠΎΡ€ΠΎΠ½Ρ†Ρ– (ΠΌΠΎΠΆΠ½Π° ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ Π½Π° сторінці *CRM->ЗамовлСння->ΠΠ°Π»Π°ΡˆΡ‚ΡƒΠ²Π°Π½Π½Ρ->Бписок статусів*)
β–Έ additional_fields object[] optional
Поля користувача (кастомні поля)
field_id integer optional
id кастомного поля (ΠΌΠΎΠΆΠ½Π° ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ Π² *CRM->ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΈ->ΠΠ°Π»Π°ΡˆΡ‚ΡƒΠ²Π°Π½Π½Ρ->Додавання ΠΏΠΎΠ»Ρ–Π² користувача*)
value string optional
ЗначСння кастомного поля

Π”ΠΎΠ΄Π°Ρ‚ΠΈ ΠΏΠΎΠΊΡƒΠΏΠΊΡƒ

Π¦Π΅ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΡΡ‚Π²ΠΎΡ€ΡŽΡ” Π°Π±ΠΎ Π·Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ ΠΈ Π΄ΠΎΠ΄Π°Ρ” ΠΉΠΎΠΌΡƒ ΠΏΠΎΠΊΡƒΠΏΠΊΡƒ ΠΏΡ€ΠΎΠΏΠΎΠ·ΠΈΡ†Ρ–Ρ—

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Add purchase to contact

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
    'json' => [
        'first_name' => 'James',
        'last_name' => 'Bond',
        'email' => 'bond@example.com',
        'send_activation_email' => true,
        'phone' => '+380931234567',
        'offer_id' => 18,
        'additional_fields' => [{"field_id"=>17, "value"=>"this is test value"}],
    ],
];

$response = $client->request('POST', '/contacts/purchases', $options);

$result = json_decode($response->getBody());
?>
<?php
// Add purchase to contact

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/contacts/purchases');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');

$data = [
    'first_name' => 'James',
    'last_name' => 'Bond',
    'email' => 'bond@example.com',
    'send_activation_email' => true,
    'phone' => '+380931234567',
    'offer_id' => 18,
    'additional_fields' => [{"field_id"=>17, "value"=>"this is test value"}],
];

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request POST 'https://api.kwiga.com/contacts/purchases' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>' \
--data-raw '{"first_name":"James","last_name":"Bond","email":"bond@example.com","send_activation_email":true,"phone":"+380931234567","offer_id":18,"additional_fields":[{"field_id":17,"value":"this is test value"}]}'
// Add purchase to contact
const url = 'https://api.kwiga.com/contacts/purchases';

const options = {
  method: 'POST',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
  body: JSON.stringify({
    'first_name': 'James',
    'last_name': 'Bond',
    'email': 'bond@example.com',
    'send_activation_email': true,
    'phone': '+380931234567',
    'offer_id': 18,
    'additional_fields': [{"field_id"=>17, "value"=>"this is test value"}]
  })
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Add purchase to contact
import requests

url = 'https://api.kwiga.com/contacts/purchases'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

data = {
    'first_name': 'James',
    'last_name': 'Bond',
    'email': 'bond@example.com',
    'send_activation_email': true,
    'phone': '+380931234567',
    'offer_id': 18,
    'additional_fields': [{"field_id"=>17, "value"=>"this is test value"}],
}

response = requests.post(url, headers=headers, json=data)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
    "data": {
        "id": 132,
        "email": "bond@example.com",
        "first_name": "James",
        "last_name": "Bond",
        "phone_number": "931234567",
        "tags": [],
        "created_at": "2023-06-26T19:01:00.000000Z",
        "additional_fields": [
            {
                "id": 110,
                "field": {
                    "id": 17,
                    "title": "test global",
                    "is_local": false
                },
                "value": "this is test value"
            }
        ],
        "orders": [
            {
                "id": 1060,
                "type_id": 1,
                "first_paid_at": "2023-10-13T18:04:02.000000Z",
                "paid_at": "2023-10-13T18:04:02.000000Z",
                "created_at": "2023-10-13T18:04:02.000000Z",
                "updated_at": "2023-10-13T18:04:02.000000Z",
                "products": [
                    {
                        "id": 25,
                        "productable_id": 10,
                        "productable_type": "course",
                        "title": "test course",
                        "link": "https://sample-school.kwiga.com/courses/test-course"
                    }
                ],
                "payments": [
                    {
                        "id": 1231,
                        "status": 2,
                        "status_title": "Paid",
                        "payment_type": null,
                        "payment_type_title": null,
                        "payment_form": null,
                        "payment_form_title": null,
                        "price_info": {
                            "amount": 0,
                            "currency": {
                                "id": 147,
                                "code": "UAH",
                                "html_code": "β‚΄",
                                "html_letter_code": "Π³Ρ€Π½"
                            }
                        },
                        "paid_at": "2023-10-13T18:04:02.000000Z",
                        "created_at": "2023-10-13T18:04:02.000000Z",
                        "updated_at": "2023-10-13T18:04:02.000000Z",
                        "transactions": [
                            {
                                "id": 28,
                                "merchant_id": 2,
                                "payment_id": 1231,
                                "order_id": 1060,
                                "payment_system_status": "Declined",
                                "failure_reason": "Cardholder session expired",
                                "price": "147",
                                "currency_code": "UAH",
                                "payer_account": null,
                                "card_mask": null,
                                "rrn": null,
                                "fee": null,
                                "created_at": "2023-11-03T08:45:10.000000Z"
                            },
                            {
                                "id": 29,
                                "merchant_id": 2,
                                "payment_id": 1231,
                                "order_id": 1060,
                                "payment_system_status": "Approved",
                                "failure_reason": null,
                                "price": "147",
                                "currency_code": "UAH",
                                "payer_account": "JKNNASWTZ99SJ",
                                "card_mask": "53****2144",
                                "rrn": 330710335365,
                                "fee": null,
                                "created_at": "2023-11-03T08:48:10.000000Z"
                            }
                        ]
                    }
                ],
                "paid_status": "paid",
                "paid_status_title": "Π‘ΠΏΠ»Π°Ρ‡Π΅Π½ΠΎ",
                "order_stage": {
                    "id": 43,
                    "title": "Π‘Ρ‚Π΅ΠΉΠ΄ΠΆ 1",
                    "order_group": {
                        "id": 22,
                        "slug": "voronka-1",
                        "title": null,
                        "order": 4,
                        "created_at": "2023-06-22T18:20:53.000000Z"
                    },
                    "order_funnel": {
                        "id": 1,
                        "title": "Π’ΠΎΡ€ΠΎΠ½ΠΊΠ° Π·Π° замовчуванням",
                        "created_at": "2023-05-26T09:47:16.000000Z"
                    },
                    "created_at": "2023-06-22T18:21:10.000000Z"
                },
                "cost_info": {
                    "amount": 0,
                    "currency": {
                        "id": 147,
                        "code": "UAH",
                        "html_code": "β‚΄",
                        "html_letter_code": "Π³Ρ€Π½"
                    }
                },
                "managers": [
                    {
                        "id": 264,
                        "name": "test",
                        "email": "testfsdf@fdafasd.fsd"
                    },
                    {
                        "id": 288,
                        "name": "fdsf",
                        "email": "sdfs@fdf.dfss"
                    }
                ]
            }
        ]
    }
}

POST https://api.kwiga.com/contacts/purchases

Request

email string required
Email - ΠΌΠ°Ρ” Π±ΡƒΡ‚ΠΈ ΡƒΠ½Ρ–ΠΊΠ°Π»ΡŒΠ½ΠΈΠΌ Ρƒ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠ°Π±Ρ–Π½Π΅Ρ‚Ρƒ
phone string optional
НомСр Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρƒ - Ρ„ΠΎΡ€ΠΌΠ°Ρ‚: +{ΠΊΠΎΠ΄ ΠΊΡ€Π°Ρ—Π½ΠΈ}{Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½}
ΠŸΡ€ΠΈΠΊΠ»Π°Π΄: +380930123456
first_name string optional
Π†ΠΌ'я
last_name string optional
ΠŸΡ€Ρ–Π·Π²ΠΈΡ‰Π΅
tags string[] optional
Π’Π΅Π³ΠΈ
send_activation_email boolean optional
Надіслати Π²Ρ–Ρ‚Π°Π»ΡŒΠ½ΠΈΠΉ лист
send_product_access_email boolean optional
Надіслати лист ΠΏΡ€ΠΎ доступ Π΄ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ
send_payment_success_email boolean optional
Надіслати лист ΠΏΡ€ΠΎ ΡƒΡΠΏΡ–ΡˆΠ½Ρƒ ΠΎΠΏΠ»Π°Ρ‚Ρƒ ΠΏΡ€ΠΎΠΏΠΎΠ·ΠΈΡ†Ρ–Ρ—
locale string optional
Мова ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρƒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ– iso_2
Допустимі Π²Π°Ρ€Ρ–Π°Π½Ρ‚ΠΈ: `en` (Π·Π° замовчуванням), `cs`, `de`, `el`, `es`, `fr`, `it`, `ka`, `lv`, `pl`, `pt`, `ro`, `ru`, `uk`, `zh`
offer_id integer optional
Π†Π΄Π΅Π½Ρ‚ΠΈΡ„Ρ–ΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΏΠΎΠ·ΠΈΡ†Ρ–Ρ— (ΠΌΠΎΠΆΠ½Π° ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ Π² ΠΊΡ–Π½Ρ†Ρ– посилання сторінки рСдагування ΠΏΡ€ΠΎΠΏΠΎΠ·ΠΈΡ†Ρ–Ρ—)
ΠŸΡ€ΠΈΠΊΠ»Π°Π΄: 3858 Π· https://sample-school.kwiga.com/expert/payments/offers/edit/3858
Π―ΠΊΡ‰ΠΎ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΠΈ ΠŸΡ€ΠΎΠΏΠΎΠ·ΠΈΡ†Ρ–ΡŽ, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅ пСрСвіряти ΠΏΠΎΠ»Π΅ product_ids
product_ids integer[] optional
Масив id ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ–Π².
Π―ΠΊΡ‰ΠΎ offer_id Ρ– product_ids відсутні, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅ створСно пустС замовлСння
order_stage_id integer optional
Π†Π΄Π΅Π½Ρ‚ΠΈΡ„Ρ–ΠΊΠ°Ρ‚ΠΎΡ€ статусу замовлСння Ρƒ Π²ΠΎΡ€ΠΎΠ½Ρ†Ρ– (ΠΌΠΎΠΆΠ½Π° ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ Π½Π° сторінці *CRM->ЗамовлСння->ΠΠ°Π»Π°ΡˆΡ‚ΡƒΠ²Π°Π½Π½Ρ->Бписок статусів*)
is_paid integer optional
ЗамовлСння сплачСно (Π·Π° замовчуванням *true*)
manager_ids integer[] optional
ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΈ замовлСння (ΠΌΠΎΠΆΠ½Π° ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ Π½Π° сторінці *ΠΠ°Π»Π°ΡˆΡ‚ΡƒΠ²Π°Π½Π½Ρ->Доступи ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Ρ–Π½Π½ΡŽ*)
comment string optional
ΠšΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ Π΄ΠΎ замовлСння. Max: 5000
Max length: 5000 characters
β–Έ additional_fields object[] optional
Поля користувача (кастомні поля)
field_id integer optional
id кастомного поля (ΠΌΠΎΠΆΠ½Π° ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ Π² *CRM->ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΈ->ΠΠ°Π»Π°ΡˆΡ‚ΡƒΠ²Π°Π½Π½Ρ->Додавання ΠΏΠΎΠ»Ρ–Π² користувача*)
value string optional
ЗначСння кастомного поля

ОновлСння ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρƒ

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Update contact

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
    'json' => [
        'first_name' => 'John',
        'last_name' => 'Black',
        'email' => 'bond123@example.com',
        'phone' => '+380931112233',
        'tags' => ["test-tag"],
    ],
];

$response = $client->request('PUT', '/contacts/{id}', $options);

$result = json_decode($response->getBody());
?>
<?php
// Update contact

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/contacts/{id}');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');

$data = [
    'first_name' => 'John',
    'last_name' => 'Black',
    'email' => 'bond123@example.com',
    'phone' => '+380931112233',
    'tags' => ["test-tag"],
];

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request PUT 'https://api.kwiga.com/contacts/{id}' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>' \
--data-raw '{"first_name":"John","last_name":"Black","email":"bond123@example.com","phone":"+380931112233","tags":["test-tag"]}'
// Update contact
const url = 'https://api.kwiga.com/contacts/{id}';

const options = {
  method: 'PUT',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
  body: JSON.stringify({
    'first_name': 'John',
    'last_name': 'Black',
    'email': 'bond123@example.com',
    'phone': '+380931112233',
    'tags': ["test-tag"]
  })
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Update contact
import requests

url = 'https://api.kwiga.com/contacts/{id}'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

data = {
    'first_name': 'John',
    'last_name': 'Black',
    'email': 'bond123@example.com',
    'phone': '+380931112233',
    'tags': ["test-tag"],
}

response = requests.put(url, headers=headers, json=data)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
    "data": {
        "id": 132,
        "email": "bond@example.com",
        "first_name": "James",
        "last_name": "Bond",
        "phone_number": "931234567",
        "tags": [],
        "created_at": "2023-06-26T19:01:00.000000Z",
        "additional_fields": [
            {
                "id": 110,
                "field": {
                    "id": 17,
                    "title": "test global",
                    "is_local": false
                },
                "value": "this is test value"
            }
        ]
    }
}

PUT https://api.kwiga.com/contacts/:contact

Request

email string optional
Email - ΠΌΠ°Ρ” Π±ΡƒΡ‚ΠΈ ΡƒΠ½Ρ–ΠΊΠ°Π»ΡŒΠ½ΠΈΠΌ Ρƒ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠ°Π±Ρ–Π½Π΅Ρ‚Ρƒ
phone string optional
НомСр Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρƒ - Ρ„ΠΎΡ€ΠΌΠ°Ρ‚: +{ΠΊΠΎΠ΄ ΠΊΡ€Π°Ρ—Π½ΠΈ}{Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½}
ΠŸΡ€ΠΈΠΊΠ»Π°Π΄: +380930123456
first_name string optional
Π†ΠΌ'я
last_name string optional
ΠŸΡ€Ρ–Π·Π²ΠΈΡ‰Π΅
tags string[] optional
Π’Π΅Π³ΠΈ. ΠŸΡ€Π°Ρ†ΡŽΡŽΡ‚ΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌΡ– sync. Π’ΠΎΠ±Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ– Π±ΡƒΠ΄ΡƒΡ‚ΡŒ Ρ‚Ρ–Π»ΡŒΠΊΠΈ Ρ‚Ρ– Ρ‚Π΅Π³ΠΈ, які Π±ΡƒΠ΄ΡƒΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ–
β–Έ additional_fields object[] optional
Поля користувача (кастомні поля)
field_id integer optional
id кастомного поля (ΠΌΠΎΠΆΠ½Π° ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ Π² *CRM->ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΈ->ΠΠ°Π»Π°ΡˆΡ‚ΡƒΠ²Π°Π½Π½Ρ->Додавання ΠΏΠΎΠ»Ρ–Π² користувача*)
value string optional
ЗначСння кастомного поля

Додавання Ρ‚Π΅Π³Ρ–Π² ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Add tags to contacts

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
    'json' => [
        'contacts' => [23698],
        'tags' => ["test-tag"],
    ],
];

$response = $client->request('POST', '/contacts/tags', $options);

$result = json_decode($response->getBody());
?>
<?php
// Add tags to contacts

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/contacts/tags');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');

$data = [
    'contacts' => [23698],
    'tags' => ["test-tag"],
];

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request POST 'https://api.kwiga.com/contacts/tags' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>' \
--data-raw '{"contacts":[23698],"tags":["test-tag"]}'
// Add tags to contacts
const url = 'https://api.kwiga.com/contacts/tags';

const options = {
  method: 'POST',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
  body: JSON.stringify({
    'contacts': [23698],
    'tags': ["test-tag"]
  })
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Add tags to contacts
import requests

url = 'https://api.kwiga.com/contacts/tags'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

data = {
    'contacts': [23698],
    'tags': ["test-tag"],
}

response = requests.post(url, headers=headers, json=data)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
    "success": true
}

POST https://api.kwiga.com/contacts/tags

Request

contacts integer[] required
Масив id ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ–Π²
tags string[] required
Π’Π΅Π³ΠΈ

ВидалСння Ρ‚Π΅Π³Ρ–Π² ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ–Π²

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Remove tags from contacts

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
    'json' => [
        'contacts' => [23698],
        'tags' => ["test-tag"],
    ],
];

$response = $client->request('DELETE', '/contacts/tags', $options);

$result = json_decode($response->getBody());
?>
<?php
// Remove tags from contacts

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/contacts/tags');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');

$data = [
    'contacts' => [23698],
    'tags' => ["test-tag"],
];

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request DELETE 'https://api.kwiga.com/contacts/tags' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>' \
--data-raw '{"contacts":[23698],"tags":["test-tag"]}'
// Remove tags from contacts
const url = 'https://api.kwiga.com/contacts/tags';

const options = {
  method: 'DELETE',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
  body: JSON.stringify({
    'contacts': [23698],
    'tags': ["test-tag"]
  })
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Remove tags from contacts
import requests

url = 'https://api.kwiga.com/contacts/tags'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

data = {
    'contacts': [23698],
    'tags': ["test-tag"],
}

response = requests.delete(url, headers=headers, json=data)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
    "success": true
}

DELETE https://api.kwiga.com/contacts/tags

Request

contacts integer[] required
Масив id ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ–Π²
tags string[] required
Π’Π΅Π³ΠΈ

Бписок ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ–Π² ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρƒ

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Get contact products

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/contacts/:contact/products', $options);

$result = json_decode($response->getBody());
?>
<?php
// Get contact products

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/contacts/:contact/products');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request GET 'https://api.kwiga.com/contacts/:contact/products' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'
// Get contact products
const url = 'https://api.kwiga.com/contacts/:contact/products';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Get contact products
import requests

url = 'https://api.kwiga.com/contacts/:contact/products'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
  "data": [
    {
      "id": 299,
      "productable_id": 142,
      "productable_type": "course",
      "title": "Copy Test backup",
      "image_url": "",
      "is_published": false,
      "aggregated_subscription": {
        "is_active": true,
        "is_paid": true,
        "start_at": "2025-05-05T15:09:04.000000Z",
        "end_at": null,
        "offer_end_at": null,
        "order_end_at": null,
        "count_available_days": 39,
        "count_left_days": null,
        "state": {
          "id": 2,
          "name": "Open",
          "title": "Open"
        }
      },
      "subscriptions": [
        {
          "id": 4775,
          "creator_id": 24457,
          "user_id": 24457,
          "product_id": 299,
          "order_id": 2710,
          "offer_id": 757,
          "is_active": true,
          "start_at": "2025-05-05T15:09:04.000000Z",
          "order_end_at": null,
          "end_at": null,
          "paid_at": "2025-05-05T15:09:04.000000Z",
          "created_at": "2025-05-05T15:09:04.000000Z",
          "updated_at": "2025-05-05T15:09:04.000000Z"
        }
      ]
    }
  ]
}

GET https://api.kwiga.com/contacts/:contact/products

ΠŸΠΎΠ²Π΅Ρ€Ρ‚Π°Ρ” список ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ–Π² ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρƒ Π· Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–Ρ”ΡŽ ΠΏΡ€ΠΎ підписки Ρ‚Π° Ρ‚Π΅Ρ€ΠΌΡ–Π½ΠΈ доступу. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ aggregated_subscription ΠΌΡ–ΡΡ‚ΠΈΡ‚ΡŒ Π·Π²Π΅Π΄Π΅Π½Ρƒ Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–ΡŽ ΠΏΡ€ΠΎ Ρ‚Π΅Ρ€ΠΌΡ–Π½ΠΈ Ρ‚Π° Π°ΠΊΡ‚ΠΈΠ²Π½Ρ–ΡΡ‚ΡŒ доступу Π½Π° основі всіх підписок користувача ΠΏΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ subscriptions ΠΌΡ–ΡΡ‚ΠΈΡ‚ΡŒ масив всіх підписок користувача ΠΏΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ.

Π’ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Ρƒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Delete contact product

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('DELETE', '/contacts/:contact/products/:product', $options);

$result = json_decode($response->getBody());
?>
<?php
// Delete contact product

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/contacts/:contact/products/:product');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request DELETE 'https://api.kwiga.com/contacts/:contact/products/:product' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'
// Delete contact product
const url = 'https://api.kwiga.com/contacts/:contact/products/:product';

const options = {
  method: 'DELETE',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Delete contact product
import requests

url = 'https://api.kwiga.com/contacts/:contact/products/:product'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.delete(url, headers=headers)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
  "success": true
}

DELETE https://api.kwiga.com/contacts/:contact/products/:product

Видаляє підписки ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρƒ ΠΏΠΎ Π·Π°Π΄Π°Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ. ЗамовлСння ΡΡ‚Π°ΡŽΡ‚ΡŒ кастомними Π±Π΅Π· доступу Π΄ΠΎ Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΈΡ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ–Π².

Π’ΠΈΠ΄Π°Π»ΠΈΡ‚ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ Ρƒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π° (масово)

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Delete contact products in bulk

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
    'json' => [
        'email' => 'user@example.com',
        'product_id' => 299,
        'offers' => [421],
    ],
];

$response = $client->request('DELETE', '/contacts/products', $options);

$result = json_decode($response->getBody());
?>
<?php
// Delete contact products in bulk

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/contacts/products');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');

$data = [
    'email' => 'user@example.com',
    'product_id' => 299,
    'offers' => [421],
];

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request DELETE 'https://api.kwiga.com/contacts/products' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>' \
--data-raw '{"email":"user@example.com","product_id":299,"offers":[421]}'
// Delete contact products in bulk
const url = 'https://api.kwiga.com/contacts/products';

const options = {
  method: 'DELETE',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
  body: JSON.stringify({
    'email': 'user@example.com',
    'product_id': 299,
    'offers': [421]
  })
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Delete contact products in bulk
import requests

url = 'https://api.kwiga.com/contacts/products'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

data = {
    'email': 'user@example.com',
    'product_id': 299,
    'offers': [421],
}

response = requests.delete(url, headers=headers, json=data)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
  "data": {
    "affected_subscriptions": [
      2309,
      2661
    ],
    "affected_orders": [
      1578,
      1784
    ],
    "affected_by_offers": {
      "421": {
        "affected_subscriptions": [
          2309,
          2661
        ],
        "affected_orders": [
          1578,
          1784
        ]
      }
    },
    "affected_by_products": []
  },
  "contact_id": 125
}

DELETE https://api.kwiga.com/contacts/products

Видаляє підписки Π·Π° Π·Π°Π΄Π°Π½ΠΈΠΌΠΈ ΡƒΠΌΠΎΠ²Π°ΠΌΠΈ, Π° замовлСння ΡΡ‚Π°ΡŽΡ‚ΡŒ кастомними Π±Π΅Π· доступу Π΄ΠΎ Π²ΠΈΠ΄Π°Π»Π΅Π½ΠΈΡ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ–Π². МоТна ΠΊΠΎΠΌΠ±Ρ–Π½ΡƒΠ²Π°Ρ‚ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ product_id Ρ‚Π° offers для видалСння частини ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ–Π² ΠΏΠΎ ΠΏΠ΅Π²Π½ΠΎΠΌΡƒ ΠΎΡ„Ρ„Π΅Ρ€Ρƒ.

Parameters

email string optional
Email ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρƒ. Обов'язковий якщо contact_id Π½Π΅ Π²ΠΊΠ°Π·Π°Π½ΠΈΠΉ
contact_id integer optional
Id ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρƒ. Обов'язковий якщо email Π½Π΅ Π²ΠΊΠ°Π·Π°Π½ΠΈΠΉ
product_id integer optional
Id ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ. Обов'язковий якщо offers Π½Π΅ Π²ΠΊΠ°Π·Π°Π½ΠΈΠΉ. МоТна ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ Π² Π΅Π½Π΄ΠΏΠΎΡ–Π½Ρ‚Ρ– Бписок ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ–Π² ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρƒ Π°Π±ΠΎ Π² Бписку курсів (Ρ†Π΅ Π±ΡƒΠ΄Π΅ ΠΏΠΎΠ»Π΅ product_id Π² курсі)
offers integer[] optional
Масив Π· id ΠΏΡ€ΠΎΠΏΠΎΠ·ΠΈΡ†Ρ–ΠΉ ΠΏΠΎ яких видаляємо підписки. Обов'язковий якщо product_id Π½Π΅ Π²ΠΊΠ°Π·Π°Π½ΠΈΠΉ. МоТна ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ Π² адрСсному рядку рСдагування ΠΏΡ€ΠΎΠΏΠΎΠ·ΠΈΡ†Ρ–Ρ— Π°Π±ΠΎ Π² Π°ΠΏΡ– Π² списку ΠΏΡ€ΠΎΠΏΠΎΠ·ΠΈΡ†Ρ–ΠΉ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρƒ.

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ

Бписок ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ–Π² ΠΊΠ°Π±Ρ–Π½Π΅Ρ‚Ρƒ

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Get products list

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/products', $options);

$result = json_decode($response->getBody());
?>


# ---
# Paginated example
# ---

<?php
// Get products list with pagination and sorting

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/products?per_page=20&page=1&sort_by=asc', $options);

$result = json_decode($response->getBody());
?>
<?php
// Get products list

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/products');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>


# ---
# Paginated example
# ---

<?php
// Get products list with pagination and sorting

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/products?per_page=20&page=1&sort_by=asc');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request GET 'https://api.kwiga.com/products' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'


# ---
# Paginated example
# ---

curl --location --request GET 'https://api.kwiga.com/products?per_page=20&page=1&sort_by=asc' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'
// Get products list
const url = 'https://api.kwiga.com/products';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });


# ---
# Paginated example
# ---

// Get products list with pagination and sorting
const url = 'https://api.kwiga.com/products?per_page=20&page=1&sort_by=asc';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Get products list
import requests

url = 'https://api.kwiga.com/products'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()


# ---
# Paginated example
# ---

# Get products list with pagination and sorting
import requests

url = 'https://api.kwiga.com/products?per_page=20&page=1&sort_by=asc'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
  "data": [
    {
      "id": 299,
      "productable_id": 142,
      "productable_type": "course",
      "title": "Sample Course Title",
      "link": "http://test.local/courses/test-slug"
    }
  ],
  "links": {
    "first": "https://api.kwiga.com/products?page=1",
    "last": "https://api.kwiga.com/products?page=5",
    "prev": null,
    "next": "https://api.kwiga.com/products?page=2"
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 5,
    "path": "https://api.kwiga.com/products",
    "per_page": 15,
    "to": 15,
    "total": 75
  }
}

GET https://api.kwiga.com/products

Бписок ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ–Π² ΠΊΠ°Π±Ρ–Π½Π΅Ρ‚Ρƒ. Π„ пагінація, Π·Π° замовчуванням 15.

URL Parameters

sort_by string optional
Possible values: asc, desc
per_page integer optional
ΠšΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ–Π² Π½Π° сторінці
Default: 15
page integer optional
НомСр сторінки
Default: 1

ΠšΡƒΡ€ΡΠΈ

Бписок курсів ΠΊΠ°Π±Ρ–Π½Π΅Ρ‚Ρƒ

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Get courses list

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/courses', $options);

$result = json_decode($response->getBody());
?>


# ---
# With_params example
# ---

<?php
// Get courses list with pagination and includes

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/courses?with[]=offers&with[]=description&with[]=program&per_page=15&page=1', $options);

$result = json_decode($response->getBody());
?>
<?php
// Get courses list

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/courses');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>


# ---
# With_params example
# ---

<?php
// Get courses list with pagination and includes

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/courses?with[]=offers&with[]=description&with[]=program&per_page=15&page=1');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request GET 'https://api.kwiga.com/courses' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'


# ---
# With_params example
# ---

curl --location --request GET 'https://api.kwiga.com/courses?with[]=offers&with[]=description&with[]=program&per_page=15&page=1' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'
// Get courses list
const url = 'https://api.kwiga.com/courses';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });


# ---
# With_params example
# ---

// Get courses list with pagination and includes
const url = 'https://api.kwiga.com/courses?with[]=offers&with[]=description&with[]=program&per_page=15&page=1';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Get courses list
import requests

url = 'https://api.kwiga.com/courses'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()


# ---
# With_params example
# ---

# Get courses list with pagination and includes
import requests

url = 'https://api.kwiga.com/courses?with[]=offers&with[]=description&with[]=program&per_page=15&page=1'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
  "data": [
    {
      "id": 226,
      "product_id": 431,
      "type": {
        "id": 1,
        "name": "Course",
        "type": "course"
      },
      "title": "Test Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊ ΠΊΠ²ΠΈΠ·ΠΎΠ²",
      "slug": "test-chernovik-kvizov",
      "preview": {
        "id": 3140,
        "uuid": "bdfe1347-574f-4829-a745-09ba2176cc2a",
        "name": "image_13.jpeg",
        "original_name": "image_13.jpeg",
        "url": "https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13.jpeg",
        "thumbnails": {
          "xs": "https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13_thumb_150.jpeg",
          "small": "https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13_thumb_500.jpeg",
          "medium": "https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13.jpeg",
          "large": "https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13.jpeg",
          "default": "https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13.jpeg"
        },
        "extension": "jpeg",
        "type_id": 2,
        "mime_type": "image/jpeg"
      },
      "link": "http://test.local/courses/test-chernovik-kvizov",
      "status": {
        "id": 3,
        "name": "Published"
      }
    }
  ],
  "links": {
    "first": "http://api.kwiga.local/courses?page=1",
    "last": "http://api.kwiga.local/courses?page=1",
    "prev": null,
    "next": null
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "links": [
      {
        "url": null,
        "label": "&laquo; Previous",
        "active": false
      },
      {
        "url": "http://api.kwiga.local/courses?page=1",
        "label": "1",
        "active": true
      },
      {
        "url": null,
        "label": "Next &raquo;",
        "active": false
      }
    ],
    "path": "http://api.kwiga.local/courses",
    "per_page": 15,
    "to": 1,
    "total": 1
  }
}

GET https://api.kwiga.com/courses

Бписок курсів ΠΊΠ°Π±Ρ–Π½Π΅Ρ‚Ρƒ. Π„ пагінація, Π·Π° замовчуванням 15 (max: 15).

URL Parameters

with string[] optional
Масив Π· Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, які ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ Ρ€Π°Π·ΠΎΠΌ Π· курсом. ΠœΠΎΠΆΠ»ΠΈΠ²Ρ– Π²Π°Ρ€Ρ–Π°Π½Ρ‚ΠΈ: offers (список всіх ΠΎΡ„Ρ„Π΅Ρ€Ρ–Π² Π· курсом), description (Ρ–Π½Ρ„ΠΎΠ±Π»ΠΎΠΊΠΈ Π· описом курсу), program (Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ курсу)
Possible values: offers, description, program
sort_by string optional
Possible values: asc, desc
per_page integer optional
ΠšΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ–Π² Π½Π° сторінці
Maximum: 15
Default: 15
page integer optional
НомСр сторінки
Default: 1

Бписок учасників курсу

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Get course users

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/courses/:course/users', $options);

$result = json_decode($response->getBody());
?>


# ---
# Filtered example
# ---

<?php
// Get course users with filters

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/courses/:course/users?progress_general_from=50&progress_general_to=100&per_page=20', $options);

$result = json_decode($response->getBody());
?>
<?php
// Get course users

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/courses/:course/users');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>


# ---
# Filtered example
# ---

<?php
// Get course users with filters

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/courses/:course/users?progress_general_from=50&progress_general_to=100&per_page=20');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request GET 'https://api.kwiga.com/courses/:course/users' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'


# ---
# Filtered example
# ---

curl --location --request GET 'https://api.kwiga.com/courses/:course/users?progress_general_from=50&progress_general_to=100&per_page=20' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'
// Get course users
const url = 'https://api.kwiga.com/courses/:course/users';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });


# ---
# Filtered example
# ---

// Get course users with filters
const url = 'https://api.kwiga.com/courses/:course/users?progress_general_from=50&progress_general_to=100&per_page=20';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Get course users
import requests

url = 'https://api.kwiga.com/courses/:course/users'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()


# ---
# Filtered example
# ---

# Get course users with filters
import requests

url = 'https://api.kwiga.com/courses/:course/users?progress_general_from=50&progress_general_to=100&per_page=20'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
    "data": [
        {
            "user": {
                "id": 3,
                "name": "Admin ΠšΠ°Π±ΠΈΠ½Π΅Ρ‚",
                "email": "test@test.com"
            },
            "contact": {
                "id": 1,
                "user_id": 3,
                "email": "test@test.com",
                "first_name": "test",
                "last_name": "admin cabinet",
                "phone": "979",
                "created_at": "2023-05-26T09:47:20.000000Z",
                "last_activity_at": null
            },
            "course_points": 0,
            "course_progress": {
                "course_id": 20,
                "course_url": "http://test.local/courses/Pm8CEofJ",
                "title": "Dripping",
                "lessons_count": 9,
                "lessons_count_viewed": 0,
                "lessons_viewed_percentage": 0,
                "lessons_count_completed": 0,
                "lessons_completion_percentage": 0,
                "quizzes_count": 0,
                "quizzes_count_completed": 0,
                "quizzes_completion_percentage": 0,
                "scores_max": 0,
                "quizzes_scores": 0,
                "product_scores": 0,
                "scores": 0,
                "is_completed": false,
                "completed_at": null,
                "current_lesson": {
                    "id": 48,
                    "course_id": 20,
                    "type_id": 1,
                    "status_id": 4,
                    "number": 6,
                    "title": "2",
                    "slug": "2",
                    "link": "http://test.local/courses/Pm8CEofJ/2",
                    "quizzes": [],
                    "module": {
                        "id": 7,
                        "course_id": 20,
                        "number": 1,
                        "title": "Module title"
                    }
                },
                "next_lesson": {
                    "id": 46,
                    "course_id": 20,
                    "type_id": 1,
                    "status_id": 4,
                    "number": 1,
                    "title": "3",
                    "slug": "3",
                    "link": "http://test.local/courses/Pm8CEofJ/3",
                    "module": {
                        "id": 7,
                        "course_id": 20,
                        "number": 1,
                        "title": "Module title"
                    }
                },
                "last_active_at": null,
                "is_checkpoints_skipped": false,
                "checkpoints": [],
                "is_current_dripping_date_skipped": false,
                "is_next_dripping_date_skipped": false,
                "current_dripping_date": null,
                "next_dripping_date": null
            },
            "lessons_available_count": 9,
            "is_full_access": true,
            "subscription": {
                "is_active": true,
                "is_paid": true,
                "start_at": "2024-04-23T13:45:02.000000Z",
                "end_at": null,
                "offer_end_at": null,
                "order_end_at": null,
                "count_available_days": 661,
                "count_left_days": null,
                "state": {
                    "id": 2,
                    "name": "Open",
                    "title": "Open"
                }
            }
        }
    ],
    "links": {
        "first": "http://api.kwiga.local/courses/20/users?page=1",
        "last": "http://api.kwiga.local/courses/20/users?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "http://api.kwiga.local/courses/20/users?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "http://api.kwiga.local/courses/20/users",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}

GET https://api.kwiga.com/courses/:course/users

Π’ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ список учасників курсу Ρ‚Π° Ρ—Ρ… прогрСс. Π„ пагінація, Π·Π° замовчуванням 15 (max: 250). Π—Π°ΠΌΡ–Π½Ρ–Ρ‚ΡŒ :course Π½Π° id курсу, який ΠΌΠΎΠΆΠ½Π° взяти Π² адрСсному рядку рСдагування/управління курсу Π°Π±ΠΎ Π² Π΅Π½Π΄ΠΏΠΎΡ–Π½Ρ‚Ρ– ΠΏΠΎ списку курсів.

URL Parameters

search string optional
НСстрогий ΠΏΠΎΡˆΡƒΠΊ ΠΏΠΎ Ρ–ΠΌΠ΅ΠΉΠ»Ρƒ Π°Π±ΠΎ Ρ–ΠΌΠ΅Π½Ρ–
contact_id integer optional
По id ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρƒ
user_id integer optional
По id користувача
progress_general_from integer optional
Π—Π°Π³Π°Π»ΡŒΠ½ΠΈΠΉ прогрСс Π²Ρ–Π΄ (Π²Ρ–Π΄ 0 Π΄ΠΎ 99)
progress_general_to integer optional
Π—Π°Π³Π°Π»ΡŒΠ½ΠΈΠΉ прогрСс Π΄ΠΎ (Π²Ρ–Π΄ 0 Π΄ΠΎ 100)
lessons_viewed_from integer optional
Відсоток пСрСгляду ΡƒΡ€ΠΎΠΊΡƒ Π²Ρ–Π΄ (Π²Ρ–Π΄ 0 Π΄ΠΎ 99)
lessons_viewed_to integer optional
Відсоток пСрСгляду ΡƒΡ€ΠΎΠΊΡƒ Π΄ΠΎ (Π²Ρ–Π΄ 0 Π΄ΠΎ 100)
quizzes_progress_from integer optional
Відсоток ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½ΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ Π²Ρ–Π΄ (Π²Ρ–Π΄ 0 Π΄ΠΎ 99)
quizzes_progress_to integer optional
Відсоток ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½ΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ Π΄ΠΎ (Π²Ρ–Π΄ 0 Π΄ΠΎ 100)
last_activity_from datetime optional
ΠžΡΡ‚Π°Π½Π½Ρ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ–ΡΡ‚ΡŒ Π½Π° курсі Π²Ρ–Π΄ (Π΄Π°Ρ‚Π° UTC)
last_activity_to datetime optional
ΠžΡΡ‚Π°Π½Π½Ρ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ–ΡΡ‚ΡŒ Π½Π° курсі Π΄ΠΎ (Π΄Π°Ρ‚Π° UTC)
per_page integer optional
ΠšΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ–Π² Π½Π° сторінці
Maximum: 250
Default: 15
page integer optional
НомСр сторінки
Default: 1

ΠŸΡ€ΠΎΠΏΠΎΠ·ΠΈΡ†Ρ–Ρ—

ΠžΡ‚Ρ€ΠΈΠΌΠ°Π½Π½Ρ списку ΠΏΡ€ΠΎΠΏΠΎΠ·ΠΈΡ†Ρ–ΠΉ

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Get offers list filtered by product

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/offers?product_id=130', $options);

$result = json_decode($response->getBody());
?>
<?php
// Get offers list filtered by product

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/offers?product_id=130');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request GET 'https://api.kwiga.com/offers?product_id=130' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'
// Get offers list filtered by product
const url = 'https://api.kwiga.com/offers?product_id=130';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Get offers list filtered by product
import requests

url = 'https://api.kwiga.com/offers?product_id=130'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
  "data": [
    {
      "id": 273,
      "unique_offer_code": "nELQzbLRPmzo",
      "url": "https://kwiga.com/o/nELQzbLRPmzo",
      "title": "This is paid offer for my course",
      "description": "<p style=\"text-align: left\">Description with html.</p>",
      "short_description": "<p style=\"text-align: left\">Shot description with html.</p>",
      "price_type": {
        "id": 2,
        "name": "ΠŸΠ»Π°Ρ‚Π½ΠΎ"
      },
      "price": {
        "amount": "10.00",
        "amount_rounded": "10.00",
        "amount_formatted": "10.00 usd",
        "amount_formatted_code": "$10.00",
        "amount_formatted_code_short": "$10.00",
        "currency": {
          "id": 5,
          "code": "USD",
          "html_code": "$",
          "html_letter_code": "usd",
          "is_volatile": false
        }
      },
      "price_discounted": {
        "amount": 5,
        "amount_rounded": "5.00",
        "amount_formatted": "5.00 usd",
        "amount_formatted_code": "$5.00",
        "amount_formatted_code_short": "$5.00",
        "currency": {
          "id": 5,
          "code": "USD",
          "html_code": "$",
          "html_letter_code": "usd",
          "is_volatile": false
        }
      },
      "discount": {
        "id": 3,
        "price_discounted": 5,
        "limit_type": {
          "id": 1,
          "name": "БСзстроково"
        },
        "start_at": "2023-12-28T14:41:00.000000Z",
        "start_at_utc": "2023-12-28T12:41:00.000000Z",
        "start_timezone_id": 371,
        "end_at": "2024-01-03T14:41:00.000000Z",
        "end_type": 3,
        "end_at_utc": "2024-01-03T12:41:00.000000Z",
        "end_timezone_id": 371,
        "sales_limit": null,
        "sales": null,
        "is_active": true,
        "is_available": true,
        "created_at": "2023-12-28T12:41:58.000000Z",
        "updated_at": "2023-12-28T12:41:58.000000Z",
        "start_timezone": {
          "id": 371,
          "name": "Europe/Kyiv",
          "name_full": "Europe/Kyiv (UTC+03:00)",
          "value": "UTC+03:00"
        },
        "end_timezone": {
          "id": 371,
          "name": "Europe/Kyiv",
          "name_full": "Europe/Kyiv (UTC+03:00)",
          "value": "UTC+03:00"
        }
      },
      "has_subscription": false,
      "limit_type": {
        "id": 1,
        "name": "НСобмСТСно"
      },
      "limit_of_sales": null,
      "is_active": true,
      "is_draft": false,
      "validity_start": {
        "type": "validity_start",
        "duration_type_id": 1,
        "date_at": "2023-12-28T14:40:00.000000Z",
        "date_at_utc": "2023-12-28T12:40:00.000000Z",
        "timezone_id": 371,
        "timezone": {
          "id": 371,
          "name": "Europe/Kyiv",
          "name_full": "Europe/Kyiv (UTC+03:00)",
          "value": "UTC+03:00"
        },
        "after_months": 0,
        "after_days": 0,
        "specific_time": null
      },
      "validity_end": {
        "type": "validity_end",
        "duration_type_id": 3,
        "date_at": "2023-12-28T14:40:00.000000Z",
        "date_at_utc": "2023-12-28T12:40:00.000000Z",
        "timezone_id": 371,
        "timezone": {
          "id": 371,
          "name": "Europe/Kyiv",
          "name_full": "Europe/Kyiv (UTC+03:00)",
          "value": "UTC+03:00"
        },
        "after_months": 0,
        "after_days": 0,
        "specific_time": null
      },
      "products": [
        {
          "id": 130,
          "productable_id": 38,
          "productable_type": "course",
          "title": "This is my course",
          "link": "https://kwiga.com/courses/test-fail"
        }
      ]
    },
    {
      "id": 272,
      "unique_offer_code": "2obtMsUEujcy",
      "url": "https://kwiga.com/o/2obtMsUEujcy",
      "title": "This is free offer for my course",
      "description": null,
      "short_description": null,
      "price_type": {
        "id": 1,
        "name": "Π‘Π΅Π·ΠΊΠΎΡˆΡ‚ΠΎΠ²Π½ΠΎ"
      },
      "price": {
        "amount": "0.00",
        "amount_rounded": "0.00",
        "amount_formatted": "0.00 usd",
        "amount_formatted_code": "$0.00",
        "amount_formatted_code_short": "$0.00",
        "currency": {
          "id": 5,
          "code": "USD",
          "html_code": "$",
          "html_letter_code": "usd",
          "is_volatile": false
        }
      },
      "price_discounted": {
        "amount": 0,
        "amount_rounded": "0.00",
        "amount_formatted": "0.00 usd",
        "amount_formatted_code": "$0.00",
        "amount_formatted_code_short": "$0.00",
        "currency": {
          "id": 5,
          "code": "USD",
          "html_code": "$",
          "html_letter_code": "usd",
          "is_volatile": false
        }
      },
      "discount": null,
      "has_subscription": false,
      "limit_type": {
        "id": 1,
        "name": "НСобмСТСно"
      },
      "limit_of_sales": null,
      "is_active": true,
      "is_draft": false,
      "validity_start": {
        "type": "validity_start",
        "duration_type_id": 1,
        "date_at": "2023-12-27T12:45:00.000000Z",
        "date_at_utc": "2023-12-27T10:45:00.000000Z",
        "timezone_id": 371,
        "timezone": {
          "id": 371,
          "name": "Europe/Kyiv",
          "name_full": "Europe/Kyiv (UTC+03:00)",
          "value": "UTC+03:00"
        },
        "after_months": 0,
        "after_days": 0,
        "specific_time": null
      },
      "validity_end": {
        "type": "validity_end",
        "duration_type_id": 3,
        "date_at": "2023-12-27T12:45:00.000000Z",
        "date_at_utc": "2023-12-27T10:45:00.000000Z",
        "timezone_id": 371,
        "timezone": {
          "id": 371,
          "name": "Europe/Kyiv",
          "name_full": "Europe/Kyiv (UTC+03:00)",
          "value": "UTC+03:00"
        },
        "after_months": 0,
        "after_days": 0,
        "specific_time": null
      },
      "products": [
        {
          "id": 130,
          "productable_id": 38,
          "productable_type": "course",
          "title": "This is my course",
          "link": "https://kwiga.com/courses/test-fail"
        }
      ]
    }
  ],
  "links": {
    "first": "http://api.kwiga.local/offers?page=1",
    "last": "http://api.kwiga.local/offers?page=1",
    "prev": null,
    "next": null
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "links": [
      {
        "url": null,
        "label": "&laquo; Previous",
        "active": false
      },
      {
        "url": "http://api.kwiga.local/offers?page=1",
        "label": "1",
        "active": true
      },
      {
        "url": null,
        "label": "Next &raquo;",
        "active": false
      }
    ],
    "path": "http://api.kwiga.local/offers",
    "per_page": 15,
    "to": 1,
    "total": 2
  }
}

GET https://api.kwiga.com/offers

URL Parameters

page integer optional
НомСр сторінки
per_page integer optional
ΠšΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ–Π² Π²ΠΈΠ±Ρ–Ρ€ΠΊΠΈ
product_id integer optional
Π€Ρ–Π»ΡŒΡ‚Ρ€ ΠΏΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ
β–Έ filters object optional
Filter parameters
search string optional
ΠŸΠΎΡˆΡƒΠΊΠΎΠ²ΠΈΠΉ Π·Π°ΠΏΠΈΡ‚

ΠžΡ‚Ρ€ΠΈΠΌΠ°Π½Π½Ρ ΠΏΡ€ΠΎΠΏΠΎΠ·ΠΈΡ†Ρ–Ρ—

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Get offer by ID

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/offers/{id}', $options);

$result = json_decode($response->getBody());
?>
<?php
// Get offer by ID

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/offers/{id}');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request GET 'https://api.kwiga.com/offers/{id}' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'
// Get offer by ID
const url = 'https://api.kwiga.com/offers/{id}';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Get offer by ID
import requests

url = 'https://api.kwiga.com/offers/{id}'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
  "data": {
    "id": 1,
    "unique_offer_code": "6rT1wj99lbZV",
    "title": "Offer #1",
    "limit_type": {
      "id": 2,
      "name": "Certain amount"
    },
    "limit_of_sales": 20,
    "purchases_count": 1,
    "sales_left": 19
  }
}

GET https://api.kwiga.com/offers/:offer

ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³. Розсилка

Бписок списків ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ–Π²

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Get contact lists

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/mailing/contact-lists', $options);

$result = json_decode($response->getBody());
?>


# ---
# Paginated example
# ---

<?php
// Get contact lists with pagination

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/mailing/contact-lists?page=1&per_page=15', $options);

$result = json_decode($response->getBody());
?>
<?php
// Get contact lists

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/mailing/contact-lists');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>


# ---
# Paginated example
# ---

<?php
// Get contact lists with pagination

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/mailing/contact-lists?page=1&per_page=15');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request GET 'https://api.kwiga.com/mailing/contact-lists' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'


# ---
# Paginated example
# ---

curl --location --request GET 'https://api.kwiga.com/mailing/contact-lists?page=1&per_page=15' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'
// Get contact lists
const url = 'https://api.kwiga.com/mailing/contact-lists';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });


# ---
# Paginated example
# ---

// Get contact lists with pagination
const url = 'https://api.kwiga.com/mailing/contact-lists?page=1&per_page=15';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Get contact lists
import requests

url = 'https://api.kwiga.com/mailing/contact-lists'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()


# ---
# Paginated example
# ---

# Get contact lists with pagination
import requests

url = 'https://api.kwiga.com/mailing/contact-lists?page=1&per_page=15'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
  "data": [
    {
        "id": 2,
        "title": "ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2",
        "description": "ОписаниС",
        "is_default": false,
        "created_at": "2022-04-28T13:22:44.000000Z",
        "updated_at": "2022-04-28T13:22:44.000000Z"
    },
    {
        "id": 1,
        "title": "Мой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ список",
        "description": "Π”Π°Π½Π½Ρ‹ΠΉ список создаётся автоматичСски с вашим ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΅Π³ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ свои потрСбности.",
        "is_default": true,
        "created_at": "2022-04-28T12:47:08.000000Z",
        "updated_at": "2022-04-28T12:47:08.000000Z"
    }
  ],
  "links": {
        "first": "https://api.kwiga.com/mailing/contact-lists?page=1",
        "last": "https://api.kwiga.com/mailing/contact-lists?page=2",
        "prev": null,
        "next": "https://api.kwiga.com/mailing/contact-lists?page=2"
   },
   "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 2,
        "links": [
            {
                "url": null,
                "label": "&laquo; translation missing: ua.pagination_prev",
                "active": false
            },
            {
                "url": "https://api.kwiga.com/mailing/contact-lists?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": "https://api.kwiga.com/mailing/contact-lists?page=2",
                "label": "2",
                "active": false
            },
            {
                "url": "https://api.kwiga.com/mailing/contact-lists?page=2",
                "label": "translation missing: ua.pagination_next &raquo;",
                "active": false
            }
        ],
        "path": "https://api.kwiga.com/mailing/contact-lists",
        "per_page": 2,
        "to": 2,
        "total": 3
    }
}

GET https://api.kwiga.com/mailing/contact-lists

URL Parameters

page integer optional
НомСр сторінки
limit integer optional
ΠšΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ–Π² Π²ΠΈΠ±Ρ–Ρ€ΠΊΠΈ

ΠžΡ‚Ρ€ΠΈΠΌΠ°Π½Π½Ρ списку ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ–Π²

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Get contact list by ID

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/mailing/contact-lists/{id}', $options);

$result = json_decode($response->getBody());
?>
<?php
// Get contact list by ID

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/mailing/contact-lists/{id}');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request GET 'https://api.kwiga.com/mailing/contact-lists/{id}' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'
// Get contact list by ID
const url = 'https://api.kwiga.com/mailing/contact-lists/{id}';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Get contact list by ID
import requests

url = 'https://api.kwiga.com/mailing/contact-lists/{id}'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
  "data": {
    "id": 1,
    "title": "Мой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ список",
    "description": "Π”Π°Π½Π½Ρ‹ΠΉ список создаётся автоматичСски с вашим ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΅Π³ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ свои потрСбности.",
    "is_default": true,
    "created_at": "2022-04-28T12:47:08.000000Z",
    "updated_at": "2022-04-28T12:47:08.000000Z",
    "contacts": [
        {
            "id": 1,
            "first_name": "Alex",
            "middle_name": null,
            "last_name": "Π˜Π²Π°Π½ΠΎΠ²ΠΈΡ‡ Burt",
            "name": "Π˜Π²Π°Π½ΠΎΠ²ΠΈΡ‡ Burt Alex",
            "sex": null,
            "age": null,
            "email": "admin@grandstep.com.ua",
            "phone_country": "UA",
            "phone_number": "983721222",
            "city": null,
            "phone": "+380983721222",
            "created_at": "2022-04-28T12:47:07.000000Z",
            "updated_at": "2022-04-28T12:47:08.000000Z"
        }
    ],
    "statistic": {
        "contact_list_id": 1,
        "count_contacts": 1
    }
}
}

GET https://api.kwiga.com/mailing/contact-lists/:list

БтворСння списку ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ–Π²

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Create contact list

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
    'json' => [
        'title' => 'НазваниС Π³Ρ€ΡƒΠΏΠΏΡ‹',
        'description' => 'описаниС',
    ],
];

$response = $client->request('POST', '/mailing/contact-lists/', $options);

$result = json_decode($response->getBody());
?>
<?php
// Create contact list

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/mailing/contact-lists/');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');

$data = [
    'title' => 'НазваниС Π³Ρ€ΡƒΠΏΠΏΡ‹',
    'description' => 'описаниС',
];

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request POST 'https://api.kwiga.com/mailing/contact-lists/' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>' \
--data-raw '{"title":"НазваниС Π³Ρ€ΡƒΠΏΠΏΡ‹","description":"описаниС"}'
// Create contact list
const url = 'https://api.kwiga.com/mailing/contact-lists/';

const options = {
  method: 'POST',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
  body: JSON.stringify({
    'title': 'НазваниС Π³Ρ€ΡƒΠΏΠΏΡ‹',
    'description': 'описаниС'
  })
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Create contact list
import requests

url = 'https://api.kwiga.com/mailing/contact-lists/'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

data = {
    'title': 'НазваниС Π³Ρ€ΡƒΠΏΠΏΡ‹',
    'description': 'описаниС',
}

response = requests.post(url, headers=headers, json=data)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
    "data": {
        "id": 3,
        "title": "fsdaf asfsf dsafsda fsda",
        "description": "1dsad sadsa ds dsa",
        "is_default": false,
        "created_at": "2022-05-04T09:57:37.000000Z",
        "updated_at": "2022-05-04T09:57:37.000000Z"
    }
}

POST https://api.kwiga.com/mailing/contact-lists

Request

title string required
Назва
description string optional
Опис

Додавання ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ–Π² Π΄ΠΎ списку

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Bulk add contacts to lists

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
    'json' => [
        'contacts[]' => 1,
        'contacts[]' => 2,
        'contact_lists[]' => 1,
    ],
];

$response = $client->request('POST', '/mailing/contact-lists/bulk-contacts', $options);

$result = json_decode($response->getBody());
?>
<?php
// Bulk add contacts to lists

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/mailing/contact-lists/bulk-contacts');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');

$data = [
    'contacts[]' => 1,
    'contacts[]' => 2,
    'contact_lists[]' => 1,
];

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request POST 'https://api.kwiga.com/mailing/contact-lists/bulk-contacts' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>' \
--data-raw '{"contacts[]":2,"contact_lists[]":1}'
// Bulk add contacts to lists
const url = 'https://api.kwiga.com/mailing/contact-lists/bulk-contacts';

const options = {
  method: 'POST',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
  body: JSON.stringify({
    'contacts[]': 1,
    'contacts[]': 2,
    'contact_lists[]': 1
  })
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Bulk add contacts to lists
import requests

url = 'https://api.kwiga.com/mailing/contact-lists/bulk-contacts'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

data = {
    'contacts[]': 1,
    'contacts[]': 2,
    'contact_lists[]': 1,
}

response = requests.post(url, headers=headers, json=data)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
    "success": true
}

POST https://api.kwiga.com/mailing/contact-lists/bulk-contacts

URL Parameters

contacts integer[] required
ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΈ (ID)
contact_lists integer[] required
Бписки ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ–Π² (ID)

ΠŸΡ€ΠΎΠ΄Π°ΠΆΡ–. ΠšΡƒΠΏΠΎΠ½ΠΈ

Бписок ΠΊΡƒΠΏΠΎΠ½Ρ–Π²

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Get coupons list

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/coupons', $options);

$result = json_decode($response->getBody());
?>


# ---
# Filtered example
# ---

<?php
// Get coupons list with date filters

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/coupons?filters[date_from]=2022-04-15&filters[date_to]=2022-04-27', $options);

$result = json_decode($response->getBody());
?>
<?php
// Get coupons list

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/coupons');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>


# ---
# Filtered example
# ---

<?php
// Get coupons list with date filters

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/coupons?filters[date_from]=2022-04-15&filters[date_to]=2022-04-27');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request GET 'https://api.kwiga.com/coupons' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'


# ---
# Filtered example
# ---

curl --location --request GET 'https://api.kwiga.com/coupons?filters[date_from]=2022-04-15&filters[date_to]=2022-04-27' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'
// Get coupons list
const url = 'https://api.kwiga.com/coupons';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });


# ---
# Filtered example
# ---

// Get coupons list with date filters
const url = 'https://api.kwiga.com/coupons?filters[date_from]=2022-04-15&filters[date_to]=2022-04-27';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Get coupons list
import requests

url = 'https://api.kwiga.com/coupons'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()


# ---
# Filtered example
# ---

# Get coupons list with date filters
import requests

url = 'https://api.kwiga.com/coupons?filters[date_from]=2022-04-15&filters[date_to]=2022-04-27'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
    "data": [
        {
            "id": 3,
            "code": "KwigaSMVT-MD",
            "reward": 30,
            "is_fixed": true,
            "is_disposable": false,
            "used_amount": 0,
            "total_uses": 10,
            "total_uses_per_user": 1,
            "user": {
                "id": 3,
                "avatar_url": "https://someurl.com",
                "hash": "EL9p2ycy4Ypga715",
                "name": "Test User",
                "email": "test@example.com",
                "tag_name": "TestUser"
            },
            "created_at": "2022-04-28T09:46:11.000000Z",
            "updated_at": "2022-04-28T09:46:11.000000Z",
            "deleted_at": null
        }
    ]
}

GET https://api.kwiga.com/coupons

URL Parameters

β–Έ filters object optional
Filter parameters
date_from datetime optional
Π€Ρ–Π»ΡŒΡ‚Ρ€ Π·Π° Π΄Π°Ρ‚ΠΎΡŽ створСння. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ 'Π²Ρ–Π΄'
date_to datetime optional
Π€Ρ–Π»ΡŒΡ‚Ρ€ Π·Π° Π΄Π°Ρ‚ΠΎΡŽ створСння. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ 'Π΄ΠΎ'

ΠžΡ‚Ρ€ΠΈΠΌΠ°Π½Π½Ρ ΠΊΡƒΠΏΠΎΠ½Π°

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Get coupon by ID

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/coupons/{id}', $options);

$result = json_decode($response->getBody());
?>
<?php
// Get coupon by ID

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/coupons/{id}');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request GET 'https://api.kwiga.com/coupons/{id}' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'
// Get coupon by ID
const url = 'https://api.kwiga.com/coupons/{id}';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Get coupon by ID
import requests

url = 'https://api.kwiga.com/coupons/{id}'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
    "data": {
        "id": 1,
        "code": "KwigaSMVT-MD",
        "reward": 30,
        "is_fixed": true,
        "is_disposable": false,
        "used_amount": 0,
        "total_uses": 10,
        "total_uses_per_user": 1,
        "created_at": "2022-04-28T09:46:11.000000Z",
        "updated_at": "2022-04-28T09:46:11.000000Z",
        "deleted_at": null
    }
}

GET https://api.kwiga.com/coupons/:coupon

Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ ΠΊΡƒΠΏΠΎΠ½

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Create coupon

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
    'json' => [
        'code' => 'MY-COUPON',
        'reward' => 0,
        'type_discount[id]' => 'discount_with_percent',
        'expires_at' => ,
        'timezone[id]' => 375,
        'total_uses' => 0,
        'total_uses_per_user' => 0,
    ],
];

$response = $client->request('POST', '/coupons', $options);

$result = json_decode($response->getBody());
?>
<?php
// Create coupon

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/coupons');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');

$data = [
    'code' => 'MY-COUPON',
    'reward' => 0,
    'type_discount[id]' => 'discount_with_percent',
    'expires_at' => ,
    'timezone[id]' => 375,
    'total_uses' => 0,
    'total_uses_per_user' => 0,
];

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request POST 'https://api.kwiga.com/coupons' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>' \
--data-raw '{"code":"MY-COUPON","reward":0,"type_discount[id]":"discount_with_percent","expires_at":null,"timezone[id]":375,"total_uses":0,"total_uses_per_user":0}'
// Create coupon
const url = 'https://api.kwiga.com/coupons';

const options = {
  method: 'POST',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
  body: JSON.stringify({
    'code': 'MY-COUPON',
    'reward': 0,
    'type_discount[id]': 'discount_with_percent',
    'expires_at': ,
    'timezone[id]': 375,
    'total_uses': 0,
    'total_uses_per_user': 0
  })
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Create coupon
import requests

url = 'https://api.kwiga.com/coupons'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

data = {
    'code': 'MY-COUPON',
    'reward': 0,
    'type_discount[id]': 'discount_with_percent',
    'expires_at': ,
    'timezone[id]': 375,
    'total_uses': 0,
    'total_uses_per_user': 0,
}

response = requests.post(url, headers=headers, json=data)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
    "data": {
        "id": 8,
        "code": "MY-COUPON",
        "reward": 100,
        "type_discount": {
            "id": "discount_with_percent",
            "name": "In % of order/offer value"
        },
        "type_date_expired": {
            "id": "indefinite_action",
            "name": "Never expires"
        },
        "type_total_count_used": {
            "id": "certain_amount",
            "name": "A certain amount"
        },
        "type_used_contact_lists": {
            "id": "all_users",
            "name": "All users"
        },
        "is_fixed": false,
        "is_active": true,
        "used_amount": 0,
        "has_infinite_used": true,
        "has_access_contact_lists": false,
        "total_uses": 0,
        "total_uses_per_user": 1,
        "contact_lists": [],
        "type": {
            "id": 4,
            "title": "Offers"
        },
        "expires_at": null,
        "expires_at_utc": null,
        "timezone_id": null,
        "currency_id": null,
        "currency": null,
        "created_at": "2024-01-09T16:17:55.000000Z",
        "updated_at": "2024-01-09T16:17:55.000000Z",
        "deleted_at": null
    }
}

POST https://api.kwiga.com/coupons

URL Parameters

code string optional
Код ΠΊΡƒΠΏΠΎΠ½Ρƒ. Π―ΠΊΡ‰ΠΎ Π½Π΅ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ, ΠΊΠΎΠ΄ Π·Π³Π΅Π½Π΅Ρ€ΡƒΡ”Ρ‚ΡŒΡΡ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ
type_discount.id string required
Π’ΠΈΠΏ Π·Π½ΠΈΠΆΠΊΠΈ: відсоток Π²Ρ–Π΄ суми - `discount_with_percent` Π°Π±ΠΎ фіксована Π·Π½ΠΈΠΆΠΊΠ° - `discount_with_currency`
Example: discount_with_percent or discount_with_currency
expires_at datetime optional
Π’Π΅Ρ€ΠΌΡ–Π½ Π΄Ρ–Ρ— ΠΊΡƒΠΏΠΎΠ½Π°. Π―ΠΊΡ‰ΠΎ null Ρ‡ΠΈ Π½Π΅ Π²ΠΊΠ°Π·ΡƒΠ²Π°Ρ‚ΠΈ, Ρ‚ΠΎ бСзстроково
Example: 2024-12-31 or 2024-12-31 23:59:59
timezone.id integer optional
Π’Π°ΠΉΠΌΠ·ΠΎΠ½Π° Π΄Π°Ρ‚ΠΈ Ρ‚Π΅Ρ€ΠΌΡ–Π½Ρƒ Π΄Ρ–Ρ— ΠΊΡƒΠΏΠΎΠ½Π°
total_uses integer optional
Π›Ρ–ΠΌΡ–Ρ‚ Π½Π° ΠΊΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚Π°Π½ΡŒ ΠΊΡƒΠΏΠΎΠ½Π°. 0 - Π±Π΅Π· обмСТСнь
total_uses_per_user integer optional
Π›Ρ–ΠΌΡ–Ρ‚ Π½Π° ΠΊΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚Π°Π½ΡŒ ΠΊΡƒΠΏΠΎΠ½Π° ΠΎΠ΄Π½ΠΈΠΌ користувачСм

ΠŸΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠ° ΠΊΡƒΠΏΠΎΠ½Π°

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Check coupon validity

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
    'json' => [
        'code' => 'VAJ6-EA',
        'price' => 65,
    ],
];

$response = $client->request('POST', '/coupons/check', $options);

$result = json_decode($response->getBody());
?>
<?php
// Check coupon validity

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/coupons/check');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');

$data = [
    'code' => 'VAJ6-EA',
    'price' => 65,
];

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request POST 'https://api.kwiga.com/coupons/check' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>' \
--data-raw '{"code":"VAJ6-EA","price":65}'
// Check coupon validity
const url = 'https://api.kwiga.com/coupons/check';

const options = {
  method: 'POST',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
  body: JSON.stringify({
    'code': 'VAJ6-EA',
    'price': 65
  })
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Check coupon validity
import requests

url = 'https://api.kwiga.com/coupons/check'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

data = {
    'code': 'VAJ6-EA',
    'price': 65,
}

response = requests.post(url, headers=headers, json=data)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
  "data": {
    "can_use": true,
    "discount": 6.5
  }
}

POST https://api.kwiga.com/coupons/check

ΠŸΠ΅Ρ€Π΅Π²Ρ–Ρ€ΡΡ” ΠΊΡƒΠΏΠΎΠ½ Π½Π° існування Ρ– ΠΌΠΎΠΆΠ»ΠΈΠ²Ρ–ΡΡ‚ΡŒ використання (Π½Π΅ Π²ΠΈΡ‡Π΅Ρ€ΠΏΠ°Π½ΠΎ Π»Ρ–ΠΌΡ–Ρ‚ / Π½Π΅ закінчився Ρ‚Π΅Ρ€ΠΌΡ–Π½ Π΄Ρ–Ρ—).
Π—Π²Π΅Ρ€Π½Ρ–Ρ‚ΡŒ ΡƒΠ²Π°Π³Ρƒ: ΠΏΡ€ΠΈ використанні Π½Π° checkout сторінці ΠΊΡƒΠΏΠΎΠ½ ΠΌΠΎΠΆΠ΅ Π½Π΅ застосовуватися ΠΏΡ€ΠΈ наступних ΡƒΠΌΠΎΠ²Π°Ρ…: якщо Π½Π° ΠΏΡ€ΠΎΠΏΠΎΠ·ΠΈΡ†Ρ–Ρ— Π²ΠΈΠΌΠΊΠ½Π΅Π½ΠΎ використання ΠΊΡƒΠΏΠΎΠ½Ρ–Π²/Π΄Π°Π½ΠΎΠ³ΠΎ ΠΊΡƒΠΏΠΎΠ½Π°; Π½Π° ΠΊΡƒΠΏΠΎΠ½Ρ– Ρ” обмСТСння списками ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ–Π²; користувач Π²ΠΆΠ΅ використовував ΠΊΡƒΠΏΠΎΠ½ Ρ– Π½Π° ΠΊΡƒΠΏΠΎΠ½Ρ– Ρ” обмСТСння ΠΏΠΎ ΠΊΡ–Π»ΡŒΠΊΠΎΡΡ‚Ρ– Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚Π°Π½ΡŒ.

Parameters

code string required
Код ΠΊΡƒΠΏΠΎΠ½Π° для ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠΈ
price number optional
Π¦Ρ–Π½Π° для Ρ€ΠΎΠ·Ρ€Π°Ρ…ΡƒΠ½ΠΊΡƒ Π·Π½ΠΈΠΆΠΊΠΈ. Π―ΠΊΡ‰ΠΎ Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ, Ρ‚ΠΎ Ρƒ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ– Π±ΡƒΠ΄Π΅ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΠΎ значСння Π·Π½ΠΈΠΆΠΊΠΈ Ρƒ ΠΏΠΎΠ»Ρ– discount

Π‘Π΅Ρ€Ρ‚ΠΈΡ„Ρ–ΠΊΠ°Ρ‚ΠΈ

ΠžΡ‚Ρ€ΠΈΠΌΠ°Π½Π½Ρ сСртифікат Π·Π° Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Get certificate by number

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/certificates/by-number/{number}', $options);

$result = json_decode($response->getBody());
?>
<?php
// Get certificate by number

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/certificates/by-number/{number}');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request GET 'https://api.kwiga.com/certificates/by-number/{number}' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'
// Get certificate by number
const url = 'https://api.kwiga.com/certificates/by-number/{number}';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Get certificate by number
import requests

url = 'https://api.kwiga.com/certificates/by-number/{number}'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
    "data": {
        "id": 55,
        "uuid": "262e7042-1933-42a9-ba01-e96d7d5110dc",
        "cabinet_id": 1,
        "user_id": 273,
        "issued_at": "2023-07-25T15:36:44.000000Z",
        "number": "1986-0001",
        "link": "http://cabinet-1.kwiga.local/certificates/262e7042-1933-42a9-ba01-e96d7d5110dc",
        "created_at": "2023-07-25T15:36:44.000000Z",
        "updated_at": "2023-07-25T15:36:44.000000Z",
        "finished_at": "2023-07-25T15:36:44.000000Z",
        "points": 120,
        "user": {
            "id": 273,
            "name": "test name",
            "email": "test-student@kwiga.com"
        },
        "certificateble_title": "Test course"
    }
}

GET https://api.kwiga.com/certificates/by-number/:number

Π’Π°ΠΉΠΌΠ·ΠΎΠ½ΠΈ

ΠžΡ‚Ρ€ΠΈΠΌΠ°Π½Π½Ρ списку Ρ‚Π°ΠΉΠΌΠ·ΠΎΠ½

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ:

<?php
// Get timezones list

use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://api.kwiga.com']);

$options = [
    'headers' => [
        'Accept' => 'application/json',
        'Token' => '<Token>',
        'Cabinet-Hash' => '<Cabinet-Hash>',
    ],
];

$response = $client->request('GET', '/timezones', $options);

$result = json_decode($response->getBody());
?>
<?php
// Get timezones list

$headers = [
    'Accept: application/json',
    'Token: <Token>',
    'Cabinet-Hash: <Cabinet-Hash>',
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.kwiga.com/timezones');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
?>
curl --location --request GET 'https://api.kwiga.com/timezones' \
--header 'Content-Type: application/json' \
--header 'Token: <Token>' \
--header 'Cabinet-Hash: <Cabinet-Hash>'
// Get timezones list
const url = 'https://api.kwiga.com/timezones';

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
  },
};

fetch(url, options)
  .then(response => response.json())
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error('Error:', error);
  });
# Get timezones list
import requests

url = 'https://api.kwiga.com/timezones'

headers = {
    'Accept': 'application/json',
    'Token': '<Token>',
    'Cabinet-Hash': '<Cabinet-Hash>',
}

response = requests.get(url, headers=headers)

result = response.json()

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Ρ–:

{
    "data": [
        {
            "id": 1,
            "name": "Asia/Kabul",
            "name_full": "Asia/Kabul (UTC+04:30)",
            "value": "UTC+04:30"
        },
        {
            "id": 2,
            "name": "Europe/Tirane",
            "name_full": "Europe/Tirane (UTC+02:00)",
            "value": "UTC+02:00"
        },
        ...
    ]
}

GET https://api.kwiga.com/timezones