diff --git a/src/client/pages/doc.vue b/src/client/pages/doc.vue index e0db5a3746fa54851d29e0f666e084a02cea8e44..5cdb5999ba289b7ef4c190d16dd1f128c8e21283 100644 --- a/src/client/pages/doc.vue +++ b/src/client/pages/doc.vue @@ -72,6 +72,9 @@ export default Vue.extend({ }, parse(md: string) { + // å¤‰æ•°ç½®æ› + md = md.replace(/\{_URL_\}/g, url); + // markdown ã®å…¨å®¹ã‚’パースã™ã‚‹ const parsed = markdown.parse(md, {}); if (parsed.length === 0) return; diff --git a/src/docs/api.ja-JP.md b/src/docs/api.ja-JP.md index 6e1eba065636c7d57df6ce96b6b92e63711a80a3..5d370a29cd892a3c4d91e6f7cb7b0a676fea42cc 100644 --- a/src/docs/api.ja-JP.md +++ b/src/docs/api.ja-JP.md @@ -1,3 +1,60 @@ # Misskey API -[APIリファレンス](/api-doc) +MisskeyAPIを使ã£ã¦Misskeyクライアントã€Misskey連æºWebサービスã€Botç‰(以下「アプリケーションã€ã¨å‘¼ã³ã¾ã™)を開発ã§ãã¾ã™ã€‚ +ストリーミングAPIã‚‚ã‚ã‚‹ã®ã§ã€ãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ 性ã®ã‚るアプリケーションを作るã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ + +APIを使ã„始ã‚ã‚‹ã«ã¯ã€ã¾ãšAPIã‚ーをå–å¾—ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ +ã“ã®ãƒ‰ã‚ュメントã§ã¯ã€APIã‚ーをå–å¾—ã™ã‚‹æ‰‹é †ã‚’説明ã—ãŸå¾Œã€åŸºæœ¬çš„ãªAPIã®ä½¿ã„方を説明ã—ã¾ã™ã€‚ + +## APIã‚ーã®å–å¾— +基本的ã«ã€APIã¯ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã¯APIã‚ーãŒå¿…è¦ã¨ãªã‚Šã¾ã™ã€‚ +ã‚ãªãŸã®ä½œã‚ã†ã¨ã—ã¦ã„るアプリケーションãŒã€ã‚ãªãŸå°‚用ã®ã‚‚ã®ãªã®ã‹ã€ãã‚Œã¨ã‚‚ä¸ç‰¹å®šå¤šæ•°ã®äººã«ä½¿ã£ã¦ã‚‚らã†ã‚‚ã®ãªã®ã‹ã«ã‚ˆã£ã¦ã€APIã‚ーã®å–å¾—æ‰‹é †ã¯ç•°ãªã‚Šã¾ã™ã€‚ + +* ã‚ãªãŸå°‚用ã®å ´åˆ: [「自分ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®APIã‚ーをå–å¾—ã™ã‚‹ã€](#自分ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®APIã‚ーをå–å¾—ã™ã‚‹)ã«é€²ã‚€ +* 皆ã«ä½¿ã£ã¦ã‚‚らã†å ´åˆ: [「アプリケーションã¨ã—ã¦APIã‚ーをå–å¾—ã™ã‚‹ã€](#アプリケーションã¨ã—ã¦APIã‚ーをå–å¾—ã™ã‚‹)ã«é€²ã‚€ + +### 自分ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®APIã‚ーをå–å¾—ã™ã‚‹ +「è¨å®š > APIã€ã§ã€è‡ªåˆ†ã®APIã‚ーをå–å¾—ã§ãã¾ã™ã€‚ + +> ã“ã®æ–¹æ³•ã§å…¥æ‰‹ã—ãŸAPIã‚ーã¯å¼·åŠ›ãªã®ã§ã€ç¬¬ä¸‰è€…ã«æ•™ãˆãªã„ã§ãã ã•ã„(アプリãªã©ã«ã‚‚入力ã—ãªã„ã§ãã ã•ã„)。 + +[「APIã®ä½¿ã„æ–¹ã€ã¸é€²ã‚€](#APIã®ä½¿ã„æ–¹) + +### アプリケーションã¨ã—ã¦APIã‚ーをå–å¾—ã™ã‚‹ +アプリケーションを使ã£ã¦ã‚‚らã†ã«ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®APIã‚ーを以下ã®æ‰‹é †ã§å–å¾—ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + +#### Step 1 + +UUIDを生æˆã™ã‚‹ã€‚以後ã“れをセッションIDã¨å‘¼ã³ã¾ã™ã€‚ + +#### Step 2 + +`{_URL_}/miauth/{session}`をユーザーã®ãƒ–ラウザã§è¡¨ç¤ºã•ã›ã‚‹ã€‚`{session}`ã®éƒ¨åˆ†ã¯ã€ã‚»ãƒƒã‚·ãƒ§ãƒ³IDã«ç½®ãæ›ãˆã¦ãã ã•ã„。 +> 例: `{_URL_}/miauth/c1f6d42b-468b-4fd2-8274-e58abdedef6f` + +表示ã™ã‚‹éš›ã€URLã«ã‚¯ã‚¨ãƒªãƒ‘ラメータã¨ã—ã¦ã„ãã¤ã‹ã®ã‚ªãƒ—ションをè¨å®šã§ãã¾ã™: +* `name` ... アプリケーションå + * > 例: `MissDeck` +* `callback` ... èªè¨¼ãŒçµ‚ã‚ã£ãŸå¾Œã«ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã™ã‚‹URL + * > 例: `https://missdeck.example.com/callback` + * リダイレクト時ã«ã¯ã€`session`ã¨ã„ã†ã‚¯ã‚¨ãƒªãƒ‘ラメータã§ã‚»ãƒƒã‚·ãƒ§ãƒ³IDãŒä»˜ãã¾ã™ +* `permissions` ... アプリケーションãŒè¦æ±‚ã™ã‚‹æ¨©é™ + * > 例: `write:notes,write:following,read:drive` + * è¦æ±‚ã™ã‚‹æ¨©é™ã‚’`,`ã§åŒºåˆ‡ã£ã¦åˆ—挙ã—ã¾ã™ + * ã©ã®ã‚ˆã†ãªæ¨©é™ãŒã‚ã‚‹ã‹ã¯[APIリファレンス](/api-doc)ã§ç¢ºèªã§ãã¾ã™ + +#### Step 3 +ユーザーãŒé€£æºã‚’許å¯ã—ãŸå¾Œã€`{_URL_}/miauth/{session}/check`ã«POSTリクエストã™ã‚‹ã¨ã€ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã¨ã—ã¦APIã‚ーをå«ã‚€JSONãŒè¿”ã‚Šã¾ã™ã€‚ + +レスãƒãƒ³ã‚¹ã«å«ã¾ã‚Œã‚‹ãƒ—ãƒãƒ‘ティ: +* `token` ... ユーザーã®APIã‚ー +* `user` ... ユーザーã®æƒ…å ± + +[「APIã®ä½¿ã„æ–¹ã€ã¸é€²ã‚€](#APIã®ä½¿ã„æ–¹) + +## APIã®ä½¿ã„æ–¹ +**APIã¯ã™ã¹ã¦POSTã§ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆ/レスãƒãƒ³ã‚¹ã¨ã‚‚ã«JSONå½¢å¼ã§ã™ã€‚RESTã§ã¯ã‚ã‚Šã¾ã›ã‚“。** +APIã‚ーã¯ã€`i`ã¨ã„ã†ãƒ‘ラメータåã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«å«ã‚ã¾ã™ã€‚ + +* [APIリファレンス](/api-doc) +* [ストリーミングAPI](./stream) diff --git a/src/server/api/openapi/description.ts b/src/server/api/openapi/description.ts index a4b79d950286cae7ba659a11ee7771b6e60f7f2a..4fff53ac902f5609311a81ebe8df3cd6aaa2ee16 100644 --- a/src/server/api/openapi/description.ts +++ b/src/server/api/openapi/description.ts @@ -42,52 +42,7 @@ export function getDescription(lang = 'ja-JP'): string { .join('\n'); const descriptions = { - 'ja-JP': `**Misskey is a decentralized microblogging platform.** - -# Usage -**APIã¯ã™ã¹ã¦POSTã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆ/レスãƒãƒ³ã‚¹ã¨ã‚‚ã«JSONå½¢å¼ã§ã™ã€‚** -一部ã®APIã¯ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«èªè¨¼æƒ…å ±(APIã‚ー)ãŒå¿…è¦ã§ã™ã€‚リクエストã®éš›ã«\`i\`ã¨ã„ã†ãƒ‘ラメータã§APIã‚ーを添付ã—ã¦ãã ã•ã„。 - -## 自分ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®APIã‚ーをå–å¾—ã™ã‚‹ -「è¨å®š > APIã€ã§ã€è‡ªåˆ†ã®APIã‚ーをå–å¾—ã§ãã¾ã™ã€‚ - -> アカウントをä¸æ£åˆ©ç”¨ã•ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€ã“ã®ãƒˆãƒ¼ã‚¯ãƒ³ã¯ç¬¬ä¸‰è€…ã«æ•™ãˆãªã„ã§ãã ã•ã„(アプリãªã©ã«ã‚‚入力ã—ãªã„ã§ãã ã•ã„)。 - -## アプリケーションã¨ã—ã¦APIã‚ーをå–å¾—ã™ã‚‹ -直接ユーザーã®APIã‚ーをアプリケーションãŒæ‰±ã†ã®ã¯ã‚»ã‚ュリティ上ã®ãƒªã‚¹ã‚¯ãŒã‚ã‚‹ã®ã§ã€ -アプリケーションã‹ã‚‰APIを利用ã™ã‚‹éš›ã«ã¯ã€ã‚¢ãƒ—リケーションã¨ã‚¢ãƒ—リケーションを利用ã™ã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒçµã³ä»˜ã‘られãŸå°‚用ã®APIã‚ーを発行ã—ã¾ã™ã€‚ - -### 1.アプリケーションを登録ã™ã‚‹ -ã¾ãšã€ã‚ãªãŸã®ã‚¢ãƒ—リケーションやWebサービス(以後ã€ã‚ãªãŸã®ã‚¢ãƒ—リã¨å‘¼ã³ã¾ã™)ã‚’Misskeyã«ç™»éŒ²ã—ã¾ã™ã€‚ -[デベãƒãƒƒãƒ‘ーセンター](/dev)ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã€ã€Œã‚¢ãƒ—リ > アプリ作æˆã€ã‹ã‚‰ã‚¢ãƒ—リを作æˆã—ã¦ãã ã•ã„。 - -登録ãŒæ¸ˆã‚€ã¨ã‚ãªãŸã®ã‚¢ãƒ—リã®ã‚·ãƒ¼ã‚¯ãƒ¬ãƒƒãƒˆã‚ーãŒå…¥æ‰‹ã§ãã¾ã™ã€‚ã“ã®ã‚·ãƒ¼ã‚¯ãƒ¬ãƒƒãƒˆã‚ーã¯å¾Œã§ä½¿ç”¨ã—ã¾ã™ã€‚ - -> アプリã«æˆã‚Šã™ã¾ã•ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€æ¥µåŠ›ã“ã®ã‚·ãƒ¼ã‚¯ãƒ¬ãƒƒãƒˆã‚ーã¯å…¬é–‹ã—ãªã„よã†ã«ã—ã¦ãã ã•ã„。</p> - -### 2.ユーザーã«èªè¨¼ã•ã›ã‚‹ -アプリを使ã£ã¦ã‚‚らã†ã«ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã®è¨±å¯ã‚’もらã†å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ - -èªè¨¼ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’開始ã™ã‚‹ã«ã¯ã€[${config.apiUrl}/auth/session/generate](#operation/auth/session/generate) ã¸ãƒ‘ラメータã«\`appSecret\`ã¨ã—ã¦ã‚·ãƒ¼ã‚¯ãƒ¬ãƒƒãƒˆã‚ーをå«ã‚ãŸãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’é€ä¿¡ã—ã¾ã™ã€‚ -レスãƒãƒ³ã‚¹ã¨ã—ã¦èªè¨¼ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®ãƒˆãƒ¼ã‚¯ãƒ³ã‚„èªè¨¼ãƒ•ã‚©ãƒ¼ãƒ ã®URLãŒå–å¾—ã§ãã‚‹ã®ã§ã€èªè¨¼ãƒ•ã‚©ãƒ¼ãƒ ã®URLをブラウザã§è¡¨ç¤ºã—ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ãƒ•ã‚©ãƒ¼ãƒ ã‚’æ示ã—ã¦ãã ã•ã„。 - -ã‚ãªãŸã®ã‚¢ãƒ—リãŒã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯URLã‚’è¨å®šã—ã¦ã„ã‚‹å ´åˆã€ -ユーザーãŒã‚ãªãŸã®ã‚¢ãƒ—リã®é€£æºã‚’許å¯ã™ã‚‹ã¨è¨å®šã—ã¦ã„るコールãƒãƒƒã‚¯URLã«\`token\`ã¨ã„ã†åå‰ã§ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®ãƒˆãƒ¼ã‚¯ãƒ³ãŒå«ã¾ã‚ŒãŸã‚¯ã‚¨ãƒªã‚’付ã‘ã¦ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã—ã¾ã™ã€‚ - -ã‚ãªãŸã®ã‚¢ãƒ—リãŒã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯URLã‚’è¨å®šã—ã¦ã„ãªã„å ´åˆã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã‚ãªãŸã®ã‚¢ãƒ—リã®é€£æºã‚’許å¯ã—ãŸã“ã¨ã‚’(何らã‹ã®æ–¹æ³•ã§(ãŸã¨ãˆã°ãƒœã‚¿ãƒ³ã‚’押ã•ã›ã‚‹ãªã©))確èªå‡ºæ¥ã‚‹ã‚ˆã†ã«ã—ã¦ãã ã•ã„。 - -### 3.アクセストークンをå–å¾—ã™ã‚‹ -ユーザーãŒé€£æºã‚’許å¯ã—ãŸã‚‰ã€[${config.apiUrl}/auth/session/userkey](#operation/auth/session/userkey) ã¸ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’é€ä¿¡ã—ã¾ã™ã€‚ - -上手ãã„ã‘ã°ã€èªè¨¼ã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã‚¢ã‚¯ã‚»ã‚¹ãƒˆãƒ¼ã‚¯ãƒ³ãŒãƒ¬ã‚¹ãƒãƒ³ã‚¹ã¨ã—ã¦å–å¾—ã§ãã¾ã™ã€‚ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™ï¼ - -アクセストークンãŒå–å¾—ã§ããŸã‚‰ã€*「ユーザーã®ã‚¢ã‚¯ã‚»ã‚¹ãƒˆãƒ¼ã‚¯ãƒ³+ã‚ãªãŸã®ã‚¢ãƒ—リã®ã‚·ãƒ¼ã‚¯ãƒ¬ãƒƒãƒˆã‚ーをsha256ã—ãŸã‚‚ã®ã€*ã‚’APIã‚ーã¨ã—ã¦ã€APIã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã§ãã¾ã™ã€‚ - -APIã‚ーã®ç”Ÿæˆæ–¹æ³•ã‚’擬似コードã§è¡¨ã™ã¨æ¬¡ã®ã‚ˆã†ã«ãªã‚Šã¾ã™: -\`\`\` js -const i = sha256(userToken + secretKey); -\`\`\` - + 'ja-JP': ` # Permissions |Permisson (kind)|Description|Endpoints| |:--|:--|:--|