Каталог и цены

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

Перед началом

Для каталога нужен App Token приложения:

Token: <application_token>

Для избранного дополнительно передавайте Counterparty Bearer клиента в заголовке Authorization.

Товар появится в каталоге, если у него задана категория, есть свободный остаток на складе Application и этот остаток больше нуля.

Каталог

Получить список товаров

Метод
GET
URL
https://api.gigma.ru/api/counterparty/products
Авторизация
App Token
Headers
Token: {application_token}
Успешный ответ
200

Передайте фильтры в строке запроса. Gigma вернёт только товары текущего Application.

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

  • page (integer, опционально) — номер страницы, по умолчанию 1;
  • per_page (integer, опционально) — количество товаров, по умолчанию 10;
  • query (string, опционально) — поиск по названию, от 1 до 255 символов;
  • category_id[] (integer[], опционально) — ID категорий;
  • brand_id[] (integer[], опционально) — ID брендов;
  • country_id[] (integer[], опционально) — ID стран;
  • tag_id[] (integer[], опционально) — ID тегов;
  • order_by (string, опционально) — name_asc, name_desc, popularity_asc, popularity_desc, price_asc или price_desc;
  • price_from (number, опционально) — нижняя граница цены, от 0;
  • price_to (number, опционально) — верхняя граница цены, от 1.

Параметры available и sale сейчас не поддерживаются и не влияют на результат.

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

GET /api/counterparty/products?page=1&per_page=20&category_id[]=12&tag_id[]=4&order_by=price_asc HTTP/1.1
Host: api.gigma.ru
Token: <application_token>
Accept: application/json

Ответ

{
	"products": {
		"current_page": 1,
		"data": [
			{
				"id": 26896,
				"views_count": 23,
				"photo": "https://api.gigma.ru/storage/uploads/product.png",
				"photos": [],
				"name": "Товар",
				"brand": {
					"id": 99,
					"name": "Бренд"
				},
				"old_price": "2450.00",
				"price": "1960.00",
				"discount": 20,
				"quantity": 5,
				"unit": null,
				"is_favourite": false,
				"tags": [],
				"parameters": {
					"wholesale": false,
					"pieces_per_pack": 1,
					"quantity_pack": 5
				}
			}
		],
		"per_page": 20,
		"total": 1,
		"last_page": 1
	}
}

price возвращается строкой с двумя десятичными знаками. quantity и parameters.quantity_pack рассчитываются из свободного остатка.

Для публичного запроса is_favourite обычно равен false. После входа клиента используйте методы избранного ниже.

Ошибки

  • 401 — App Token отсутствует или недействителен;
  • 422 — фильтр имеет неверный формат или содержит несуществующий ID.

Получить карточку товара

Метод
GET
URL
https://api.gigma.ru/api/counterparty/products/{id}
Авторизация
App Token
Headers
Token: {application_token}
Успешный ответ
200

Передайте ID товара в адресе запроса. В ответе вы получите описание, характеристики, фотографии, цену, остаток и параметры упаковки.

Параметры пути

  • id (integer, обязательный) — ID товара.

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

GET /api/counterparty/products/26896 HTTP/1.1
Host: api.gigma.ru
Token: <application_token>
Accept: application/json

Ответ

{
	"product": {
		"id": 26896,
		"name": "Товар",
		"description": "<p>Описание</p>",
		"specification": "<p>Характеристики</p>",
		"price": "1960.00",
		"quantity": 5,
		"photos": [],
		"is_favourite": false,
		"share_link": null,
		"tags": [],
		"parameters": {
			"wholesale": false,
			"pieces_per_pack": 1,
			"quantity_pack": 5
		}
	}
}

Gigma увеличивает счётчик просмотров не чаще одного раза за 10 минут для одного IP и товара.

Поля description и specification могут содержать HTML. Очищайте их перед выводом.

Ошибки

  • 401 — App Token отсутствует или недействителен;
  • 404 — товар не найден в текущем Application.

Получить диапазон цен

Метод
GET
URL
https://api.gigma.ru/api/counterparty/prices
Авторизация
App Token
Headers
Token: {application_token}
Успешный ответ
200

Используйте метод, чтобы настроить фильтр цены. Передавайте те же товарные фильтры, что и при получении списка; page и per_page на результат не влияют.

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

  • query (string, опционально) — поиск по названию, от 1 до 255 символов;
  • category_id[] (integer[], опционально) — ID категорий;
  • brand_id[] (integer[], опционально) — ID брендов;
  • country_id[] (integer[], опционально) — ID стран;
  • tag_id[] (integer[], опционально) — ID тегов;
  • order_by (string, опционально) — name_asc, name_desc, popularity_asc, popularity_desc, price_asc или price_desc;
  • price_from (number, опционально) — нижняя граница цены, от 0;
  • price_to (number, опционально) — верхняя граница цены, от 1.

Ответ

{
	"min_price": 100,
	"max_price": 10000
}

Если подходящих товаров нет, обе границы равны 0.

Ошибки

  • 401 — App Token отсутствует или недействителен;
  • 422 — фильтр имеет неверный формат.

Избранное

Все методы ниже требуют App Token и Counterparty Bearer клиента.

Получить избранные товары

Метод
GET
URL
https://api.gigma.ru/api/counterparty/products/favourites
Авторизация
App Token + Bearer token
Headers
Token: {application_token}; Authorization: Bearer {counterparty_token}
Успешный ответ
200

Gigma вернёт избранное текущего клиента с пагинацией.

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

  • page (integer, опционально) — номер страницы, по умолчанию 1;
  • per_page (integer, опционально) — количество товаров, по умолчанию 10.

Ответ

{
	"products": {
		"current_page": 1,
		"data": [
			{
				"id": 26896,
				"name": "Товар",
				"price": "1960.00",
				"is_favourite": true
			}
		],
		"per_page": 10,
		"total": 1,
		"last_page": 1
	}
}

Ошибки

  • 401 — App Token или Counterparty Bearer отсутствует либо недействителен.

Получить товар через маршрут избранного

Метод
GET
URL
https://api.gigma.ru/api/counterparty/products/favourites/{product_id}
Авторизация
App Token + Bearer token
Headers
Token: {application_token}; Authorization: Bearer {counterparty_token}
Успешный ответ
200

Маршрут возвращает карточку товара по ID, но не проверяет, добавлен ли товар в избранное текущего клиента.

Для обычной карточки используйте GET /api/counterparty/products/{id}. Принадлежность избранному определяйте по списку GET /api/counterparty/products/favourites.

Параметры пути

  • product_id (integer, обязательный) — ID товара.

Ответ

{
	"product": {
		"id": 26896,
		"name": "Товар",
		"price": "1960.00",
		"is_favourite": false
	}
}

Ошибки

  • 401 — App Token или Counterparty Bearer отсутствует либо недействителен;
  • 404 — товара с таким ID нет. Отсутствие в избранном само по себе не вызывает 404.

Добавить товар в избранное

Метод
POST
URL
https://api.gigma.ru/api/counterparty/products/favourites
Авторизация
App Token + Bearer token
Headers
Token: {application_token}; Authorization: Bearer {counterparty_token}; Content-Type: application/json
Успешный ответ
200

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

  • product_id (integer, обязательный) — ID существующего товара.

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

{
	"product_id": 26896
}

Ответ

{
	"product": {
		"id": 26896,
		"name": "Товар",
		"price": "1960.00",
		"is_favourite": true
	}
}

Повторный запрос не создаёт вторую запись и возвращает текущую карточку товара.

Ошибки

  • 401 — App Token или Counterparty Bearer отсутствует либо недействителен;
  • 404 — товар не найден.

Удалить товар из избранного

Метод
DELETE
URL
https://api.gigma.ru/api/counterparty/products/favourites/{product_id}
Авторизация
App Token + Bearer token
Headers
Token: {application_token}; Authorization: Bearer {counterparty_token}
Успешный ответ
200

Передайте в пути ID товара, а не ID записи избранного.

Параметры пути

  • product_id (integer, обязательный) — ID товара.

Ответ

{
	"message": "Product successfully deleted from favourites"
}

Ошибки

  • 401 — App Token или Counterparty Bearer отсутствует либо недействителен;
  • 404 — товар не находится в избранном текущего клиента.

Дальнейшие шаги