Skip to content

開発者向け

MySpeedPuzzlingプラットフォームとの連携を構築しましょう。REST APIを通じてプレイヤーの記録、統計、コレクションなどにアクセスできます。

APIドキュメント

利用可能なすべてのエンドポイント、リクエストパラメータ、レスポンススキーマを備えたインタラクティブなSwagger UI。

ライブデモ

実際に動作するOAuth2連携をご覧ください。認証し、データを取得し、フローを確認できます。

ソースコード

OAuth2 authorization code flowを示す完全なPHPデモアプリケーション。クローンしてすぐに開発を始められます。

認証

用途に応じた2つのAPI認証方法があります。

Personal Access Token

ご自身のデータにプログラムからアクセスするためのトークンを生成します。Home Assistant、個人スクリプト、自動化に最適です。

Authorization: Token msp_pat_...

OAuth2 — ユーザー認証

サードパーティアプリ向けのAuthorization code flow。ユーザーが詳細なスコープでアプリにデータへのアクセスを許可します。読み取りと書き込みの両方をサポートしています。

OAuth2 — サービス

サービス間通信のためのClient credentials flow。ユーザー操作なしで、任意の公開プレイヤーのデータに読み取り専用でアクセスできます。

認証方法

どんな時に便利?

自分のデータだけにアクセスしたい場合に使います。個人的な自動化に最適です — Home Assistantに記録を取り込んだり、個人ダッシュボードに統計を表示したり、スプレッドシートで進捗を追跡したり、カスタム通知スクリプトを作成したりできます。


プロフィール設定からトークンを生成し、Authorizationヘッダーで使用してください:

curl -H "Authorization: Token msp_pat_YOUR_TOKEN_HERE" \
  https://myspeedpuzzling.com/api/v1/me

PATはすべての/api/v1/me/*エンドポイントへのフルアクセスを提供します。スコープは不要です。他のプレイヤーのデータにはアクセスできません。

どんな時に便利?

ユーザーがMySpeedPuzzlingアカウントでサインインするアプリを開発する場合に使います。あなたのアプリはユーザーに代わってデータにアクセスできます — あなたのウェブサイトに記録を表示したり、大会ツールからタイムを追加させたり、カスタムインターフェースからコレクションを管理したりできます。


ステップ1: ユーザーをアプリの認可ページにリダイレクトします:

https://myspeedpuzzling.com/oauth2/authorize?
  client_id=YOUR_CLIENT_ID
  &response_type=code
  &redirect_uri=https://your-app.com/callback
  &scope=profile:read results:read
  &state=RANDOM_STATE

ステップ2: 認可コードをトークンに交換します:

curl -X POST https://myspeedpuzzling.com/oauth2/token \
  -d "grant_type=authorization_code" \
  -d "code=AUTH_CODE_FROM_REDIRECT" \
  -d "redirect_uri=https://your-app.com/callback" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET"

ステップ3: Access tokenを使用します:

curl -H "Authorization: Bearer ACCESS_TOKEN" \
  https://myspeedpuzzling.com/api/v1/me/results

ステップ4: Access tokenの有効期限が切れたら、refresh tokenで新しいトークンを取得します:

curl -X POST https://myspeedpuzzling.com/oauth2/token \
  -d "grant_type=refresh_token" \
  -d "refresh_token=REFRESH_TOKEN" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET"

Access tokenの有効期限は1時間です。Refresh tokenは1ヶ月間有効です。

どんな時に便利?

統計データが必要な場合や、ユーザー操作なしで任意のプレイヤーの公開記録にアクセスしたい場合に使います。ランキングウィジェット、大会結果表示、コミュニティ統計ダッシュボード、データ分析ツールの構築に最適です。


ステップ1: Access tokenを直接リクエストします:

curl -X POST https://myspeedpuzzling.com/oauth2/token \
  -d "grant_type=client_credentials" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET" \
  -d "scope=results:read statistics:read"

ステップ2: Access tokenを使用して任意の公開プレイヤーのデータを読み取ります:

curl -H "Authorization: Bearer ACCESS_TOKEN" \
  https://myspeedpuzzling.com/api/v1/players/PLAYER_UUID/results

読み取り専用アクセスです。/meエンドポイントは利用できません。非公開プレイヤーは空の結果を返します。

利用可能なスコープ

profile:read デフォルト

ユーザープロフィールの読み取り

results:read

プレイヤーの結果の読み取り

statistics:read

プレイヤーの統計の読み取り

collections:read

プレイヤーのコレクションの読み取り

solving-times:write auth code専用

解答時間の作成・編集

collections:write auth code専用

コレクションの作成・編集・削除

利用可能なエンドポイント

使用できるエンドポイントは認証方法によって異なります。

エンドポイント PAT Auth Code Client Credentials
自分のデータ (/me)
GET /api/v1/me
GET /api/v1/me/results
GET /api/v1/me/statistics
GET /api/v1/me/collections
POST /api/v1/me/solving-times
PUT /api/v1/me/solving-times/{id}
POST/PUT/DELETE /api/v1/me/collections/*
他のプレイヤーの公開データ
GET /api/v1/players/{id}/results
GET /api/v1/players/{id}/statistics
GET /api/v1/players/{id}/collections
PAT — 自分のデータのみ。スコープ不要、すべての/meエンドポイントにフルアクセス。
Auth Code — すべてのエンドポイント。アクセスは付与されたスコープに依存。書き込みスコープも利用可能。
Client Credentials — 任意の公開プレイヤーへの読み取り専用アクセス。/meエンドポイントは利用不可。
フェアユースポリシー

トークンの生成やAPIアクセスの申請を行う前に、APIフェアユースポリシーをお読みいただき、同意してください。

はじめる

個人利用

自分のデータにアクセスしたいですか?プロフィール設定からすぐにPersonal Access Tokenを生成できます。承認は不要です。

サインイン
サードパーティアプリケーション

OAuth2アクセスが必要なアプリを開発中ですか?リクエストを送信していただければ審査いたします。承認後に認証情報をお送りします。

サインインしてリクエスト

ご質問がありましたら jan@myspeedpuzzling.com までお気軽にどうぞ。