logoよくないね。

Getting Started

よくないねAPIのドキュメントです。

よくないねAPIを活用するにあたって、必要な情報がまとめられています。 開発継続中のため、予期せぬAPIの仕様変更があるかもしれません。 ご了承ください。

現行のAPIは、バージョン1として次のエンドポイントにて提供されています。

https://service.yokunaine.mzyy94.com/api/v1

このドキュメントで紹介するAPIは、上記エンドポイントからの相対パスによってアクセスできます。

このドキュメントには、以下の意味を持つ注釈が登場します。

成功時に関する注釈

付加的な情報を知らせる注釈

必要となる情報を知らせる注釈

エラーの原因となる問題に関する注釈

Authentication

一部を除いて、APIリクエストには認証が必要です。 認証はトークンによって行われ、トークンは認証APIによって取得できます。

認証を必要とするAPIリクエストは、次のようなAuthorizationヘッダーとして認証情報を付加して行う必要があります。

Authorization: Bearer 123e4567-e89b-12d3-a456-426655440000

Errors

HTTPレスポンスコードによって、APIの成功や失敗情報を通知します。

Code Name 詳細
200 OK 成功
400 Bad Request 不正な要求
401 Unauthorized 認証が必要
403 Forbidden アクセス違反
404 Not Found リクエスト先が存在しない
409 Conflict リクエストが衝突
429 Too Many Requests リクエストが多すぎる
500 Internal Server Error なんらかのエラー

また、詳細な情報として次のフォーマットのJSONを返します:

{
  "code": 401,
  "message": "error message here"
}

Limitation

APIの利用には、制限が設けられています。 これは、公平なアクセスと負荷の軽減のために必要な措置です。 標準状態では、APIのリクエストに対して以下の制限の影響を受けます。

アクセス回数
各リクエストメソッドごとに、それぞれ1分間に30回まで
対象
ユーザ及びアクセス元IPアドレス

/auth

認証要求

Parameters

callback
要求が成功した場合にリダイレクトするURLを指定します。

認証要求を行います。

この要求には認証情報が必要ありません。

レスポンスとしてリダイレクト先に案内されます。

JavaScript

location.href = "https://service.yokunaine.mzyy94.com/api/v1/auth?callback=http://localhost:3000";

Curl

curl https://service.yokunaine.mzyy94.com/api/v1/auth?callback=http://localhost:3000

Error

{
  "code": 400,
  "message": "Missing Parameter \"callback\""
}

/auth/callback

トークンの発行

Parameters

code
認証Tokenを得るためのコード
state
認証認証要求からリダイレクトした状態を保持する値

認証要求のコールバックから、トークンを発行します。 トークンの発行が成功すると、Cookieにセットされたコールバック先にトークンを付与してリダイレクトします。

この要求には認証情報が必要ありません。

認証要求時にセットされたCookieが必要です。

レスポンスとしてリダイレクト先に案内されます。

JavaScript

location.href = "https://service.yokunaine.mzyy94.com/api/v1/auth/callback?code=fefef5f067171f247fb415e38cb0631797b82f4141dcdee66db846c3ade57a03&state=91c56490cd01866e7ebc62247a3501962524c999190a9563403c7b7800bbd78d";

Curl

curl https://service.yokunaine.mzyy94.com/api/v1/auth/callback?code=fefef5f067171f247fb415e38cb0631797b82f4141dcdee66db846c3ade57a03&state=91c56490cd01866e7ebc62247a3501962524c999190a9563403c7b7800bbd78d

Error

{
  "code": 400,
  "message": "Missing Cookie \"callback\" and/or \"token\""
}

/auth/token/:token

認証トークンの失効

認証トークンを失効させます。

この要求には認証情報が必要ありません。

Fetch API

fetch("https://service.yokunaine.mzyy94.com/api/v1/mzyy94/auth/token/123e4567-e89b-12d3-a456-426655440000", {
    method: "DELETE"
})
.then(response => response.json())
.then(status => {console.log(status)})
.catch(console.error)

Curl

curl -X DELETE https://service.yokunaine.mzyy94.com/api/v1/auth/token/123e4567-e89b-12d3-a456-426655440000

Response

{
  "complete": true
}

Error

{
    "code": 400,
    "message": "Already Revoked"
}

/:username/items/:id

よくないねの取得

よくないねの数と状態を取得します。 取得に成功すると、よくないねの数と現在のよくないね状態が得られます。

この要求には認証情報が必要です。

Fetch API

fetch("https://service.yokunaine.mzyy94.com/api/v1/mzyy94/items/7e816b7bed2d1e7fb584", {
    headers: {"Authorization": "Bearer 123e4567-e89b-12d3-a456-426655440000"}
})
.then(response => response.json())
.then(status => {console.log(status)})
.catch(console.error)

Curl

curl -H "Authorization: Bearer 123e4567-e89b-12d3-a456-426655440000" https://service.yokunaine.mzyy94.com/api/v1/mzyy94/items/7e816b7bed2d1e7fb584

Response

{
  "disliked": false,
  "count": 10
}

Error

{
    "code": 403,
    "message": "Invalid Authorization Token"
}

/:username/items/:id

よくないねの実行

よくないねします。 よくないねに成功すると、成功状態を得られます。

この要求には認証情報が必要です。

Fetch API

fetch("https://service.yokunaine.mzyy94.com/api/v1/mzyy94/items/7e816b7bed2d1e7fb584", {
    method: "POST",
    headers: {"Authorization": "Bearer 123e4567-e89b-12d3-a456-426655440000"}
})
.then(response => response.json())
.then(status => {console.log(status)})
.catch(console.error)

Curl

curl -X POST -H "Authorization: Bearer 123e4567-e89b-12d3-a456-426655440000" https://service.yokunaine.mzyy94.com/api/v1/mzyy94/items/7e816b7bed2d1e7fb584

Response

{
  "complete": true
}

Error

{
    "code": 409,
    "message": "Already Disliked"
}

/:username/items/:id

よくないねの取り消し

よくないねを取り消します。 よくないねの取り消しに成功すると、成功状態を得られます。

この要求には認証情報が必要です。

Fetch API

fetch("https://service.yokunaine.mzyy94.com/api/v1/mzyy94/items/7e816b7bed2d1e7fb584", {
    method: "DELETE",
    headers: {"Authorization": "Bearer 123e4567-e89b-12d3-a456-426655440000"}
})
.then(response => response.json())
.then(status => {console.log(status)})
.catch(console.error)

Curl

curl -X DELETE -H "Authorization: Bearer 123e4567-e89b-12d3-a456-426655440000" https://service.yokunaine.mzyy94.com/api/v1/mzyy94/items/7e816b7bed2d1e7fb584

Response

{
  "complete": true
}

Error

{
    "code": 404,
    "message": "Not Found"
}

/statistics/dislike

総よくないね数の取得

これまでにされたよくないねの数を取得します。

この要求には認証情報が必要ありません。

Fetch API

fetch("https://service.yokunaine.mzyy94.com/api/v1/statistics/dislike")
.then(response => response.json())
.then(status => {console.log(status)})
.catch(console.error)

JavaScript

var xhr = new XMLHttpRequest();
xhr.open("GET","https://service.yokunaine.mzyy94.com/api/v1/statistics/dislike",true);
xhr.responseType="json";
xhr.onload = function(e) {
  if (xhr.status === 200) {
    console.log(xhr.response.total);
  }
};
xhr.send();

Curl

curl https://service.yokunaine.mzyy94.com/api/v1/statistics/dislike

Response

{
  "total": 334
}

Error

{
    "code": 500,
    "message": "Internal Server Error"
}