Доступ к API предоставляется по HTTPS. Конечная точка — https://api.apm.group/
Все запросы должны отправляться с использованием метода POST.
API поддерживает два формата данных:
Формат ответа соответствует формату запроса. По умолчанию используется JSON.
Количество попыток логина с неверным паролем ограничено (IP-адрес блокируется на 3 часа после достижения лимита).
Для использования API необходимо иметь подтвержденный аккаунт на https://apm.group и действительный Токен.
Токен действителен только для IP-адреса, с которого он был сгенерирован. Он не имеет срока действия (обновляется при регенерации вместе с используемым IP-адресом). Если вам нужно использовать несколько аккаунтов с одного IP-адреса, вы должны уведомить администрацию сайта.
Для использования API требуются параметры token и name (процесс генерации описан ниже).
POST https://api.apm.group/token
JSON Запрос
{
"username":"user1@mail.com",
"password":"myrealpassword"
}
JSON Ответ
{
"name":"user1",
"password":"ZtAZABfaQ78-EXT44M_HKvxyefVj8JM7"
}
POST https://api.apm.group/product/search
JSON Запрос
{
"name": "user1",
"token": "ZzcM5gWnNLizvVRxFcrTfK7PKlDbCa0W",
"code": "263202F100",
"analogs": true
}
JSON Ответ
{
"263202F100_code": {
"mainProducts": [
{
"id": "1714422",
"code": "263202F100",
"name": " Oil filter MOBIS ",
"price": 7.05,
"currency_id": "1",
"available": "7",
"min_lot": "1",
"make": "MOBIS",
"weight": "0.114",
"delivery": null,
"priceName": "USD",
"supplier_id": "3",
"price_info": 7.05,
"currency": "USD"
},
{
"price": 10.08,
"id": "1",
"code": "263202F100",
"name": "mpu020",
"currency_id": "1",
"available": "5",
"min_lot": "1",
"make": "mpu020 manufacturer",
"weight": "0.200",
"delivery": "15",
"supplier_id": "7",
"priceName": "DC1072",
"price_info": 10.08,
"currency": "USD"
},
. . .
{
"available": "5",
"make": "Hyundai / KIA",
"code": "263202F100",
"price": 13.18,
"name": "OIL FILTER",
"weight": "0.128",
"min_lot": "1",
"delivery": "16/50",
"priceName": "US6",
"currency_id": "1",
"supplier_id": "1",
"id": "0",
"price_info": 13.18,
"currency": "USD"
}
],
"analogProducts": [
{
"available": "10",
"make": "ASHIKA",
"code": "10ECO096",
"price": 1.93,
"name": "OIL FILTER",
"weight": "0",
"min_lot": "1",
"delivery": "5/0",
"priceName": "TRD",
"currency_id": "1",
"supplier_id": "8",
"id": "0",
"price_info": 1.93,
"currency": "USD"
},
. . .
{
"available": "5",
"make": "Hyundai / KIA",
"code": "263202F010",
"price": 5.97,
"name": "FUEL FILTER",
"weight": "0.495",
"min_lot": "1",
"delivery": "19/45",
"priceName": "JA2",
"currency_id": "1",
"supplier_id": "1",
"id": "0",
"price_info": 5.97,
"currency": "USD"
}
]
}
}
1 – USD
4 – AED
Полный пример ответа приведен в конце описания. П.2
POST https://api.apm.group/order/create
JSON Запрос
{
"name": "test_name",
"token": "ZzcM5gWnNLizvVRxFcrTfK7PKlDbCa0W",
"order": [
{
"id": "1714422",
"code": "263202F100",
"name": "Oil filter MOBIS",
"price": 7.00,
"currency_id": "3",
"make": "MOBIS",
"delivery": 2,
"priceName": "USD",
"supplier_id": "3",
"quantity": 2,
"CoeffMaxAgree": 0.01
},
{
"id": "1714428",
"code": "252822G000",
"name": "Pulley",
"price_info": 407.99,
"currency_id": "3",
"make": "MOBIS",
"delivery": 1,
"priceName": "USD",
"supplier_id": "3",
"quantity": 1,
"api_reference": "1000925328"
},
{
"id": "1",
"code": "263202F100",
"name": "Pulley",
"price_info": 276.1,
"currency_id": "1",
"make": "MOBIS",
"delivery": 1,
"priceName": "DC1072",
"supplier_id": "7",
"quantity": 1,
"api_reference": "contractor"
},
{
"id": "0",
"code": "263202F100",
"name": "Pulley",
"price": 5.91,
"currency_id": "1",
"make": "HYUNDAI/KIA",
"delivery": 1,
"priceName": "TRD",
"supplier_id": "8",
"quantity": 1,
"api_reference": "TRD"
},
{
"id": "0",
"code": "263202F100",
"name": "Pulley",
"price": 5.999,
"currency_id": "1",
"make": "Hyundai / KIA",
"delivery": 2,
"priceName": "JA2",
"supplier_id": "1",
"quantity": 1,
"api_reference": "api_ref"
},
{
"id": "0",
"code": "wrong_code",
"name": "Pulley",
"price": 5.91,
"currency_id": "1",
"make": "HYUNDAI/KIA",
"delivery": 1,
"priceName": "TRD",
"supplier_id": "8",
"quantity": 1,
"api_reference": "TRD"
}
],
"delivery": {
"fio": "test",
"city": "test",
"address": "Tank st.",
"phone": "+38099665544",
"reference": "4ty",
"notes": "for tests",
"delivery_type": 1,
"delivery_city": "delivery_city",
"delivery_street": "delivery_street",
"delivery_house": "13",
"delivery_apartment": "9"
}
}
В ответе в поле `info` могут описываться нюансы создания заказа, такие как недостаточное количество товара на складе (отсутствие на складе) и измененное количество заказанного товара (если запрашиваемое количество товара больше, чем есть в наличии, то количество товара в заказе изменяется автоматически, при этом выводится описание в этом поле).
При создании заказа, не факт, что все пункты заказа будут находится в одном заказе в нашей системе. Пункты заказа сортируются как по типам доставки, так и по складам, и могут принадлежать разным заказам с разными номерами в нашей системе
POST https://api.apm.group/order/search
JSON Запрос
{
"name": "test_name",
"token": "ZzcM5gWnNLizvVRxFcrTfK7PKlDbCa0W",
"order_id": 7893
}
JSON Ответ
[
{
"id": 7893,
"user_id": 733,
"created_at": 1545658177,
"updated_at": 1545658178,
"fio": "test",
"city": "test",
"address": "test",
"phone": "+380933898555",
"notes": "From API. for tests",
"admin_notes": null,
"payment_type": 2,
"delivery_type": 1,
"delivery_city": "delivery_city",
"delivery_street": "test",
"delivery_house": "+380933898555",
"delivery_apartment": null,
"status": "WAIT_PAY",
"currency_id": 1,
"first_payment_percent": null
}
]
POST https://api.apm.group/order/searchitems
Пункты заказа могут разделяться в зависимости от наличия на складе, повышения цены и т.д. К примеру: был создан пункт заказа с количеством 6 шт. детали MPU020. Товар отправляется по частям. Сначала 4 шт., затем 2 шт. (или же 2 шт. не оказалось в наличии, а есть только 4 шт.). Пункт заказа может быть разделен на два пункта. Количество в старом пункте и новом изменится соответственно на 4 шт. и 2 шт. Эти два пункта будут принадлежать одному заказу ("order_id") и иметь одинаковое значение параметра "api_reference", а так же будут иметь одинаковых производителей, склад, артикул (MPU020) и т.д.
JSON Запрос
{
"name": "test_name",
"token": "ZzcM5gWnNLizvVRxFcrTfK7PKlDbCa0W",
"api_reference": "123#321||123#322"
}
JSON Ответ
[
{
"id": 22088,
"order_id": 7910,
"price": "5.9100",
"quantity": 1,
"status": "EMPTY",
"currency_price": "5.9100",
"delivery_status": 1,
"original_quantity": null,
"status_date": 1545666564,
"api_reference": "123#322",
"supplier_detail_id": null
},
{
"id": 22087,
"order_id": 7909,
"price": "10.0800",
"quantity": 1,
"status": "EMPTY",
"currency_price": "10.0800",
"delivery_status": 1,
"original_quantity": null,
"status_date": 1545666563,
"api_reference": "123#321",
"supplier_detail_id": null
}
]
POST https://api.apm.group/order/searchorderitems
Значение `status` - это текущий статус пункта заказа. Возможные значения с описанием представлены в п.5.
JSON Запрос
{
"name": "test_name",
"token": "ZzcM5gWnNLizvVRxFcrTfK7PKlDbCa0W",
"order_id": 7908
}
JSON Ответ
[
{
"id": 22086,
"order_id": 7908,
"price": "5.9700",
"quantity": 1,
"status": "EMPTY",
"currency_price": "5.9700",
"delivery_status": 1,
"original_quantity": null,
"status_date": 1545666561,
"api_reference": "api_ref"
}
]
JSON Запрос
{
"name":"test_name",
"token":"ZzcM5gWnNLizvVRxFcrTfK7PKlDbCa0W",
"code":"263202F100||mpu020",
"analogs":true
}
JSON Ответ
{
"263202F100_code": {
"mainProducts": [
{
"id": "1714422",
"code": "263202F100",
"name": "Oil filter MOBIS",
"price": 7.05,
"currency_id": "1",
"available": "3",
"min_lot": "1",
"make": "MOBIS",
"weight": "0.114",
"delivery": null,
"priceName": "USD",
"supplier_id": "3",
"price_info": 7.05,
"currency": "USD"
},
{
"price": 10.08,
"id": "1",
"code": "263202F100",
"name": "mpu020",
"currency_id": "1",
"available": "5",
"min_lot": "1",
"make": "mpu020manufacturer",
"weight": "0.200",
"delivery": "15",
"supplier_id": "7",
"priceName": "DC1072",
"price_info": 10.08,
"currency": "USD"
},
{
"available": "15",
"make": "HYUNDAI/KIA",
"code": "263202F100",
"price": 5.91,
"name": "Oil filter",
"weight": "0.14",
"min_lot": "1",
"delivery": "2/0",
"priceName": "TRD",
"currency_id": "1",
"supplier_id": "8",
"id": "0",
"price_info": 5.91,
"currency": "USD"
},
{
"available": "5",
"make": "Hyundai / KIA",
"code": "263202F100",
"price": 5.97,
"name": "Oil filter",
"weight": "0.128",
"min_lot": "1",
"delivery": "17/45",
"priceName": "JA2",
"currency_id": "1",
"supplier_id": "1",
"id": "0",
"price_info": 5.97,
"currency": "USD"
},
]
}
}
$data='{"username":"test@ok.com","password":"000000000"}';
$ch = curl_init('https://api.apm.group/token');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
var_dump(curl_exec($ch));
curl_close($ch);
$data='<root>
<password>000000000</password>
<username>test@ok.com</username>
</root>'
$ch = curl_init('https://api.apm.group/token');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
var_dump(curl_exec($ch));
curl_close($ch);
$data='{"name":"test@ok.com.ua","token":"GuqnhVObR16LvDiZb_lsoyrBGKPtaEGv","code":"252822G000","analogs":true}';
$ch = curl_init('https://api.apm.group/product/search');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
var_dump(curl_exec($ch));
curl_close($ch);
curl_close($ch);
POST https://api.apm.group/tracking/items
JSON Запрос
{
"name": "<EMAIL>",
"token": "<TOKEN>",
"limit": 10,
"page": 1,
"code": "K1245",
"reference": "ref_2_0",
"order_id": 144601,
"status": "BOUGHT",
"stock": "WD1"
}
JSON Ответ
{
"items": [
{
"item_id": 1147738,
"order_id": 144601,
"order_status": "NOT_AVAILABLE",
"order_reference": null,
"brand": "FILTRON",
"code": "K1245",
"reference": "ref_2_0 pos 2",
"name": "",
"weight": 0.111,
"delivery": "40/60",
"warehouse": "EX1",
"price_usd": 5.56,
"price_info": 5.56,
"currency": "USD",
"quantity": 2,
"add_packing": false,
"status": "FACT_NOT_AVAILABLE",
"order_date": "2023-10-12 10:10:09",
"updated": "2023-10-12 10:10:10",
"delivery_status": "1"
},
{
"item_id": 1147737,
"order_id": 144601,
"order_status": "NOT_AVAILABLE",
"order_reference": null,
"brand": "FILTRON",
"code": "K1245",
"reference": "ref_2_0 pos 1",
"name": "",
"weight": 0.111,
"delivery": "40/60",
"warehouse": "EX1",
"price_usd": 5.56,
"price_info": 5.56,
"currency": "USD",
"quantity": 2,
"add_packing": false,
"status": "FACT_NOT_AVAILABLE",
"order_date": "2023-10-12 10:10:09",
"updated": "2023-10-12 10:10:10",
"delivery_status": "1"
}
],
"total_count": 188,
"page_count": 94,
"current_page": 1,
"per_page": 2
}
Примечание: Данные в примере ответа взяты из тестового пользователя, поэтому все статусы находятся в состоянии отказа.