Доступ к API предоставляется по HTTPS. Конечная точка — https://api.apm.group/

Все запросы должны отправляться с использованием метода POST.

API поддерживает два формата данных:

Формат ответа соответствует формату запроса. По умолчанию используется JSON.

Количество попыток логина с неверным паролем ограничено (IP-адрес блокируется на 3 часа после достижения лимита).

Для использования API необходимо иметь подтвержденный аккаунт на https://apm.group и действительный Токен.

Токен действителен только для IP-адреса, с которого он был сгенерирован. Он не имеет срока действия (обновляется при регенерации вместе с используемым IP-адресом). Если вам нужно использовать несколько аккаунтов с одного IP-адреса, вы должны уведомить администрацию сайта.

Для использования API требуются параметры token и name (процесс генерации описан ниже).

#1 Генерация токена (необходим для работы с API)

POST https://api.apm.group/token

Параметры запроса#

Запрос Тип данных Описание
username* string логин на сайте
password* string пароль от аккаунта

Параметры ответа#

Ответ Тип данных Описание
name string логин пользователя
token string ключ для работы с API

JSON Запрос

{
  "username":"user1@mail.com",
  "password":"myrealpassword"
}

JSON Ответ

{
  "name":"user1",
  "password":"ZtAZABfaQ78-EXT44M_HKvxyefVj8JM7"
}

POST https://api.apm.group/product/search

Параметры запроса#

Запрос Тип данных Описание
name* string логин пользователя
token* string access token #
code* string строка с кодом товарной позиции.
Возможно указать несколько позиций через «||» (но не более 10). Пример «37566ere||3674555||mpu-010»
analogs bool отвечает за возврат списка аналогов по искомой товарной позиции. Допустимые значение «true» или «false».
По умолчанию «false».

JSON Запрос

{
  "name": "user1",
  "token": "ZzcM5gWnNLizvVRxFcrTfK7PKlDbCa0W",
  "code": "263202F100",
  "analogs": true
}

Параметры ответа#

Ответ Значение Описание
analogProducts перечень аналогов для детали с описанием
maineProduct перечень складов с описанием детали
263202F100_code 263202F100 запрашиваемый код «263202F100» с суффиксом «_code»
available 6 максимальное доступное количество для заказа
make Timken производитель
code 367MPU код товара (регистрозависим)
price 13.59 цена товара в валюте склада
name 0 название товара
weight 0 вес
min_lot 1 количество, минимально допустимое для заказа
delivery 3/10 время доставки (дни)
priceName EM название склада
currency_id 1 id валюты, в котором указана цена склада
supplier_id 1 id поставщика
id 0 id товара. Может принимать нулевое значение
price_info 13.59 цена в валюте пользователя
currency_user USD валюта пользователя, в которой указано значение. Задается в личном кабинете пользователя

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"
			}
		]
	}
}

Расшифровка складов#

Код склада Описание
AA1; AB1; AB2; AL1; ALM; AM1; AQ1; AR1; AS1; AW1; AX1; AZ1; BH; DD1; DN1; DU; DWC1; DWC2; DWC3; DWC4; DWC6; DWC7; DWC8; EE1; ER1; FA1; HD1; KW1; MB1; MDS1; MG1; ML1; MU1; NFI; ST1; TMO; TZ1; WD1; ZF1 склады в ОАЭ
DWC9; KW1 склады в Кувейте
JP1; JP3 склады в Японии
DU1; DU2; DU3; DU4; DU5; DU6; DU7; JA1; JA2; JA3; EU; KOR1; KOR2 cклады, где данные по наличию могут быть неточными, и поставщики с плохим рейтингом

Расшифровка валют#

1 – USD

4 – AED

Полный пример ответа приведен в конце описания. П.2

#3 Создание заказа

POST https://api.apm.group/order/create

Параметры запроса#

Параметр Тип Описание
delivery включает данные о клиенте, времени доставки и типе доставки. При их отсутствии заполняются данными пользователя, указанными при регистрации.
order* Включает в себя все пункты заказа
fio ФИО
city
address
phone
reference
notes
delivery_type* Допустимые значения:
  1. 1 - самовывоз
  2. 2 - доставка
delivery_status Вид доставки
Допустимые значения:
  1. 1 - самолетом
  2. 2 - контейнером (по умолчанию)
  3. 3 - доставка по ОАЭ (только для ОАЭ)
id* 123456 `id` товара. Может принимать пустое значение (берется из данных поиска)
code* TM5 Код товара
price* 17.33 Цена за единицу товара в валюте склада. (или же указать параметр `price_info` - цена в валюте клиента, указанная в кабинете.)
make* Toyota Производитель
priceName* TP1 Название склада
supplier_id* 1 Может принимать пустое значение (берется из данных поиска)
quantity 1 количество товаров
по умолчанию устанавливается значение - 1
api_reference текстовая информация, позволяющая клиенту идентифицировать пункт заказа. Максимальное значение 128 символов
CoeffMaxAgree максимальный коэффициент превышения цены продажи для клиента над ценой, показанной на сайте.
По умолчанию - 1.015%

Параметры ответа#

Ответ Описание
item_id id пункта заказа в нашей системе. Принимает значение «0» в случае ошибки
order_id id заказа в нашей системе. Принимает значение «0» в случае ошибки
code код товара
quantity количество товарных единиц в пункте заказа
price цена товара в валюте склада
price_info цена товара в валюте пользователя (валюта берется с данных личного кабинета)
supplier_id значение, указываемое при создании заказа
currency валюта пользователя для значения «price_info» (валюта берется с данных личного кабинета)
delivery_status вид доставки. Расшифровку см. выше
api_reference текстовая информация, позволяющая клиенту идентифицировать пункт заказа
status статус пункта заказа. Может принимать следующие значения:
  1. ok - пункт заказа создан без ошибок
  2. in - превышение максимального коэффициента превышения цены продажи для клиента над ценой, показанной на сайте
  3. nf - продукт не найден
  4. os - продукт временно отсутствует
  5. ml - количество заказанного продукта меньше количества, минимально допустимого для заказа
  6. qc - количество продуктов в пункте заказа изменено
  7. info - текстовое описание статуса пункта заказа или внесенных в него изменений, ошибок

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` могут описываться нюансы создания заказа, такие как недостаточное количество товара на складе (отсутствие на складе) и измененное количество заказанного товара (если запрашиваемое количество товара больше, чем есть в наличии, то количество товара в заказе изменяется автоматически, при этом выводится описание в этом поле).

При создании заказа, не факт, что все пункты заказа будут находится в одном заказе в нашей системе. Пункты заказа сортируются как по типам доставки, так и по складам, и могут принадлежать разным заказам с разными номерами в нашей системе

#4 Просмотр своих заказов

POST https://api.apm.group/order/search

Параметры запроса#

Запрос Описание
order_id номер заказа
Необязательное поле (если пропустить, выведет 20 последних заказов)
updated_at время в формате unix, указывающее на момент, с которого надо возвратить заказы, информация о которых была обновлена (подходит для автоматического обновления статусов доставки и т.д).

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
	}
]

#5 Просмотр пунктов заказов с возможностью поиска по идентификаторам, установленным клиентом (рекомендуемый способ для получения статуса пункта заказа)

POST https://api.apm.group/order/searchitems

ВАЖНО!

Пункты заказа могут разделяться в зависимости от наличия на складе, повышения цены и т.д. К примеру: был создан пункт заказа с количеством 6 шт. детали MPU020. Товар отправляется по частям. Сначала 4 шт., затем 2 шт. (или же 2 шт. не оказалось в наличии, а есть только 4 шт.). Пункт заказа может быть разделен на два пункта. Количество в старом пункте и новом изменится соответственно на 4 шт. и 2 шт. Эти два пункта будут принадлежать одному заказу ("order_id") и иметь одинаковое значение параметра "api_reference", а так же будут иметь одинаковых производителей, склад, артикул (MPU020) и т.д.

Параметры запроса#

Запрос Описание
order_id номер заказа
Необязательный (по умолчанию выводит 20 последних заказанных товарных позиций)
api_reference текстовая информация, позволяющая клиенту идентифицировать пункт заказа. Для отслеживания пунктов заказа.
Необязательное поле.
Для поиска нескольких пунктов заказа одним запросом с разными значениями api_reference, необходимо перечислить их в строке, разделяя значения `||`.

Параметры ответа#

Ответ Описание
supplier_detail_id вспомогательный параметр, позволяющий отследить, какой именно пункт заказа был разделен (пункт заказа может делиться несколько раз, как пример пункт заказа разделился на 3 пункта, у которых будут значения !000151259553/2, !000151259553/3, !000151259553/4).
status Значение `status` в ответе - текущий статус пункта заказа.
Может принимать следующие значения:
  1. EMPTY - заказ не в работе
  2. NEW - новый
  3. BOUGHT - закуплено
  4. IN_WORK - в работе
  5. IN_STOCK - на складе
  6. NOT_AVAILABLE - нет на складе
  7. READY_TO_SEND - готово к отгрузке
  8. WAIT_PAY - ожидание оплаты
  9. GIVEN - выдан
  10. PRICE_INCREASE - повышение цен
  11. DUBAI - на складе в ОАЭ
  12. USER_REFUSE - отказ клиента
order_id номер заказа в нашей системе
id номер пункта заказа в нашей системе
quantity фактическое количество в пункте заказа (original_quantity – принимает значение первоначально указанного количества в случае изменения значения)
price цена в валюте склада
currency_price цена в валюте пользователя (указывается в настройках аккаунта https://apm.group/profile/settings)
delivery_status вид доставки. Описание см. выше

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
	}
]

#6 Просмотр пунктов заказа

POST https://api.apm.group/order/searchorderitems

Параметры запроса#

Запрос Описание
order_id номер заказа
Необязательное поле (если пропустить, выведет все пункты сортируя по времени с выборкой по указанному времени)
status_date Время в формате unix.
Необязательное поле.
Для выборки пунктов, которые были изменены, начиная с этого времени.

Значение `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"
	}
]

Примеры запросов и ответов#

#7 Ответ на запрос по поиску нескольких товарных позиций с выводом аналогов

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"
			},
		]
	}
}

#8 Пример генерации `token` (JSON) на PHP

$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);

#9 Пример генерации `token` в (XML)


$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);

#10 Пример поиска запчастей по коду


$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);

#11 Доставка

POST https://api.apm.group/tracking/items

Параметры запроса#

Параметр Тип Описание
name* string Email для авторизации
token* string Token для авторизации
limit integer Количество элементов на странице. Значение по умолчанию - 100. Максимальное значение - 100.
page integer Номер страницы. Значение по умолчанию - 1.
Остальные поля предназначены для фильтрации
code string Фильтр по коду товара
reference string Фильтр по идентификатору пункта заказа
order_id integer Фильтр по ID заказа
status string Фильтр по статусу пункта заказа
stock string Фильтр по коду склада

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
}

Примечание: Данные в примере ответа взяты из тестового пользователя, поэтому все статусы находятся в состоянии отказа.

Параметры ответа#

Параметр Тип Описание
items array Массив пунктов заказа
total_count integer Общее количество элементов, соответствующих фильтру
page_count integer Общее количество страниц
current_page integer Номер текущей страницы
per_page integer Количество элементов на странице
Версия от 22.11.2025