# 食品ロス対策SNS(仮称) 仕様書(第2版) [食品ロス対策SNS(仮称) 仕様書(第1版)](/xNzmKWENTKSt1HESSG9ISg) # [最新版はこちら](/@kazkazuprogram/HJxZ1NqrP) # APIドキュメント ### ユーザー処理系 ユーザー処理に関するAPI #### ユーザー登録 `/api/v1/user/register` ユーザー登録をする ユーザー登録後、ログインが必要 - POST - パラメーター ``` { "mailaddr": "<メールアドレス>", "username": "<ユーザー名>", "displayname": "<表示名>", "password": "パスワード", "type": "[shop,user]" // 事業者or個人 } ``` - レスポンス ``` { "status": "<status>", // OK,NG "message": "<失敗したときのメッセージ(日本語)>" } ``` - 結果例 - ユーザー名が既に存在する場合、拒否される - 指定のメールアドレスを持ったユーザーが既に存在する場合、拒否される #### ログイン `/api/v1/user/login` ログインする 成功するとトークンがCookieに書き込まれる - POST - パラメーター ``` { "username": "<ユーザー名>", "password": "<パスワード>", "autologin": "<true/false>" } ``` - レスポンス ``` { "status": "<status>", // OK,NG "message": "<失敗したときのメッセージ(日本語)>", } ``` - 結果例 - パズワードが間違っている場合、拒否される #### ログアウト ログアウトする Cookieに保存されているトークンを削除し、サーバーでそのトークンを削除する `/api/v1/user/logout` - GET - レスポンス ``` { "status": "<status>" // OK,NG } ``` #### ユーザー情報の変更 `/api/v1/user/changeinfo` ユーザー情報を変更する - POST - パラメーター ``` { "username": "<ユーザー名>", "displayname": "<表示名(変更しない場合空白)>", "avatar": "<ユーザーアイコン(変更しない場合空白)>" } ``` - レスポンス ``` { "status": "<status>", // OK,NG "message": "<失敗したときのメッセージ(日本語)>", } ``` - 結果例 - 以下の場合、不正なリクエストとして拒否される - アイコンがbase64でデコードできない場合 - アイコンが画像形式でない場合 #### 他のユーザーの情報を取得 `/api/v1/user/getinfo` 他のユーザーの情報を取得する このAPIは未登録のクライアントにも許可される - POST - パラメーター ``` { "username": "<取得したいユーザー名>" } ``` - レスポンス ``` { "displayname": "表示名", "avatar": "<アイコン>", "type": "[shop,user]" } ``` #### 他のユーザーのアイコンを取得 `/api/v1/user/geticon?name=<ユーザー名>` - GET - レスポンス ``` 画像 ``` ### 投稿関係 #### 投稿機能 `/api/v1/post/post` 投稿する このAPIは事業者ユーザーにのみ許可される - POST - パラメーター ``` { "user_id": "<ユーザーID>", "itemname": "<品目名>", "quantity": "<数量>", "price": "<価格>", "comment": "<コメント>", # 空白可 } ``` - レスポンス ``` { "status": "[OK, NG]", "postid": "<投稿ID>", } ``` #### 投稿削除機能 `/api/v1/post/delete` 投稿を削除する このAPIは事業者ユーザーにのみ許可される - POST - パラメーター ``` 考え中 ``` - レスポンス ``` 考え中 ``` #### タイムライン取得 `/api/v1/post/get_timeline` ユーザーのタイムラインを取得する このAPIは事業者ユーザーにのみ許可される - GET - ヘッダー ``` { "username": "<ユーザー名>", "TL-QUANTITY": "<タイムラインの数(デフォルト:50)>" } ``` - レスポンス ``` { "status": "<OK,NG>", "message": "<失敗時のメッセージ(日本語)>" "data": { 0: "<投稿ID>", 1: "<投稿ID>", 2: "<投稿ID>", : } } ``` #### 投稿取得 投稿を取得する `/api/v1/post/get_post` - GET - ヘッダー ``` "POSTID": "<投稿ID>" ``` - レスポンス ``` { "postid": "<投稿ID>" "username": "<投稿したユーザー名>", "displayname": "<投稿したユーザーの表示名>", "avatar": "<アイコン>", "item": { "itemname": "<品目名>", "quantity": "<数量>", "price": "<価格>", "comment": "<コメント>", } } ``` #### コメントの取得 `/api/v1/post/get_reply?post_id=<ポストid>` 投稿へのコメントの取得 * GET #### リプライ `/api/v1/post/reply` 返信する - POST - パラメーター ``` { "user_id": "<ユーザーID>", "post_id": "<返信したい投稿ID>", "data": { "quantity": "<数量>", "time": "<取引予定時刻>", "comment": "<コメント>" } } ``` - レスポンス ``` { "status": "[OK,NG]", "message": "<失敗時のメッセージ>", "replyid": "<投稿された返信ID>" } ``` #### 検索 `/api/v1/post/search` 検索する このAPIは未登録のクライアントにも許可される - POST - パラメーター ``` { "type": "<検索方法>", "query": "<検索クエリ>" } ``` - レスポンス ``` // タイムラインAPIと同じ ``` - 検索方法 - `keyword` - キーワードで検索する(「玉ねぎ」「居酒屋」等) - `place` - 場所で検索する(座標を指定する)