Перевірка зв'язку

Найпростіший запит у всьому API: він нічого не змінює, нічого не читає й ні від чого не залежить. Потрібен, щоб одним викликом відповісти на питання «зв'язок є, адреса правильна, токен робочий?» — і відділити проблему мережі чи налаштування від проблеми у ваших даних.

Пінг проходить той самий шлях, що й будь-яка робоча операція: та сама адреса, той самий заголовок X-API-Token, та сама авторизація. Тому його відповідь доводить не лише доступність сервера, а й те, що ваш токен прийнято, а базу обслуговують. Якщо пінг відповідає ok: true — можна переходити до обміну; якщо ні, далі йти немає сенсу, лагодити треба тут.

Запит

POST /ping перевірка зв'язку, токена й версії API

Тіло запиту не читається взагалі — можна надіслати порожній об'єкт {} або не надсилати тіло зовсім. Метод обов'язково POST: на GET сервер відповість 405, як і на решті адрес API.

Запит
{}
Відповідь
{
  "ok": true,
  "api_version": "2.0",
  "server_time": "2026-07-28T09:47:45+03:00"
}
ПолеЩо означає
ok Завжди true. Якщо запит дійшов до обробки, пінг успішний за визначенням — відмовляти йому нема в чому.
api_version Версія контракту, яку обслуговує сервер (зараз 2.0). Це єдине місце, де версія віддається у явному вигляді.
server_time Поточний час сервера у форматі контракту часу — зі зсувом поясу. Потрібен лише для самодіагностики: порівняйте його з власним годинником, якщо підозрюєте розходження. На обмін це поле не впливає, і викликати пінг перед кожним обміном заради нього не треба.

Коли викликати

Пінг корисний саме там, де інакше довелося б гадати за непрямими ознаками:

СитуаціяЩо дає пінг
Налаштування нового клієнта Перевірити адресу й токен до того, як надсилати реальні дані. Помилку в налаштуванні видно відразу, і вона не залишає слідів в обліку.
Кнопка «Перевірити підключення» в обробці Готовий безпечний виклик для інтерфейсу: нічого не створює й не змінює, натискати можна скільки завгодно.
Діагностика під час збою обміну Відділити «не працює зв'язок або токен» від «не прийняли дані». Пінг пройшов, а вивантаження ні — річ у даних, а не в каналі.
Моніторинг Легка регулярна перевірка того, що API живий: не торкається бази й не створює бізнес-об'єктів.

Чого пінг не робить: не створює й не продовжує сесію (її в API немає) і не перевіряє, чи вивантажено таблицю штрих-кодів.

Як читати відповідь

Коди тут ті самі, що й у всьому API (повна таблиця — у розділі «З чого почати»), але в пінга вони читаються особливо прямо: кожен указує на конкретну причину, чому обмін не поїде.

КодЩо це означає для вас
200 Усе гаразд: адреса правильна, токен прийнято, базу обслуговують. Можна працювати.
401 Токен не передано або він невідомий. Перевірте заголовок X-API-Token у налаштуваннях обміну.
403 Токен правильний, але обслуговування бази припинено. Причина — у полі block_reason; питання вирішується з оператором ComboPocket, технічне налаштування тут ні до чого.
429 Спрацював захист від перебору токенів: з вашої адреси надійшло занадто багато невдалих спроб авторизації. Повторіть через час, указаний у заголовку Retry-After (у секундах).
404 / 5xx До застосунку справа не дійшла: неправильна адреса публікації або сервер недоступний. Перевірте адресу; якщо вона точно правильна — це на нашому боці.

Приклади виклику

Той самий запит різними мовами. Фрагмент можна покласти прямо під кнопку «Перевірити підключення» вашої обробки чи сервісу.

перевірка підключення
Соединение = Новый HTTPСоединение("combopocket.online",, , , , 60,
	Новый ЗащищенноеСоединениеOpenSSL);

Запрос = Новый HTTPЗапрос("/v2/exchange/ping");
Запрос.Заголовки.Вставить("X-API-Token", ТокенБазы);
Запрос.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
Запрос.УстановитьТелоИзСтроки("{}", КодировкаТекста.UTF8);

Ответ = Соединение.ОтправитьДляОбработки(Запрос);

Если Ответ.КодСостояния = 200 Тогда
	Сообщить("Підключення встановлено");
ИначеЕсли Ответ.КодСостояния = 401 Тогда
	Сообщить("Токен не прийнято - перевірте налаштування обміну");
ИначеЕсли Ответ.КодСостояния = 403 Тогда
	Сообщить("Обслуговування бази припинено - зверніться до оператора");
Иначе
	Сообщить("Сервіс недоступний, код " + Ответ.КодСостояния);
КонецЕсли;

Зверніть увагу: ОтправитьДляОбработки не викидає виключення за кодом 4xx — відповідь треба читати самостійно.

curlперевірка підключення
curl -X POST "https://combopocket.online/v2/exchange/ping" \
  -H "X-API-Token: 11111111-2222-3333-4444-555555555555" \
  -H "Content-Type: application/json; charset=utf-8" \
  -d "{}"

Додайте -i, щоб побачити HTTP-код разом із тілом відповіді.

PHPперевірка підключення
$ch = curl_init('https://combopocket.online/v2/exchange/ping');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => '{}',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'X-API-Token: ' . $tokenBazy,
        'Content-Type: application/json; charset=utf-8',
    ],
]);

$body = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);

echo ($code === 200 && $body['ok'])
    ? 'Підключення встановлено'
    : "Сервіс недоступний, код $code";
Pythonперевірка підключення
import requests

response = requests.post(
    "https://combopocket.online/v2/exchange/ping",
    headers={"X-API-Token": token_bazy},
    json={},
    timeout=60,
)

if response.status_code == 200 and response.json()["ok"]:
    print("Підключення встановлено")
else:
    print(f"Сервіс недоступний, код {response.status_code}")
JavaScriptперевірка підключення
const response = await fetch("https://combopocket.online/v2/exchange/ping", {
  method: "POST",
  headers: {
    "X-API-Token": tokenBazy,
    "Content-Type": "application/json; charset=utf-8",
  },
  body: "{}",
});

const data = await response.json();

console.log(response.status === 200 && data.ok
  ? "Підключення встановлено"
  : `Сервіс недоступний, код ${response.status}`);
C#перевірка підключення
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("X-API-Token", tokenBazy);

var response = await http.PostAsync(
    "https://combopocket.online/v2/exchange/ping",
    new StringContent("{}", Encoding.UTF8, "application/json"));

var body = await response.Content.ReadAsStringAsync();
var ok = JsonDocument.Parse(body).RootElement.GetProperty("ok").GetBoolean();

Console.WriteLine(response.IsSuccessStatusCode && ok
    ? "Підключення встановлено"
    : $"Сервіс недоступний, код {(int)response.StatusCode}");

Тіло приходить із будь-яким кодом, тож якщо вам достатньо факту «вийшло або ні», можна обмежитися перевіркою поля ok і не розбирати коди взагалі.