開発者向け
MySpeedPuzzlingプラットフォームとの連携を構築しましょう。REST APIを通じてプレイヤーの記録、統計、コレクションなどにアクセスできます。
認証
用途に応じた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 |
— | ||
/meエンドポイントにフルアクセス。/meエンドポイントは利用不可。フェアユースポリシー
トークンの生成やAPIアクセスの申請を行う前に、APIフェアユースポリシーをお読みいただき、同意してください。
はじめる
ご質問がありましたら jan@myspeedpuzzling.com までお気軽にどうぞ。