{"openapi":"3.0.3","info":{"title":"AudioRanobe API","description":"Публичное read-only API. Смотрите /dev для интерактивных примеров.","version":"1.0.0"},"servers":[{"url":"https://back.audioranobe.com/api"}],"paths":{"/home":{"get":{"tags":["Сервис"],"summary":"Содержимое главной: объявления, новые тайтлы (new_titles), баннеры (banners) и каталог (catalog).","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"announcements":{"type":"array","items":{"$ref":"#/components/schemas/Announcement"}},"new_titles":{"type":"array","items":{"$ref":"#/components/schemas/TitleCard"}},"banners":{"type":"array","items":{"type":"object","properties":{}}},"catalog":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/TitleCard"}},"total":{"type":"integer"}}}}}}}}}}},"/titles":{"get":{"tags":["Тайтлы"],"summary":"Каталог.","parameters":[{"name":"q","in":"query","required":false,"description":"Поиск по названию, альтернативным названиям и имени автора.","schema":{"type":"string"}},{"name":"genre","in":"query","required":false,"description":"Слаг тега, например fantasy. Можно перечислить через запятую — тогда тайтл должен иметь все теги.","schema":{"type":"string"}},{"name":"author","in":"query","required":false,"description":"Имя автора целиком, без учёта регистра.","schema":{"type":"string"}},{"name":"year_from","in":"query","required":false,"description":"Год выпуска от, целое число.","schema":{"type":"string"}},{"name":"year_to","in":"query","required":false,"description":"Год выпуска до, целое число.","schema":{"type":"string"}},{"name":"release_status","in":"query","required":false,"description":"ongoing | completed | abandoned | frozen.","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"china | korea | japan | other.","schema":{"type":"string"}},{"name":"min_rating","in":"query","required":false,"description":"Минимальная средняя оценка, 0–10.","schema":{"type":"string"}},{"name":"finished","in":"query","required":false,"description":"1 — только завершённые и полностью озвученные.","schema":{"type":"string"}},{"name":"hide_ai","in":"query","required":false,"description":"1 — скрыть тайтлы с синтезированной озвучкой.","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"description":"popular (по умолчанию) | rating | new | updated | az | chapters.","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"desc (по умолчанию) | asc — обратный порядок сортировки.","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Номер страницы, с 1. По умолчанию 1.","schema":{"type":"string"}},{"name":"per_page","in":"query","required":false,"description":"Размер страницы. По умолчанию 24, максимум 100.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/TitleCard"}},"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"}}}}}},"400":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/titles/{slug}":{"get":{"tags":["Тайтлы"],"summary":"Карточка тайтла целиком: описание, теги, чтецы, тома с главами, похожие тайтлы.","description":"Вместо слага можно передать числовой id — это поддерживается намеренно.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TitleFull"}}}},"404":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/titles/random":{"get":{"tags":["Тайтлы"],"summary":"Слаг случайного тайтла.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string"}}}}}}}}},"/search/suggest":{"get":{"tags":["Тайтлы"],"summary":"Быстрые подсказки для строки поиска: тайтлы, чтецы, авторы и подборки.","description":"Кроме локальных результатов может вернуть external — книги источника, для которых можно заказать озвучку.","parameters":[{"name":"q","in":"query","required":false,"description":"Запрос, минимум 2 символа. Короче — пустой результат.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"titles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"author":{"$ref":"#/components/schemas/AuthorBrief","nullable":true},"cover_url":{"type":"string","format":"uri","nullable":true},"cover_thumb_url":{"type":"string","format":"uri","nullable":true}}}},"narrators":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"avatar_url":{"type":"string","format":"uri","nullable":true}}}},"authors":{"type":"array","items":{"$ref":"#/components/schemas/AuthorCard"}},"collections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"items_count":{"type":"integer"}}}},"external":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string"},"name":{"type":"string"},"cover_url":{"type":"string","format":"uri","nullable":true},"year":{"type":"integer","nullable":true},"status":{"type":"string"}}}}}}}}},"400":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/genres":{"get":{"tags":["Тайтлы"],"summary":"Список тегов со счётчиком тайтлов.","parameters":[{"name":"q","in":"query","required":false,"description":"Поиск по названию.","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Номер страницы, с 1. По умолчанию 1.","schema":{"type":"string"}},{"name":"per_page","in":"query","required":false,"description":"Размер страницы. По умолчанию 24, максимум 2000 — весь список за один запрос.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GenreCount"}},"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"}}}}}},"400":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/chapters/{id}":{"get":{"tags":["Главы и файлы"],"summary":"Данные для воспроизведения одной главы: audio_url, длительность, том, соседние главы.","description":"404, пока глава не одобрена и её аудио не готово. Для тайтлов 18+ и с чувствительными тегами — 401: такие главы слушают только на сайте после входа.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChapterPlay"}}}},"404":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/download/chapters/{id}":{"get":{"tags":["Главы и файлы"],"summary":"Сам аудиофайл (Opus) с заголовком Content-Disposition. Обычная ссылка для скачивания, авторизация не требуется.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Аудиофайл","content":{"audio/ogg":{"schema":{"type":"string","format":"binary"}}}},"404":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/narrators":{"get":{"tags":["Чтецы и авторы"],"summary":"Список чтецов.","parameters":[{"name":"q","in":"query","required":false,"description":"Поиск по имени.","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Номер страницы, с 1. По умолчанию 1.","schema":{"type":"string"}},{"name":"per_page","in":"query","required":false,"description":"Размер страницы. По умолчанию 24, максимум 100.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/NarratorCard"}},"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"}}}}}},"400":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/narrators/{slug}":{"get":{"tags":["Чтецы и авторы"],"summary":"Страница чтеца: описание, ссылки, тайтлы.","description":"Вместо слага принимается числовой id.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NarratorFull"}}}},"404":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/narrators/{id}/posts":{"get":{"tags":["Чтецы и авторы"],"summary":"Посты чтеца.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Номер страницы, с 1. По умолчанию 1.","schema":{"type":"string"}},{"name":"per_page","in":"query","required":false,"description":"Размер страницы. По умолчанию 24, максимум 100.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/NarratorPost"}},"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"}}}}}},"400":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/posts/{id}":{"get":{"tags":["Чтецы и авторы"],"summary":"Один пост чтеца.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/NarratorPost"},{"type":"object","properties":{"comments":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}},"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"}}}}}]}}}},"404":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/authors":{"get":{"tags":["Чтецы и авторы"],"summary":"Список авторов.","parameters":[{"name":"q","in":"query","required":false,"description":"Поиск по имени.","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Номер страницы, с 1. По умолчанию 1.","schema":{"type":"string"}},{"name":"per_page","in":"query","required":false,"description":"Размер страницы. По умолчанию 24, максимум 100.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/AuthorCard"}},"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"}}}}}},"400":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/authors/{id}":{"get":{"tags":["Чтецы и авторы"],"summary":"Страница автора и его тайтлы.","description":"Вместо id принимается слаг.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorFull"}}}},"404":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/collections":{"get":{"tags":["Подборки, объявления, комментарии"],"summary":"Публичные подборки пользователей.","parameters":[{"name":"q","in":"query","required":false,"description":"Поиск по названию.","schema":{"type":"string"}},{"name":"user","in":"query","required":false,"description":"Имя пользователя — вернёт только его публичные подборки.","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"description":"new (по умолчанию) | popular.","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Номер страницы, с 1. По умолчанию 1.","schema":{"type":"string"}},{"name":"per_page","in":"query","required":false,"description":"Размер страницы. По умолчанию 24, максимум 100.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CollectionCard"}},"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"}}}}}},"400":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/collections/{id}":{"get":{"tags":["Подборки, объявления, комментарии"],"summary":"Одна подборка с её тайтлами.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionFull"}}}},"404":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/announcements":{"get":{"tags":["Подборки, объявления, комментарии"],"summary":"Опубликованные новости.","parameters":[{"name":"page","in":"query","required":false,"description":"Номер страницы, с 1. По умолчанию 1.","schema":{"type":"string"}},{"name":"per_page","in":"query","required":false,"description":"Размер страницы. По умолчанию 24, максимум 100.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Announcement"}},"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"}}}}}},"400":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/announcements/{slug}":{"get":{"tags":["Подборки, объявления, комментарии"],"summary":"Одна новость.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementFull"}}}},"404":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/comments":{"get":{"tags":["Подборки, объявления, комментарии"],"summary":"Комментарии к объекту, ответы вложены в родителя.","parameters":[{"name":"target_type","in":"query","required":false,"description":"Обязательный: title | narrator | post | announcement.","schema":{"type":"string"}},{"name":"target_id","in":"query","required":false,"description":"Обязательный: id объекта.","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"description":"new (по умолчанию) | old | top.","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Номер страницы, с 1. По умолчанию 1.","schema":{"type":"string"}},{"name":"per_page","in":"query","required":false,"description":"Размер страницы. По умолчанию 24, максимум 100.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}},"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"}}}}}},"400":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/users/{id}":{"get":{"tags":["Профили"],"summary":"Публичный профиль. Вместо id во всех адресах профиля принимается имя пользователя.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"404":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/users/{id}/library":{"get":{"tags":["Профили"],"summary":"Библиотека пользователя.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"planning | in_progress | completed | dropped.","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Номер страницы, с 1. По умолчанию 1.","schema":{"type":"string"}},{"name":"per_page","in":"query","required":false,"description":"Размер страницы. По умолчанию 24, максимум 100.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/LibraryItem"}},"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"}}}}}},"400":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/users/{id}/favorites":{"get":{"tags":["Профили"],"summary":"Избранное пользователя.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Номер страницы, с 1. По умолчанию 1.","schema":{"type":"string"}},{"name":"per_page","in":"query","required":false,"description":"Размер страницы. По умолчанию 24, максимум 100.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/TitleCard"}},"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"}}}}}},"400":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/users/{id}/comments":{"get":{"tags":["Профили"],"summary":"Комментарии пользователя.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Номер страницы, с 1. По умолчанию 1.","schema":{"type":"string"}},{"name":"per_page","in":"query","required":false,"description":"Размер страницы. По умолчанию 24, максимум 100.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UserComment"}},"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"}}}}}},"400":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ошибка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"}}},"AuthorBrief":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"}}},"Genre":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"is_sensitive":{"type":"boolean"}}},"GenreCount":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"titles_count":{"type":"integer"},"is_sensitive":{"type":"boolean"}}},"TitleCard":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"author":{"$ref":"#/components/schemas/AuthorBrief","nullable":true},"year":{"type":"integer","nullable":true},"cover_url":{"type":"string","format":"uri","nullable":true},"cover_thumb_url":{"type":"string","format":"uri","nullable":true},"release_status":{"type":"string","enum":["ongoing","completed","abandoned","frozen"]},"country":{"type":"string","enum":["china","korea","japan","other"]},"avg_rating":{"type":"number","nullable":true},"rating_count":{"type":"integer"},"listens":{"type":"integer"},"updated_at":{"type":"integer","description":"Unix-время, секунды."},"chapters_count":{"type":"integer"},"genres":{"type":"array","items":{"$ref":"#/components/schemas/Genre"}},"is_nsfw":{"type":"boolean"},"is_ai":{"type":"boolean"},"has_sensitive_genre":{"type":"boolean"}}},"NarratorCard":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"avatar_url":{"type":"string","format":"uri","nullable":true},"titles_count":{"type":"integer"},"is_ai":{"type":"boolean"},"is_verified":{"type":"boolean"}}},"ChapterRow":{"type":"object","properties":{"id":{"type":"integer"},"volume_id":{"type":"integer"},"number":{"type":"number"},"number_end":{"type":"number","nullable":true},"name":{"type":"string"},"duration_seconds":{"type":"number"},"audio_status":{"type":"string"},"narrators":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"}}}}}},"Volume":{"type":"object","properties":{"id":{"type":"integer"},"number":{"type":"number"},"name":{"type":"string"},"cover_url":{"type":"string","format":"uri","nullable":true},"cover_thumb_url":{"type":"string","format":"uri","nullable":true},"chapters":{"type":"array","items":{"$ref":"#/components/schemas/ChapterRow"}}}},"TitleVersion":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"sort":{"type":"integer"},"standalone_volume_ids":{"type":"array","items":{"type":"integer"}}}},"TitleFull":{"allOf":[{"$ref":"#/components/schemas/TitleCard"},{"type":"object","properties":{"alt_names":{"type":"array","items":{"type":"string"}},"description":{"type":"string","description":"Markdown."},"bg_url":{"type":"string","format":"uri","nullable":true},"views_count":{"type":"integer"},"translator":{"type":"string"},"created_at":{"type":"integer","description":"Unix-время, секунды."},"favorites_count":{"type":"integer"},"volume_label":{"type":"string","description":"Слово вместо «Том», например «Арка»."},"volume_label_plural":{"type":"string"},"rating_distribution":{"type":"object","description":"Число оценок по каждому баллу, ключи \"1\"..\"10\".","additionalProperties":{"type":"integer"}},"narrators":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/NarratorCard"},{"type":"object","properties":{"narration_status":{"type":"string"}}}]}},"similar":{"type":"array","items":{"$ref":"#/components/schemas/TitleCard"}},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/Volume"}},"version_name":{"type":"string","description":"Название основной версии озвучки."},"versions":{"type":"array","items":{"$ref":"#/components/schemas/TitleVersion"}},"alt_chapters":{"type":"object","description":"Главы альтернативных версий озвучки по id версии.","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/ChapterRow"}}},"comments":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}},"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"}}}}}]},"ChapterPlay":{"type":"object","properties":{"id":{"type":"integer"},"number":{"type":"number"},"number_end":{"type":"number","nullable":true},"name":{"type":"string"},"duration_seconds":{"type":"number"},"audio_url":{"type":"string","format":"uri","description":"Аудио (Opus) с поддержкой Range."},"volume":{"type":"object","properties":{"id":{"type":"integer"},"number":{"type":"number"},"name":{"type":"string"},"cover_url":{"type":"string","format":"uri","nullable":true},"cover_thumb_url":{"type":"string","format":"uri","nullable":true}}},"title":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"cover_url":{"type":"string","format":"uri","nullable":true},"volume_label":{"type":"string"}}},"prev_id":{"type":"integer","nullable":true},"next_id":{"type":"integer","nullable":true},"narrator":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"}},"nullable":true}}},"NarratorFull":{"allOf":[{"$ref":"#/components/schemas/NarratorCard"},{"type":"object","properties":{"bio":{"type":"string","description":"Markdown."},"socials":{"type":"array","items":{"type":"string"}},"cover_url":{"type":"string","format":"uri","nullable":true},"created_at":{"type":"integer","description":"Unix-время, секунды."},"titles":{"type":"array","items":{"$ref":"#/components/schemas/TitleCard"}},"subscribers_count":{"type":"integer"},"seconds_narrated":{"type":"integer"},"comments":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}},"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"}}}}}]},"PollOption":{"type":"object","properties":{"id":{"type":"integer"},"text":{"type":"string"},"percent":{"type":"number","nullable":true}}},"Poll":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"options":{"type":"array","items":{"$ref":"#/components/schemas/PollOption"}},"total_votes":{"type":"integer","nullable":true},"closes_at":{"type":"integer","description":"Unix-время, секунды.","nullable":true},"closed_at":{"type":"integer","description":"Unix-время, секунды.","nullable":true},"is_closed":{"type":"boolean"}}},"NarratorPost":{"type":"object","properties":{"id":{"type":"integer"},"narrator":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"avatar_url":{"type":"string","format":"uri","nullable":true}},"nullable":true},"title":{"type":"string"},"body":{"type":"string","description":"Markdown."},"created_at":{"type":"integer","description":"Unix-время, секунды."},"updated_at":{"type":"integer","description":"Unix-время, секунды.","nullable":true},"poll":{"$ref":"#/components/schemas/Poll","nullable":true},"comments_count":{"type":"integer","description":"Только в списке постов."}}},"AuthorCard":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"titles_count":{"type":"integer"}}},"AuthorFull":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"bio":{"type":"string"},"links":{"type":"array","items":{"type":"string"}},"titles":{"type":"array","items":{"$ref":"#/components/schemas/TitleCard"}},"titles_count":{"type":"integer"},"created_at":{"type":"integer","description":"Unix-время, секунды."}}},"UserBrief":{"type":"object","properties":{"id":{"type":"integer"},"username":{"type":"string"},"display_name":{"type":"string"},"avatar_url":{"type":"string","format":"uri","nullable":true},"role":{"type":"string"}}},"CollectionCard":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"user":{"$ref":"#/components/schemas/UserBrief"},"items_count":{"type":"integer"},"likes_count":{"type":"integer"},"cover_urls":{"type":"array","items":{"type":"string"}},"created_at":{"type":"integer","description":"Unix-время, секунды."},"updated_at":{"type":"integer","description":"Unix-время, секунды."}}},"CollectionFull":{"allOf":[{"$ref":"#/components/schemas/CollectionCard"},{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer"},"note":{"type":"string"},"title":{"$ref":"#/components/schemas/TitleCard"}}}}}}]},"Announcement":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"},"title":{"type":"string"},"body":{"type":"string","description":"Markdown."},"author":{"type":"object","properties":{"id":{"type":"integer"},"username":{"type":"string"}},"nullable":true},"created_at":{"type":"integer","description":"Unix-время, секунды."},"poll":{"$ref":"#/components/schemas/Poll","nullable":true}}},"AnnouncementFull":{"allOf":[{"$ref":"#/components/schemas/Announcement"},{"type":"object","properties":{"comments":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}},"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"}}}}}]},"Comment":{"type":"object","properties":{"id":{"type":"integer"},"user":{"$ref":"#/components/schemas/UserBrief","nullable":true},"narrator":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"avatar_url":{"type":"string","format":"uri","nullable":true},"is_verified":{"type":"boolean"}},"nullable":true},"target_type":{"type":"string","enum":["title","narrator","post","announcement"]},"target_id":{"type":"integer"},"parent_id":{"type":"integer","nullable":true},"body":{"type":"string"},"score":{"type":"integer"},"is_deleted":{"type":"boolean"},"created_at":{"type":"integer","description":"Unix-время, секунды."},"updated_at":{"type":"integer","description":"Unix-время, секунды.","nullable":true}}},"UserComment":{"allOf":[{"$ref":"#/components/schemas/Comment"},{"type":"object","properties":{"target":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"integer"},"name":{"type":"string"},"link":{"type":"string"}}}}}]},"UserProfile":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"integer"},"username":{"type":"string"},"display_name":{"type":"string"},"bio":{"type":"string"},"socials":{"type":"array","items":{"type":"string"}},"avatar_url":{"type":"string","format":"uri","nullable":true},"cover_url":{"type":"string","format":"uri","nullable":true},"role":{"type":"string"},"role_name":{"type":"string"},"created_at":{"type":"integer","description":"Unix-время, секунды."}}},"stats":{"type":"object","properties":{"planning":{"type":"integer"},"in_progress":{"type":"integer"},"completed":{"type":"integer"},"dropped":{"type":"integer"},"comments":{"type":"integer"},"favorites":{"type":"integer"},"seconds_listened":{"type":"integer"}}}}},"LibraryItem":{"type":"object","properties":{"title":{"$ref":"#/components/schemas/TitleCard"},"status":{"type":"string","enum":["planning","in_progress","completed","dropped"]},"rating":{"type":"integer","nullable":true},"is_favorite":{"type":"boolean"},"updated_at":{"type":"integer","description":"Unix-время, секунды."}}}}}}