Коллекции

IMSHOP Retail Protocol (IRP) является объектом интеллектуальной собственности ООО «АЙ ЭМ СОЛЮШНЗ» (IMSHOP) и защищён как объект авторского права. Свидетельство о депонировании произведения № 023-014461 от 16 января 2023 г. подтверждает исключительные права ООО «АЙ ЭМ СОЛЮШНЗ» на данные технологии.

IMSHOP Retail Protocol создан по заказу ООО «АЙ ЭМ СОЛЮШНЗ». Использование IMSHOP Retail Protocol допустимо только при взаимодействии с ООО "АЙ ЭМ СОЛЮШНЗ" и наличии действующего лицензионного договора. Более подробно можно ознакомиться здесь.

Коллекции позволяют отображать привязанные к профилю пользователя сущности (товары и пр.) и позволяют реализовать такие разделы, как, например, "Мой гараж", "Мои дети" и др.

Обратитесь к вашему product-менеджеру для подключения интеграций.

Получение коллекций через webhook-интеграцию

Клиентское приложение запрашивает коллекции при каждом заходе в приложение и при свайпе на обновление в разделе профиля.

Сервер получает внешний userId и список идентификаторов отключенных коллекций, по умолчанию пустой.

{
  "userId": "1",
  "disabledCollections": []
}

В ответ сервер передает коллекции пользователя. Все поля обязательны, если в описании не указано обратное.

[{
  collectionId: 'auto',
  createdOn: '1577910417',
  updatedOn: '1664656017',
  title: 'Мой гараж',
  units: [
    {
      unitId: 'id1',
      metadata: [
        {
          id: 'model',
          title: 'Модель',
          value: 'DeLorean DMC-12',
        },
        {
          id: 'mileage',
          title: 'Пробег',
          value: '19102',
          inputType: 'number',
          measurementUnitSuffix: 'км',
        },
        {
          id: 'licensePlate',
          title: 'Гос.номер',
          value: '37XX777',
        },
        {
          id: 'lastService',
          title: 'Последнее обслуживание',
          value: '01.10.2022',
        },
        ...
      ],
      alerts: [
        {
          title: 'Необходима замена масла',
          description: 'Замена масла необходима каждые 10000 км',
        },
        {
          title: 'Необходимо прохождение ТО',
          description: 'Для вас действует специальная скидка при прохождении ТО',
        },
        ...
      ],
      orders: [
        {
          orderId: 'order1',
          title: 'Заказ от 01.10.2022',
          totalPrice: 3000,
          positions: [
            {
              title: 'Замена масла',
              price: 1000,
            },
            {
              title: 'Замена подшипников',
              price: 2000,
            },
          ],
        },
        ...
      ],
      createdOn: '1621456017',
      updatedOn: '1664656017',
    },
    ...
}]
  • collectionId – string, идентификатор коллекции

  • createdOn – string, Unix-timestamp создания коллекции, необязательно

  • updatedOn – string, Unix-timestamp обновления коллекции, необязательно

  • title – string, название коллекции в приложении

  • units – список элементов коллекции

    • unitId – идентификатор элемента

    • metadata – список характеристик. Первый элемент списка используется как заголовок в карточке элемента.

      • id – string, идентификатор характеристики

      • title – string, заголовок характеристики

      • value – string, значение характеристики

      • inputType – string, тип редактирования характеристики. Необязательно. Необходимо использовать, если поле доступно для редактирования. Допустимые значения: number для ввода числового значения и string для ввода текста.

      • measurementUnitSuffix – string, единица измерения, необязательно. Например, если вы хотите передать километраж, который доступен для редактирования, то необходимо передать в поле value значение километража, а в measurementUnitSuffix передать единицы измерения (например, "км"). В остальных случаях значение вместе с единицами измерения можно передать напрямую в value.

    • alerts – список уведомлений по элементу. Необязательно.

      • title – заголовок уведомления

      • value – текст уведомления

    • orders – список заказов/услуг по элементу. Необязательно.

      • orderId – string, идентификатор заказа

      • title – string, заголовок заказа

      • totalPrice – number, общая стоимость заказа

      • positions – список позиций заказа

        • title – string, наименование

        • price – number, стоимость позиции

    • createdOn – string, Unix-timestamp создания элемента, необязательно

    • updatedOn – string, Unix-timestamp обновления элемента, необязательно

Использование metadata

Обновление элемента коллекции

При запросе на редактирования элемента коллекции сервер получает следующее сообщение:

{
  "userId": "1",
  "collectionId": "auto",
  "unitId": "unit1",
  "entries": [
    {
      "id": "mileage",
      "value": "20900",
    },
    ...
  ]
}
  • userId – string, внешний индентификатор пользователя

  • collectionId – string, идентификатор редактируемой коллекции

  • unitId – string, идентификатор редактируемого элемента

  • entries – список всех характеристик элемента, включая отредактированные пользователем

В ответе сервер возвращает успех/неуспех редактирования полей:

{
  "success": true
}

В ответе также можно передать ошибки по отдельным идентификаторам полей (как в поле id в элементе массива metadata):

{
  "success": false
  "errors": {
    "mileage": "Указанный пробег меньше предыдущего значения (19102 км)"
  }
}

И алерт в случае какой-либо другой ошибки, например, ошибки сервера:

{
  "success": false
  "message:": "'Произошла ошибка. Попробуйте позже."
}

Last updated