Основна документація
Всі запити відбуваються за технології REST API.
Кореневий URL: https://crm.h-profit.com/bapi/
Усі запити мають надходити з наступними http заголовками:
AuthorizationПриклад:VWR2bQm7BzdJ7EEi0qYjJORK5BTelPez
Content-Type:application/json
Це має бути у кожному запиті!
Продукти
Продукти АПІ працюють за методами GET та POST
URL - /bapi/products
Отримати продукти GET
Тут ви зможете отримати список продуктів з системи відфільтрованні опціональними фільтрами.
Ключі пошукового рядка:
Рекомендовані:
limit- по замовчуванню 500offset- по замовчуванню 0Опціональні (необов'язкові):
category_id- по замовчуванню Nonemodify_start- UNIX timestamp int. Час початку виборкиmodify_end- UNIX timestamp int. Час завершення виборкиwarehouse_id- int. Фільтр по складуproduct_id- int. Фільтр по складу продукту
Зауваження. modify_start та modify_end завжди мають вказуватись разом.
Примітка. Якщо вказати аргумент count=1, відповідь буде наступною:
{
"total": 90 // Це значення буде залежати від доступної інтеграції зі складами
}
Приклад відповіді:
{
"products": [
{
"success": true,
"data": [
{
"id": 98598,
"name": "GA&MA Сімпл гель 047 Амбер 15мл",
"brand": {
"name": null,
"id": 6148
},
"category": [
{
"id": 18183,
"name": "Гелі",
"parent_id": 18179
},
{
"id": 18179,
"name": "Нігті",
"parent_id": null
}
],
"attr": [],
"af": null,
"description": null,
"images": [
"https://crm.h-profit.com/bimages/get/0-6578-877855-0.jpg"
],
"size": "xxx",
"unit": "units",
"sku": "4134804",
"barcode": null,
"stock": [
{
"id": 85608,
"mid": 8584,
"name": "hp_client",
"instock": 0,
"quantity": 0,
"net_price": 0,
"price": 0.0000,
"sale_price": 0.0000
}
],
"type_product": 1
}
]
}
]
}
Оновлення та створення продуктів POST
Створення та оновлення звичайних продуктів
Приклад базової структури запиту (JSON):
{
"data": [
{
// "id": int - if edit
"name": "string",
"brand": "string",
"category": "string",
"description": "string",
"images": [
"string"
],
"unit": "string",
"sku": "string",
"barcode": "string",
"stock": [
{
"warehouse_name": "string",
"instock": 0, // int or float
"quantity": 0, // int or float
"net_price": 0, // int or float
"price": 0 // int or float,
"marketplace_id": 546 // int | Айді вашого складу
}
],
"remote_id": "string",
"integration_id": int,
"variations": [
{
"sku": "string",
"remote_id": "string",
"price": float or int,
"net_price": float or int,
"attributes": [
{
"name": "string",
"value": "string"
}
]
}
]
}
]
}
Приклад базового запиту (деякі значення рандомні)
{
"data": [
{
"name": "New good",
"brand": "",
"category": "Best category",
"description": "Опис для цього товару. Може бути порожнім, але не null",
"unit": "шт",
"sku": "New_product_565",
"barcode": "675544998867",
"stock": [
{
"warehouse_name": "Test",
"instock": 6, // int or float
"quantity": 6, // int or float
"net_price": 98, // int or float
"price": 140 // int or float
}
]
}
]
}
Зауваження. Редагування продукту відбувається тим же самим запитом, тільки з додаванням ключа
idв якому вказується айді редагуємого продукту.
Приклад відповіді
{
"success": true,
"data": [
{
"name": "New good",
"responsible_user_id": 11,
"fnsku": "New_product_565",
"description": "Опис для цього товару. Може бути порожнім, але не null",
"asin": "675544998867",
"attr_desc": "{}",
"attr_dict": "{}",
"af": "{}",
"weight_measure": "units",
"type_product": "1",
"parent_id": null,
"category_id": 17862,
"updated_at": "2025-01-17 14:37:25.957284",
"user_id": 11,
"id": 64857
}
]
}
Залишки продуктів
URL - /bapi/product_stock
Оновлення залишків POST
Зручність цього хендлеру полягає у тому, що тут необхідно лише передати id продукту, склад, та безпосередню кількість
Приклад запиту
[
{
"product_id": 58218,
"warehouse": 8521,
"quantity": 16,
"comment": "" // Не обов'язковий аргумент для відображення в історії.
},
...
]
Приклад відповіді:
{
"success": true,
"errors": [
{
"product_id": 582187,
"message": "no found product"
}
],
"success_updated_products": [
58218
]
}
Можливі помилки:
not valid product_id- помилковий ідентифікатор продуктуnot valid marketplace_id- помилковий ідентифікатор складуmarketplace_id {} not found- цей склад не знайденоquantity not valid- значення кількості помилковеno found product- такий продукт не знайдено
Або якщо не знайдено відповідної структури:
{
"success": false,
"error": "Wrong structure"
}
Категорії продуктів
URL - /bapi/product_categories
Отримати категорії GET
Ключі запиту:
Опційні:
category_id- по замовчуванню None
Приклад відповіді:
{
"success": true,
"data": [
{
"id": 17497,
"user_id": 11,
"name": "Іграшки",
"types": 1,
"created_at": "2024-09-02 06:42:20",
"parent_id": 0
},
{
"id": 17498,
"user_id": 11,
"name": "Інше",
"types": 1,
"created_at": "2024-09-02 06:42:30",
"parent_id": 0
},
...
]
}
Створення та редагування категорій продуктів POST
Структура запиту:
Обов'язкові ключі: (name, parent_id); Приклад запиту:
{
"data": [
// create
{
"name": "Test product category", // string
"parent_id": null // Integer or null; null if root category
},
// edit
{
"id": 67, // Integer; if available, will edit the category
"name": "Games (SEGA)", // string
"parent_id": 34 // Integer or null; null if root category
}
...
]
}
Приклад відповіді:
{
"data": [
{
"status": "ok",
"name": "Test product category",
"cid": 87
},
{
"status": "ok",
"name": "Games (SEGA)",
"cid": 34
}
]
}
Видалення категорій DELETE
Примітка: якщо ви видалите категорію товарів, в якій є товари. Видалення видалить прив'язку до цієї категорії з усіх товарів.
Приклад запиту:
{
"cid": 67 // category id
}
Приклад відповіді:
{
"success": true
}
Продажі
URL - /bapi/sales
Примітка У прикладах запитів вказується мінімально можлива кількість ключів, необхідна для створення базового продажу.
Отримати продажі GET
Ключі запиту:
Рекомендовані:
limit- по замовчуванню 500offset- по замовчуванню 0Опційні (фільтри):
date_from- typeUTC timestampпо замовчуванню None [приклад: 1695340800]date_to- typeUTC timestampпо замовчуванню None [приклад: 1695427199]client_id- typeintпо замовчуванню None [приклад: 454433] - фільтр продажів по клієнтуwarehouse_id- typeintпо замовчуванню None - фільтр продажів по складу (Повертає продаж навіть якщо лише один з продуктів цього продажу був із зазначеного складу)status- typestrпо замовчуванню None - фільтр продажів по статусу продажу. Деякі стандартні статуси продажів.
Приклад відповіді:
{
"success": true,
"data": [
{
"purchase_date": 1733988479,
"date_ident": "20241212",
"amount": 100.00,
"oid": 3730,
"amount_sale": 100.00,
"more_info": "{\"fee\": 5.00, \"account_fee\": 0, \"fee_type\": 0}",
"af": "",
"prepaid_amount": 45.00,
"responsible_user_id": 11,
"channel_id": "[867]",
"client_id": null,
"comment": "",
"discount": 0.00,
"discount_type": "%",
"order_status": "saled",
"account_id": 14532,
"prapaid_account_id": 2,
"clients_delivery_id": null,
"seller_order_id": "",
"tracking_number": null,
"delivery_info": null,
"remote_order_id": null,
"order_number": "12122402",
"currency": "2",
"fee": 5.00,
"terminal_trx": null,
"dps": null,
"items": [
{
"oiid": 4449,
"is_refund": 0,
"quantity": 1.000,
"barcode": "726578327384",
"product_id": 59809,
"mid": 8552,
"parent_id": null,
"net_price": 123.00,
"tax": 0,
"channel_tax": 5.0000,
"price": 100.00,
"base_price": 100.00,
"amount": 100.00,
"discount": 0.00,
"type_price": "",
"profit": -28.00,
"item_profit": -28.00,
"product_name": "Титикака",
"product_deleted": 0,
"ukzt": null
}
]
},
{
"purchase_date": 1744362309,
"date_ident": "20250411",
"amount": 20.00,
"oid": 3994,
"amount_sale": 20.00,
"more_info": "{\"account_fee\": 0, \"fee_type\": 0}",
"af": "",
"prepaid_amount": 0.00,
"responsible_user_id": 11,
"channel_id": "[905]",
"client_id": 106747,
"comment": "",
"cash_from_client": null,
"discount": 0.00,
"discount_type": "%",
"order_status": "saled",
"account_id": 2,
"prapaid_account_id": null,
"clients_delivery_id": 33043,
"seller_order_id": "",
"tracking_number": null,
"delivery_info": null,
"remote_order_id": null,
"order_number": "11042501",
"currency": "2",
"fee": null,
"terminal_trx": null,
"dps": null,
"items": [
{
"oiid": 4780,
"is_refund": 0,
"quantity": 1.000,
"barcode": null,
"product_id": 79499,
"mid": 8511,
"parent_id": null,
"net_price": 0,
"tax": 0,
"channel_tax": 0,
"price": 20.00,
"base_price": 20.00,
"amount": 20.00,
"discount": 0.00,
"type_price": "",
"profit": 20.00,
"item_profit": 20.00,
"product_name": "Хороший вариативный товар. ",
"product_deleted": 0,
"ukzt": null
}
],
"client": {
"id": 106747,
"name": "Іван Іванов Іванович",
"phone": "380860005555",
"email": "",
"first_name": "Іван",
"last_name": "Іванов",
"middle_name": "Іванович",
"client_deliveries": [
{
"id": 33043,
"delivery_id": 1,
"city": "8d5a980d-391c-11dd-90d9-001a92567626",
"post_office": "1ec09d88-e1c2-11e3-8c4a-0050568002cf"
}
]
}
},
....
]
}
Створення продажу PUT
Приклад запиту:
{
"amount": 50,
"amount_sale": 50,
"client_id": null,
"channel_id": [],
"order_status": "saled",
"account_id": 2,
"date": "2024-12-12T13:35:11.259Z",
"products": {
"0": {
"pid": 41895,
"count": 1,
"discount": 5,
"finish_price": 50.99,
"mid": 3
}
},
"comment": "",
"prepaid_amount": ""
}
Важливо. Товари вказуються в об'єкті, ключами якого є рядкові індекси, як у списку, але рядки.
Приклад відповіді:
{
"success": true,
"oid": 3732,
"order_number": "12122404",
"balance": 11934010.61,
"check": "allow",
"check_id": 0,
"type": ""
}
Редагування продажу POST
{
"oid": 3732,
"amount": 50,
"amount_sale": 50,
"client_id": null,
"channel_id": [],
"order_status": "saled",
"account_id": 2,
"date": "2024-12-12T13:35:11.259Z",
"discount": 0,
"discount_type": "%",
"products": {
"0": {
"pid": 41895,
"count": 2,
"discount": 1,
"finish_price": 50.99,
"mid": 3
}
},
"comment": "",
"prepaid_amount": ""
}
Приклад запиту:
{
"success": true,
"oid": 3733,
"order_number": "12122404",
"balance": 11934010.61,
"check": "allow",
"check_id": 0,
"type": ""
}
Видалення продажу DELETE
Приклад запиту
{
"oid": 3733
}
Приклад відповіді:
{
"success": true,
"balance": 11934010.61
}
Клієнти
URL - /bapi/clients
Отримати клієнтів GET
Ключі запиту
Опційні:
limit- по замовчуванню 500 (Рекоменовано 100)offset- по замовчуванню 0id- intclient_id- intupdated_at- timestamp (Поверне клієнтів які були оновлені (або створені) після зазначенного часу)
Приклад відповіді:
{
"success": true,
"data": [
{
"id": 105424,
"is_active": 1,
"name": "",
"phone": "380999999999",
"email": "",
"birth_day": "1995-12-16 00:00:00",
"more_info": "{}",
"birth_day_child_1": null,
"birth_day_child_2": null,
"birth_day_child_3": null,
"discount": 0,
"total_amount": 0.00,
"city": "",
"postal_code": null,
"state_or_region": null,
"country": null,
"created_at": 1686981559,
"updated_at": 1742370000,
"address": "",
"responsible_user_id": null,
"comment": "",
"first_name": "Світлана",
"last_name": "Пасічко",
"middle_name": "Юріївна",
"ref": null,
"nickname": "",
"company": "",
"invoice": "",
"card_url": null,
"card_number": null,
"balance": 0.00
},
...
]
}
Створення клієнта POST
Приклад запиту:
{
"data": [
{
"first_name": "string",
"last_name": "string",
"phone": "string",
"email": "string",
"birth_day": "string",
"discount": 0,
"total_amount": 0,
"city": "string",
"address": "string",
"company": "string"
// for edit
"id": int
},
... // максимум 3000 обʼєктів
]
}
Якщо ви додасте ключ id до обʼєкта, якщо клієнт буде знайдений, він відредагується.
Замовлення
URL - /bapi/remote_orders
Отримати замовлення GET
Ключі запиту (опційні):
limit- по замовчуванню 500offset- по замовчуванню 0start- UNIX timestamp of start datetimeend- UNIX timestamp of end datetime
Якщо start та end параметри відсутні, то повернуться замовлення за останні 3 місяці від поточної дати.
Приклад відповіді:
{
"success": true,
"response": [
{
"integration_id": 435,
"order_id": "321303990",
"user_id": 11,
"status": "pending",
"local_status": null,
"order_name": "Order ID: 321303990",
"order_atributes": null,
"info": {
"is_paid": false,
"payment_type": "Наложенный платеж"
},
"price": 500.32,
"discount": 0.0,
"currency": "грн",
"date_created": "2024-12-11 16:31:54",
"date_modified": "2024-12-11 16:31:55",
"phone": "+380672225522",
"email": null,
"address_1": {
"address_1": "",
"city": "",
"delivery_cost": 0,
"delivery_operator": "nova_poshta"
},
"address_2": "",
"is_deleted": 0,
"order_data": [
{
"id": 2423560633,
"name": "Зелена бавовняна шапка",
"product_id": 2423560633,
"sku": "shrek",
"quantity": 1.0,
"price": "500,32 грн",
"total": "500,32 грн",
"is_paid": false,
"payment_type": "Наложенный платеж",
"measure_unit": "шт."
}
],
"first_name": "Клієнт",
"last_name": "Плюс",
"client_id": 106623,
"id": 2673521,
"sales_id": null
},
...
]
}
Створення замовлення POST
Приклад тіла запита:
{
"data": {
// Обовʼязкові
"order_id": int, // Айді замовлення з вашої програми/інтеграції
"price": int or float, // ціна
"currency": str, // Рядок з абрівіатурою валюти: "UAH" or "USD" or "грн."
"first_name": string, // Імʼя клієнта
"address_1": RemoteAddressType{},
"order_data": OrderDataType[]
// Опційні
"status": string, // по замовчуванню "pending"
"order_name": string, // по замовчуванню "Order ID: {order id}"
"info": InfoType{}, // по замовчуванню {}
"order_created": utc timestamp, // приклад 1733397480.216189
"order_modified": utc timestamp, // приклад 1733397480.216189
"phone": string, // Номер телефону клієнта
"email": string, // email клієнта
"last_name": string, // Прізвище клієнта
"address_2": string // Поштовий індекс або додаткова інформація по доставці
}
}
Більше інформації в order statuses, InfoType, RemoteAddressType
Приклад відповіді
{
"success": true,
"reservedProducts": [
[
41901, // product id
"3" // marketplace id
]
]
}
Додаткові методи
URL - /bapi/reference_info
GET метод
Ключі запиту
types - рядок. Перераховані через кому запитувані дані. Доступні значення:
accountsproducts_categoryexpenses_categorybrandwarehouses
Примітка. Якщо типів порожній або відсутній, то повертаються всі перераховані дані.
Відповідь (приклад):
{
"success": true,
"data": {
"accounts": [
{
"id": 2,
"name": "Наличка",
"balance": 11972109.66,
"currency_id": 2,
"types": 0,
"created_at": 1587396469
}
],
"products_categories": [
{
"id": 17497,
"name": "Іграшки",
"types": 1,
"parent_id": 0,
"created_at": 1725259340
}
],
"expenses_categories": [
{
"id": 1,
"name": "Общие",
"types": 0,
"is_global": 1,
"is_receipt": 0,
"is_profit": 0
}
],
"brands": [
{
"id": 6017,
"name": "Новый бренд"
}
],
"warehouses": [
{
"id": 4,
"name": "Components",
"w_type": 3,
"created_at": 1587382394,
"is_deleted": 0
}
]
}
}
Синхронізація продуктів
URL - /bapi/products_sync
GET Отримати записи синхронізації продуктів
Відповідь (приклад):
{
"success": true,
"data": [
{
"product_id": 100025,
"user_id": `your user id`,
"integration_id": 435,
"remote_id": "2595649057"
}
]
}
POST Додати зв'язки продуктів
bulk - Обов'язковий аргумент
Приклад структури post запиту:
{
"bulk": [
{
"product_id": 8695,
"remote_id": "identificate string",
"integration_id": 545
}
]
}
Примітка bulk та ключі в об'єктах, зазначених у прикладі, є обов'язковими
Відповідь (приклад):
{
"success": true,
"results": [
{
"product_id": 100027,
"success": true,
"message": "Привязка успешно создана",
"sync_id": [],
"existing": false
}
],
"stats": {
"total": 1,
"success": 1,
"failed": 0,
"existing": 0,
"created": 1
}
}
DELETE Видалення прив'язок
bulk - Обов'язковий аргумент
Приклад структури DELETE запиту
{
"bulk": [
{
"remote_id": "identificate string",
"integration_id": 545
}
]
}
Примітка bulk та ключі в об'єктах, зазначених у прикладі, є обов'язковими
Відповідь (приклад):
{
"success": true,
"message": "Успешно удалено 1 записей.",
"deleted_items": [
{
"integration_id": 435,
"remote_id": "fvfddssccs"
}
]
}
Поставки
URL - /bapi/shipments
GET Отримати поставки
Ключі запиту
Якщо вам потрібна лише конкретна поставка, тоді:
sid- Ідентифікатор поставки
Інакше:
date_from- Дата початку фільтраціїdate_to- Кінцева дата фільтраціїstatus- Фільтр статусу відправлення (pending, complete, saled)warehouse_id- Фільтрувати відправлення за складом
// Примітка Ці аргументи не обов'язкові
Відповідь (приклад):
{
"success": true,
"data": [
{
"id": 11156,
"user_id": 11,
"marketplace_id": 8525,
"expenses_id": null,
"delivery_id": 9,
"amazon_shipment_id": null,
"shipment_status": "complete",
"fba_destination": null,
"fba_country": null,
"from_address": null,
"fee_total_units": null,
"fee_per_unit": 0.00,
"fee_total": 0.00,
"currency": "2",
"amount": 66000.00,
"quantity": 2000.00,
"delivered_date": 1744033768,
"comment": "",
"created_at": 1744033746,
"name": "Поставка 0 од. від 07.04.2025",
"expected_quantity": 2000.00,
"received_amount": 66000.00,
"supplier_id": null,
"delivery_expenses_id": null,
"responsible_user_id": null,
"currency_rate": 1.0000,
"ttn": "20451164735634",
"ttn_status": null,
"marketplace_name": "Тест поставки",
"status_name": "complete"
}
]
}
Склади
URL - /bapi/warehouses
GET Отримати склади
Ключі запиту:
limit- по замовчуванню 500offset- по замовчуванню 0
Приклад відповіді
{
"success": true,
"data": [
{
"id": 456,
"name": "Amazon Bags",
"created_at": 1587382361.0,
"w_type": 3,
"position": 0
},
{
"id": 655,
"name": "Components",
"created_at": 1587382394.0,
"w_type": 3,
"position": 0
},
{
"id": 8471,
"name": "Show Room",
"created_at": 1674476253.0,
"w_type": 1,
"position": 0
}
]
}