diff --git a/src/docs/api.ja-JP.md b/src/docs/api.ja-JP.md index b8e84e670..6e1eba065 100644 --- a/src/docs/api.ja-JP.md +++ b/src/docs/api.ja-JP.md @@ -1,80 +1,3 @@ # Misskey API -MisskeyのWeb APIを使って、プログラムからMisskeyの様々な機能にアクセスすることができます。 -APIを自分のアカウントから利用する場合(自分のアカウントのみ操作したい場合)と、アプリケーションから利用する場合(不特定のアカウントを操作したい場合)とで利用手順が異なりますので、それぞれのケースについて説明します。 - -## 自分の所有するアカウントからAPIにアクセスする場合 -「設定 > API」で、APIにアクセスするのに必要なAPIキーを取得してください。 -APIにアクセスする際には、リクエストにAPIキーを「i」というパラメータ名で含めます。 - -
アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。
-アクセストークンは、ユーザーが自分のアカウントにあなたのアプリケーションがアクセスすることを許可した場合のみ発行されます
-アプリに成りすまされる可能性があるため、極力このシークレットキーは公開しないようにしてください。
-const i = sha256(accessToken + secretKey);
-
-APIの詳しい使用法は「Misskey APIの利用」セクションをご覧ください。
-
-## Misskey APIの利用
-APIはすべてリクエストのパラメータ・レスポンスともにJSON形式です。また、すべてのエンドポイントはPOSTメソッドのみ受け付けます。
-
-ストリーミングAPIも提供しています。
-
-[APIリファレンス](/api-doc)もご確認ください。
-
-### レートリミット
-Misskey APIにはレートリミットがあり、短時間のうちに多数のリクエストを送信すると、一定時間APIを利用することができなくなることがあります。
+[APIリファレンス](/api-doc)
diff --git a/src/server/api/gen-openapi-spec.ts b/src/server/api/gen-openapi-spec.ts
index 59dc63228..5c460d0da 100644
--- a/src/server/api/gen-openapi-spec.ts
+++ b/src/server/api/gen-openapi-spec.ts
@@ -267,6 +267,65 @@ const schemas = {
}
};
+const desc = `
+## Usage
+APIはすべてPOSTでリクエスト/レスポンスともにJSON形式です。
+一部のAPIは認証情報(アクセストークン)が必要です。リクエストの際に\`i\`というパラメータでアクセストークンを添付してください。
+
+### アクセストークンを取得する
+#### 自分のアカウントのアクセストークンを取得する
+「設定 > API」で、自分のアクセストークンを取得できます。
+
+> アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。
+
+### アプリケーションとしてアクセストークンを取得する
+直接ユーザーのアクセストークンをアプリケーションが扱うのは危険なので、
+アプリケーションからAPIを利用する際には、アプリケーションとアプリケーションを利用するユーザーが結び付けられた専用のアクセストークンをMisskeyに発行してもらいます。
+
+#### 1.アプリケーションを登録する
+まず、あなたのアプリケーションやWebサービス(以後、あなたのアプリと呼びます)をMisskeyに登録します。
+[デベロッパーセンター](/dev)にアクセスし、「アプリ > アプリ作成」からアプリを作成してください。
+フォームの記入欄の説明は以下の通りです:
+
+| 名前 | 説明 |
+|---|---|
+| アプリケーション名 | あなたのアプリの名称。 |
+| アプリの概要 | あなたのアプリの簡単な説明や紹介。 |
+| コールバックURL | ユーザーが後述する認証フォームで認証を終えた際にリダイレクトするURLを設定できます。あなたのアプリがWebサービスである場合に有用です。 |
+| 権限 | あなたのアプリが要求する権限。ここで要求した機能だけがAPIからアクセスできます。 |
+
+登録が済むとあなたのアプリのシークレットキーが入手できます。このシークレットキーは後で使用します。
+
+> アプリに成りすまされる可能性があるため、極力このシークレットキーは公開しないようにしてください。
+
+#### 2.ユーザーに認証させる
+アプリを使ってもらうには、ユーザーにアカウントへのアクセスの許可をもらう必要があります。
+
+認証セッションを開始するには、%API_URL%/auth/session/generate へパラメータに appSecret としてシークレットキーを含めたリクエストを送信します。
+リクエスト形式はJSONで、メソッドはPOSTです。
+レスポンスとして認証セッションのトークンや認証フォームのURLが取得できるので、認証フォームのURLをブラウザで表示し、ユーザーにフォームを提示してください。
+
+あなたのアプリがコールバックURLを設定している場合、
+ユーザーがあなたのアプリの連携を許可すると設定しているコールバックURLに token という名前でセッションのトークンが含まれたクエリを付けてリダイレクトします。
+
+あなたのアプリがコールバックURLを設定していない場合、ユーザーがあなたのアプリの連携を許可したことを(何らかの方法で(たとえばボタンを押させるなど))確認出来るようにしてください。
+
+#### 3.ユーザートークンを取得する
+ユーザーが連携を許可したら、%API_URL%/auth/session/userkey へ次のパラメータを含むリクエストを送信します:
+
+| 名前 | 型 | 説明 |
+|---|---|---|
+| appSecret | string | アプリのシークレットキー |
+| token | string | セッションのトークン |
+
+上手くいけば、認証したユーザーのユーザートークンがレスポンスとして取得できます。おめでとうございます!
+
+ユーザートークンが取得できたら、「ユーザーのユーザートークン+あなたのアプリのシークレットキーをsha256したもの」をアクセストークンとして、APIにリクエストできます。
+
+アクセストークンの生成方法を擬似コードで表すと次のようになります:
+const i = sha256(userToken + secretKey);
+`;
+
export function genOpenapiSpec(lang = 'ja-JP') {
const spec = {
openapi: '3.0.0',
@@ -274,10 +333,15 @@ export function genOpenapiSpec(lang = 'ja-JP') {
info: {
version: 'v1',
title: 'Misskey API',
- description: 'Misskey is a decentralized microblogging platform.',
+ description: '**Misskey is a decentralized microblogging platform.**\n\n' + desc,
'x-logo': { url: '/assets/api-doc.png' }
},
+ externalDocs: {
+ description: 'Repository',
+ url: 'https://github.com/syuilo/misskey'
+ },
+
servers: [{
url: config.api_url
}],