Skip to main content

FUSSY API Documentation

FUSSY の API をご利用いただくためのドキュメントです。

FUSSY API とは

株式会社 FUSSY は趣味に関する公開データベース、 FUSSY を運営しています。本ドキュメントで説明する FUSSY API は、FUSSY のデータベースへの投稿と取得を行うための API です。

不具合に気づかれた際は Issue でのご報告をお願いいたします。

ご利用方法

開発時のエンドポイントとしては https://staging.api.fussy.fun/graphql を、本番環境のエンドポイントとしては https://api.fussy.fun/graphql をご利用ください。

スキーマ定義に関しては https://static.fussy.fun/api/schema.graphql をご参照ください。

認証

APIを使った投稿には認証(Access Token)が必要です。認証方法は Misskey と同様の方法を採用しています。 以下に、認証の方法と bash で行う例を記載します。

1.Session ID の発行

Access Token を発行するためにはまず、 Session ID を発行してください。

Session ID は以下の要件を満たす必要があります。

  • UUID v4 であること
  • 毎回生成されること
$ SESSION_ID=$(uuidgen)

2. ユーザー認証

利用者に https://beta.fussy.fun/auth/[SESSION_ID] にアクセスしていただき、認証を行っていただきます。 このとき、クエリパラメータには以下の値を設定してください。

  • serviceName: サービス名
  • serviceUrl: サービスの URL
  • callbackUrl: 認証後にリダイレクトする URL

たとえば、サービス名:なごり、サービス URL:https://nagori.fun、認証後にリダイレクトする URL:https://nagori.fun/callback の場合は、以下のようになります。

$ SERVICE_NAME="なごり"
$ SERVICE_URL="https://nagori.fun"
$ CALLBACK_URL="https://nagori.fun/callback"
$ open "https://beta.fussy.fun/auth/${SESSION_ID}?serviceName=${SERVICE_NAME}&serviceUrl=${SERVICE_URL}&callbackUrl=${CALLBACK_URL}"

ユーザによる認証後、callbackUrl にリダイレクトします。

:::Caution 認証については開発環境は用意していません。 本番環境でのみご利用ください。 :::

3. Access Token の取得

認証後、Session ID を利用して Access Token を取得できます。 Access Token の取得にはエンドポイントに対し、次のクエリを実行してください。

  mutation IssueFussyAccessToken($sessionId: String!) {
issueFussyAccessToken(input: {sessionId: $sessionId}) {
accessToken
}
}

たとえば、次のように取得できます

$ curl -X POST \
-H "Content-Type: application/json" \
-d '{"query":"mutation IssueFussyAccessToken($sessionId: String!) {\n issueFussyAccessToken(input: {sessionId: $sessionId}) {\n accessToken\n }\n}\n","variables":{"sessionId":"'"${SESSION_ID}"'"}}' \
https://api.fussy.fun/graphql

4. Access Token の利用

mutation とユーザ情報を取得するクエリの実行時には、取得した Access Token を X-Access-Token ヘッダに設定してください。

Access Token を必要とするクエリは次のものがあります。

たとえば、query me は次のように実行できます

$ curl -X POST \
-H "Content-Type: application/json" \
-H "X-Access-Token: ${ACCESS_TOKEN}" \
-d '{"query":"query me { me { id name } }"}' \
https://api.fussy.fun/graphql

データ構造について

FUSSY API でアクセスできる主なデータの構造について説明します。

各データタイプの詳細は、https://fussy-inc.github.io/docs/category/objectsよりご確認ください。

FUSSY API でアクセスできるデータの構造は次の図のようになっています。

FUSSY のサービス上では、データベースとその投稿という構造で見せていますが、API としては投稿フォームとその回答という命名を採用しています。

Form, Question, Response, Answer

Form は複数の Question を持ちます。
たとえば、聖地巡礼のデータを収集したい Form は「作中登場回」と「実際の場所」を入力してもらうための Question を持ちます。

この Form への回答は Response と言い、Response は複数の Answer から作られます。
先程の例にならうと、聖地巡礼のデータとして Response が作成され、「作中登場回」の Answer と「実際の場所」の Answer を持ちます。

Category, User

Category は FUSSY のサービスでは Fave と呼ばれるものです。Category アーティスト名や作品名や雑誌など、様々なものを表現します。 Form には複数の Category を設定できます。例えば、「P.A. Works 北陸青春3部作の舞台を巡るためのデータベース」という Form には「true tears」「花咲くいろは」「グラスリップ」の3つの Category を設定できます。

info

Category の追加のご要望は https://forms.gle/SgYg8TQmtPsvP7Wy5 よりご連絡ください。

参考実装

現在実装中です。