---
# System prepended metadata

title: 購買API

---

# 購買API

## Discord Roles

- OWNER
    - `1176520186044633229`
- モデレーター
    - `1176556668285370379`

## どんなことするのか？
- 購入時にユーザＩＤ＋購入物？（ロール名？要設計：キーをロール名）をDBに保存し、管理
### actor
- 管理人
- ユーザー

### 言語
- Go
    - 賭けAPIなどにある開発環境をもらって実装する。
    - 設計思想そろえよう。
### DB
- DynamoDB
    - 既存のDBを流用

## swaggerを書くにあたって参考
- ロール(商品)
    - 登録：(POST /roles)
    - 削除(キャンセル含)：(DELETE /roles/{roleId})
    - 更新：(PATCH /roles/{roleId})
    - 取得：(GET /roles/{roleId})
- 作成されたロールに対して(購入)
    - ユーザー追加 : (POST /roles/{roleId}/users)
- Discord API でロール付与 ([APIリファレンス](https://discord.com/developers/docs/reference))

## リアルに物品購入するフロー（一例）
- ロール検索は全件取得で大変なので、Idで管理
1. itemの登録(event start) -> 購入(coin消費) -> bot -> discord id, name, contentsを記録
2. admin or mode -> csvでdiscord id, name一覧を取得 -> 発送
admin or mode -> 商品の削除(event cancel) -> レコード削除, role剥奪, 返金
3. admin or mode -> (web)発送完了(個別or全件)(event end) -> レコード削除、roleはく奪


## イベントへの参加
1. 購入 -> bot -> 購入api -> discord api -> 購入者へroleの付与
roleでイベントの参加を制御
2. イベント終了 -> 購入api -> discord api -> 購入者のrole剥奪

## 調べること
結局購入者の一覧いるくね？→いる。
endpointは不要
role削除の挙動が不明
アイテム及びイベントの発売期間などの設定は必要か？（最初から機能として追加してもいいのかも）


