# Дока платформы №1
# Общее
часть 2 : https://hackmd.io/eT_qdFlMRRW4y7tKpDPM0A
### Обработка ошибок. Формат ошибок
Пример 1
```
{
"errors": {
"message": "Сессия не найдена",
"status_code": 422
}
}
```
Пример 2
```
{
"errors": {
"fields": {
"email": [
"Поле E-Mail адрес должно быть действительным электронным адресом."
],
"password": [
"Количество символов в поле Пароль должно быть не меньше 6."
]
},
"message": "Неверный формат данных",
"status_code": 422
}
}
```
### Полечение конфигов Эвента. (даты, в которые проводится мероприятие)
GET /api/event/config
Пример ответа
```
{
"data": {
"dates": [
"2020-09-12T00:00:00.000000Z",
"2020-09-13T00:00:00.000000Z",
]
}
}
```
### Получение локалей (языков) мероприятия (в том числе дефолтного языка)
GET /api/event/locales
```
{
"data": [
{
"id": 2,
"name": "Русский",
"code": "ru",
"created_at": null,
"updated_at": null,
"default": false
},
{
"id": 1,
"name": "English",
"code": "en",
"created_at": null,
"updated_at": "2020-09-04T08:03:05.000000Z",
"default": true
}
]
}
```
# User
### Логин
POST /api/login
```
{
"email":"i.iskhakov@truemachine.ru",
"password":"ilnur119"
}
```
### Регистрация
POST /api/register
*ps пока для регистрации заложены только следующие поля. После выгирыша тендера придет информация о других полях.
```
{
"email":"i.iskhakov@truemachine.ru",
"password":"ilnur119",
"phone":"+79278043536",
}
```
### Удаление пользователя
DELETE /api/users/{id}
### Выход из аккаунта
POST /api/logout
### Удаление аватарки
DELETE /api/users/delete-avatar
### Обновление пользователя админом (изменения типа пользователя)
PUT /api/user/{userId}
**Важно: если нужно поменять тип юзера, то нужно обязательно отправлять в этом запросе его ФИО, биографию и т.д., т.к. из-за слишком гибкой архитектуры старые данные потрутся (делать для всех локалей)**
```
{
"user_type": "participant|speaker|null" (для null подставвится participant)
}
```
### Добавить спикера к сессиями (используется на странице с деталкой спикера)
PUT /api/users/add-to-sessions/{speakerUserId}
speakerUserId - ID спикера, которого присоединяем к сессиям
id и role - это ID сессии и role - это роль спикера в данной сессии (Speaker|Moderator)
Пример запроса
```
{
"sessions":[
{
"id":1,
"role":"Speaker"
},
{
"id":2,
"role":"Moderator"
}
]
}
```
Пример ответа:
```
{
"data": {
"id": 1,
"email": "admin@admin.ru",
"created_at": "2020-08-17T14:38:29.000000Z",
"updated_at": "2020-08-17T14:38:29.000000Z",
"deleted_at": null,
"phone": "899999999",
"moderation_status": null,
"role": [
"administrator"
],
"profile": {
"id": 1,
"user_id": 1,
"deleted_at": null,
"created_at": "2020-08-17T14:38:32.000000Z",
"updated_at": "2020-08-17T14:38:32.000000Z",
"first_name": "Артемий",
"last_name": "Илья Романович Доронин",
"middle_name": "Куликовa Витольд Фёдорович",
"biography": "Hello, I`m Артемий",
"full_name": "Артемий Куликовa Витольд Фёдорович Илья Романович Доронин"
},
"avatar": "https://event-service-backend-dev.truemachine.ru/uploads/avatars/default.jpeg",
"type": "speaker",
"is_favorite": false,
"sessions": [
{
"id": 1,
"title": "Филатовa Street",
"description": "A rerum dolorum quo. Architecto alias odio sed ab corrupti nihil. Magni et nobis iste id distinctio non. Qui est consequuntur a dolorem repudiandae.",
"start": "2020-09-02T08:20:00.000000Z",
"end": "2020-09-02T08:35:00.000000Z",
"track_id": 1,
"category_id": 1,
"chat_id": null,
"broadcast_url": "http://erdman.net/",
"embed_code": "79567",
"can_ask_speaker_before": true,
"created_at": "2020-08-17T14:38:32.000000Z",
"updated_at": "2020-08-17T14:38:32.000000Z",
"pivot": {
"user_id": 1,
"session_id": 1,
"role": "Speaker"
},
"is_favorite": false
}
]
}
}
```
### Cписок пользователей на модерации GET api/moderation/users
Пример ответа
```
"data": [
{
"id": 85,
"email": "schuppe.jazmin@example.com",
"created_at": "2020-08-14T11:15:02.000000Z",
"updated_at": "2020-08-14T11:15:02.000000Z",
"deleted_at": null,
"phone": "1-410-518-0664 x7116",
"moderation_status": "moderate",
"role": [
"users"
]
},
{
"id": 87,
"email": "edison.kohler@example.org",
"created_at": "2020-08-14T11:15:03.000000Z",
"updated_at": "2020-08-14T11:15:03.000000Z",
"deleted_at": null,
"phone": "(729) 878-3976",
"moderation_status": "moderate",
"role": [
"users"
]
}
```
### Изменить статуса пользователя PUT api/moderation/users/{id}
Тело запроса
```
{
'status' => 'required|in:approve,reject,moderate',
'comment' => 'required'
}
```
Пример ответа
```
{
"data": {
"id": 93,
"email": "tillman.baylee@example.com",
"created_at": "2020-08-14T11:15:03.000000Z",
"updated_at": "2020-08-15T15:37:38.000000Z",
"deleted_at": null,
"phone": "1-206-415-2325 x41516",
"moderation_status": "approve",
"role": [
"speaker"
]
}
}
```
### Добавить пользователя в избранное api/favorite/user/{id}
Пример ответа
```
{
"data": {
"id": 1,
"email": "admin@admin.ru",
"created_at": "2020-08-14T11:30:43.000000Z",
"updated_at": "2020-08-14T11:30:43.000000Z",
"deleted_at": null,
"phone": "899999999",
"role": [
"administrator"
],
"profile": null,
"avatar": "/uploads/avatars/default.jpeg",
"type": null
}
}
```
### Удалить пользователя из избранных DELETE api/favorite/user/{id}
Код ответа 204
### Логин пользователя по ключу стороннего сервиса POST api/login/key
Тело запроса
```
{
"key": "string"
}
```
Рабочие коды: https://truemachine.atlassian.net/wiki/spaces/KDHAU/pages/83460098
Примеры ответа
1) Код пользователя верный (код ответа 200)
```
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI1IiwianRpIjoiMDI3Yzc5MzgxZGQzNjAwYzI0NmVmYmEyNjk5Y2I5NTY2YjY0OGQ2NzIxNTM2MmQxYWE0MjM1ZWFkMzFkODE3YjJjYjY5NmY3OTczNjliMjAiLCJpYXQiOjE1OTkyMDYzNDAsIm5iZiI6MTU5OTIwNjM0MCwiZXhwIjoxNjMwNzQyMzQwLCJzdWIiOiI5NDgxIiwic2NvcGVzIjpbXX0.YHqGa3OluWfIX-OoKVy-t2Ueo6WLnD7V_Yh1QC32c5okEAwSmIC-O_aHklbPwSEaEgkelgIJpmkmThIZGdTHgXWEYr9ewyydPPiYcA63fRsBYp0zwsUWU9AKMIyCSRRVR1Me8MKXHSltRJDTP9PSeuj1Pmp9hnL3sqhHTPX_jPRBnQtuknRrMCVLIGT9HBdr_3uaKL2daw8O_QnPqAIFpvewXnmME-sMAB_3m6Q1dPG-hPqkuzpPaxAwRvNtEqK7TaDLLPpuvV4bv9DEID0pWT4DGC3jxflwjWgJrtv3Wit8A0AMjlbnvL9MdeUQM0E6Z3MDW2ZwV46zoF7bo5XsfjaDq7My-YId3G3e_Dpc1ZVjDB7uHMQAjqXxq-E_dryMVBTcpYMC6xFy6xaauh22W7Bf_i6YhBQCTQhXKtkhkxJrOxCPEY_Met1_JrTEjs50KpPk0Sc0SEjJ0gzbq108znvlshieL5YlAXHwrHAhhK10gzBOW9xGJi7YJS3K9_ExfC28UPaR-6akMUyzy1XlaIpiJur-MHpH4SuNX-oN0Vr6LGQ5pX-IqjkaOVTiAu7p2l3l1HMKOPJ5_iQU7NrYZIuRHyxCg_c786K6_lMyFkawXXNCq7HJeDu1NOyAti-oY3d9K2O6qoqc86DpZzRB6dmEYyJbUZzIARHH0qAna3c",
"email": "amway email 0_2020-09-03 10:39:05",
"user": {
"id": 9481,
"email": "email 0_2020-09-03 10:39:05",
"created_at": "2020-09-03T10:39:05.000000Z",
"updated_at": "2020-09-03T10:39:05.000000Z",
"deleted_at": null,
"phone": "amway phone",
"moderation_status": "approve",
"key": "727730711904731",
"role": [
"user"
],
"profile": {
"id": 9358,
"user_id": 9481,
"first_name": "Илья",
"last_name": "Евлахов",
"middle_name": null,
"full_name": null,
"company": null,
"goals": null,
"interests": null,
"biography": null
},
"avatar": "/uploads/previews/avatar-preview.jpeg",
"type": "participant",
"is_favorite": false,
"frontend_role" : "adminsitrator|support|parent|children"
}
}
```
2) Код пользователя неверный (код ответа 400)
```
{
"errors": {
"fields": {
"key": [
"Неверный код доступа"
]
},
"message": "Неверный формат данных",
"status_code": 422
}
}
```
3) Номер пользователя неверный (код ответа 400)
```
{
"errors": {
"fields": {
"key": [
"Неверный номер телефона"
]
},
"message": "Неверный формат данных",
"status_code": 422
}
}
```
### Коды логинившихся amway-пользователей GET /api/users/logged
Ответ
```
[
"464554906793825",
"933263411066022",
"691766536197148",
"659941921739029"
]
```
### Список всех пользователей GET /api/users?locale=ru
[Рекомендуется к просмотру](https://truemachine.slack.com/files/UFNFNHR4Z/F01BQF0E5FW/2020-09-28_19-54-12.mp4)
Параметры фильтрации (получаются через [словари](https://hackmd.io/_kgd71kBS02cA5JH1DGVTw?view#%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%BE%D0%B2-%D0%B4%D0%BB%D1%8F-%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B0-GET-apiuser-filterslocaleru)):
1) type - тип поля, по которому производится фильтрация;
2) field - поле, по которому производится фильтрация;
3) conditions - условия фильтрации;
4) value - значения фильтрации.
GET-параметр filter
```
filter={"attributes": [
{
"type": bigint|integer|string|datetime|enum|boolean,
"field": id|email|created_at|updated_at|phone|moderation_status|blocked|role|type|full_name|country_id|city_id|last_online|blocked_date|online,
"conditions": type_conditions,
"value": type_values
}
]
}
```
Условия и значения для каждого типа
```
1) bigint|integer:
value = number|array
conditions = filled|not_filled|equal|not_equal|like|not_like|more|less|interval
value = array - только для inteval
2) string:
value = string
conditions = filled|not_filled|equal|not_equal|like|not_like
3) datetime:
value = yyyy-mm-dd|null|number|time_array
conditions = any|yesterday|today|period|time_interval
value = null - только для yesterday и today
value = number - только для period
value = time_array - только для time_interval
4) boolean
value = true|false
conditions = null
5) enum
value = null
conditions = enum_condition|array|all
для каждого поля enum свои enum_condition, которые можно получить в словарях
all - "all"
null - null|""
array - ["value1", "value2", ...]
time_array - ["begin", "end"]
```
[Примечания](https://translate.google.ru/?hl=en&tab=TT&authuser=0)
```
filled - заполнено
not_filled - не заполнено
equal - равно
not_equal - не равно
like - включает
not_like - не включает
more - больше
less - меньше
interval - промежуток
any - любая дата
yesterday - вчера
today - сегодня
period - период дней
time_interval - диапазон дней
```
Пример запроса
```
/api/users?locale=ru&filter={"attributes": [{"type": "datetime", "field": "created_at","conditions": "time_interval","value": ["2020-09-09", "2020-09-29"]}, {"type": "boolean", "field": "online","conditions": "","value": false}]}
```
Ответ
```
{
"data": [
{
"id": 3,
"email": "test2@mail.ru",
"phone": "+7-927-341-12-11",
"type": "speaker",
"role": [
"user"
],
"profile": {
"id": 2,
"user_id": 3,
"deleted_at": null,
"created_at": "2020-09-09T07:32:05.000000Z",
"updated_at": "2020-09-09T07:32:05.000000Z",
"first_name": "Иван2",
"last_name": "Иванов2",
"middle_name": "Иванович",
"biography": "Привет! Я фронтенд разработчик в Компании 2",
"full_name": "Иван2 Иванов2 Иванович"
},
"country": null,
"city": null,
"avatar": "https://event-service-backend-dev.truemachine.ru/uploads/previews/avatar-preview.jpeg",
"moderation_status": "moderate",
"is_favorite": true
}
],
"links": {
"first": "https://event-service-backend-dev.truemachine.ru/api/users?page=1",
"last": "https://event-service-backend-dev.truemachine.ru/api/users?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"path": "https://event-service-backend-dev.truemachine.ru/api/users",
"per_page": "100",
"to": 1,
"total": 1
}
}
```
### Блокировка пользователя POST /api/users/{id}/block
Ответ
```
{
"success": "ok"
}
```
### Разблокировка пользователя POST /api/users/{id}/un-block
Ответ
```
{
"success": "ok"
}
```
### Получение фильтров для админа GET /api/user-filters?locale=ru
1) field - поле, по которому производится фильтрация;
2) field_label - метка поля для селектбокса;
3) type - тип поля, по которому производится фильтрация;
4) conditions - условия фильтрации;
5) conditions_labels - метки условий фильтрации для селектбокса
6) value - значения фильтрации.
Ответ
```
[
{
"field": "id",
"field_label": "ID",
"type": "bigint",
"conditions": [
"filled",
"not_filled",
"equal",
"not_equal",
"like",
"not_like",
"more",
"less",
"interval"
],
"conditions_labels": {
"filled": "Заполнено",
"not_filled": "Не заполнено",
"equal": "Равно",
"not_equal": "Не равно",
"like": "Включает",
"not_like": "Не включает",
"more": "Больше",
"less": "Меньше",
"interval": "Промежуток"
}
},
{
"field": "email",
"field_label": "Фильтр по email",
"type": "string",
"conditions": [
"filled",
"not_filled",
"equal",
"not_equal",
"like",
"not_like"
],
"conditions_labels": {
"filled": "Заполнено",
"not_filled": "Не заполнено",
"equal": "Равно",
"not_equal": "Не равно",
"like": "Включает",
"not_like": "Не включает"
}
},
{
"field": "created_at",
"field_label": "По дате регистрации",
"type": "datetime",
"conditions": [
"any",
"yesterday",
"today",
"period",
"time_interval"
],
"conditions_labels": {
"any": "Любая дата",
"yesterday": "Вчера",
"today": "Сегодня",
"period": "Период в N дней",
"time_interval": "Диапозон"
}
},
{
"field": "updated_at",
"field_label": "По дате обновления",
"type": "datetime",
"conditions": [
"any",
"yesterday",
"today",
"period",
"time_interval"
],
"conditions_labels": {
"any": "Любая дата",
"yesterday": "Вчера",
"today": "Сегодня",
"period": "Период в N дней",
"time_interval": "Диапозон"
}
},
{
"field": "phone",
"field_label": "Фильтр по телефону",
"type": "string",
"conditions": [
"filled",
"not_filled",
"equal",
"not_equal",
"like",
"not_like"
],
"conditions_labels": {
"filled": "Заполнено",
"not_filled": "Не заполнено",
"equal": "Равно",
"not_equal": "Не равно",
"like": "Включает",
"not_like": "Не включает"
}
},
{
"field": "moderation_status",
"field_label": "По статусу модерации",
"type": "enum",
"conditions": [
"approve",
"moderate",
"reject"
],
"conditions_labels": {
"approve": "Подвтержден",
"moderate": "Модерация",
"reject": "Отклонен"
}
},
{
"field": "blocked",
"field_label": "Заблокирован",
"type": "boolean",
"conditions": [
"true",
"false"
],
"conditions_labels": {
"true": "Да",
"false": "Нет"
}
},
{
"field": "role",
"field_label": "Фильтр по ролям",
"type": "enum",
"conditions": [
"administrator",
"user"
],
"conditions_labels": {
"administrator": "Администратор",
"user": "Пользователь"
}
},
{
"field": "type",
"field_label": "Фильтр по типам",
"type": "enum",
"conditions": [
"participant",
"speaker"
],
"conditions_labels": {
"participant": "Участник",
"speaker": "Спикер"
}
},
{
"field": "full_name",
"field_label": "Фильтр по ФИО",
"type": "string",
"conditions": [
"filled",
"not_filled",
"equal",
"not_equal",
"like",
"not_like"
],
"conditions_labels": {
"filled": "Заполнено",
"not_filled": "Не заполнено",
"equal": "Равно",
"not_equal": "Не равно",
"like": "Включает",
"not_like": "Не включает"
}
},
{
"field": "country_id",
"field_label": "Фильтр по стране",
"type": "enum",
"conditions_labels": [
"Австрия": 1,
"Албания": 2,
"Андорра": 3,
"Беларусь": 4,
"Бельгия": 5,
...
]
},
{
"field": "city_id",
"field_label": "Фильтр по городу",
"type": "enum",
"conditions_labels": [
"Барнаул": 1,
"Бийск": 2,
"Благовещенск": 3,
"Архангельск": 4,
"Вельск": 5,
...
]
},
{
"field": "last_online_date",
"field_label": "По дате последнего захода",
"type": "datetime",
"conditions": [
"any",
"yesterday",
"today",
"period",
"time_interval"
],
"conditions_labels": {
"any": "Любая дата",
"yesterday": "Вчера",
"today": "Сегодня",
"period": "Период в N дней",
"time_interval": "Диапозон"
}
},
{
"field": "blocked_date",
"field_label": "По дате блокировки",
"type": "datetime",
"conditions": [
"any",
"yesterday",
"today",
"period",
"time_interval"
],
"conditions_labels": {
"any": "Любая дата",
"yesterday": "Вчера",
"today": "Сегодня",
"period": "Период в N дней",
"time_interval": "Диапозон"
}
},
{
"field": "online",
"field_label": "По online",
"type": "boolean",
"conditions": [
"true",
"false"
],
"conditions_labels": {
"true": "Да",
"false": "Нет"
}
}
]
```
### Получение списка ролей GET /api/user-roles
название: id
```
{
"administrator": 1,
"user": 2,
"guest": 3
}
```
### Логин пользователей GoldAmway POST /api/login/amway
```
{
"key":"string"
}
```
### Список пользователей из редиса GET /api/users/search
```
{
name=string - параметр для поиска
}
```
```
{
"data": [
{
"id": "1426",
"first_name": "Екатерина",
"last_name": "Вожегова",
"chat_status": "active"
},
{
"id": "2026",
"first_name": "Екатерина",
"last_name": "Вознесенская",
"chat_status": "active"
},
{
"id": "902",
"first_name": "Лидия",
"last_name": "Волгарева",
"chat_status": "active"
},
{
"id": "1210",
"first_name": "Алексей",
"last_name": "Волков",
"chat_status": "active"
},
{
"id": "2288",
"first_name": "Инна",
"last_name": "Волкова",
"chat_status": "active"
},
{
"id": "860",
"first_name": "Елена",
"last_name": "Волкова",
"chat_status": "active"
},
{
"id": "1192",
"first_name": "Татьяна",
"last_name": "Воловик",
"chat_status": "active"
},
{
"id": "440",
"first_name": "Елена",
"last_name": "Волохова",
"chat_status": "active"
},
{
"id": "194",
"first_name": "Максим",
"last_name": "Воробьев",
"chat_status": "active"
},
{
"id": "1378",
"first_name": "Ольга",
"last_name": "Воробьева",
"chat_status": "active"
},
{
"id": "1798",
"first_name": "Елена",
"last_name": "Воробьева",
"chat_status": "active"
},
{
"id": "2042",
"first_name": "Юрий",
"last_name": "Воронин",
"chat_status": "active"
},
{
"id": "2266",
"first_name": "Юлия",
"last_name": "Воронкова",
"chat_status": "active"
},
{
"id": "2142",
"first_name": "Дмитрий",
"last_name": "Ворошилов",
"chat_status": "active"
},
{
"id": "238",
"first_name": "Татьяна",
"last_name": "Вострецова",
"chat_status": "active"
},
{
"id": "2018",
"first_name": "Ольга",
"last_name": "Вострикова",
"chat_status": "active"
},
{
"id": "2268",
"first_name": "Евгения",
"last_name": "Вотинцева",
"chat_status": "active"
},
{
"id": "798",
"first_name": "Наталья",
"last_name": "Вохмина",
"chat_status": "active"
},
{
"id": "1078",
"first_name": "Денис",
"last_name": "Воякин",
"chat_status": "active"
},
{
"id": "1368",
"first_name": "Роман",
"last_name": "Вшивков",
"chat_status": "active"
}
],
"meata": {
"per_page": 20,
"current_page": 11,
"last_page": 60,
"total": 1198
}
}
```
# Category (Категория)
*Важное примечение*. При создании и обновлении записи указывается locale. И в таблицах с транслитеряцией создается/обновляется тот locale, который был указан в GET параметре locale. Чтобы создать сущность сразу с заполненными 2-умя, 3-емя и тд locale - нужно сначала создать запись с одним locale, и для остальных locale поочередно вызывать метод обновления категории.
### Создание категории. POST /api/categories?locale={en / ru}
Код ответа - 201
Тело запроса
```
{
"name":"Моя категория 2"
}
```
Пример ответа
```
{
"data": {
"id": 26,
"created_at": "2020-08-12T07:41:14.000000Z",
"updated_at": "2020-08-12T07:41:14.000000Z",
"deleted_at": null,
"name": "Моя категория 2"
}
}
```
### Обновление категории. PUT /api/categories/{id}?locale={en / ru}
Код ответа - 202
Тело запроса
```
{
"name":"Моя категория 2"
}
```
Пример ответа
```
{
"data": {
"id": 26,
"created_at": "2020-08-12T07:41:14.000000Z",
"updated_at": "2020-08-12T07:41:14.000000Z",
"deleted_at": null,
"name": "Моя категория 2"
}
}
```
### Список категорий. GET /api/categories?locale={en / ru}
Код ответа - 200
### query params
```
{
name,
category_id,
sort[name] = id/created_at/locale_id/name
sort[direction] = asc/desc
}
```
Пример ответа
```
{
"data": [
{
"id": 1,
"created_at": "2020-08-12T08:01:16.000000Z",
"updated_at": "2020-08-12T08:01:16.000000Z",
"deleted_at": null,
"name": "HoneyDew"
},
{
"id": 2,
"created_at": "2020-08-12T08:01:16.000000Z",
"updated_at": "2020-08-12T08:01:16.000000Z",
"deleted_at": null,
"name": "Purple"
},
],
"links": {
"first": "http://localhost:8046/api/categories?page=1",
"last": "http://localhost:8046/api/categories?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"path": "http://localhost:8046/api/categories",
"per_page": 15000,
"to": 20,
"total": 20
}
}
```
### Категория. GET /api/categories/{id}?locale={en / ru}
Код ответа - 200
Пример ответа
```
{
"data": {
"id": 1,
"created_at": "2020-08-12T08:01:16.000000Z",
"updated_at": "2020-08-12T08:01:16.000000Z",
"deleted_at": null,
"name": "HoneyDew"
}
}
```
### Удаление категории. DELETE /api/categories/{id}?locale={en / ru}
Код ответа - 204
# Flow (Потоки)
Тоже самое, что и у модели Category, только изменяется путь на /api/flows
у сущности flow есть тоже только поле name
### query params GET /api/flows
```
{
name,
flow_id,
sort[name] = id/created_at/locale_id/name
sort[direction] = asc/desc
}
```
# Session (Сессии)
### query params GET /api/sessions
```
{
embed_code,
can_ask,
flow_id,
time_interval = begin_date, end_date - пример "time_interval=2020-09-09 05:00, 2020-09-10 10:00",
broadcast_url,
begin_date - пример (2020-10-10),
name,
description,
session_id,
session_mark,
sort[name] = id/category_id/flow_id/begin_date/end_date/embed_code/can_ask/created_at/name/description
sort[direction] = asc/desc
search,
speakers =1,2,... - пример "speakers=1,2",
is_live = true|false,
is_favorite = true|false,
date_range = begin_date,end_date - пример "date_range=2020-09-09 05:00,2020-09-10 10:00"
}
```
### Получить все сессии (без привязки к категории)
GET /api/sessions/all
Пример ответа:
```
{
"data": [
{
"id": 1,
"title": "Rau Valleys",
"description": "Qui fuga enim rerum delectus qui. A atque quia ad quas. Earum nulla provident veritatis et.",
"start": "2020-09-02T08:20:00.000000Z",
"end": "2020-09-02T08:35:00.000000Z",
"track_id": 1,
"category_id": 1,
"chat_id": null,
"broadcast_url": "http://erdman.net/",
"embed_code": "79567",
"can_ask_speaker_before": true,
"created_at": "2020-08-17T14:38:32.000000Z",
"updated_at": "2020-08-17T14:38:32.000000Z",
"is_favorite": false
},
{
"id": 2,
"title": "Nat Square",
"description": "Minima est deleniti maiores aut maiores et iure sint. Odio voluptas vero dolorum voluptatibus.",
"start": "2020-09-02T08:55:00.000000Z",
"end": "2020-09-02T09:55:00.000000Z",
"track_id": 1,
"category_id": 1,
"chat_id": null,
"broadcast_url": "http://www.predovic.com/ratione-saepe-sint-qui-modi.html",
"embed_code": "14437-9948",
"can_ask_speaker_before": false,
"created_at": "2020-08-17T14:38:32.000000Z",
"updated_at": "2020-08-17T14:38:32.000000Z",
"is_favorite": true
},
{
"id": 3,
"title": "Jenkins Mills",
"description": "Voluptatem nostrum voluptas est. Omnis similique aliquid et odit. Ut soluta blanditiis ea dicta aut expedita at. Magnam consectetur sit magnam rem odit velit.",
"start": "2020-09-02T11:05:00.000000Z",
"end": "2020-09-02T11:35:00.000000Z",
"track_id": null,
"category_id": 1,
"chat_id": null,
"broadcast_url": "http://www.ernser.info/nostrum-autem-nostrum-porro.html",
"embed_code": "61840-4785",
"can_ask_speaker_before": false,
"created_at": "2020-08-17T14:38:32.000000Z",
"updated_at": "2020-08-17T14:38:32.000000Z",
"is_favorite": true
}
],
"links": {
"first": "http://localhost:8046/api/sessions/all?page=1",
"last": "http://localhost:8046/api/sessions/all?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"path": "http://localhost:8046/api/sessions/all",
"per_page": 15000,
"to": 1070,
"total": 1070
}
```
### Создание сессии POST /api/sessions
Тело запроса
```
{
"begin_date":"2020-09-20 19:00:00",
"end_date":"2020-09-20 19:30:00",
"name":"Test",
"description":"ajndsjui",
"broadcast_url":"https://test.ru",
"embed_code":"asdfj",
"can_ask_speaker_before":true,
"category_id":1,
"flow_id":1,
"chat_before_live": "true",
"questions_before_live": "true",
"player_before_live": "true",
"speakers":[
{
"id":1,
"role":"Speaker"
},
{
"id":2,
"role":"Moderator"
}
]
}
```
Пример ответа
```
{
"data": {
"begin_date": "2020-09-20T19:00:00.000000Z",
"end_date": "2020-09-20T19:30:00.000000Z",
"broadcast_url": "https://test.ru",
"embed_code": "asdfj",
"can_ask_speaker_before": true,
"category_id": 1,
"flow_id": 1,
"chat_before_live": "true",
"questions_before_live": "true",
"player_before_live": "true",
"updated_at": "2020-08-18T12:11:56.000000Z",
"created_at": "2020-08-18T12:11:56.000000Z",
"id": 1070,
"chat_id": "1",
"name": "Test",
"description": "ajndsjui",
"is_favorite": false,
"speakers": [
{
"id": 1,
"email": "admin@admin.ru",
"created_at": "2020-08-17T14:38:29.000000Z",
"updated_at": "2020-08-17T14:38:29.000000Z",
"deleted_at": null,
"phone": "899999999",
"moderation_status": null,
"role": [
"administrator"
],
"pivot": {
"session_id": 1070,
"user_id": 1,
"role": "Speaker"
},
"profile": {
"id": 1,
"user_id": 1,
"deleted_at": null,
"created_at": "2020-08-17T14:38:32.000000Z",
"updated_at": "2020-08-17T14:38:32.000000Z",
"first_name": "Seth",
"last_name": "Prof. Harold Gutkowski",
"middle_name": "Prof. Kellen Willms DDS",
"biography": "Hello, I`m Seth",
"full_name": "Seth Prof. Kellen Willms DDS Prof. Harold Gutkowski"
},
"avatar": "https://event-service-backend-dev.truemachine.ru/uploads/avatars/default.jpeg",
"type": "speaker",
"is_favorite": false
},
{
"id": 2,
"email": "gaetano02@example.com",
"created_at": "2020-08-17T14:38:31.000000Z",
"updated_at": "2020-08-17T14:38:31.000000Z",
"deleted_at": null,
"phone": "1-474-977-7000 x02895",
"moderation_status": null,
"role": [
"user"
],
"pivot": {
"session_id": 1070,
"user_id": 2,
"role": "Moderator"
},
"profile": {
"id": 2,
"user_id": 2,
"deleted_at": null,
"created_at": "2020-08-17T14:38:32.000000Z",
"updated_at": "2020-08-17T14:38:32.000000Z",
"first_name": "Micaela",
"last_name": "Mrs. Jacky Smith",
"middle_name": "Britney Hickle DDS",
"biography": "Hello, I`m Micaela",
"full_name": "Micaela Britney Hickle DDS Mrs. Jacky Smith"
},
"avatar": "https://event-service-backend-dev.truemachine.ru/uploads/avatars/default.jpeg",
"type": "speaker",
"is_favorite": true
}
]
}
}
```
### Изменение сессии PUT /api/sessions/{id}
Тело запроса
```
{
"begin_date":"2020-09-20 19:00:00",
"end_date":"2020-09-20 19:30:00",
"name":"Test3",
"description":"asfdsdf",
"broadcast_url":"https://test.ru",
"embed_code":"asdfj",
"can_ask_speaker_before":true,
"category_id":1,
"flow_id":1,
"chat_before_live": "false",
"questions_before_live": "false",
"player_before_live": "false",
"speakers":[
{
"id": 3,
"role":"Moderator"
}
]
}
```
Пример ответа
```
{
"data": {
"id": 1069,
"category_id": 1,
"flow_id": 1,
"begin_date": "2020-09-20T19:00:00.000000Z",
"end_date": "2020-09-20T19:30:00.000000Z",
"broadcast_url": "https://test.ru",
"embed_code": "asdfj",
"can_ask_speaker_before": true,
"deleted_at": null,
"created_at": "2020-08-18T10:17:00.000000Z",
"updated_at": "2020-08-18T10:17:00.000000Z",
"chat_id": null,
"chat_before_live": "false",
"questions_before_live": "false",
"player_before_live": "false",
"name": "Test3",
"description": "asfdsdf",
"is_favorite": false,
"speakers": [
{
"id": 3,
"email": "katlyn.krajcik@example.org",
"created_at": "2020-08-17T14:38:31.000000Z",
"updated_at": "2020-08-17T14:38:31.000000Z",
"deleted_at": null,
"phone": "+1-523-594-9269",
"moderation_status": null,
"role": [
"user"
],
"pivot": {
"session_id": 1069,
"user_id": 3,
"role": "Moderator"
},
"profile": {
"id": 3,
"user_id": 3,
"deleted_at": null,
"created_at": "2020-08-17T14:38:32.000000Z",
"updated_at": "2020-08-17T14:38:32.000000Z",
"first_name": "Алина",
"last_name": "Анна Алексеевна Брагина",
"middle_name": "Масловaа Валентина Дмитриевна",
"biography": "Hello, I`m Алина",
"full_name": "Алина Масловaа Валентина Дмитриевна Анна Алексеевна Брагина"
},
"avatar": "https://event-service-backend-dev.truemachine.ru/uploads/avatars/default.jpeg",
"type": "speaker",
"is_favorite": true
}
]
}
}
```
### Сессия GET /api/sessions/{id}
Пример ответа
```
{
"data": {
"id": 2,
"category_id": 1,
"flow_id": 1,
"begin_date": "2020-09-12T09:05:00.000000Z",
"end_date": "2020-09-12T09:50:00.000000Z",
"broadcast_url": "https://mraz.com/corporis-error-commodi-debitis-laboriosam-non-natus-similique.html",
"embed_code": "04763",
"can_ask_speaker_before": false,
"deleted_at": null,
"created_at": "2020-09-09T07:32:08.000000Z",
"updated_at": "2020-09-09T07:32:08.000000Z",
"chat_id": 2592,
"is_live": true,
"chat_before_live": false,
"questions_before_live": false,
"player_before_live": false,
"name": "Braeden Way",
"description": "Nemo quae accusantium inventore enim eligendi error dolores. Rerum est iusto deserunt adipisci praesentium. Tempora quis sequi amet veniam quo. Beatae possimus tenetur voluptatem quo corporis.",
"speakers": [
{
"id": 26,
"email": "test25@mail.ru",
"created_at": "2020-09-09T07:32:07.000000Z",
"updated_at": "2020-09-09T07:32:07.000000Z",
"deleted_at": null,
"phone": "+7-927-341-12-34",
"moderation_status": "moderate",
"blocked": false,
"city_id": null,
"country_id": null,
"role": [
"user"
],
"pivot": {
"session_id": 2,
"user_id": 26,
"role": "role_b"
},
"profile": {
"id": 25,
"user_id": 26,
"deleted_at": null,
"created_at": "2020-09-09T07:32:07.000000Z",
"updated_at": "2020-09-09T07:32:07.000000Z",
"first_name": "Peter",
"last_name": "Petrov25",
"middle_name": "Petrovich",
"biography": "Hello, I am marketing specialist of Company 25",
"full_name": "Peter Petrov25"
},
"avatar": "https://event-service-backend-dev.truemachine.ru/uploads/previews/avatar-preview.jpeg",
"type": "speaker",
"is_favorite": false,
"city": null,
"country": null
},
{
"id": 31,
"email": "test30@mail.ru",
"created_at": "2020-09-09T07:32:07.000000Z",
"updated_at": "2020-09-09T07:32:07.000000Z",
"deleted_at": null,
"phone": "+7-927-341-12-39",
"moderation_status": "approve",
"blocked": false,
"city_id": null,
"country_id": null,
"role": [
"user"
],
"pivot": {
"session_id": 2,
"user_id": 31,
"role": "role_a"
},
"profile": {
"id": 30,
"user_id": 31,
"deleted_at": null,
"created_at": "2020-09-09T07:32:07.000000Z",
"updated_at": "2020-09-09T07:32:07.000000Z",
"first_name": "Peter",
"last_name": "Petrov30",
"middle_name": "Petrovich",
"biography": "Hello, I am marketing specialist of Company 30",
"full_name": "Peter Petrov30"
},
"avatar": "https://event-service-backend-dev.truemachine.ru/uploads/previews/avatar-preview.jpeg",
"type": "speaker",
"is_favorite": false,
"city": null,
"country": null
}
],
"is_favorite": true,
"track_name": "Technology",
"marked_type": null,
"likes": 0,
"dislikes": 0,
"files": [
{
"id": 3,
"session_id": 2,
"type": "image/jpeg",
"name": "1wejiH6PyI8.jpg",
"src": "https://event-service-backend-dev.truemachine.ru/storage/files/7TyWlfuzd3HVqgJ4aKly7NwZKKHDdvNyTEquA593.jpeg"
}
]
}
}
```
### Добавить файл к сессии POST api/sessions/file
Тело запроса
```
{
"session_id": required|integer,
"file": required|array,
"roles": required|array,
}
```
Пример ответа
```
{
"data": [
{
"id": 24,
"session_id": 2,
"type": "image/jpeg",
"name": "CkaEM72205o.jpg",
"src": "https://event-service-backend-dev.truemachine.ru/storage/files/SYQcuPaIM4Tmof26H29CfXGk5sOY8YXFuzbEn65c.jpeg",
"roles": [
1
]
},
{
"id": 25,
"session_id": 2,
"type": "image/jpeg",
"name": "gGIcRvhL0qs.jpg",
"src": "https://event-service-backend-dev.truemachine.ru/storage/files/em9f7Tk7J9jYMEmLKAA77GBCVz1MwgBJrJyjfSyy.jpeg",
"roles": [
1,
2
]
}
]
}
```
### Изменить доступ к файлам сессии POST api/sessions/update-permission
Тело запроса
```
{
"files": [
{
"id": file_id,
"roles": array
}
]
}
```
Пример, roles = [] - доступ для всех ролей
```
{
"files": [
{
"id": 49,
"roles": []
},
{
"id": 50,
"roles": [1, 2]
}
]
}
```
### Удалить файл сессии DELETE api/sessions/file/{fileId}
Пример ответа
```
{
"data": {
"id": 4,
"session_id": 2,
"type": "image/jpeg",
"name": "Tgmgob4DQQk.jpg",
"src": "https://event-service-backend-dev.truemachine.ru/storage/files/BHwzpuTnz5zN2nVaVh9MY317USQanAQ8UY22tQ6J.jpeg"
}
}
```
### Добавить сессию в избранное GET api/favorite/session/{id}
Пример ответа
```
{
"data": {
"id": 1,
"category_id": 1,
"flow_id": 1,
"begin_date": "2020-09-02T08:33:00.000000Z",
"end_date": "2020-09-02T09:03:00.000000Z",
"broadcast_url": "http://schuppe.com/",
"embed_code": "19975-5118",
"can_ask_speaker_before": true,
"deleted_at": null,
"created_at": "2020-08-14T11:31:03.000000Z",
"updated_at": "2020-08-14T11:31:03.000000Z",
"name": "Mraz Stravenue",
"description": "Reiciendis maxime recusandae exercitationem. Ipsam odio adipisci nisi illo. Laudantium et sint repellat odio quis eum. Eos fugiat reiciendis et est doloremque quia."
}
}
```
### Удалить сессию из избранных DELETE api/favorite/session/{id}
Код ответа 204
### Список сессии в реальном времени GET /api/session-lives
Пример ответа
```
{
"data": [
{
"id": 2,
"title": "Braeden Way",
"description": "Nemo quae accusantium inventore enim eligendi error dolores. Rerum est iusto deserunt adipisci praesentium. Tempora quis sequi amet veniam quo. Beatae possimus tenetur voluptatem quo corporis.",
"start": "2020-09-12T09:05:00.000000Z",
"end": "2020-09-12T09:50:00.000000Z",
"track_id": 1,
"category_id": 1,
"chat_id": 2592,
"broadcast_url": "https://mraz.com/corporis-error-commodi-debitis-laboriosam-non-natus-similique.html",
"embed_code": "04763",
"can_ask_speaker_before": false,
"created_at": "2020-09-09T07:32:08.000000Z",
"updated_at": "2020-09-09T07:32:08.000000Z",
"speakers": [
{
"id": 26,
"email": "test25@mail.ru",
"created_at": "2020-09-09T07:32:07.000000Z",
"updated_at": "2020-09-09T07:32:07.000000Z",
"deleted_at": null,
"phone": "+7-927-341-12-34",
"moderation_status": "moderate",
"blocked": false,
"city_id": null,
"country_id": null,
"online": false,
"last_online": null,
"role": [
"user"
],
"pivot": {
"session_id": 2,
"user_id": 26,
"role": "role_b"
},
"profile": {
"id": 25,
"user_id": 26,
"deleted_at": null,
"created_at": "2020-09-09T07:32:07.000000Z",
"updated_at": "2020-09-09T07:32:07.000000Z",
"first_name": "Peter",
"last_name": "Petrov25",
"middle_name": "Petrovich",
"biography": "Hello, I am marketing specialist of Company 25",
"full_name": "Peter Petrov25"
},
"avatar": "https://event-service-backend-dev.truemachine.ru/uploads/previews/avatar-preview.jpeg",
"type": "speaker",
"is_favorite": false,
"city": null,
"country": null,
"chat_status": "active"
},
{
"id": 31,
"email": "test30@mail.ru",
"created_at": "2020-09-09T07:32:07.000000Z",
"updated_at": "2020-09-09T07:32:07.000000Z",
"deleted_at": null,
"phone": "+7-927-341-12-39",
"moderation_status": "approve",
"blocked": false,
"city_id": null,
"country_id": null,
"online": false,
"last_online": null,
"role": [
"user"
],
"pivot": {
"session_id": 2,
"user_id": 31,
"role": "role_a"
},
"profile": {
"id": 30,
"user_id": 31,
"deleted_at": null,
"created_at": "2020-09-09T07:32:07.000000Z",
"updated_at": "2020-09-09T07:32:07.000000Z",
"first_name": "Peter",
"last_name": "Petrov30",
"middle_name": "Petrovich",
"biography": "Hello, I am marketing specialist of Company 30",
"full_name": "Peter Petrov30"
},
"avatar": "https://event-service-backend-dev.truemachine.ru/uploads/previews/avatar-preview.jpeg",
"type": "speaker",
"is_favorite": false,
"city": null,
"country": null,
"chat_status": "active"
}
],
"is_favorite": false,
"is_live": true,
"track_name": "Technology",
"marked_type": "like",
"likes": 1,
"dislikes": 0,
"chat_before_live": false,
"questions_before_live": false,
"player_before_live": false
},
{
"id": 52,
"title": "Wendell Green",
"description": "At et aliquam a omnis vero aliquam aut. Illum eius et nostrum illo et qui.",
"start": "2020-09-12T08:10:00.000000Z",
"end": "2020-09-12T09:40:00.000000Z",
"track_id": 1,
"category_id": 1,
"chat_id": 2642,
"broadcast_url": "http://www.abshire.com/enim-nam-amet-mollitia",
"embed_code": "75149-6408",
"can_ask_speaker_before": false,
"created_at": "2020-09-09T07:34:45.000000Z",
"updated_at": "2020-09-26T17:21:21.000000Z",
"speakers": [],
"is_favorite": false,
"is_live": true,
"track_name": "Technology",
"marked_type": "like",
"likes": 1,
"dislikes": 0,
"chat_before_live": false,
"questions_before_live": false,
"player_before_live": false
}
],
"links": {
"first": "https://event-service-backend-dev.truemachine.ru/api/sessions/session-lives?page=1",
"last": "https://event-service-backend-dev.truemachine.ru/api/sessions/session-lives?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"path": "https://event-service-backend-dev.truemachine.ru/api/sessions/session-lives",
"per_page": 15000,
"to": 2,
"total": 2
}
}
```
### Получить спикеров, выступающих в определенный день GET /api/session-speakers
```
date = yyyy-mm-dd - пример "date=2020-09-12"
```
Пример, запрос
```
/api/session-speakers?date=2020-09-12
```
Ответ
```
[
{
"id": 15,
"full_name": "Иван Иванов14",
"avatar": "https://event-service-backend-dev.truemachine.ru/uploads/previews/avatar-preview.jpeg"
},
{
"id": 25,
"full_name": "Аркадий Лаврентьев24",
"avatar": "https://event-service-backend-dev.truemachine.ru/uploads/previews/avatar-preview.jpeg"
}
]
```
### Поставить лайк POST /api/sessions/{id}/like
Код ответа: 200
### Удалить лайк DELETE /api/sessions/{id}/dislike
Код ответа: 204
### Загрузить PDF с программой POST /api/sessions/program/upload-pdf
Код ответа: 200
### Скачать PDF с программой GET /api/sessions/program/download-pdf?locale=
### UPD (19.03.2021) Теперь метод принимает параметры для фильтрации
Код ответа: 200
### Удалить PDF с программой POST /api/sessions/program/remove-pdf
Код ответа: 200
# Notification (Уведомления)
### Список уведомлений. GET /api/notifications
### query params
```
{
body,
title,
sort[name] = id/user_id/read_at/body/created_at
sort[direction] = asc/desc
}
```
Пример ответа
```
{
"data": [
{
"id": 1,
"user_id": 5,
"read_at": "2020-02-25 07:23:58",
"body": "Autem error dignissimos est consequatur consequuntur error. Et quibusdam ut facere quaerat maxime. Ratione alias amet quo. Dolores omnis rerum fuga sunt reprehenderit debitis.",
"title": "Red",
"created_at": "2020-08-12T08:06:43.000000Z",
"updated_at": "2020-08-12T08:06:43.000000Z",
"deleted_at": null,
"user": {
"id": 5,
"email": "marina31@example.org",
"created_at": "2020-08-12T08:06:30.000000Z",
"updated_at": "2020-08-12T08:06:30.000000Z",
"deleted_at": null,
"phone": "(371) 549-0900 x49681",
"role": [
"user"
]
}
},
...
{
"id": 52,
"user_id": 3,
"read_at": "2020-08-12 11:35:23",
"body": "And who are you, the proud lord said, that I must bow so low? Only a cat of a different coat, that’s all the truth I know.",
"title": "DarkGoldenRod",
"created_at": "2020-08-12T08:49:58.000000Z",
"updated_at": "2020-08-12T11:35:23.000000Z",
"deleted_at": null,
"user": {
"id": 3,
"email": "atrantow@example.net",
"created_at": "2020-08-12T08:06:30.000000Z",
"updated_at": "2020-08-12T08:06:30.000000Z",
"deleted_at": null,
"phone": "654-813-2203",
"role": [
"user"
]
}
}
],
"links": {
"first": "http://localhost:8046/api/notifications?page=1",
"last": "http://localhost:8046/api/notifications?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"path": "http://localhost:8046/api/notifications",
"per_page": 15000,
"to": 51,
"total": 51
}
}
```
### Уведомление. GET /api/notifications/{id}
Пример ответа
```
{
"data": {
"id": 1,
"user_id": 5,
"read_at": "2020-02-25 07:23:58",
"body": "Autem error dignissimos est consequatur consequuntur error. Et quibusdam ut facere quaerat maxime. Ratione alias amet quo. Dolores omnis rerum fuga sunt reprehenderit debitis.",
"title": "Red",
"created_at": "2020-08-12T08:06:43.000000Z",
"updated_at": "2020-08-12T08:06:43.000000Z",
"deleted_at": null,
"user": {
"id": 5,
"email": "marina31@example.org",
"created_at": "2020-08-12T08:06:30.000000Z",
"updated_at": "2020-08-12T08:06:30.000000Z",
"deleted_at": null,
"phone": "(371) 549-0900 x49681",
"role": [
"user"
]
}
}
}
```
### Создание уведомления. POST /api/notifications
Тело запроса
```
{
"user_id": 5,
"body": "And who are you, the proud lord said, that I must bow so low?",
"title": "Red",
}
```
Пример ответа
```
{
"data": {
"user_id": 5,
"body": "And who are you, the proud lord said, that I must bow so low?",
"title": "Red",
"updated_at": "2020-08-12T12:54:34.000000Z",
"created_at": "2020-08-12T12:54:34.000000Z",
"id": 53,
"user": {
"id": 5,
"email": "marina31@example.org",
"created_at": "2020-08-12T08:06:30.000000Z",
"updated_at": "2020-08-12T08:06:30.000000Z",
"deleted_at": null,
"phone": "(371) 549-0900 x49681",
"role": [
"user"
]
}
}
}
```
### Создание уведомлений для некоторых пользователей. POST /api/notification-templates
Тело запроса
```
{
"title": "Loh",
"body": "Notification for loh",
"users": [1, 2, 34]
}
```
Пример ответа
```
{
"data": {
"created_by": 1,
"start_at": null,
"updated_at": "2020-10-02T15:26:44.000000Z",
"created_at": "2020-10-02T15:26:44.000000Z",
"id": 28,
"title": "Loh",
"body": "Notification for loh"
}
}
```
### Удаление уведомления. DELETE /api/notifications/{id}
Пример ответа
```
{
"data": {
"id": 53,
"user_id": 5,
"read_at": null,
"body": "And who are you, the proud lord said, that I must bow so low?",
"title": "Red",
"created_at": "2020-08-12T12:54:34.000000Z",
"updated_at": "2020-08-12T12:54:34.000000Z",
"deleted_at": null,
"user": {
"id": 5,
"email": "marina31@example.org",
"created_at": "2020-08-12T08:06:30.000000Z",
"updated_at": "2020-08-12T08:06:30.000000Z",
"deleted_at": null,
"phone": "(371) 549-0900 x49681",
"role": [
"user"
]
}
}
}
```
### Обновление уведомления. PUT /api/notifications/{id}
Тело запроса
```
{
"user_id": 3,
"body": "And who are you, the proud lord said, that I must bow so low? Only a cat of a different coat, that’s all the truth I know.",
"title": "DarkGoldenRod"
}
```
Пример ответа
```
{
"data": {
"id": 52,
"user_id": 3,
"read_at": "2020-08-12 11:35:23",
"body": "And who are you, the proud lord said, that I must bow so low? Only a cat of a different coat, that’s all the truth I know.",
"title": "DarkGoldenRod",
"created_at": "2020-08-12T08:49:58.000000Z",
"updated_at": "2020-08-12T11:35:23.000000Z",
"deleted_at": null,
"user": {
"id": 3,
"email": "atrantow@example.net",
"created_at": "2020-08-12T08:06:30.000000Z",
"updated_at": "2020-08-12T08:06:30.000000Z",
"deleted_at": null,
"phone": "654-813-2203",
"role": [
"user"
]
}
}
}
```
### Прочтение уведомления. PUT /api/notifications/read/{id}
Пример ответа
```
{
"data": {
"id": 52,
"user_id": 3,
"read_at": "2020-08-12T13:01:21.973948Z",
"body": "And who are you, the proud lord said, that I must bow so low? Only a cat of a different coat, that’s all the truth I know.",
"title": "DarkGoldenRod",
"created_at": "2020-08-12T08:49:58.000000Z",
"updated_at": "2020-08-12T13:01:21.000000Z",
"deleted_at": null,
"user": {
"id": 3,
"email": "atrantow@example.net",
"created_at": "2020-08-12T08:06:30.000000Z",
"updated_at": "2020-08-12T08:06:30.000000Z",
"deleted_at": null,
"phone": "654-813-2203",
"role": [
"user"
]
}
}
}
```
### Прочтение всех уведомлений. PUT /api/notification/read-all
Ответ
```
{
"readed": 13
}
```
# News (Новости)
### Список новостей. GET /api/news
### query params
```
{
title,
body,
short_description,
news_id,
published_by,
is_published,
sort[name] = id/published_at/is_published/created_at
sort[direction] = asc/desc
}
```
Пример ответа
```
"data": [
{
"id": 1,
"is_published": true,
"publishing_status": "true",
"published_at": "2020-02-17 10:09:49",
"published_by": 93,
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null,
"title": "Ms.",
"body": "Et ullam labore temporibus rerum. Deleniti ad sit aut sunt quisquam. Vero officiis consequatur assumenda illo adipisci odit pariatur.",
"short_description": "Azure",
"locale_id": 1,
"news_files": [
{
"id": 1,
"news_id": 1,
"type": "type_c",
"src": "http://wilderman.org/",
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null
},
{
"id": 2,
"news_id": 1,
"type": "type_b",
"src": "http://yundt.biz/totam-excepturi-nam-repudiandae.html",
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null
}
]
},
....
{
"id": 2,
"is_published": true,
"publishing_status": "true",
"published_at": "2020-03-31 12:30:26",
"published_by": 101,
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null,
"title": "Mr.",
"body": "Omnis ut earum eos in odio. Voluptatum similique est et. Molestiae veniam officia quia omnis aut quam velit iste. Iusto maxime voluptas vero aliquam.",
"short_description": "Bisque",
"locale_id": 1,
"news_files": [
{
"id": 3,
"news_id": 2,
"type": "type_c",
"src": "https://www.durgan.net/ut-ea-odit-animi-ad-eaque",
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null,
"image_url": "http://web-address/storage/files/D9kJJiGujyGq63yMCmF4gyrKx6Cah3MotZxLR0ZC.jpeg"
},
{
"id": 4,
"news_id": 2,
"type": "type_a",
"src": "https://www.walter.info/officia-qui-necessitatibus-voluptas",
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null,
"image_url": "http://web-address/storage/files/D9kJJiGujyGq63yMCmF4gyrKx6Cah3MotZxLR0ZC.jpeg"
}
]
}
```
### Новость. GET /api/news/{id}
```
{
"data": {
"id": 1,
"is_published": true,
"publishing_status": "true",
"published_at": "2020-02-17 10:09:49",
"published_by": 93,
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null,
"title": "Ms.",
"body": "Et ullam labore temporibus rerum. Deleniti ad sit aut sunt quisquam. Vero officiis consequatur assumenda illo adipisci odit pariatur.",
"short_description": "Azure",
"locale_id": 1,
"news_files": [
{
"id": 1,
"news_id": 1,
"type": "type_c",
"src": "http://wilderman.org/",
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null,
"image_url": "http://web-address/storage/files/D9kJJiGujyGq63yMCmF4gyrKx6Cah3MotZxLR0ZC.jpeg"
},
{
"id": 2,
"news_id": 1,
"type": "type_b",
"src": "http://yundt.biz/totam-excepturi-nam-repudiandae.html",
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null,
"image_url": "http://web-address/storage/files/D9kJJiGujyGq63yMCmF4gyrKx6Cah3MotZxLR0ZC.jpeg"
}
]
}
}
```
### Создание новости. POST /api/news
Тело запроса
```
{
'title' = 'required|string',
'short_description' = 'required|string',
'body' = 'required|string',
'is_published' = 'required|boolean',
'publishing_status' = 'required|string',
}
```
Пример ответа
```
{
"data": {
"id": 1,
"is_published": true,
"publishing_status": "true",
"published_at": "2020-02-17 10:09:49",
"published_by": 93,
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null,
"title": "Ms.",
"body": "Et ullam labore temporibus rerum. Deleniti ad sit aut sunt quisquam. Vero officiis consequatur assumenda illo adipisci odit pariatur.",
"short_description": "Azure",
"locale_id": 1,
"news_files": [
{
"id": 1,
"news_id": 1,
"type": "type_c",
"src": "http://wilderman.org/",
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null,
"image_url": "http://web-address/storage/files/D9kJJiGujyGq63yMCmF4gyrKx6Cah3MotZxLR0ZC.jpeg"
},
{
"id": 2,
"news_id": 1,
"type": "type_b",
"src": "http://yundt.biz/totam-excepturi-nam-repudiandae.html",
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null,
"image_url": "http://web-address/storage/files/D9kJJiGujyGq63yMCmF4gyrKx6Cah3MotZxLR0ZC.jpeg"
}
]
}
}
```
### Обнавление новости. PUT /api/news{id}
Тело запроса
```
{
'title' = 'required|string',
'short_description' = 'required|string',
'body' = 'required|string',
'is_published' = 'required|boolean',
'publishing_status' = 'required|string',
}
```
Пример ответа
```
{
"data": {
"id": 1,
"is_published": true,
"publishing_status": "true",
"published_at": "2020-02-17 10:09:49",
"published_by": 93,
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null,
"title": "Ms.",
"body": "Et ullam labore temporibus rerum. Deleniti ad sit aut sunt quisquam. Vero officiis consequatur assumenda illo adipisci odit pariatur.",
"short_description": "Azure",
"locale_id": 1,
"news_files": [
{
"id": 1,
"news_id": 1,
"type": "type_c",
"src": "http://wilderman.org/",
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null,
"image_url": "http://web-address/storage/files/D9kJJiGujyGq63yMCmF4gyrKx6Cah3MotZxLR0ZC.jpeg"
},
{
"id": 2,
"news_id": 1,
"type": "type_b",
"src": "http://yundt.biz/totam-excepturi-nam-repudiandae.html",
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null,
"image_url": "http://web-address/storage/files/D9kJJiGujyGq63yMCmF4gyrKx6Cah3MotZxLR0ZC.jpeg"
}
]
}
}
```
### Удаление новости. DELETE /api/news/{id}
Пример ответа
```
{
"data": {
"id": 1,
"is_published": true,
"publishing_status": "true",
"published_at": "2020-02-17 10:09:49",
"published_by": 93,
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null,
"title": "Ms.",
"body": "Et ullam labore temporibus rerum. Deleniti ad sit aut sunt quisquam. Vero officiis consequatur assumenda illo adipisci odit pariatur.",
"short_description": "Azure",
"locale_id": 1,
"news_files": [
{
"id": 1,
"news_id": 1,
"type": "type_c",
"src": "http://wilderman.org/",
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null
},
{
"id": 2,
"news_id": 1,
"type": "type_b",
"src": "http://yundt.biz/totam-excepturi-nam-repudiandae.html",
"created_at": "2020-08-12T20:38:23.000000Z",
"updated_at": "2020-08-12T20:38:23.000000Z",
"deleted_at": null
}
]
}
}
```
### Добавление файла к новости. POST /api/news/file
Тело запроса
```
{
"news_id": required|integer,
"file": required|array
}
```
Пример ответа
```
{
"data": {
"type": "image/png",
"src": "http://localhost:8046/storage/files/WoC5R8TlYg5MH2aEhl33B9txMJHpmuhmNAj8gy0j.png",
"news_id": 10,
"updated_at": "2020-08-13T15:28:59.000000Z",
"created_at": "2020-08-13T15:28:59.000000Z",
"id": 202,
"image_url": "http://localhost:8046/storage/http://localhost:8046/storage/files/WoC5R8TlYg5MH2aEhl33B9txMJHpmuhmNAj8gy0j.png"
}
}
```
### Добавление файла к телу новости. POST /api/news/body-file
Тело запроса
```
{
"file": required|array
}
```
Пример ответа
```
[
{
"type": "image/jpeg",
"src": "files/Cgra6e1zxM8ckzIRcNdkyzvdmCs2Nz5TQmfIibp9.jpg",
"name": "IMG_4890.jpg",
"updated_at": "2021-03-19T08:15:20.000000Z",
"created_at": "2021-03-19T08:15:20.000000Z",
"id": 86,
"image_url": "http://127.0.0.1:8046/storage/files/Cgra6e1zxM8ckzIRcNdkyzvdmCs2Nz5TQmfIibp9.jpg",
"is_favorite": false,
"preview": null,
"views": 0,
"published_at": null
},
{
"type": "image/png",
"src": "files/HZ1ytllXHWPhwAHLReiFnPpozJnhB9DbNle547Ok.png",
"name": "A46gVQTTAt92pFW447ndYfG2EFByy3XmjduCiBp9.png",
"updated_at": "2021-03-19T08:15:20.000000Z",
"created_at": "2021-03-19T08:15:20.000000Z",
"id": 87,
"image_url": "http://127.0.0.1:8046/storage/files/HZ1ytllXHWPhwAHLReiFnPpozJnhB9DbNle547Ok.png",
"is_favorite": false,
"preview": null,
"views": 0,
"published_at": null
}
]
```
### Удаление файла новости. DELETE /api/news/file/{id}
id - NewsFile
Тело запроса
```
{
"news_id": required|integer,
"file": required|file
}
```
Пример ответа
```
{
"data": {
"type": "image/png",
"src": "http://localhost:8046/storage/files/WoC5R8TlYg5MH2aEhl33B9txMJHpmuhmNAj8gy0j.png",
"news_id": 10,
"updated_at": "2020-08-13T15:28:59.000000Z",
"created_at": "2020-08-13T15:28:59.000000Z",
"id": 202,
"image_url": "http://localhost:8046/storage/http://localhost:8046/storage/files/WoC5R8TlYg5MH2aEhl33B9txMJHpmuhmNAj8gy0j.png"
}
}
```
### Добавить новости в избранное api/favorite/news/{id}
Пример ответа
```
{
"data": {
"id": 1,
"is_published": true,
"publishing_status": "false",
"published_at": "2020-02-15 22:58:18",
"published_by": 80,
"created_at": "2020-08-14T11:32:20.000000Z",
"updated_at": "2020-08-14T11:32:20.000000Z",
"deleted_at": null,
"title": "Miss",
"body": "Sequi est esse aut dicta molestiae minima omnis. Libero repudiandae id nulla vel. Harum adipisci recusandae dicta. Molestiae corrupti perferendis autem sapiente et quod accusantium.",
"short_description": "Sienna",
"locale_id": 1
}
}
```
### Удалить новости из избранных DELETE api/favorite/news/{id}
Код ответа 204
### Опубликовать новость POST /api/news/publish/{id}
Пример ответа/ Код ответа 202
```
"data": {
"id": 8,
"is_published": true,
"publishing_status": true,
"published_at": "2020-08-20T21:44:49.638990Z",
"published_by": 24,
"created_at": "2020-08-17T15:04:57.000000Z",
"updated_at": "2020-08-20T21:44:49.000000Z",
"deleted_at": null,
"title": "Ms.",
"body": "Sed voluptatem officia quos autem. Id delectus et consectetur. Minus veritatis sequi provident sapiente sit quia et. Qui quas inventore quas et nihil reprehenderit eligendi ut.",
"short_description": "ForestGreen",
"locale_id": 1,
"is_favorite": false
}
```
### Cнять с публикации новость POST /api/news/remove-publish/{id}
Пример ответа/ Код ответа 202
```
"data": {
"id": 8,
"is_published": false,
"publishing_status": false,
"published_at": "2020-08-20T21:44:49.638990Z",
"published_by": 24,
"created_at": "2020-08-17T15:04:57.000000Z",
"updated_at": "2020-08-20T21:44:49.000000Z",
"deleted_at": null,
"title": "Ms.",
"body": "Sed voluptatem officia quos autem. Id delectus et consectetur. Minus veritatis sequi provident sapiente sit quia et. Qui quas inventore quas et nihil reprehenderit eligendi ut.",
"short_description": "ForestGreen",
"locale_id": 1,
"is_favorite": false
}
```