openapi: "3.0.3" info: title: tampopo API version: "1.0" servers: - url: https://api.tampopo.app/ tags: - name: users description: アカウントの基本情報 - name: users/{user-id}/activities description: アクティビティの情報 - name: users/{user-id}/notifications description: 通知の情報 - name: users/{user-id}/friends description: フレンド関係の情報 - name: friend-requests description: フレンドリクエスト関連 - name: friends description: フレンド関連 - name: chat-requests description: チャットリクエスト関連 - name: chat-rooms description: チャットルーム関連 paths: #アカウントの基本情報 /users: get: tags: - users summary: 全アカウント情報を返す description: 全アカウントのID一覧を返す responses: '200': description: Successful operation content: application/json: schema: type: array items: type: string example: - "user-id1" - "user-id2" - "user-id3" "400": description: 不正なリクエスト "404": description: データが存在しません "500": description: 予期せぬエラー post: tags: - users summary: 新規アカウントを作る description: ユーザーIDとパスワードを指定して新規アカウントを作る requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: user-id: type: string description: ユーザーID password: type: string description: パスワード required: - user-id - password responses: '200': description: Successful operation content: application/json: schema: type: object properties: user-id: type: string example: user1 name: type: string example: null password: type: string example: user1 email: type: string example: null icon: type: string example: null token: type: string example: null frinedPairs: type: string example: null "400": description: 不正なリクエスト "409": description: ユーザーIDの重複 "500": description: 予期せぬエラー /users/{user-id}: get: tags: - users summary: 単一アカウントの情報を返す description: 単一アカウントの情報(ニックネームとアイコンのURL)を返す parameters: - in: path name: user-id description: 取得対象のユーザーID schema: type: string required: true responses: '200': description: Successful operation content: application/json: schema: type: object properties: name: type: string example: "nitta" icon: type: string format: uri example: "https://example.com/images/user-id1.png" "400": description: 不正なリクエスト "404": description: データが存在しません "500": description: 予期せぬエラー # put: #削除予定 # tags: # - users # summary: IDの変更 # description: IDの変更 # parameters: # - $ref: "#/components/parameters/user-id" # requestBody: # required: true # content: # application/x-www-form-urlencoded: # schema: # type: object # properties: # token: # type: string # description: 認証トークン # new_user-id: # type: string # description: 新しいID # required: # - token # - new_user-id # responses: # '200': # description: Successful operation # content: # application/json: # schema: # type: string # example: atarashi_user-id1 # '404': # description: "見つかりませんでした" delete: #ゆなし tags: - "users" summary: "アカウントの削除" description: 単一アカウントの情報を削除する parameters: - in: path name: user-id description: 削除対象のユーザーID schema: type: string required: true - in: query name: token description: 削除対象ユーザーの認証トークン schema: type: string required: true responses: '200': #成功 description: 成功 "400": description: 不正なリクエスト "401": description: 未認証 "403": description: トークンの不一致 "404": description: データが存在しません "500": description: 予期せぬエラー /users/{user-id}/login: #いわたに post: tags: - users summary: アカウントのログイン処理 description: アカウントにログインし、成功したら認証tokenを返す parameters: - in: path name: user-id description: ログインするユーザーのユーザーID schema: type: string required: true requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: password: type: string description: パスワード required: - password responses: "200": description: Successful operation content: application/json: schema: type: object properties: b0d1a536-b914-4a0f-a4d6-f391bc432ea1: type: string "401": description: パスワード間違い "404": description: IDが存在しません "400": description: 不正なリクエスト "500": description: 予期せぬエラー /users/{user-id}/name: #ゆなし get: tags: - "users" summary: "アカウントのニックネームの取得" description: 単一アカウントのニックネームを返す parameters: - in: path name: user-id description: 取得対象のユーザーID schema: type: string required: true responses: '200': #成功 description: 成功 content: application/json: schema: type: "string" example: "にったなのだ" "400": description: 不正なリクエスト "404": description: データが存在しません "500": description: 予期せぬエラー put: tags: - "users" summary: "ニックネームの変更" description: 単一アカウントのニックネームを変更する parameters: - in: path name: user-id description: 変更対象のユーザーID schema: type: string required: true requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: token: type: string description: 認証トークン new-name: type: string description: 新しいニックネーム required: - token - new-name responses: '200': #成功 description: 成功 content: application/json: schema: type: "string" example: "にったんラブ" "400": description: 不正なリクエスト "401": description: 未認証 "403": description: トークンの不一致 "404": description: データが存在しません "500": description: 予期せぬエラー /users/{user-id}/password: #いわたに get: #実装の判断は任せる tags: - users summary: 単一アカウントのパスワードの取得 description: 単一アカウントの現在のパスワードの取得 parameters: - in: path name: user-id description: 取得対象のユーザーID schema: type: string required: true - in: query name: token description: 認証トークン schema: type: string required: true responses: '200': description: Successful operation content: applicaion/json: schema: type: object properties: password: type: string example: nittalab "400": description: 不正なリクエスト "401": description: 未認証 "403": description: トークンの不一致 "404": description: データが存在しません "500": description: 予期せぬエラー put: tags: - users summary: パスワードを変更する description: 指定されたIDのパスワードを変更する parameters: - in: path name: user-id description: 変更対象のユーザーID schema: type: string required: true requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: token: type: string description: トークン new-password: type: string description: 新しいパスワード required: - new-password - token responses: '200': description: Successful operation '401': description: 変更前のパスワード間違い '403': description: 認証トークンエラー '404': description: "見つかりませんでした" "400": description: 不正なリクエスト "500": description: 予期せぬエラー /users/{user-id}/email: #いわたに get: tags: - users summary: 単一アカウントのemailの取得 description: 単一アカウントの現在のemailの取得 parameters: - in: path name: user-id description: 取得対象のユーザーID schema: type: string required: true - in: query name: token description: 認証トークン schema: type: string required: true responses: '200': description: Successful operation content: applicaion/json: schema: type: object properties: email: type: string example: nittalab@gmail.com '403': description: 認証トークンエラー '404': description: IDが存在しません "400": description: 不正なリクエスト "401": description: 未認証 "500": description: 予期せぬエラー put: tags: - users summary: emailを変更する description: 指定されたIDのemailを変更する parameters: - in: path name: user-id description: 変更対象のユーザーID schema: type: string required: true requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: token: type: string description: トークン new-email: type: string description: 新しいemail required: - new-email - token responses: '200': description: Successful operarion '403': description: 認証トークンエラー '404': description: 見つかりませんでした "400": description: 不正なリクエスト "401": description: 未認証 "409": description: メールアドレスの重複 "500": description: 予期せぬエラー /users/{user-id}/icon: #たなか get: tags: # accountsタグの中のお話 - users summary: アイコンを返す description: 指定されたIDのアイコンのURLを返す parameters: - in: path name: user-id description: 取得対象のユーザーID schema: type: string required: true responses: "200": description: Successsful operation content: application/json: schema: type: string format: uri example: "https://example.com/images/bacon.png" "400": description: 不正なリクエスト "404": description: データが存在しません "500": description: 予期せぬエラー put: tags: - users summary: アイコンを変更する description: 指定されたIDのアイコンを変更する parameters: - in: path name: user-id description: 変更対象のユーザーID schema: type: string required: true requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: token: type: string description: 認証トークン new-icon: type: string description: 新しい画像(base64) required: - token - new-icon responses: "200": description: Successsfil operation content: applicaion/json: schema: type: object properties: icon: type: string example: "66F8B439D11A76CA" "400": description: 不正なリクエスト "401": description: 未認証 "403": description: トークンの不一致 "404": description: データが存在しません "500": description: 予期せぬエラー #アクティビティの情報 #ゆなし /users/{user-id}/activities: get: tags: - "users/{user-id}/activities" summary: アカウントの全アクティビティの取得 description: ユーザーIDで指定したアカウントの全アクティビティを取得する(フィルターで最新の投稿のみの取得) parameters: - in: path name: user-id description: 取得対象のユーザーID schema: type: string required: true - in: query name: filter description: "LATEST: 最新のみ取得" schema: type: string required: false responses: '200': #成功 description: 成功 content: application/json: schema: type: "object" properties: activity-id1: type: "object" properties: text: type: "string" example: "今暇やねん" updated-time: type: "string" example: "2025/05/14 15:20" activity-id2: type: "object" properties: text: type: "string" example: "お風呂入ってたわ" updated-time: type: "string" example: "2025/05/14 23:50" "400": description: 不正なリクエスト "404": description: データが存在しません "500": description: 予期せぬエラー post: tags: - "users/{user-id}/activities" summary: 新規アクティビティの投稿 description: 指定したアカウントで新規のアクティビティを投稿する。成功したら作成したアクティビティのIDを返す。 parameters: - in: path name: user-id description: 投稿するユーザーのユーザーID schema: type: string required: true requestBody: required: true content: application/x-www-form-urlencoded: # この形式のデータを使ってパスワードを変更 schema: type: object properties: token: type: string description: 認証トークン new-activity: type: string description: 新しいアクティビティのテキスト required: - token - new-activity responses: '200': #成功 description: 成功 content: application/json: schema: properties: activity-id: type: "string" example: "fneit8" "400": description: 不正なリクエスト "401": description: 未認証 "403": description: トークンの不一致 "404": description: データが存在しません "500": description: 予期せぬエラー /users/{user-id}/activities/{activity-id}: get: tags: - "users/{user-id}/activities" summary: アカウントの単一アクティビティ取得 description: アクティビティIDを指定して、アカウントの単一アクティビティを取得する parameters: - in: path name: user-id description: 取得対象のユーザーID schema: type: string required: true - in: path name: activity-id description: 取得対象のアクティビティID schema: type: string required: true responses: '200': #成功 description: 成功 content: application/json: schema: type: "object" properties: activity-id: type: "string" example: "ajejg5" text: type: "string" example: "にったんに会った" updated-time: type: "string" example: "2025/05/14 15:30" "400": description: 不正なリクエスト "404": description: データが存在しません "500": description: 予期せぬエラー delete: tags: - "users/{user-id}/activities" summary: "アクティビティの削除" description: "アカウントの単一アクティビティを削除する" parameters: - in: path name: user-id description: 削除対象のユーザーID schema: type: string required: true - in: path name: activity-id description: 削除対象のアクティビティID schema: type: string required: true - in: query name: token description: 認証トークン schema: type: string required: true responses: '200': #成功 description: 成功 "400": description: 不正なリクエスト "401": description: 未認証 "403": description: トークンの不一致 "404": description: データが存在しません "500": description: 予期せぬエラー /users/{user-id}/activities/{activity-id}/text: get: #実装は任せる tags: - "users/{user-id}/activities" summary: "アカウントのアクティビティの文章" description: "指定したアカウントの指定したアクティビティの文章の内容を取得する" parameters: - in: path name: user-id description: 取得対象のユーザーID schema: type: string required: true - in: path name: activity-id description: 取得対象のアクティビティID schema: type: string required: true responses: '200': #成功 description: 成功 content: application/json: schema: type: "string" example: "今起きた" "400": description: 不正なリクエスト "404": description: データが存在しません "500": description: 予期せぬエラー /users/{user-id}/activities/{activity-id}/updated-time: get: #実装は任せる tags: - "users/{user-id}/activities" summary: "単一アクティビティの投稿時間" description: "指定したアカウントの指定したアクティビティの投稿時間を取得する" parameters: - in: path name: user-id description: 取得対象のユーザーID schema: type: string required: true - in: path name: activity-id description: 取得対象のアクティビティID schema: type: string required: true responses: '200': #成功 description: 成功 content: application/json: schema: type: "string" example: "2025/05/14 01:00" "400": description: 不正なリクエスト "404": description: データが存在しません "500": description: 予期せぬエラー /users/{user-id}/activities/last-updated-time: get: tags: - "users/{user-id}/activities" summary: "最新アクティビティの投稿時間" description: "指定したアカウントの最新のアクティビティの投稿時間を取得する" parameters: - in: path name: user-id description: 取得対象のユーザーID schema: type: string required: true responses: '200': #成功 description: 成功 content: application/json: schema: type: "string" example: "2025/05/14 01:00" '404': description: データが存在しません(まだ投稿していない) "400": description: 不正なリクエスト "500": description: 予期せぬエラー # put: #削除か非公開予定 # tags: # - "users/{user-id}/activities" # summary: "投稿時間の更新" # description: アクティビティの投稿時間を更新する # parameters: # - $ref: "#/components/parameters/user-id" # requestBody: # required: true # content: # application/x-www-form-urlencoded: # schema: # type: object # properties: # token: # type: string # description: 認証トークン # new_updated-time: # type: string # description: 新しいアクティビティの投稿時間 # required: # - token # - new_updated-time # responses: # '200': #成功 # description: 成功 # content: # application/json: # schema: # type: "string" # example: "2025/05/14 14:25" # '404': # description: IDが存在しません #通知の情報 #いわたに /users/{user-id}/notifications: get: tags: #古いもの順 - users/{user-id}/notifications summary: 単一アカウントの通知一覧 description: 指定したアカウントの通知IDの一覧をリストとして返す parameters: - in: path name: user-id description: 取得対象のユーザーID schema: type: string required: true - in: query name: token description: 認証トークン schema: type: string required: true responses: '200': description: Successful operation content: application/json: schema: type: array items: type: string example: - "notification-id1" - "notification-id2" - "notification-id3" "400": description: 不正なリクエスト "401": description: 未認証 "403": description: トークンの不一致 "404": description: データが存在しません "500": description: 予期せぬエラー # post: #非公開予定 # tags: # - users/{user-id}/notifications # summary: 新規通知の作成 # description: 新規通知の作成 # parameters: # - $ref: "#/components/parameters/user-id" # requestBody: # required: true # content: # application/x-www-form-urlencoded: # schema: # type: object # properties: # from: # type: string # example: 新田先生 # description: 誰から通知が来たかuser-id # text: # type: string # example: 電話が来たよー # description: 通知の内容 # required: # - from # - text # responses: # '200': # description: Successsful operation # content: # application/json: # schema: # properties: # notification-id: # type: "string" # example: "fneit8" # '404': # description: 失敗 /users/{user-id}/notifications/{notification-id}: get: tags: - users/{user-id}/notifications summary: 単一通知の情報 description: 指定したアカウントの指定した通知の取得 parameters: - in: path name: user-id description: 取得対象のユーザーID schema: type: string required: true - in: path name: notification-id description: 取得対象の通知ID schema: type: string required: true - in: query name: token description: 認証トークン schema: type: string required: true responses: '200': description: Successful operation content: application/json: schema: type: object properties: from: type: string example: user-id1 text: type: string description: 単一通知の内容 example: 電話が来たよー time: type: string format: date-time example: 2025-05-15ST13:45:30+9:00 "400": description: 不正なリクエスト "401": description: 未認証 "403": description: トークンの不一致 "404": description: データが存在しません "500": description: 予期せぬエラー /users/{user-id}/notifications/{notification-id}/text: get: #実装お任せ tags: - users/{user-id}/notifications summary: 単一通知のテキスト description: 指定したアカウントの指定した通知のテキストの取得 parameters: - in: path name: user-id description: 取得対象のユーザーID schema: type: string required: true - in: path name: notification-id description: 取得対象の通知ID schema: type: string required: true - in: query name: token description: 認証トークン schema: type: string required: true responses: '200': description: Successful operation content: applicaion/json: schema: type: object properties: text: type: string example: 電話が来たよー "400": description: 不正なリクエスト "401": description: 未認証 "403": description: トークンの不一致 "404": description: データが存在しません "500": description: 予期せぬエラー /users/{user-id}/notifications/{notification-id}/time: get: #実装お任せ tags: - users/{user-id}/notifications summary: 単一通知の時間 description: 指定したアカウントの指定した通知の時間の取得 parameters: - in: path name: user-id description: 取得対象のユーザーID schema: type: string required: true - in: path name: notification-id description: 取得対象の通知ID schema: type: string required: true - in: query name: token description: 認証トークン schema: type: string required: true responses: '200': description: Successful operation content: applicaion/json: schema: type: object properties: time: type: string example: 2025-05-15ST13:45:30+9:00 "400": description: 不正なリクエスト "401": description: 未認証 "403": description: トークンの不一致 "404": description: データが存在しません "500": description: 予期せぬエラー /users/{user-id}/notifications/{notification-id}/from: get: #実装お任せ tags: - users/{user-id}/notifications summary: 単一通知の誰から通知が来たか description: 指定したアカウントの指定した通知が誰から来たかのuser-idの取得 parameters: - in: path name: user-id description: 取得対象のユーザーID schema: type: string required: true - in: path name: notification-id description: 取得対象の通知ID schema: type: string required: true - in: query name: token description: 認証トークン schema: type: string required: true responses: '200': description: Successful operation content: applicaion/json: schema: type: object properties: from: type: string example: user-id1 "400": description: 不正なリクエスト "401": description: 未認証 "403": description: トークンの不一致 "404": description: データが存在しません "500": description: 予期せぬエラー #フレンド関係の情報 #よしむらくん /users/{user-id}/friends: get: tags: - users/{user-id}/friends summary: 自分のフレンドペアのペアIDの一覧(JSON)の取得 description: 指定したアカウントが所属しているフレンドペアの、ペアIDから各ユーザーIDへのマップ(JSON)の取得 parameters: - in: path name: user-id description: 取得対象のユーザーID schema: type: string required: true - in: query name: token description: 認証トークン schema: type: string required: true responses: '200': description: 成功 content: application/json: schema: type: object properties: pid1: type: object properties: user0-id: type: string example: oh3rhowgy3 user1-id: type: string example: w3485nwv84 pid2: type: object properties: user0-id: type: string example: oh3rhowgy3 user1-id: type: string example: l45yn39w5v9 "400": description: 不正なリクエスト "401": description: 未認証 "403": description: トークンの不一致 "404": description: データが存在しません "500": description: 予期せぬエラー # post: #非公開予定 # tags: # - users/{user-id}/friends # summary: 新規ペアの追加 # description: 新規ペアを追加するためのエンドポイント # parameters: # - $ref: "#/components/parameters/user-id" # requestBody: # required: true # content: # application/x-www-form-urlencoded: # schema: # type: object # properties: # token: # type: string # description: 認証トークン # pair-id: # type: string # description: フレンドのペアID # user1_id: # type: string # description: ペアの1人目のユーザーID # example: user-id123 # user2_id: # type: string # description: ペアの2人目のユーザーID # example: user-id456 # required: # - token # - pair-id # - user1_id # - user2_id # responses: # '200': # description: 成功 # content: # application/json: # schema: # type: object # properties: # pair_id: # type: string # description: 作成されたペアのID # example: pid789 /users/{user-id}/friends/{pair-id}: get: #実装お任せ tags: - users/{user-id}/friends summary: フレンド相手の情報の取得 description: 指定したアカウントの指定したフレンドペアの相手のユーザー ID の取得 parameters: - in: path name: user-id description: 取得能動側のユーザーID schema: type: string required: true - in: path name: pair-id description: フレンドのペアID schema: type: string required: true - in: query name: token description: 認証トークン schema: type: string required: true responses: '200': description: 成功 content: application/json: schema: type: object properties: user-id: type: string description: ペアのユーザーID example: 相手のuser-id "400": description: 不正なリクエスト "401": description: 未認証 "403": description: トークンの不一致 "404": description: データが存在しません "500": description: 予期せぬエラー delete: tags: - users/{user-id}/friends summary: フレンドペアの削除 description: 指定したフレンドペアの削除 parameters: - in: path name: user-id description: 削除能動側のユーザーID schema: type: string required: true - in: path name: pair-id description: フレンドのペアID schema: type: integer required: true - in: query name: token description: 認証トークン schema: type: string required: true responses: '200': description: 成功 "400": description: 不正なリクエスト "401": description: 未認証 "403": description: トークンの不一致 "404": description: データが存在しません "500": description: 予期せぬエラー /friend-requests: get: tags: - friend-requests summary: 指定したユーザに関連するフレンドリクエストを返す description: トークンによって指定されたユーザに関連するフレンドリクエストのみを返す(他人の情報を返さないように実装する) parameters: - in: query name: token description: 対象ユーザの認証用のトークン example: d6289334-d2df-41bb-9410-d2f33de40b16 required: true schema: type: string responses: "200": description: すべてのフレンドリクエストを返す content: application/json: schema: type: array items: type: object properties: friend-request-id: type: integer example: 12 sender-id: type: string example: "skyfox_82z" receiver-id: type: string example: "echo_wolf7" "400": description: 不正なリクエストです "401": description: トークンが無効です "403": description: 権限がありません "404": description: データが存在しません "409": description: データが重複しています "500": description: サーバー内部でエラーが発生しました post: tags: - friend-requests summary: フレンドリクエストを作成 description: トークンを使って新しいフレンドリクエストを作成する。成功したら作成したフレンドリクエストの ID を返す。 requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: token: type: string description: フレンドリクエストを送ったユーザーのトークン example: d6289334-d2df-41bb-9410-d2f33de40b16 sender-id: type: string description: フレンドリクエストを送ったユーザーのID example: skyfox_82z receiver-id: type: string description: フレンドリクエストを受け取るユーザーのID example: echo_wolf7 required: - token - sender-id - receiver-id responses: "201": description: "フレンドリクエストが作成されました" content: application/json: schema: type: object properties: friend-request-id: type: integer example: 3 "400": description: "不正なリクエスト" /friend-requests/{friend-request-id}: delete: tags: - friend-requests summary: フレンドリクエストを削除 description: フレンドリクエスト ID を指定してフレンドリクエストを削除 parameters: - in: path name: friend-request-id description: フレンドリクエストのID required: true example: 12 schema: type: integer - in: query name: receiver-token description: リクエストを受け付けたユーザーの認証用トークン example: d6289334-d2df-41bb-9410-d2f33de40b16 required: true schema: type: string responses: "200": description: "フレンドリクエストの削除に成功しました" "404": description: "指定されたIDのフレンドリクエストが見つかりませんでした" /friends/: post: tags: - friends summary: フレンドのペアを追加 description: フレンドリクエストが承認されたときに呼び出し、フレンドペアが正常に追加されたら、ペアIDを返す requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: token: type: string description: フレンドリクエストを承認したユーザーのトークン example: d6289334-d2df-41bb-9410-d2f33de40b16 user0-id: type: string description: ユーザーID example: skyfox_82z user1-id: type: string description: ユーザーID example: echo_wolf7 required: - token - user0-id - user1-id responses: "200": description: 正常に処理できた content: application/json: schema: type: object properties: pair-id: type: integer example: 1 "400": description: 不正なリクエスト "401": description: トークンが無効 "403": description: 権限なし "404": description: データが存在しない "409": description: 重複している "500": description: エラー /friends/pairs/{pair-id}/: parameters: - in: path name: pair-id description: フレンドリクエストのペアID required: true schema: type: integer get: tags: - friends summary: フレンドのペアを取得する description: ペアIDを指定して、所属しているユーザのユーザIDを取得する parameters: - in: query name: token description: ペアのいずれかのユーザーの認証用トークン example: d6289334-d2df-41bb-9410-d2f33de40b16 required: true schema: type: string responses: "200": description: ペアのリソースが存在したらそのリソースを返す content: application/json: schema: type: object properties: user0-id: type: string description: ユーザーID example: skyfox_82z user1-id: type: string description: ユーザーID example: echo_wolf7 "400": description: 削除が失敗したとき delete: tags: - friends summary: フレンドのペアを削除 description: ペアのいずれかのユーザーの認証用トークンを指定して、フレンドペアを削除する parameters: - in: query name: token description: ペアのいずれかのユーザーの認証用トークン example: d6289334-d2df-41bb-9410-d2f33de40b16 required: true schema: type: string responses: "200": description: 削除が成功したとき "400": description: 不正なリクエスト "401": description: トークンが無効 "403": description: 権限なし "404": description: データが存在しない "409": description: 重複している "500": description: エラー /friends/users/{user-id}: get: tags: - friends summary: 自分のフレンド一覧の取得 description: 指定したユーザのフレンド一覧を、ユーザIDのリストとして返す parameters: - in: path name: user-id description: 取得対象のユーザーID schema: type: string required: true - in: query name: token description: 認証トークン schema: type: string required: true responses: '200': description: Successful operation content: applicaion/json: schema: type: array items: type: string example: - "user-id1" - "user-id2" - "user-id3" "400": description: 不正なリクエスト "401": description: 未認証 "403": description: トークンの不一致 "404": description: データが存在しません "500": description: 予期せぬエラー /chat-requests/: get: tags: - chat-requests summary: 指定したユーザに関連するチャットリクエストを返す description: トークンによって指定されたユーザに関連するチャットリクエストのみを返す(他人の情報を返さないように実装する) parameters: - in: query name: token description: チャットリクエストを取得するユーザーの認証トークン example: d6289334-d2df-41bb-9410-d2f33de40b16 required: true schema: type: string - in: query name: user-id description: チャットリクエストを取得するユーザーのID("sender-id"か"receiver-id"のどちらかに一致する必要がある) example: skyfox_82z required: true schema: type: string responses: "200": description: 自分に関係する全員のリクエストを返す content: application/json: schema: type: array items: type: object properties: chat-request-id: type: integer description: チャットリクエストのID example: 127 sender-id: type: string description: リクエストを送ったユーザーのID example: skyfox_82z receiver-id: type: string description: リクエストを受け取ったユーザーのID example: echo_wolf7 "400": description: 認証が必要です post: tags: - chat-requests summary: チャットリクエストの作成 description: トークンを使って他人に成りすましたチャットリクエストを作成しないように実装する(ユーザー自身からのチャットリクエストのみを作成する)。成功したら作成したチャットリクエストのIDを返す。 requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: token: type: string description: 認証用のトークン example: d6289334-d2df-41bb-9410-d2f33de40b16 sender-id: type: string description: リクエストした側のユーザID example: skyfox_82z receiver-id: type: string description: リクエストされた側のユーザID example: echo_wolf7 required: - token - sender-id - receiver-id responses: "204": description: チャットがリクエストされました。 content: application/json: schema: type: object properties: chat-request-id: type: integer description: 作成されたチャットリクエストのID example: 20 /chat-requests/{chat-request-id}/: delete: tags: - chat-requests summary: チャットのリクエストを消去する description: チャットリクエストIDを指定してチャットリクエストを消去する parameters: - in: path name: chat-request-id example: 20 schema: type: integer required: true - in: query name: token example: d6289334-d2df-41bb-9410-d2f33de40b16 schema: type: string required: true responses: "204": description: チャットリクエストが削除されました。 "401": description: 認証が必要です "403": description: 権限がありません。 "404": description: チャットリクエストが見つかりません。 /chat-rooms/: post: tags: - chat-rooms summary: チャットルームの作成 description: チャットリクエストの承認時に呼び出され、リクエストした側のユーザとされた側のユーザーがチャットルームに入る。成功したら、作成したチャットルームのIDを返す。 parameters: - in: query name: user0-id example: user0-id schema: type: string required: true - in: query name: user1-id example: user1-id schema: type: string required: true - in: query name: token description: user0-id側のトークン example: d6289334-d2df-41bb-9410-d2f33de40b16 schema: type: string required: true responses: "200": description: 成功時のレスポンス content: application/json: schema: type: object properties: room-id: type: string example: 1 "401": description: 認証失敗 get: tags: - chat-rooms summary: チャットルームのIDの取得 description: 指定したユーザが参加しているチャットルームを検索して、チャットルームIDを取得する parameters: - in: query name: user0-id example: user0-id schema: type: string required: true - in: query name: token description: user0-idのトークン example: d6289334-d2df-41bb-9410-d2f33de40b16 schema: type: string required: true responses: "200": description: 成功時のレスポンス content: application/json: schema: type: object properties: room-id: type: string example: 1 "404": description: IDが存在しません "401": description: 認証失敗 /chat-rooms/{chatroom-id}/{user-id}/: get: tags: - chat-rooms summary: メッセージを閲覧する description: チャットルームIDと相手のユーザのIDを指定して、相手のチャットメッセージを取得する。 parameters: - in: path name: chatroom-id required: true description: チャットルームのID schema: type: string - in: path name: user-id required: true description: 相手のユーザーID example: skyfox_82z schema: type: string - in: query name: token example: d6289334-d2df-41bb-9410-d2f33de40b16 required: true description: チャットルームに入っているユーザーの認証用トークン schema: type: string responses: "200": description: 成功 content: application/json: schema: type: object properties: message: type: string description: メッセージ本文 example: "この後ご飯行かんー?" "403": description: "認証されていません" delete: tags: - chat-rooms summary: チャットルームの削除 description: チャットルームIDを指定して、チャットルームを削除する parameters: - in: path name: chatroom-id example: 20 schema: type: string required: true - in: path name: user-id example: test schema: type: string required: true - in: query name: token example: d6289334-d2df-41bb-9410-d2f33de40b16 schema: type: string required: true responses: "204": description: チャットルームidが見つかりません。 "401": description: IDが存在しません。 "404": description: チャットリクエストが見つかりません。 put: tags: - chat-rooms summary: チャットルームにユーザーを追加する description: チャットルームにユーザーを追加する(メッセージは作成しない) parameters: - in: path name: chatroom-id required: true description: チャットルームのID example: 12 schema: type: string - in: path name: user-id required: true description: チャットルームに参加するユーザーのID example: skyfox_82z schema: type: string - in: query name: token required: true description: チャットルームに参加するユーザーの認証用のトークン example: d6289334-d2df-41bb-9410-d2f33de40b16 schema: type: string responses: "200": description: 参加に成功しました "403": description: 認証されていません "404": description: チャットルームが見つかりません "500": description: サーバー内部でエラーが発生しました /chat-rooms/{chatroom-id}/{user-id}/message: # parameters: # - $ref: "#/components/parameters/chat-room-id" # - $ref: "#/components/parameters/user-id" put: tags: - chat-rooms summary: メッセージの更新 description: 自分のチャットメッセージを更新する。 parameters: - in: path name: user-id description: ユーザーID schema: type: string required: true - in: path name: chatroom-id description: チャットルームID schema: type: string required: true requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: token: type: string description: user-idのトークン message: type: string description: 新しいメッセージ required: - message - token responses: "200": description: 正常にメッセージが更新されました "400": description: リクエスト形式が不正です "404": description: チャットルームが見つかりません "500": description: サーバー内部でエラーが発生しました # components: