forked from hoppiece/anime-tinder
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapi-document.yaml
241 lines (233 loc) · 6.69 KB
/
api-document.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
openapi: "3.0.2"
info:
title: Anime Tinder
description: サポーターズハッカソン用アニメレコメンドアプリのAPI仕様
version: 1.0.0
servers:
- url: http://127.0.0.1:5000/
tags:
- name: user
description: ユーザ関連API
- name: app
description: アプリ本体関連API
paths:
/user/login:
get:
tags:
- user
summary: ログインAPI
description:
<b>「Twitterでログイン」ボタンをおした時の処理</b><br>
サーバーがOAuth認証をする。成功した場合、返り値はなく、TwitterAPIの方で設定したcallback URLにリダイレクトされる。
responses:
200:
description: A sucessful response.
/user/logout:
get:
tags:
- user
summary: ログアウトAPI
description:
<b>「ログアウト」ボタンを押したときの処理</b><br>
ログインAPIと同様。成功した場合、user/login/にリダイレクトさせるがこの処理はクライアント側で実装する。
parameters:
- name: sessionID
in: header
description: セッションID
required: true
schema:
type: string
responses:
200:
description: A sucessful response.
/user/callback:
get:
tags:
- user
summary: セッション保持API
description:
<b>ログイン時にセッションを保持</b><br>
ログイン状態を確認して、ログインしていればユーザ―情報を取得する。サーバーサイドでsessionIDを発行して、これをクライアントに渡す。<br>
sessionIDに加え、(アプリページに表示するため)Twitterアイコン、Twitterアカウント名も取得。
parameters:
- name: sessionID
in: header
description: セッションID
required: true
schema:
type: string
responses:
200:
description: A sucessful response.
content:
application/json:
schema:
type: "object"
properties:
sessionId:
type: "string"
example: "hogefuga"
username:
type: "string"
profile_image_url:
type: "string"
/user/recent:
post:
tags:
- user
summary: 最近の診断結果取得
description:
指定した数(num)だけその人の最近の診断結果(アニメ画像)を取ってくる
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: '#/components/schemas/RecentRequest'
required: true
responses:
200:
description: A successful response.
content:
application/json:
schema:
$ref: "#/components/schemas/RecentResults"
/app/recs:
post:
tags:
- app
summary: アニメ情報取得API
description:
指定した数(num)だけカードに表示するアニメの情報を取ってくる。<br>
DBにアクセスし、過去に表示したカード以外から適当に選んでくる。
responses:
200:
description: A successful response.
content:
application/json:
schema:
$ref: "#/components/schemas/AnimeGetResponse"
/app/rslts:
post:
tags:
- app
summary: オススメアニメ取得API
description:
LIKE/NOPE/SUPERLIKEの情報を渡すとオススメアニメの情報が返ってくる。<br>
DBにアクセスし、過去のLIKE/NOPE/SUPERLIKE情報と今回の情報をもとにオススメアニメを1つ返す。
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: '#/components/schemas/AnimeLikeRequest'
required: true
responses:
200:
description: A successful response.
content:
application/json:
schema:
$ref: "#/components/schemas/AnimeGetResponse"
/app/fetch:
post:
tags:
- app
summary: アニメ取得API
description:
アニメIDを渡すと、そのIDのアニメ情報が返ってくる。
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: '#/components/schemas/FetchRequest'
required: true
responses:
200:
description: A successful response.
content:
application/json:
schema:
$ref: "#/components/schemas/AnimeGetResponse"
components:
schemas:
RecentRequest:
type: object
properties:
sessionId:
type: string
num:
type: integer
RecentResults:
type: object
properties:
animeImages:
type: array
items:
type: "string"
description: 各アニメ画像
AnimeGetResponse:
type: object
properties:
sessionId:
type: string
num:
type: integer
animes:
type: array
items:
$ref: "#/components/schemas/AnimeInfo"
description: 各アニメ情報
AnimeLikeRequest:
type: object
properties:
sessionId:
type: string
animes:
type: array
items:
$ref: "#/components/schemas/LikeInfo"
description: LIKE/NOPE/SUPERLIKE情報
AnimeInfo:
type: object
properties:
id:
type: string
description: アニメid
title:
type: string
description: アニメタイトル
image:
type: string
description: アニメ画像
description:
type: string
description: 概要
year:
type: string
description: 放送時期(ex.2020年春)
genre:
type: array
items:
type: string
description: ジャンル
company:
type: string
description: 制作会社
LikeInfo:
type: object
properties:
animeId:
type: string
description: アニメid
like:
type: integer
description: 0:NOPE,1:LIKE,2:SUPERLIKE
FetchRequest:
type: object
properties:
sessionId:
type: string
animeId:
type: string