# Положить книгу в цикл

Тома одной серии: голоса героев и словарь общие.

`PUT /books/{book_id}/series` · всё

В цикле голоса героев переходят из тома в том (если книга ещё не озвучена), а правила ударений книги действуют во всех
томах. Пустое тело `{}` — убрать книгу из цикла.

## Параметры пути

| Параметр | Что это |
|---|---|
| `book_id` | Id книги |

## Тело запроса

JSON, заголовок `content-type: application/json`.

| Поле | Тип | Обязательно | Что это |
|---|---|---|---|
| `series_id` | строка | нет | Существующий цикл |
| `title` | строка | нет | Или новый цикл по названию |
| `no` | число | нет | Номер тома (по умолчанию — следующий) |
| `carry` | true/false | нет | Взять голоса героев из других томов |

## Что в ответе

| Поле | Что это |
|---|---|
| `series` | Цикл и его тома |
| `carried` | Герои, получившие голоса из других томов |
| `same_no` | Том с тем же номером, если есть |

```bash
curl -X PUT "https://golosar-kniga.tech/api/v1/books/$BOOK_ID/series" \
  -H "x-api-key: $KEY" \
  -H "content-type: application/json" \
  -d '{"title": "Сад", "no": 1}'
```

```python
import os, requests

API = "https://golosar-kniga.tech/api/v1"
H = {"x-api-key": os.environ["GOLOSAR_KEY"]}
book_id = "01a134d0-dd73-77be-aa8d-0944ffb2b5e3"

r = requests.put(f"{API}/books/{book_id}/series", headers=H, json={"title": "Сад", "no": 1})
r.raise_for_status()
print(r.json())
```

```javascript
const API = "https://golosar-kniga.tech/api/v1";
const H = { "x-api-key": process.env.GOLOSAR_KEY, "content-type": "application/json" };
const bookId = "01a134d0-dd73-77be-aa8d-0944ffb2b5e3";

const r = await fetch(`${API}/books/${bookId}/series`, { method: "PUT", headers: H, body: JSON.stringify({"title": "Сад", "no": 1}) });
if (!r.ok) throw new Error(await r.text());
console.log(await r.json());
```

```json Ответ 200
{
  "series": {
    "id": "01a134d0-e768-79a0-b295-7652d50df60a",
    "title": "Сад",
    "no": 1,
    "total": 1,
    "volumes": [
      {
        "id": "01a134d0-dd73-77be-aa8d-0944ffb2b5e3",
        "title": "Вечер в саду",
        "no": 1
      }
    ]
  },
  "carried": [],
  "can_carry": [],
  "same_no": null
}
```
