lib/api/review.js
import { get } from '../methods/get';
import { post } from '../methods/post';
import { remove } from '../methods/remove';
import { put } from '../methods/put';
/**
* GET /admin/reviews/{review_id}.json
*
* Examples:
*
* insales.getReview({
* token: '1234567890',
* url: 'shop-test.myinsales.ru',
* reviewid: '1'
* }).then(response => {
* console.info(response.data);
* }).catch(err => {
* console.error(err);
* });
* Output:
*
* {
* "id": 1,
* "product_id": 1,
* "author": "Автор 1",
* "content": "Отличный продукт!",
* "email": "email1@example.com",
* "rating": 5,
* "manager_name": null,
* "published": true,
* "created_at": "2023-09-01T13:00:00.000+03:00",
* "updated_at": "2023-09-01T13:00:00.000+03:00",
* "manager_reply": "nil",
* "replied_at": null,
* "spam": false,
* "published_at": null,
* "replied_q": false,
* "title": "Cool t-shirt",
* "url": "/product/футболка",
* "first_image": {
* "id": null,
* "product_id": null,
* "external_id": null,
* "position": null,
* "created_at": null,
* "image_processing": null,
* "title": null,
* "url": "/images/no_image_thumb.jpg",
* "original_url": "/images/no_image_original.jpg",
* "medium_url": "/images/no_image_medium.jpg",
* "small_url": "/images/no_image_micro.jpg",
* "thumb_url": "/images/no_image_thumb.jpg",
* "compact_url": "/images/no_image_compact.jpg",
* "large_url": "/images/no_image_large.jpg",
* "filename": null,
* "has_bitmap_image": false,
* "image_content_type": null
* },
* "image": {
* "id": 1,
* "created_at": "2023-09-01T13:00:00.000+03:00",
* "original_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/image_1.jpg",
* "medium_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/medium_image_1.jpg",
* "small_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/micro_image_1.jpg",
* "thumb_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/thumb_image_1.jpg",
* "compact_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/compact_image_1.jpg",
* "large_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/large_image_1.jpg",
* "image_content_type": "image/jpeg"
* }
* }
* @param {Object} options
* @param {string} options.token Required, access token for shop
* @param {string} options.url Required, shop url
* @param {number|string} options.reviewid Required, review id
* @param {Number|String} id Required, app id
* @returns {Promise}
*/
export function getReview(options, id) {
return get({
id,
token: options.token,
url: options.url,
api: `reviews/${options.reviewid}`
});
}
/**
* GET /admin/reviews.json
*
* Examples:
*
* insales.listReview({
* token: '1234567890',
* url: 'shop-test.myinsales.ru'
* }).then(response => {
* console.info(response.data);
* }).catch(err => {
* console.error(err);
* });
* Output:
*
* [
* {
* "id": 10,
* "product_id": 2,
* "author": "Автор 10",
* "content": "Быстрая доставка, хороший сервис.",
* "email": "email10@example.com",
* "rating": 3,
* "manager_name": null,
* "published": false,
* "created_at": "2023-09-10T18:00:00.000+03:00",
* "updated_at": "2023-09-10T18:00:00.000+03:00",
* "manager_reply": "nil",
* "replied_at": null,
* "spam": false,
* "published_at": null,
* "replied_q": false,
* "title": "shirt",
* "url": "/product/shirt",
* "first_image": {
* "id": null,
* "product_id": null,
* "external_id": null,
* "position": null,
* "created_at": null,
* "image_processing": null,
* "title": null,
* "url": "/images/no_image_thumb.jpg",
* "original_url": "/images/no_image_original.jpg",
* "medium_url": "/images/no_image_medium.jpg",
* "small_url": "/images/no_image_micro.jpg",
* "thumb_url": "/images/no_image_thumb.jpg",
* "compact_url": "/images/no_image_compact.jpg",
* "large_url": "/images/no_image_large.jpg",
* "filename": null,
* "has_bitmap_image": false,
* "image_content_type": null
* }
* },
* {
* "id": 9,
* "product_id": 1,
* "author": "Автор 9",
* "content": "Отличный продукт, рекомендую!",
* "email": "email9@example.com",
* "rating": 5,
* "manager_name": null,
* "published": true,
* "created_at": "2023-09-09T12:00:00.000+03:00",
* "updated_at": "2023-09-09T12:00:00.000+03:00",
* "manager_reply": "Спасибо за ваш отзыв!",
* "replied_at": null,
* "spam": false,
* "published_at": null,
* "replied_q": false,
* "title": "Cool t-shirt",
* "url": "/product/футболка",
* "first_image": {
* "id": null,
* "product_id": null,
* "external_id": null,
* "position": null,
* "created_at": null,
* "image_processing": null,
* "title": null,
* "url": "/images/no_image_thumb.jpg",
* "original_url": "/images/no_image_original.jpg",
* "medium_url": "/images/no_image_medium.jpg",
* "small_url": "/images/no_image_micro.jpg",
* "thumb_url": "/images/no_image_thumb.jpg",
* "compact_url": "/images/no_image_compact.jpg",
* "large_url": "/images/no_image_large.jpg",
* "filename": null,
* "has_bitmap_image": false,
* "image_content_type": null
* }
* },
* {
* "id": 7,
* "product_id": 7,
* "author": "Автор 7",
* "content": "Понравился, всё работает.",
* "email": "email7@example.com",
* "rating": 5,
* "manager_name": null,
* "published": true,
* "created_at": "2023-09-07T13:30:00.000+03:00",
* "updated_at": "2023-09-07T13:30:00.000+03:00",
* "manager_reply": "Спасибо за ваш отзыв!",
* "replied_at": null,
* "spam": false,
* "published_at": null,
* "replied_q": false,
* "title": "fb_product",
* "url": "/product/fb_product",
* "first_image": {
* "id": null,
* "product_id": null,
* "external_id": null,
* "position": null,
* "created_at": null,
* "image_processing": null,
* "title": null,
* "url": "/images/no_image_thumb.jpg",
* "original_url": "/images/no_image_original.jpg",
* "medium_url": "/images/no_image_medium.jpg",
* "small_url": "/images/no_image_micro.jpg",
* "thumb_url": "/images/no_image_thumb.jpg",
* "compact_url": "/images/no_image_compact.jpg",
* "large_url": "/images/no_image_large.jpg",
* "filename": null,
* "has_bitmap_image": false,
* "image_content_type": null
* }
* },
* {
* "id": 6,
* "product_id": 6,
* "author": "Автор 6",
* "content": "Средний продукт, есть лучше.",
* "email": "email6@example.com",
* "rating": 3,
* "manager_name": null,
* "published": true,
* "created_at": "2023-09-06T11:00:00.000+03:00",
* "updated_at": "2023-09-06T11:00:00.000+03:00",
* "manager_reply": "Спасибо за ваш отзыв.",
* "replied_at": null,
* "spam": false,
* "published_at": null,
* "replied_q": false,
* "title": "pants",
* "url": "/product/pants",
* "first_image": {
* "id": null,
* "product_id": null,
* "external_id": null,
* "position": null,
* "created_at": null,
* "image_processing": null,
* "title": null,
* "url": "/images/no_image_thumb.jpg",
* "original_url": "/images/no_image_original.jpg",
* "medium_url": "/images/no_image_medium.jpg",
* "small_url": "/images/no_image_micro.jpg",
* "thumb_url": "/images/no_image_thumb.jpg",
* "compact_url": "/images/no_image_compact.jpg",
* "large_url": "/images/no_image_large.jpg",
* "filename": null,
* "has_bitmap_image": false,
* "image_content_type": null
* }
* },
* {
* "id": 5,
* "product_id": 5,
* "author": "Автор 5",
* "content": "Отличная цена-качество!",
* "email": "email5@example.com",
* "rating": 5,
* "manager_name": null,
* "published": true,
* "created_at": "2023-09-05T17:00:00.000+03:00",
* "updated_at": "2023-09-05T17:00:00.000+03:00",
* "manager_reply": "Рады, что вам понравилось!",
* "replied_at": null,
* "spam": false,
* "published_at": null,
* "replied_q": false,
* "title": "shirt & pants",
* "url": "/product/shirt_and_pants",
* "first_image": {
* "id": null,
* "product_id": null,
* "external_id": null,
* "position": null,
* "created_at": null,
* "image_processing": null,
* "title": null,
* "url": "/images/no_image_thumb.jpg",
* "original_url": "/images/no_image_original.jpg",
* "medium_url": "/images/no_image_medium.jpg",
* "small_url": "/images/no_image_micro.jpg",
* "thumb_url": "/images/no_image_thumb.jpg",
* "compact_url": "/images/no_image_compact.jpg",
* "large_url": "/images/no_image_large.jpg",
* "filename": null,
* "has_bitmap_image": false,
* "image_content_type": null
* }
* },
* {
* "id": 4,
* "product_id": 4,
* "author": "Автор 4",
* "content": "Продукт нормальный, но требует доработки.",
* "email": "email4@example.com",
* "rating": 4,
* "manager_name": null,
* "published": true,
* "created_at": "2023-09-04T12:00:00.000+03:00",
* "updated_at": "2023-09-04T12:00:00.000+03:00",
* "manager_reply": "Спасибо за ваш отзыв. Мы работаем над улучшениями.",
* "replied_at": null,
* "spam": false,
* "published_at": null,
* "replied_q": false,
* "title": "shirt & t-short",
* "url": "/product/shirt_and_tshort",
* "first_image": {
* "id": null,
* "product_id": null,
* "external_id": null,
* "position": null,
* "created_at": null,
* "image_processing": null,
* "title": null,
* "url": "/images/no_image_thumb.jpg",
* "original_url": "/images/no_image_original.jpg",
* "medium_url": "/images/no_image_medium.jpg",
* "small_url": "/images/no_image_micro.jpg",
* "thumb_url": "/images/no_image_thumb.jpg",
* "compact_url": "/images/no_image_compact.jpg",
* "large_url": "/images/no_image_large.jpg",
* "filename": null,
* "has_bitmap_image": false,
* "image_content_type": null
* }
* },
* {
* "id": 2,
* "product_id": 2,
* "author": "Автор 2",
* "content": "Хороший, но есть недостатки.",
* "email": "email2@example.com",
* "rating": 3,
* "manager_name": null,
* "published": true,
* "created_at": "2023-09-02T14:00:00.000+03:00",
* "updated_at": "2023-09-02T14:00:00.000+03:00",
* "manager_reply": "Мы учтем ваши замечания и постараемся улучшить продукт.",
* "replied_at": null,
* "spam": false,
* "published_at": null,
* "replied_q": false,
* "title": "shirt",
* "url": "/product/shirt",
* "first_image": {
* "id": null,
* "product_id": null,
* "external_id": null,
* "position": null,
* "created_at": null,
* "image_processing": null,
* "title": null,
* "url": "/images/no_image_thumb.jpg",
* "original_url": "/images/no_image_original.jpg",
* "medium_url": "/images/no_image_medium.jpg",
* "small_url": "/images/no_image_micro.jpg",
* "thumb_url": "/images/no_image_thumb.jpg",
* "compact_url": "/images/no_image_compact.jpg",
* "large_url": "/images/no_image_large.jpg",
* "filename": null,
* "has_bitmap_image": false,
* "image_content_type": null
* },
* "image": {
* "id": 2,
* "created_at": "2023-09-02T14:00:00.000+03:00",
* "original_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/2/2/image_2.jpg",
* "medium_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/2/2/medium_image_2.jpg",
* "small_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/2/2/micro_image_2.jpg",
* "thumb_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/2/2/thumb_image_2.jpg",
* "compact_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/2/2/compact_image_2.jpg",
* "large_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/2/2/large_image_2.jpg",
* "image_content_type": "image/jpeg"
* }
* },
* {
* "id": 1,
* "product_id": 1,
* "author": "Автор 1",
* "content": "Отличный продукт!",
* "email": "email1@example.com",
* "rating": 5,
* "manager_name": null,
* "published": true,
* "created_at": "2023-09-01T13:00:00.000+03:00",
* "updated_at": "2023-09-01T13:00:00.000+03:00",
* "manager_reply": "nil",
* "replied_at": null,
* "spam": false,
* "published_at": null,
* "replied_q": false,
* "title": "Cool t-shirt",
* "url": "/product/футболка",
* "first_image": {
* "id": null,
* "product_id": null,
* "external_id": null,
* "position": null,
* "created_at": null,
* "image_processing": null,
* "title": null,
* "url": "/images/no_image_thumb.jpg",
* "original_url": "/images/no_image_original.jpg",
* "medium_url": "/images/no_image_medium.jpg",
* "small_url": "/images/no_image_micro.jpg",
* "thumb_url": "/images/no_image_thumb.jpg",
* "compact_url": "/images/no_image_compact.jpg",
* "large_url": "/images/no_image_large.jpg",
* "filename": null,
* "has_bitmap_image": false,
* "image_content_type": null
* },
* "image": {
* "id": 1,
* "created_at": "2023-09-01T13:00:00.000+03:00",
* "original_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/image_1.jpg",
* "medium_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/medium_image_1.jpg",
* "small_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/micro_image_1.jpg",
* "thumb_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/thumb_image_1.jpg",
* "compact_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/compact_image_1.jpg",
* "large_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/large_image_1.jpg",
* "image_content_type": "image/jpeg"
* }
* }
* ]
* @param {Object} options
* @param {string} options.token Required, access token for shop
* @param {string} options.url Required, shop url
* @param {Number|String} id Required, app id
* @returns {Promise}
*/
export function listReview(options, id) {
return get({
id,
token: options.token,
url: options.url,
api: `reviews`
});
}
/**
* POST /admin/reviews.json
*
* Examples:
*
* insales.createReview({
* token: '1234567890',
* url: 'shop-test.myinsales.ru',
* review: {
* "review": {
* "product_id": 1,
* "author": "Bob",
* "content": "Nice product! I'd like to buy it!",
* "email": "bob@gmail.com",
* "published": true,
* "rating": 7
* }
* }
* }).then(response => {
* console.info(response.data);
* }).catch(err => {
* console.error(err);
* });
* Output:
*
* {
* "id": 33,
* "product_id": 1,
* "author": "Bob",
* "content": "Nice product! I'd like to buy it!",
* "email": "bob@gmail.com",
* "rating": 7,
* "manager_name": null,
* "published": true,
* "created_at": "2026-10-21T23:10:51.000+03:00",
* "updated_at": "2026-10-21T23:10:51.000+03:00",
* "manager_reply": null,
* "replied_at": null,
* "spam": false,
* "published_at": null,
* "replied_q": false,
* "title": "Cool t-shirt",
* "url": "/product/футболка",
* "first_image": {
* "id": null,
* "product_id": null,
* "external_id": null,
* "position": null,
* "created_at": null,
* "image_processing": null,
* "title": null,
* "url": "/images/no_image_thumb.jpg",
* "original_url": "/images/no_image_original.jpg",
* "medium_url": "/images/no_image_medium.jpg",
* "small_url": "/images/no_image_micro.jpg",
* "thumb_url": "/images/no_image_thumb.jpg",
* "compact_url": "/images/no_image_compact.jpg",
* "large_url": "/images/no_image_large.jpg",
* "filename": null,
* "has_bitmap_image": false,
* "image_content_type": null
* }
* }
* @param {Object} options
* @param {string} options.token Required, access token for shop
* @param {string} options.url Required, shop url
* @param {object} options.review Required, review
* @param {Number|String} id Required, app id
* @returns {Promise}
*/
export function createReview(options, id) {
return post({
id,
token: options.token,
url: options.url,
api: `reviews`,
obj: options.review
});
}
/**
* DELETE /admin/reviews/{review_id}.json
*
* Examples:
*
* insales.removeReview({
* token: '1234567890',
* url: 'shop-test.myinsales.ru',
* reviewid: '1'
* }).then(response => {
* console.info(response.data);
* }).catch(err => {
* console.error(err);
* });
* Output:
*
* {
* "status": "ok"
* }
* @param {Object} options
* @param {string} options.token Required, access token for shop
* @param {string} options.url Required, shop url
* @param {number|string} options.reviewid Required, review id
* @param {Number|String} id Required, app id
* @returns {Promise}
*/
export function removeReview(options, id) {
return remove({
id,
token: options.token,
url: options.url,
api: `reviews/${options.reviewid}`
});
}
/**
* PUT /admin/reviews/{review_id}.json
*
* Examples:
*
* insales.editReview({
* token: '1234567890',
* url: 'shop-test.myinsales.ru',
* reviewid: '1',
* review: {
* "review": {
* "content": "Sweet product!"
* }
* }
* }).then(response => {
* console.info(response.data);
* }).catch(err => {
* console.error(err);
* });
* Output:
*
* {
* "id": 1,
* "product_id": 1,
* "author": "Автор 1",
* "content": "Sweet product!",
* "email": "email1@example.com",
* "rating": 5,
* "manager_name": null,
* "published": true,
* "created_at": "2023-09-01T13:00:00.000+03:00",
* "updated_at": "2026-10-21T23:10:52.000+03:00",
* "manager_reply": "nil",
* "replied_at": null,
* "spam": false,
* "published_at": null,
* "replied_q": false,
* "title": "Cool t-shirt",
* "url": "/product/футболка",
* "first_image": {
* "id": null,
* "product_id": null,
* "external_id": null,
* "position": null,
* "created_at": null,
* "image_processing": null,
* "title": null,
* "url": "/images/no_image_thumb.jpg",
* "original_url": "/images/no_image_original.jpg",
* "medium_url": "/images/no_image_medium.jpg",
* "small_url": "/images/no_image_micro.jpg",
* "thumb_url": "/images/no_image_thumb.jpg",
* "compact_url": "/images/no_image_compact.jpg",
* "large_url": "/images/no_image_large.jpg",
* "filename": null,
* "has_bitmap_image": false,
* "image_content_type": null
* },
* "image": {
* "id": 1,
* "created_at": "2023-09-01T13:00:00.000+03:00",
* "original_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/image_1.jpg",
* "medium_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/medium_image_1.jpg",
* "small_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/micro_image_1.jpg",
* "thumb_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/thumb_image_1.jpg",
* "compact_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/compact_image_1.jpg",
* "large_url": "http://minio.insales.io:9000/insales-test-sber/images/reviews/1/1/1/large_image_1.jpg",
* "image_content_type": "image/jpeg"
* }
* }
* @param {Object} options
* @param {string} options.token Required, access token for shop
* @param {string} options.url Required, shop url
* @param {number|string} options.reviewid Required, review id
* @param {object} options.review Required, review
* @param {Number|String} id Required, app id
* @returns {Promise}
*/
export function editReview(options, id) {
return put({
id,
token: options.token,
url: options.url,
api: `reviews/${options.reviewid}`,
obj: options.review
});
}