---
# System prepended metadata

title: 食品ロス対策SNS(仮称) 仕様書（第3版）

---

# 食品ロス対策SNS(仮称) 仕様書（第3版）
[食品ロス対策SNS(仮称) 仕様書（第2版）](/aTxCOskGTSuCWwuGS46MFg)
[食品ロス対策SNS(仮称) 仕様書（第1版）](/xNzmKWENTKSt1HESSG9ISg)

# APIドキュメント
### ユーザー処理系
ユーザー処理に関するAPI

#### ユーザー登録
`/api/v1/user/register`
ユーザー登録をする
ユーザー登録後、ログインが必要
- POST
- パラメーター
```
{
    "mailaddr": "<メールアドレス>",
    "username": "<ユーザー名>",
    "shopname": "<店名>",
    "password": "パスワード",
    "type": "[shop,customer]" // 事業者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/getmyinfo`


#### 他のユーザーの情報を取得
`/api/v1/user/getinfo`
他のユーザーの情報を取得する
このAPIは未登録のクライアントにも許可される
- GET
- パラメーター
```
user_id=<ゆーざーいｄ>
```
* レスポンス
```
{
    "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`
**現状はPOSTテーブルのデータ全送信、リクエストに必要なデータはなし**

ユーザーのタイムラインを取得する
このAPIは事業者ユーザーにのみ許可される
- GET
- ヘッダー
```
{
    "user_id": "<ユーザーid>",
    "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>",
    "comment": "<コメント>"
}
```
- レスポンス
```
{
    "status": "[OK,NG]",
    "message": "<失敗時のメッセージ>",
    "replyid": "<投稿された返信ID>"
}
```

#### 検索
`/api/v1/post/search`
検索する
このAPIは未登録のクライアントにも許可される
- POST
- パラメーター
```
{
    "type": "<検索方法>",
    "query": "<検索クエリ>"
}
```
- レスポンス
```
// タイムラインAPIと同じ
```
- 検索方法
    - `keyword`
        - キーワードで検索する（「玉ねぎ」「居酒屋」等）
    - `place`
        - 場所で検索する（座標を指定する）
