Введение
Обзор API
REST API MyReviews позволяет программно управлять организациями, площадками отзывов, самими отзывами, тегами и ответами. API подходит для интеграции с CRM, дашбордами аналитики, чат-ботами и любыми другими системами.
Base URL
Все запросы выполняются к единому адресу:
https://myreviews.dev/v1
Протокол и формат
- Только HTTPS
- Тело запросов –
application/json - Все ответы – JSON
- Кодировка – UTF-8
Аутентификация
API использует JWT-токены (JSON Web Tokens). Большинство методов требуют авторизации – исключения отмечены как «публичные».
- Отправьте
POST /v1/user/loginс email и паролем. - В ответе получите поле
data.jwt– это ваш токен. - Передавайте токен в заголовке каждого защищённого запроса:
Authorization: Bearer <jwt>
⚠️ Безопасность
Храните JWT в защищённом месте. Не передавайте токен через URL-параметры и не встраивайте в клиентский JavaScript, доступный пользователям. Если токен скомпрометирован – смените пароль, чтобы выпустить новый.
Формат ответов
Каждый ответ содержит три поля:
{
"status": 200,
"message": "Описание результата.",
"data": { }
}
| Поле | Тип | Описание |
|---|---|---|
status | integer | HTTP-код ответа (дублируется для удобства парсинга) |
message | string | Человекочитаемое описание результата на русском языке |
data | object | array | string | null | Полезная нагрузка: объект, массив, строка или null при ошибке |
Коды ошибок
API использует стандартные HTTP-коды. В теле ответа всегда присутствует message с деталями.
| Код | Значение | Когда возникает |
|---|---|---|
200 | Успех | Запрос выполнен |
400 | Ошибка валидации | Неверные или отсутствующие параметры |
401 | Не авторизован | Отсутствует или невалидный JWT-токен |
403 | Доступ запрещён | Нет прав на запрашиваемый ресурс (например, чужая компания) |
404 | Не найдено | Ресурс с указанным ID не существует |
429 | Too Many Requests | Превышен лимит запросов – подождите и повторите |
Пагинация
Методы, возвращающие списки (компании, отзывы), поддерживают пагинацию. Управляйте ей через query-параметры:
| Параметр | Тип | Описание |
|---|---|---|
page | integer | Номер страницы (начиная с 1) |
per-page | integer | Количество элементов на страницу (1–250, по умолчанию 100) |
Метаданные пагинации возвращаются в HTTP-заголовках ответа:
| Заголовок | Описание |
|---|---|
X-Pagination-Total-Count | Общее число записей |
X-Pagination-Page-Count | Общее число страниц |
X-Pagination-Current-Page | Текущая страница |
X-Pagination-Per-Page | Записей на странице |
Лимиты запросов
Для защиты инфраструктуры API применяет ограничение частоты запросов (rate limiting). При превышении лимита сервер вернёт код 429.
Рекомендации
- Кэшируйте ответы, которые меняются редко (справочник площадок, профиль)
- Используйте
per-pageдля получения данных пакетами, а не по одной записи - При получении
429сделайте паузу и повторите запрос через несколько секунд - Для массовых операций лучше использовать вебхуки и уведомления через Telegram
Авторизация
Получите JWT-токен для доступа к защищённым методам API. Токен передаётся в заголовке Authorization: Bearer <jwt>.
/v1/user/login
Авторизация пользователя. Возвращает JWT-токен для последующих запросов.
Параметры запроса
| Параметр | Тип | Описание |
|---|---|---|
emailобязательный | string | Email пользователя |
passwordобязательный | string | Пароль |
Пример ответа
200 OK{
"status": 200,
"message": "Пользователь авторизован.",
"data": {
"jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}
}
400 Error
"Вы ввели неверный адрес электронной почты или пароль."
Пример запроса
curl -X POST "https://myreviews.dev/v1/user/login" \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","password":"mypassword"}'
import requests
r = requests.post("https://myreviews.dev/v1/user/login",
json={"email": "user@example.com", "password": "mypassword"})
jwt = r.json().get("data", {}).get("jwt")
$ctx = stream_context_create(['http' => [
'method' => 'POST',
'header' => 'Content-Type: application/json',
'content' => json_encode([
'email' => 'user@example.com',
'password' => 'mypassword',
]),
]]);
$data = json_decode(
file_get_contents('https://myreviews.dev/v1/user/login', false, $ctx),
true
);
$jwt = $data['data']['jwt'] ?? null;
const res = await fetch("https://myreviews.dev/v1/user/login", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
email: "user@example.com",
password: "mypassword"
})
});
const { data } = await res.json();
const jwt = data.jwt;
Профиль
Authorization: Bearer <jwt>/v1/user/profile
Получение данных текущего пользователя.
🔒 АвторизацияПример ответа
200 OK{
"status": 200,
"message": "Данные пользователя.",
"data": {
"id": 1,
"email": "user@example.com",
"name": "Иван",
"surname": "Иванов",
"phone": "+79001234567",
"about": "",
"image": null,
"date_reg": "15.02.2024",
"telegram_chat_id": null
}
}
Пример запроса
curl "https://myreviews.dev/v1/user/profile" \
-H "Authorization: Bearer JWT"
r = requests.get("https://myreviews.dev/v1/user/profile",
headers={"Authorization": f"Bearer {jwt}"})
$ctx = stream_context_create(['http' => [
'method' => 'GET',
'header' => "Authorization: Bearer $jwt",
]]);
$data = json_decode(
file_get_contents('https://myreviews.dev/v1/user/profile', false, $ctx),
true
);
const res = await fetch("https://myreviews.dev/v1/user/profile", {
headers: { Authorization: "Bearer " + jwt }
});
const data = await res.json();
/v1/user/update
Обновление данных профиля пользователя.
🔒 АвторизацияПараметры запроса
| Параметр | Тип | Описание |
|---|---|---|
ProfileForm[name] | string | Имя |
ProfileForm[surname] | string | Фамилия |
ProfileForm[phone] | string | Телефон |
ProfileForm[about] | string | О себе |
photo_upload | file | Фото (multipart) |
Пример ответа
200 OK{
"status": 200,
"message": "Данные пользователя отредактированы."
}
Пример запроса
curl -X POST "https://myreviews.dev/v1/user/update" \
-H "Authorization: Bearer JWT" \
-H "Content-Type: application/json" \
-d '{"ProfileForm":{"name":"Иван","surname":"Иванов"}}'
r = requests.post("https://myreviews.dev/v1/user/update",
headers={"Authorization": f"Bearer {jwt}"},
json={"ProfileForm": {"name": "Иван", "surname": "Иванов"}})
$payload = ['ProfileForm' => ['name' => 'Иван', 'surname' => 'Иванов']];
$ctx = stream_context_create(['http' => [
'method' => 'POST',
'header' => "Authorization: Bearer $jwt\r\nContent-Type: application/json",
'content' => json_encode($payload),
]]);
$data = json_decode(
file_get_contents('https://myreviews.dev/v1/user/update', false, $ctx),
true
);
const res = await fetch("https://myreviews.dev/v1/user/update", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + jwt
},
body: JSON.stringify({
ProfileForm: { name: "Иван", surname: "Иванов" }
})
});
Организации
view, требуют авторизации/v1/firm/list
Список организаций текущего пользователя.
🔒 АвторизацияПараметры запроса
| Параметр | Тип | Описание |
|---|---|---|
per-page | int | Количество на странице (по умолчанию 100, макс. 250) |
Пример ответа
200 OK{
"status": 200,
"message": "Организации пользователя.",
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "ООО Рога и копыта",
"address": "Москва, ул. Примерная, 1",
"image": null,
"active": true,
"date_create": "01.01.2024"
}
]
}
Пример запроса
curl "https://myreviews.dev/v1/firm/list?per-page=20" \
-H "Authorization: Bearer JWT"
r = requests.get("https://myreviews.dev/v1/firm/list",
params={"per-page": 20},
headers={"Authorization": f"Bearer {jwt}"})
$ctx = stream_context_create(['http' => [
'method' => 'GET',
'header' => "Authorization: Bearer $jwt",
]]);
$data = json_decode(
file_get_contents('https://myreviews.dev/v1/firm/list?per-page=20', false, $ctx),
true
);
const res = await fetch("https://myreviews.dev/v1/firm/list?per-page=20", {
headers: { Authorization: "Bearer " + jwt }
});
/v1/firm/view
Данные одной организации. Параметр id – UUID организации.
Параметры запроса
| Параметр | Тип | Описание |
|---|---|---|
idобязательный | string (UUID) | UUID организации |
Пример ответа
200 OK{
"status": 200,
"message": "Данные организации.",
"data": { "..." }
}
Пример запроса
curl "https://myreviews.dev/v1/firm/view?id=550e8400-e29b-41d4-a716-446655440000"
r = requests.get("https://myreviews.dev/v1/firm/view",
params={"id": "550e8400-e29b-41d4-a716-446655440000"})
$data = json_decode(
file_get_contents('https://myreviews.dev/v1/firm/view?id=550e8400-e29b-41d4-a716-446655440000'),
true
);
const res = await fetch("https://myreviews.dev/v1/firm/view?id=550e8400-e29b-41d4-a716-446655440000");
const data = await res.json();
/v1/firm/create
Создание новой организации.
🔒 АвторизацияПараметры запроса
| Параметр | Тип | Описание |
|---|---|---|
Firm[name]обязательный | string | Название организации |
Firm[address] | string | Адрес |
Firm[type] | int | Тип организации |
Firm[photo_upload] | file | Логотип (multipart) |
Пример ответа
200 OK{
"status": 200,
"message": "Организация создана.",
"id": 43
}
Пример запроса
curl -X POST "https://myreviews.dev/v1/firm/create" \
-H "Authorization: Bearer JWT" \
-H "Content-Type: application/json" \
-d '{"Firm":{"name":"Новая компания","address":"Москва, ул. Новая, 1"}}'
r = requests.post("https://myreviews.dev/v1/firm/create",
headers={"Authorization": f"Bearer {jwt}"},
json={"Firm": {"name": "Новая компания", "address": "Москва, ул. Новая, 1"}})
$payload = ['Firm' => ['name' => 'Новая компания', 'address' => 'Москва, ул. Новая, 1']];
$ctx = stream_context_create(['http' => [
'method' => 'POST',
'header' => "Authorization: Bearer $jwt\r\nContent-Type: application/json",
'content' => json_encode($payload),
]]);
$data = json_decode(
file_get_contents('https://myreviews.dev/v1/firm/create', false, $ctx),
true
);
const res = await fetch("https://myreviews.dev/v1/firm/create", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + jwt
},
body: JSON.stringify({
Firm: { name: "Новая компания", address: "Москва, ул. Новая, 1" }
})
});
/v1/firm/update
Обновление данных организации. Параметр id – UUID организации в query-строке.
Параметры запроса
| Параметр | Тип | Описание |
|---|---|---|
idобязательный | string (UUID) | UUID организации (query) |
Firm[name] | string | Название |
Firm[address] | string | Адрес |
Пример ответа
200 OK{
"status": 200,
"message": "Данные организации отредактированы."
}
Пример запроса
curl -X POST "https://myreviews.dev/v1/firm/update?id=550e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer JWT" \
-H "Content-Type: application/json" \
-d '{"Firm":{"name":"Новое название"}}'
r = requests.post("https://myreviews.dev/v1/firm/update",
params={"id": "550e8400-e29b-41d4-a716-446655440000"},
headers={"Authorization": f"Bearer {jwt}"},
json={"Firm": {"name": "Новое название"}})
$payload = ['Firm' => ['name' => 'Новое название']];
$ctx = stream_context_create(['http' => [
'method' => 'POST',
'header' => "Authorization: Bearer $jwt\r\nContent-Type: application/json",
'content' => json_encode($payload),
]]);
$data = json_decode(
file_get_contents('https://myreviews.dev/v1/firm/update?id=550e8400-e29b-41d4-a716-446655440000', false, $ctx),
true
);
const res = await fetch("https://myreviews.dev/v1/firm/update?id=550e8400-e29b-41d4-a716-446655440000", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + jwt
},
body: JSON.stringify({ Firm: { name: "Новое название" } })
});
/v1/firm/delete
Удаление организации. Только для владельца.
🔒 АвторизацияПараметры запроса
| Параметр | Тип | Описание |
|---|---|---|
idобязательный | string (UUID) | UUID организации |
Пример ответа
200 OK{
"status": 200,
"message": "Организация удалена."
}
Пример запроса
curl "https://myreviews.dev/v1/firm/delete?id=550e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer JWT"
r = requests.get("https://myreviews.dev/v1/firm/delete",
params={"id": "550e8400-e29b-41d4-a716-446655440000"},
headers={"Authorization": f"Bearer {jwt}"})
$ctx = stream_context_create(['http' => [
'method' => 'GET',
'header' => "Authorization: Bearer $jwt",
]]);
$data = json_decode(
file_get_contents('https://myreviews.dev/v1/firm/delete?id=550e8400-e29b-41d4-a716-446655440000', false, $ctx),
true
);
const res = await fetch("https://myreviews.dev/v1/firm/delete?id=550e8400-e29b-41d4-a716-446655440000", {
headers: { Authorization: "Bearer " + jwt }
});
Площадки отзывов
/v1/firm/services
Список всех доступных площадок для отзывов.
🌐 Публичный методПример ответа
200 OK{
"status": 200,
"message": "Сервисы",
"data": [
{ "id": 1, "name": "Яндекс" },
{ "id": 2, "name": "Google" },
{ "id": 3, "name": "2Gis" }
]
}
Пример запроса
curl "https://myreviews.dev/v1/firm/services"
r = requests.get("https://myreviews.dev/v1/firm/services")
$data = json_decode(
file_get_contents('https://myreviews.dev/v1/firm/services'),
true
);
const res = await fetch("https://myreviews.dev/v1/firm/services");
const data = await res.json();
/v1/firm/add-service
Привязка площадки к организации.
🔒 АвторизацияПараметры запроса
| Параметр | Тип | Описание |
|---|---|---|
idобязательный | string (UUID) | UUID организации (query) |
serviceобязательный | int | ID площадки (body) |
urlобязательный | string | Ссылка на профиль организации на площадке (body) |
Пример ответа
200 OK{
"status": 200,
"message": "Новая площадка добавлена.",
"data": { "..." }
}
Пример запроса
curl -X POST "https://myreviews.dev/v1/firm/add-service?id=550e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer JWT" \
-H "Content-Type: application/json" \
-d '{"service":1,"url":"https://yandex.ru/maps/..."}'
r = requests.post("https://myreviews.dev/v1/firm/add-service",
params={"id": "550e8400-e29b-41d4-a716-446655440000"},
headers={"Authorization": f"Bearer {jwt}"},
json={"service": 1, "url": "https://yandex.ru/maps/..."})
$ctx = stream_context_create(['http' => [
'method' => 'POST',
'header' => "Authorization: Bearer $jwt\r\nContent-Type: application/json",
'content' => json_encode([
'service' => 1,
'url' => 'https://yandex.ru/maps/...',
]),
]]);
$data = json_decode(
file_get_contents('https://myreviews.dev/v1/firm/add-service?id=550e8400-e29b-41d4-a716-446655440000', false, $ctx),
true
);
const res = await fetch("https://myreviews.dev/v1/firm/add-service?id=550e8400-e29b-41d4-a716-446655440000", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + jwt
},
body: JSON.stringify({ service: 1, url: "https://yandex.ru/maps/..." })
});
/v1/firm/delete-service
Отвязка площадки от организации.
🔒 АвторизацияПараметры запроса
| Параметр | Тип | Описание |
|---|---|---|
idобязательный | string (UUID) | UUID организации (query) |
serviceобязательный | int | ID площадки (body) |
Пример ответа
200 OK{
"status": 200,
"message": "Площадка удалена"
}
Пример запроса
curl -X POST "https://myreviews.dev/v1/firm/delete-service?id=550e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer JWT" \
-H "Content-Type: application/json" \
-d '{"service":1}'
r = requests.post("https://myreviews.dev/v1/firm/delete-service",
params={"id": "550e8400-e29b-41d4-a716-446655440000"},
headers={"Authorization": f"Bearer {jwt}"},
json={"service": 1})
$ctx = stream_context_create(['http' => [
'method' => 'POST',
'header' => "Authorization: Bearer $jwt\r\nContent-Type: application/json",
'content' => json_encode(['service' => 1]),
]]);
$data = json_decode(
file_get_contents('https://myreviews.dev/v1/firm/delete-service?id=550e8400-e29b-41d4-a716-446655440000', false, $ctx),
true
);
const res = await fetch("https://myreviews.dev/v1/firm/delete-service?id=550e8400-e29b-41d4-a716-446655440000", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + jwt
},
body: JSON.stringify({ service: 1 })
});
Отзывы
/v1/review/index
Список отзывов с фильтрацией и пагинацией. Если firm_id не указан – отзывы по всем организациям пользователя.
Параметры запроса
| Параметр | Тип | Описание |
|---|---|---|
ReviewSearch[firm_id] | string (UUID) | UUID организации |
ReviewSearch[service] | int | ID площадки |
ReviewSearch[username] | string | Имя автора |
ReviewSearch[date_create] | string | Дата (дд.мм.гггг) |
sort | string | Сортировка: +id, -id, +date_create, -date_create |
page | int | Номер страницы |
per-page | int | Количество на странице (1–250) |
X-Pagination-Total-Count– общее количество записейX-Pagination-Page-Count– количество страницX-Pagination-Current-Page– текущая страницаX-Pagination-Per-Page– записей на странице
Пример запроса
curl "https://myreviews.dev/v1/review/index?ReviewSearch[firm_id]=550e8400-e29b-41d4-a716-446655440000&page=1&per-page=25" \
-H "Authorization: Bearer JWT"
r = requests.get("https://myreviews.dev/v1/review/index",
params={"ReviewSearch[firm_id]": "550e8400-e29b-41d4-a716-446655440000", "page": 1, "per-page": 25},
headers={"Authorization": f"Bearer {jwt}"})
total = r.headers.get("X-Pagination-Total-Count")
$ctx = stream_context_create(['http' => [
'method' => 'GET',
'header' => "Authorization: Bearer $jwt",
]]);
$url = 'https://myreviews.dev/v1/review/index?'
. http_build_query(['ReviewSearch' => ['firm_id' => '550e8400-e29b-41d4-a716-446655440000'], 'page' => 1, 'per-page' => 25]);
$data = json_decode(file_get_contents($url, false, $ctx), true);
const res = await fetch(
"https://myreviews.dev/v1/review/index?ReviewSearch[firm_id]=550e8400-e29b-41d4-a716-446655440000&page=1&per-page=25",
{ headers: { Authorization: "Bearer " + jwt } }
);
const total = res.headers.get("X-Pagination-Total-Count");
const data = await res.json();
Теги
/v1/firm/tags
Облако тегов (ключевые слова) из отзывов организации.
🔒 АвторизацияПараметры запроса
| Параметр | Тип | Описание |
|---|---|---|
idобязательный | string (UUID) | UUID организации |
Пример ответа
200 OK{
"status": 200,
"message": "Теги организации.",
"data": [ "..." ]
}
Пример запроса
curl "https://myreviews.dev/v1/firm/tags?id=550e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer JWT"
r = requests.get("https://myreviews.dev/v1/firm/tags",
params={"id": "550e8400-e29b-41d4-a716-446655440000"},
headers={"Authorization": f"Bearer {jwt}"})
$ctx = stream_context_create(['http' => [
'method' => 'GET',
'header' => "Authorization: Bearer $jwt",
]]);
$data = json_decode(
file_get_contents('https://myreviews.dev/v1/firm/tags?id=550e8400-e29b-41d4-a716-446655440000', false, $ctx),
true
);
const res = await fetch("https://myreviews.dev/v1/firm/tags?id=550e8400-e29b-41d4-a716-446655440000", {
headers: { Authorization: "Bearer " + jwt }
});
const data = await res.json();
/v1/review/create-tag
Добавление тега к отзыву. Только владелец организации.
🔒 АвторизацияПараметры запроса
| Параметр | Тип | Описание |
|---|---|---|
review_idобязательный | int | ID отзыва (query) |
ReviewTag[content]обязательный | string | Текст тега (body) |
Пример ответа
200 OK{
"status": 200,
"message": "Тег создан",
"data": { "..." }
}
Пример запроса
curl -X POST "https://myreviews.dev/v1/review/create-tag?review_id=100" \
-H "Authorization: Bearer JWT" \
-H "Content-Type: application/json" \
-d '{"ReviewTag":{"content":"отличный сервис"}}'
r = requests.post("https://myreviews.dev/v1/review/create-tag",
params={"review_id": 100},
headers={"Authorization": f"Bearer {jwt}"},
json={"ReviewTag": {"content": "отличный сервис"}})
$payload = ['ReviewTag' => ['content' => 'отличный сервис']];
$ctx = stream_context_create(['http' => [
'method' => 'POST',
'header' => "Authorization: Bearer $jwt\r\nContent-Type: application/json",
'content' => json_encode($payload),
]]);
$data = json_decode(
file_get_contents('https://myreviews.dev/v1/review/create-tag?review_id=100', false, $ctx),
true
);
const res = await fetch("https://myreviews.dev/v1/review/create-tag?review_id=100", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + jwt
},
body: JSON.stringify({ ReviewTag: { content: "отличный сервис" } })
});
/v1/review/delete-tag
Удаление ручного тега. Автоматические теги удалить нельзя.
🔒 АвторизацияПараметры запроса
| Параметр | Тип | Описание |
|---|---|---|
tag_idобязательный | int | ID тега |
Пример ответа
200 OK{
"status": 200,
"message": "Тег успешно удален"
}
Пример запроса
curl -X POST "https://myreviews.dev/v1/review/delete-tag" \
-H "Authorization: Bearer JWT" \
-H "Content-Type: application/json" \
-d '{"tag_id":5}'
r = requests.post("https://myreviews.dev/v1/review/delete-tag",
headers={"Authorization": f"Bearer {jwt}"},
json={"tag_id": 5})
$ctx = stream_context_create(['http' => [
'method' => 'POST',
'header' => "Authorization: Bearer $jwt\r\nContent-Type: application/json",
'content' => json_encode(['tag_id' => 5]),
]]);
$data = json_decode(
file_get_contents('https://myreviews.dev/v1/review/delete-tag', false, $ctx),
true
);
const res = await fetch("https://myreviews.dev/v1/review/delete-tag", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + jwt
},
body: JSON.stringify({ tag_id: 5 })
});
Ответы на отзывы
/v1/review/create-answer
Создание и отправка ответа (или жалобы) на отзыв. Только владелец организации.
🔒 АвторизацияПараметры запроса
| Параметр | Тип | Описание |
|---|---|---|
review_idобязательный | int | ID отзыва (query) |
complainобязательный | int | 0 – ответ, 1 – жалоба (query) |
ReviewAnswer[message]обязательный | string | Текст ответа (body) |
Пример ответа
200 OK{
"status": 200,
"message": "Ответ создан",
"data": {
"id": 1,
"message": "Спасибо!",
"status": 0
}
}
Пример запроса
curl -X POST "https://myreviews.dev/v1/review/create-answer?review_id=100&complain=0" \
-H "Authorization: Bearer JWT" \
-H "Content-Type: application/json" \
-d '{"ReviewAnswer":{"message":"Спасибо за отзыв!"}}'
r = requests.post("https://myreviews.dev/v1/review/create-answer",
params={"review_id": 100, "complain": 0},
headers={"Authorization": f"Bearer {jwt}"},
json={"ReviewAnswer": {"message": "Спасибо за отзыв!"}})
$payload = ['ReviewAnswer' => ['message' => 'Спасибо за отзыв!']];
$ctx = stream_context_create(['http' => [
'method' => 'POST',
'header' => "Authorization: Bearer $jwt\r\nContent-Type: application/json",
'content' => json_encode($payload),
]]);
$data = json_decode(
file_get_contents('https://myreviews.dev/v1/review/create-answer?review_id=100&complain=0', false, $ctx),
true
);
const res = await fetch(
"https://myreviews.dev/v1/review/create-answer?review_id=100&complain=0",
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + jwt
},
body: JSON.stringify({ ReviewAnswer: { message: "Спасибо за отзыв!" } })
}
);
/v1/review/generate-answer
Генерация текста ответа с помощью ИИ. Только владелец организации.
🔒 АвторизацияПараметры запроса
| Параметр | Тип | Описание |
|---|---|---|
review_idобязательный | int | ID отзыва |
complainобязательный | int | 0 – ответ, 1 – жалоба |
Пример ответа
200 OK{
"status": 200,
"message": "Ответ сгенерирован",
"data": "Сгенерированный текст ответа"
}
Пример запроса
curl "https://myreviews.dev/v1/review/generate-answer?review_id=100&complain=0" \
-H "Authorization: Bearer JWT"
r = requests.get("https://myreviews.dev/v1/review/generate-answer",
params={"review_id": 100, "complain": 0},
headers={"Authorization": f"Bearer {jwt}"})
$ctx = stream_context_create(['http' => [
'method' => 'GET',
'header' => "Authorization: Bearer $jwt",
]]);
$data = json_decode(
file_get_contents('https://myreviews.dev/v1/review/generate-answer?review_id=100&complain=0', false, $ctx),
true
);
const res = await fetch(
"https://myreviews.dev/v1/review/generate-answer?review_id=100&complain=0",
{ headers: { Authorization: "Bearer " + jwt } }
);
const data = await res.json();
/v1/review/delete-answer
Удаление ответа на отзыв. Только владелец организации.
🔒 АвторизацияПараметры запроса
| Параметр | Тип | Описание |
|---|---|---|
answer_idобязательный | int | ID ответа |
Пример ответа
200 OK{
"status": 200,
"message": "Ответ успешно удален"
}
Пример запроса
curl -X POST "https://myreviews.dev/v1/review/delete-answer" \
-H "Authorization: Bearer JWT" \
-H "Content-Type: application/json" \
-d '{"answer_id":1}'
r = requests.post("https://myreviews.dev/v1/review/delete-answer",
headers={"Authorization": f"Bearer {jwt}"},
json={"answer_id": 1})
$ctx = stream_context_create(['http' => [
'method' => 'POST',
'header' => "Authorization: Bearer $jwt\r\nContent-Type: application/json",
'content' => json_encode(['answer_id' => 1]),
]]);
$data = json_decode(
file_get_contents('https://myreviews.dev/v1/review/delete-answer', false, $ctx),
true
);
const res = await fetch("https://myreviews.dev/v1/review/delete-answer", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + jwt
},
body: JSON.stringify({ answer_id: 1 })
});
Справочник площадок
Таблица соответствия числовых ID и названий площадок. Актуальный список можно получить через GET /v1/firm/services.
| ID | Площадка |
|---|---|
1 | Яндекс |
2 | |
3 | 2ГИС |
4 | Zoon |
5 | Yell |
6 | MyReviews |
7 | ПроДокторов |
8 | Flamp |
10 | Otzovik |
12 | Яндекс.Услуги |
13 | Авито |
14 | На Поправку |
15 | Яндекс.Бизнес |
16 | СберЗдоровье |
17 | Т-БАНК |
18 | ВКонтакте |
19 | Trustpilot |
21 | IRecommend |
22 | Перекрёсток |
23 | Metro |
24 | Магнит |