Management API

Management API предназначено для схем интеграции, когда есть необходимость обслуживать весь пул устройств с одного входа. С помощью Management API можно получать данные устройств всего аккаунта и изменять их состояния.
API поддерживает JRPC 2.0-протокол вызова методов по аналогии с Device API.
Для работы необходимо знать ключ <authkey> Административного устройства с которым можно обращаться по URI: https://api.giftoman.ru/m/<authkey>

Примечание Для работы с Management API нужно использовать ключ специального типа терминала: «Административный терминал»
.

Добавление устройства

Запрос позволяет зарегистрировать новое устройство на торговой точке и получить ключ устройства для дальнейшей работы с ним

setCashbox( location, extid);

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

name type description
location object Объект локации (Описание Торговой точки): {

— country (string(60)): Название страны по КЛАДР
— city (string(60)): Название города по КЛАДР
— street (string(100) опциональный): Название улицы по КЛАДР
— house (string(20) опциональный): Дом, включая корпуса, литеры и т.п. (например 10/1а)
— store_ext_id (string(40) опциональный): Внешний (клиентский) идентификатор торговой точки
— name (string(100) опциональный): Название торговой точки
}
extid string(100) опциональный Внешний (партнёрский) идентификатор конкретного устройства для создания уникальных устройств по адресу

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

result: { "id" : Идентификатор устройства, "auth_key": Ключ устройства для работы с Device API }

Установка планового значения

С помощью этого запроса можно как установить, так и удалить плановое значение на нужный период.

Планы устанавливаются на ту Торговую точку, где зарегистрировано данное устройство.

storePlanSet(store_ext_id, metric, plan, year [, month, day] );

Параметры.

name type description
store_ext_id string(20) Внешний идентификатор (на стороне Торговой системы или бэкофиса клиента)
metric string(40) Мнемоника, либо прямой идентификатор правила:
— income : Выручка
— average : Средний чек
— count : Кол-во продаж
— category : Выручка по СТМ
— complexity : Комлексность чека по кол-ву товаров
— p/
<идентификатор показателя>
— прямой идентификатор показателя
plan DECIMAL(13,4) Если >=0, то установка планового значения = plan, если <0, то удаление
year int Год
month (необязательный) int Месяц, если не указан или = -1, то выставляется план на год
day (необязательный) int День, если не указан или = -1, то выставляется план на месяц, иначе — на день

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

result: { "addressId" : ИД торговой точки, "metric": Идентификатор показателя, "plan": Установленный план, "year": Год, "month" : Месяц, "day": День}

Публикация плана торговой точки

После установки всех плановых значений на период необходимо вызвать метод публикации плана для актуализации значений

storePlanPublish(store_ext_id, auto );

Параметры.

name type description
store_ext_id string(20) Внешний идентификатор (на стороне Торговой системы или бэкофиса клиента)
auto boolean — true — Использовать сервисную аналитику распределения по периодам.
— false — Не использовать аналитику (равномерное распределение по нижним периодам)

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

result: { "addressId" : ИД торговой точки, "auto": Автоматическое распределение}

Получение отчётов по Торговой точке

Для получения планов по Торговой точке используется команда reports(id, filter, range)

reports(id, filter, range );

Параметры.

name type description
id string(20) ‘salesplans’ — Получение отчёта о планах Торговой точки
filter object { «storeId»: /* Внешний идентификатор Торговой точки */ }
range object { «from»: «Y-m-d» /*Дата от*/, «to»: «Y-m-d» /* Дата до */ }

Пример запроса salesplans

{ 
	"id":"1251506945251332",
	"method":"reports",
	"params":{
		"id":"salesplans",
		"filter": { "storeId":100  }, 
		"range": {"from":"2017-09-01","to":"2017-10-31"}
	},
    "jsonrpc":"2.0"
}

Пример ответа

{
"jsonrpc": "2.0",
"id": "1251506945251332",
"result": {
 "data": {
	"salesplans": {
	  "id": "100",
	  "uuid": "1457",
	  "name": "Екатеринбург, ТЦ Курс",
	  "data": {
		 "periods": {
		  "2017-09-01": { /* Список значений метрик на указанную дату*/
				   "1437627895975737336": { 
					  "fact": 73.16, // Фактическое значение метрики
					  "plan": 0, //Плановое значение
					  "forecast": 0 // Прогнозное (в фактических датах совпадает с фактом или = 0 для несуммарных метрик)
					 }
				 }
			  }, ...
		  "rules": [ // Список метрик 
				{
					"id": "1437627895975737336",
					"name": "Средний чек по группе",
					"order": "0",
					"type": "2"
				},...											  
		  ]
		 }
	}
  }
 }
}

Сброс категорий номенклатуры

Метод предназначается для очистки всех номенклатурных позиций от присвоенных категорий. Выполняется в случае, если далее будет обновляться не весь номенклатурный справочник.

priceCategoryReset();

Параметры.

нет

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

result: { "status" : "ok"}

Обновление номенклатурной позиции

Автоматически обновляет или создаёт (в случае отсутствия) позицию по её атрибутам.

priceUpdate(name, params );

Параметры.

name type description
name string(200) Название номенклатурной позиции (в случае отсутствия указанного params.extid будет использоваться как основной её идентификатор)
params associative array extid string(40) (optional) — Внешний уникальный идентификатор, как правило, уникальный идентификатор из справочника Торговой Системы
category string(200) (optional) — Название/идентификатор категории (метка).
Может использоваться микроформат для присвоения нескольких меток:
[store_ext_id1,..,store_ext_idN]Категория1&&Категория2&&..&&КатегорияN.
— store_ext_idN — внешний идентификатор торговой точки, либо 0 (если для всех)
price decimal(10,4) (optional) — Цена позиции

Пример запроса priceupdate

{ 
	"id":"1251506945251332",
	"method":"priceUpdate",
	"params":{
		"name":"Носки \"Бумеранг\" 41-43",
		"params": { "extId":"1239187239487","category":"Одежда&&Возможно нижняя&&СТМ","price":"150.00" } 	
	},
    "jsonrpc":"2.0"
}

Пример ответа

result: { "priceId" : <Идентификатор позиции в системе Гифтоман>}

Пакетное обновление номенклатуры

Автоматически обновляет или создаёт (в случае отсутствия) пакет позиций (максимум = 1000).

priceUpdateBatch(items );

Параметры.

name type description
items Array of Objects — Максимум 1000 элементов Объект массива:
— name (string(200)) : Человекочитаемое название товара
— params (array) : Опциональный объект параметров товарной позиции {

extid string(40) (optional) — Внешний уникальный идентификатор, как правило, уникальный идентификатор из справочника Торговой Системы
category string(200) (optional) — Название/идентификатор категории (метка).
Может использоваться микроформат для присвоения нескольких меток: Категория1&&Категория2&&..&&КатегорияN.
price decimal(10,4) (optional) — Цена позиции

Пример запроса priceUpdateBatch

{ 
	"id":"1251506945251332",
	"method":"priceUpdateBatch",
	"params":{
	    "items": [
		   {
		    "name":"Носки \"Бумеранг\" 41-43",
		    "params": { "extId":"1239187239487","category":"Одежда&&Возможно нижняя&&СТМ","price":"150.00" } 	
		   },
		   {
		    "name":"Платок \"Радость носика\"",
		    "params": { "extId":"3219187239487","category":"Аксессуары&&СТМ","price":"120.00" } 	
		   }		   
		]
	},
    "jsonrpc":"2.0"
}

Пример ответа

result: {"count" : 2 /*<Кол-во принятых позиций>*/ }

Обновление расписания времени работы Торговой точки

Автоматически актуализирует расписание работы ТТ на каждый день рабочей недели.

storeSchedule(store_ext_id,schedule);

Параметры.

name type description
store_ext_id string(20) Внешний идентификатор (на стороне Торговой системы или бэкофиса клиента)
schedule Array of Objects Объект массива:
— wday (tinyint) : 1-Понедельник, … 7 — Воскресенье
— from (string(5) ЧЧ:ММ) : Начало работы ТТ
— to (string(5) ЧЧ:ММ): Конец работы ТТ
— breaks (Array of objects опционально): [
  {
    from (string(5) ЧЧ:ММ): Начало перерыва ТТ
    to (string(5) ЧЧ:ММ): Конец перерыва ТТ
   },..
]

Пример запроса storeSchedule

{ 
	"id":"1251506945251332",
	"method":"storeSchedule",
	"params":{
	    "store_ext_id": 123,
	    "schedule": [
		   {
		    "wday":1,
		    "from": "10:00",
            "to": "20:00"			
		   },
		   {
		    "wday":2,
		    "from": "10:00",
            "to": "20:00"			
		   },
		   {
		    "wday":3,
		    "from": "10:00",
            "to": "20:00"			
		   },
		   {
		    "wday":4,
		    "from": "10:00",
            "to": "20:00"			
		   },
		   		   {
		    "wday":5,
		    "from": "10:00",
            "to": "22:00"			
		   },
		   {
		    "wday":6,
		    "from": "11:00",
            "to": "19:00"			
		   },
		   {
		    "wday":7,
		    "from": "11:00",
            "to": "19:00"			
		   }

		]
	},
    "jsonrpc":"2.0"
}

Пример ответа

result: {"addressId":"Идентификатор в системе Гифтоман"}