Skip to content

API Document

yuta-ike edited this page Mar 13, 2021 · 26 revisions

https://sotesote.tkにAPIサーバーをホストしています。 Docker使える人はローカルでコンテナ起動すればhttp://localhostにホストされます。

フォーマット

  • URL(/api/以下の相対パス、モックのエンドポイントは/mock/の相対パス)
  • Method
  • 説明
  • Request
  • Response

エンドポイント

貸借系

貸出登録

  • /lending
  • POST
  • 貸す人が貸出情報の登録をする。
Authorization: Bearer <貸す人のアクセストークン>

{
  'content': string (貸したもの),
  'deadline': Datetime (期限)
}
{
  'lending_id': int (作成された貸出id)
}

URL送信登録

  • lending/<貸出id:string>/sent-url
  • PUT
  • 借りた人にURL送信したことを登録する
Authorization: Bearer <貸した人のアクセストークン>
正常時
{
  'status': 'success'
}

lending_idの貸し借りが存在しなかった場合
{
  'status': 'error',
  'messsage': <エラーメッセージ:string>
}

貸出情報取得

  • /lending/<貸出id:string>
  • GET
  • 貸出idで指定された貸出情報を取得する
正常時
{
  'lending_id': int (貸出id),
  'content': string (借りたもの),
  'deadline': Datetime (期限),
  'owner_name': string (貸した人の名前),
  'is_associated': boolean (リクエストしたユーザーが借主として既に紐づけられているか)
}

リクエストしたユーザーと異なるユーザーが、既に借主として紐づけられていた場合
404 Not Found
{
  'status_code': 404,
  'error_code': 'Not Found'
}

借りた人登録

  • /lending/<貸出id:string>
  • PUT
  • 貸出idで指定された貸出情報に、借りた人(アクセストークンから取得)を紐付ける.
Authorization: Bearer <借りた人のアクセストークン>
正常時
{
  'status': 'success',
  'result': {
    'lending_id': int (貸出id),
    'content': string (借りたもの),
    'deadline': Datetime (期限),
    'owner_name': string (貸した人の名前),
    'is_new_user': bool (新規のユーザーだった場合true)
  }
}

既に紐づけられていた場合
409 Conflict
{
  'status_code': 409,
  'error_code': 'already associated',
  'error': 'That lending already has borrower.'
}

貸したもの一覧取得

  • /owner/lending
  • GET
  • あるユーザの貸したものの一覧を取得する(貸した人にURLを送信済みのもののみ)
Authorization: Bearer <貸した人のアクセストークン>
{
  'lending_list': [
                 {
                   'lending_id': int (貸出id),
                   'content': string (貸したもの),
                   'deadline': Datetime (期限),
                   'borrower_name': string (借りた人の名前、まだ紐づけられていない場合はnull),
                 },
                 ...
                 ]
}

借りたもの一覧取得

  • /borrower/lending
  • GET
  • あるユーザの借りたものの一覧を取得する
Authorization: Bearer <借りた人のアクセストークン>
{
  'lending_list': [
                 {
                   'lending_id': int (貸出id),
                   'content': string (貸したもの),
                   'deadline': Datetime (期限),
                   'owner_name': string (貸した人の名前)
                 },
                 ...
                 ]
}

返却報告

  • /lending/{貸出id}
  • DELETE
  • 貸出情報のステータスを返却済みにする。アクセストークンから取得したユーザと、貸出idで指定された貸出情報のownerIdのユーザが一致するか検証する。
Authorization: Bearer <貸した人のアクセストークン>
{
  'lending_id': int (貸出id),
  'borrower_name': string (借りた人の名前),
  'content': string (貸すもの),
  'deadline': Datetime (期限)
}

フレンド系

フレンド登録

  • /friend
  • POST
  • 二人のユーザーをフレンド登録する
Authorization: Bearer <エンドポイントを叩くユーザーのアクセストークン>
{
  'friend_id': str (エンドポイントを叩くユーザーに自分のuser_idを送ったユーザーのid)
}
正常時
{
  'user_name': string (エンドポイントを叩くユーザーの名前),
  'friend_name': string (エンドポイントを叩くユーザーに自分のuser_idを送ったユーザーの名前)
}

2人のユーザーが既にフレンドだった場合
409 Conflict
{
  'status_code': 409,
  'error_code': 'Conflict',
  'error': <エラーメッセージ:string>
}

※userとfriendは対等な関係であり、入れ替わってもフレンド登録処理の結果は同じ。

フレンド解除

  • /friend
  • DELETE
  • フレンド登録を解除する
Authorization: Bearer <エンドポイントを叩くユーザーのアクセストークン>
{
  'friend_id': str (解除するフレンドのuser_id)
}
正常時
{
  'user_name': string (エンドポイントを叩くユーザーの名前),
  'friend_name': string (解除されたフレンドの名前)
}

2人のユーザーがフレンドじゃなかった場合
409 Conflict
{
  'status_code': 409,
  'error_code': 'Conflict',
  'error': <エラーメッセージ:string>
}

※userとfriendは対等な関係であり、入れ替わってもフレンド登録解除処理の結果は同じ。

借りたいものリスト系

借りたいものを登録

  • /want-to-borrow
  • POST
  • ユーザーの借りたいものリストに項目を追加する
Authorization: Bearer <ユーザーのアクセストークン>
{
  content: string (借りたいもの)
}
{
  'want_to_borrow_id: int (追加された借りたいもののid)
}

自分の借りたいものリストを取得

  • /want-to-borrow/own
  • GET
  • アクセストークンから取得したユーザーidの借りたいものリストを取得する
Authorization: Bearer <ユーザーのアクセストークン>
{
}
{
  'want_to_borrow_list': [
    {
      'want_to_borrow_id': int (借りたいもののid),
      'content': string (借りたいもの)
    },
    ... 
  ]
}

フレンドの借りたいものリストを取得

  • /want-to-borrow
  • GET
  • 指定されたユーザーのフレンドの借りたいものリストを取得する
Authorization: Bearer <ユーザーのアクセストークン>
{
}
{
  <フレンドのuser_id: string>: {
    'name': string (フレンドの名前),
    'want_to_borrow_list': [
    {
      'want_to_borrow_id': int (借りたいもののid),
      'content': string (借りたいもの)
    },
    ... ]
  },
  ...
}

借りたいもの削除

  • /want-to-borrow/<借りたいもののid>
  • DELETE
  • 借りたいものリストから指定した項目を削除する
Authorization: Bearer <ユーザーのアクセストークン>
{
}
{
  'content': string (削除された借りたいもの)
}

エンドポイント(bot)

  • /bot/~~~