cinema.yml 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. openapi: 3.0.0
  2. info:
  3. title: АПИ для демо-экзамена по компетенции Разработка мобильных приложений
  4. version: 0.0.1
  5. description: |
  6. API для мобильного приложения "WS-Cinema".
  7. Перечень ошибок неполный, возможно получение от сервера незадокументированных ошибок.
  8. Для передачи токена необходимо использовать Header: **Authorization: Bearer {token}**
  9. Требования к email: email должен соответствовать паттерну **name@domenname.ru**, где имя и домен второго уровня могут состоять только из маленьких букв и цифр, домен верхнего уровня - только из маленьких букв. Длина домена верхнего уровня - не более 3х символов.
  10. **BASE URL**: http://cinema.kolei.ru
  11. **BASE URL** Для видео: http://cinema.kolei.ru/up/video/
  12. **BASE URL** Для изображений и аватаров: http://cinema.kolei.ru/up/images/
  13. servers:
  14. - url: http://cinema.kolei.ru
  15. tags:
  16. - name: auth
  17. description: Регистрация и авторизация (получение токена)
  18. - name: movie
  19. description: Информация о киноновинках
  20. - name: up
  21. description: Ресурсы
  22. paths:
  23. /auth/register:
  24. post:
  25. tags:
  26. - auth
  27. summary: Регистрация
  28. requestBody:
  29. required: true
  30. content:
  31. application/json:
  32. schema:
  33. type: object
  34. properties:
  35. email:
  36. type: string
  37. description: Email пользователя. Email должен соответствовать паттерну "name@domenname.ru", где имя и домен второго уровня могут состоять только из маленьких букв и цифр, домен верхнего уровня - только из маленьких букв. Длина домена верхнего уровня - не более 3х символов.
  38. example: kolei@yandex.ru
  39. password:
  40. type: string
  41. description: Пароль
  42. example: qwerty
  43. firstName:
  44. type: string
  45. description: Имя пользователя
  46. example: Евгений
  47. lastName:
  48. type: string
  49. description: Фамилия пользователя
  50. example: Колесников
  51. required:
  52. - email
  53. - password
  54. - firstName
  55. - lastName
  56. responses:
  57. '200':
  58. description: Успешная регистрация
  59. '400':
  60. description: Проблемы при регистрации
  61. /auth/login:
  62. post:
  63. tags:
  64. - auth
  65. summary: Аутентификация в системе
  66. requestBody:
  67. required: true
  68. content:
  69. application/json:
  70. schema:
  71. type: object
  72. properties:
  73. email:
  74. type: string
  75. description: Email пользователя. Email должен соответствовать паттерну "name@domenname.ru", где имя и домен второго уровня могут состоять только из маленьких букв и цифр, домен верхнего уровня - только из маленьких букв. Длина домена верхнего уровня - не более 3х символов.
  76. example: kolei@yandex.ru
  77. password:
  78. type: string
  79. description: Пароль
  80. example: qwerty
  81. required:
  82. - email
  83. - password
  84. responses:
  85. '200':
  86. description: Успешная аутентификация
  87. content:
  88. application/json:
  89. schema:
  90. type: object
  91. properties:
  92. token:
  93. type: integer
  94. description: Токен доступа к серверу
  95. example: 123456
  96. # links:
  97. # GetAuthToken:
  98. # parameters:
  99. # token: '$response.body#/token'
  100. '400':
  101. description: Проблема аутентификации
  102. /movies:
  103. get:
  104. tags:
  105. - movie
  106. summary: Получить список фильмов
  107. description: Список фильмов для отображения на главном экране
  108. parameters:
  109. - name: filter
  110. in: query
  111. description: Фильтр для запроса
  112. required: true
  113. schema:
  114. type: string
  115. default: new
  116. enum: [new, inTrend, forMe]
  117. responses:
  118. '200':
  119. description: Массив фильмов
  120. content:
  121. application/json:
  122. schema:
  123. $ref: '#/components/schemas/Movie'
  124. '400':
  125. description: Проблемы при запросе
  126. /up/images/{imageName}:
  127. get:
  128. tags:
  129. - up
  130. summary: Получение картинки
  131. parameters:
  132. - in: path
  133. name: imageName
  134. schema:
  135. type: string
  136. required: true
  137. description: Название картинки (с расширением), полученное при запросе списка фильмов
  138. responses:
  139. '200':
  140. description: Файл картинки в произвольном формате
  141. content:
  142. image/png:
  143. schema:
  144. type: string
  145. format: binary
  146. '404':
  147. description: Картинка не найдена на сервере
  148. components:
  149. securitySchemes:
  150. BearerAuth:
  151. type: http
  152. scheme: bearer
  153. schemas:
  154. Movie:
  155. type: array
  156. items:
  157. type: object
  158. properties:
  159. movieId:
  160. type: string
  161. example: 1
  162. name:
  163. type: string
  164. example: Название фильма
  165. description:
  166. type: string
  167. example: Описание фильма
  168. age:
  169. type: string
  170. enum: ['0','6','12','16','18']
  171. description: Возрастные ограничения
  172. images:
  173. type: array
  174. items:
  175. type: string
  176. poster:
  177. type: string
  178. example: poster.png
  179. description: Название картинки постера
  180. tags:
  181. $ref: '#/components/schemas/Tag'
  182. required:
  183. - movieId
  184. Tag:
  185. type: array
  186. items:
  187. type: object
  188. properties:
  189. idTags:
  190. type: string
  191. example: 13
  192. tagName:
  193. type: string
  194. example: Комедия