Основна документація

Всі запити відбуваються за технології REST API.

Кореневий URL: https://crm.h-profit.com/bapi/

Усі запити мають надходити з наступними http заголовками:

Authorization Приклад: VWR2bQm7BzdJ7EEi0qYjJORK5BTelPez
Content-Type: application/json

Це має бути у кожному запиті!

Продукти

Продукти АПІ працюють за методами GET та POST

URL - /bapi/products

Отримати продукти GET

Тут ви зможете отримати список продуктів з системи відфільтрованні опціональними фільтрами.

Ключі пошукового рядка:

Рекомендовані:

  • limit - по замовчуванню 500
  • offset - по замовчуванню 0

Опціональні (необов'язкові):

  • category_id - по замовчуванню None
  • modify_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 - по замовчуванню 500
  • offset - по замовчуванню 0

Опційні (фільтри):

  • date_from - type UTC timestamp по замовчуванню None [приклад: 1695340800]
  • date_to - type UTC timestamp по замовчуванню None [приклад: 1695427199]
  • client_id - type int по замовчуванню None [приклад: 454433] - фільтр продажів по клієнту
  • warehouse_id - type int по замовчуванню None - фільтр продажів по складу (Повертає продаж навіть якщо лише один з продуктів цього продажу був із зазначеного складу)
  • status - type str по замовчуванню 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 - по замовчуванню 0
  • id - int
  • client_id - int
  • updated_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 - по замовчуванню 500
  • offset - по замовчуванню 0
  • start - UNIX timestamp of start datetime
  • end - 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 - рядок. Перераховані через кому запитувані дані. Доступні значення:

  • accounts
  • products_category
  • expenses_category
  • brand
  • warehouses

Примітка. Якщо типів порожній або відсутній, то повертаються всі перераховані дані.

Відповідь (приклад):

{
    "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 - по замовчуванню 500
  • offset - по замовчуванню 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
        }
    ]
}