sharkey/src/server/api/openapi/description.ts

64 lines
4.1 KiB
TypeScript
Raw Normal View History

2019-02-24 12:40:17 +09:00
import config from '../../../config';
import { IKindInfo, kinds } from '../kinds';
export function getDescription(lang = 'ja-JP'): string {
const permissionTable = (Object.entries(kinds()) as [string, IKindInfo][])
.map(e => `|${e[0]}|${e[1].descs[lang]}|${e[1].endpoints.map(f => `[${f}](#operation/${f})`).join(', ')}|`)
.join('\n');
const descriptions = {
'ja-JP': `**Misskey is a decentralized microblogging platform.**
2019-02-24 12:40:17 +09:00
2019-02-24 04:08:08 +09:00
## Usage
2019-02-24 04:11:54 +09:00
**APIはすべてPOSTでリクエスト/JSON形式です**
2019-02-25 04:18:09 +09:00
APIはリクエストに認証情報(APIキー)\`i\`というパラメータでAPIキーを添付してください。
2019-02-24 04:08:08 +09:00
2019-02-25 04:18:09 +09:00
### APIキーを取得する
> APIAPIキーを取得できます
2019-02-24 04:08:08 +09:00
> ()
2019-02-25 04:18:09 +09:00
### APIキーを取得する
APIキーをアプリケーションが扱うのはセキュリティ上のリスクがあるので
APIを利用する際にはAPIキーを発行します
2019-02-24 04:08:08 +09:00
#### 1.
Webサービス()Misskeyに登録します
[](/dev) >
使
> </p>
#### 2.
使
2019-02-25 04:18:09 +09:00
[${config.apiUrl}/auth/session/generate](#operation/auth/session/generate) \`appSecret\`としてシークレットキーを含めたリクエストを送信します。
2019-02-24 04:08:08 +09:00
URLが取得できるのでURLをブラウザで表示し
URLを設定している場合
2019-02-24 12:40:17 +09:00
URLに\`token\`という名前でセッションのトークンが含まれたクエリを付けてリダイレクトします。
2019-02-24 04:08:08 +09:00
URLを設定していない場合(())
2019-02-25 04:18:09 +09:00
#### 3.
2019-02-24 12:53:22 +09:00
[${config.apiUrl}/auth/session/userkey](#operation/auth/session/userkey)
2019-02-24 04:08:08 +09:00
2019-02-25 04:18:09 +09:00
2019-02-24 04:08:08 +09:00
2019-02-25 04:18:09 +09:00
*+sha256したもの*APIキーとしてAPIにリクエストできます
2019-02-24 04:08:08 +09:00
2019-02-25 04:18:09 +09:00
APIキーの生成方法を擬似コードで表すと次のようになります:
2019-02-24 12:40:17 +09:00
\`\`\` js
const i = sha256(userToken + secretKey);
\`\`\`
## Permissions
|Permisson (kind)|Description|Endpoints|
|:--|:--|:--|
${permissionTable}
`
} as { [x: string]: string };
return lang in descriptions ? descriptions[lang] : descriptions['ja-JP'];
}