# Возможный интерфейс работы с постами
- Создание поста
- Создание записи без аттачей
- Загрузка файловых аттачей
- Обновление поста
- Редактирование поста
- Загрузка файловых аттачей
- Обновление поста
## Создание записи без аттачей
`POST /creators/{creator_id:}/posts/create`
IN:
```javascript=
{
title: '',
award_id: 0,
description: ''
}
```
OUT:
```javascript=
{
id: 0
}
```
При первичном создании запись может помечаться черновиком, чтобы не показываться в поиске.
## Загрузка файловых аттачей
`POST /creators/{creator_id:}/posts/{post_id:}/audio`
`POST /creators/{creator_id:}/posts/{post_id:}/image`
`POST /creators/{creator_id:}/posts/{post_id:}/video`
IN (FormData):
```=
file=FILE
```
OUT:
```javascript=
{
id: 0
}
```
Файловый аттач должен помечаться не прикрепленным. Для сортировки аттачей Вам необходимо будет определить их порядок, и ,например, в поле порядка записать `-1` для не прикрепленных аттачей.
## Загрузка нескольких аттачей одновременно
`POST /creators/{creator_id:}/posts/{post_id:}/many`
Ограничение:
- суммарный объем тела не должен превышать $N$ МБ
IN (FormData):
```=
image[]=FILE
audio[]=FILE
video[]=FILE
```
OUT:
```javascript=
{
id: 0
}
```
## Обновление поста
`PUT /creators/{creator_id:}/posts/{post_id:}`
IN:
```javascript=
{
title: '',
award_id: 0,
description: '',
id_draft: false, // Является запись черновиком?
body: [
{
type: 'text', // тип аттача
text: 'innerText' // внутренний текст
},
{
type: 'video',
id: 0 // ID загруженного ранее аттача
},
{
type: 'music',
id: 0 // ID загруженного ранее аттача
}
]
}
```
Примечание, если файловый аттач (ранее загруженный) не указан при обновлении, то он удаляется. Если указывать, что порядок для аттача не установлен, тогда можно спокойно удалить все аттачи с неустоновленным порядком.