mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-04 07:24:13 +00:00 
			
		
		
		
	Improve doc
This commit is contained in:
		
							parent
							
								
									47d4dcfdf5
								
							
						
					
					
						commit
						60c9a6528f
					
				
					 14 changed files with 52 additions and 12 deletions
				
			
		| 
						 | 
					@ -7,6 +7,7 @@ export type Param = {
 | 
				
			||||||
	validator: Context<any>;
 | 
						validator: Context<any>;
 | 
				
			||||||
	transform?: any;
 | 
						transform?: any;
 | 
				
			||||||
	default?: any;
 | 
						default?: any;
 | 
				
			||||||
 | 
						deprecated?: boolean;
 | 
				
			||||||
	desc?: { [key: string]: string };
 | 
						desc?: { [key: string]: string };
 | 
				
			||||||
	ref?: string;
 | 
						ref?: string;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,6 +21,20 @@ export const meta = {
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						res: {
 | 
				
			||||||
 | 
							type: 'object',
 | 
				
			||||||
 | 
							properties: {
 | 
				
			||||||
 | 
								token: {
 | 
				
			||||||
 | 
									type: 'string',
 | 
				
			||||||
 | 
									description: 'セッションのトークン'
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								url: {
 | 
				
			||||||
 | 
									type: 'string',
 | 
				
			||||||
 | 
									description: 'セッションのURL'
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	errors: {
 | 
						errors: {
 | 
				
			||||||
		noSuchApp: {
 | 
							noSuchApp: {
 | 
				
			||||||
			message: 'No such app.',
 | 
								message: 'No such app.',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,6 +29,21 @@ export const meta = {
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						res: {
 | 
				
			||||||
 | 
							type: 'object',
 | 
				
			||||||
 | 
							properties: {
 | 
				
			||||||
 | 
								accessToken: {
 | 
				
			||||||
 | 
									type: 'string',
 | 
				
			||||||
 | 
									description: 'ユーザーのアクセストークン',
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								user: {
 | 
				
			||||||
 | 
									type: 'User',
 | 
				
			||||||
 | 
									description: '認証したユーザー'
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	errors: {
 | 
						errors: {
 | 
				
			||||||
		noSuchApp: {
 | 
							noSuchApp: {
 | 
				
			||||||
			message: 'No such app.',
 | 
								message: 'No such app.',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,6 +41,7 @@ export const meta = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		media: {
 | 
							media: {
 | 
				
			||||||
			validator: $.optional.bool,
 | 
								validator: $.optional.bool,
 | 
				
			||||||
 | 
								deprecated: true,
 | 
				
			||||||
			desc: {
 | 
								desc: {
 | 
				
			||||||
				'ja-JP': 'ファイルが添付された投稿に限定するか否か (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
 | 
									'ja-JP': 'ファイルが添付された投稿に限定するか否か (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -138,6 +138,7 @@ export const meta = {
 | 
				
			||||||
		mediaIds: {
 | 
							mediaIds: {
 | 
				
			||||||
			validator: $.optional.arr($.type(ID)).unique().range(1, 4),
 | 
								validator: $.optional.arr($.type(ID)).unique().range(1, 4),
 | 
				
			||||||
			transform: transformMany,
 | 
								transform: transformMany,
 | 
				
			||||||
 | 
								deprecated: true,
 | 
				
			||||||
			desc: {
 | 
								desc: {
 | 
				
			||||||
				'ja-JP': '添付するファイル (このパラメータは廃止予定です。代わりに fileIds を使ってください。)'
 | 
									'ja-JP': '添付するファイル (このパラメータは廃止予定です。代わりに fileIds を使ってください。)'
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,6 +24,7 @@ export const meta = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		mediaOnly: {
 | 
							mediaOnly: {
 | 
				
			||||||
			validator: $.optional.bool,
 | 
								validator: $.optional.bool,
 | 
				
			||||||
 | 
								deprecated: true,
 | 
				
			||||||
			desc: {
 | 
								desc: {
 | 
				
			||||||
				'ja-JP': 'ファイルが添付された投稿に限定するか否か (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
 | 
									'ja-JP': 'ファイルが添付された投稿に限定するか否か (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -88,6 +88,7 @@ export const meta = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		mediaOnly: {
 | 
							mediaOnly: {
 | 
				
			||||||
			validator: $.optional.bool,
 | 
								validator: $.optional.bool,
 | 
				
			||||||
 | 
								deprecated: true,
 | 
				
			||||||
			desc: {
 | 
								desc: {
 | 
				
			||||||
				'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
 | 
									'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,6 +25,7 @@ export const meta = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		mediaOnly: {
 | 
							mediaOnly: {
 | 
				
			||||||
			validator: $.optional.bool,
 | 
								validator: $.optional.bool,
 | 
				
			||||||
 | 
								deprecated: true,
 | 
				
			||||||
			desc: {
 | 
								desc: {
 | 
				
			||||||
				'ja-JP': 'ファイルが添付された投稿に限定するか否か (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
 | 
									'ja-JP': 'ファイルが添付された投稿に限定するか否か (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -64,6 +64,7 @@ export const meta = {
 | 
				
			||||||
		media: {
 | 
							media: {
 | 
				
			||||||
			validator: $.optional.nullable.bool,
 | 
								validator: $.optional.nullable.bool,
 | 
				
			||||||
			default: null as any,
 | 
								default: null as any,
 | 
				
			||||||
 | 
								deprecated: true,
 | 
				
			||||||
			desc: {
 | 
								desc: {
 | 
				
			||||||
				'ja-JP': 'ファイルが添付された投稿に限定するか否か (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
 | 
									'ja-JP': 'ファイルが添付された投稿に限定するか否か (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -89,6 +89,7 @@ export const meta = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		mediaOnly: {
 | 
							mediaOnly: {
 | 
				
			||||||
			validator: $.optional.bool,
 | 
								validator: $.optional.bool,
 | 
				
			||||||
 | 
								deprecated: true,
 | 
				
			||||||
			desc: {
 | 
								desc: {
 | 
				
			||||||
				'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
 | 
									'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -98,6 +98,7 @@ export const meta = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		mediaOnly: {
 | 
							mediaOnly: {
 | 
				
			||||||
			validator: $.optional.bool,
 | 
								validator: $.optional.bool,
 | 
				
			||||||
 | 
								deprecated: true,
 | 
				
			||||||
			desc: {
 | 
								desc: {
 | 
				
			||||||
				'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
 | 
									'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -105,6 +105,7 @@ export const meta = {
 | 
				
			||||||
		mediaOnly: {
 | 
							mediaOnly: {
 | 
				
			||||||
			validator: $.optional.bool,
 | 
								validator: $.optional.bool,
 | 
				
			||||||
			default: false,
 | 
								default: false,
 | 
				
			||||||
 | 
								deprecated: true,
 | 
				
			||||||
			desc: {
 | 
								desc: {
 | 
				
			||||||
				'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
 | 
									'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,16 +3,16 @@ import config from '../../../config';
 | 
				
			||||||
export const description = `
 | 
					export const description = `
 | 
				
			||||||
## Usage
 | 
					## Usage
 | 
				
			||||||
**APIはすべてPOSTでリクエスト/レスポンスともにJSON形式です。**
 | 
					**APIはすべてPOSTでリクエスト/レスポンスともにJSON形式です。**
 | 
				
			||||||
一部のAPIは認証情報(アクセストークン)が必要です。リクエストの際に\`i\`というパラメータでアクセストークンを添付してください。
 | 
					一部のAPIはリクエストに認証情報(APIキー)が必要です。リクエストの際に\`i\`というパラメータでAPIキーを添付してください。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 自分のアカウントのアクセストークンを取得する
 | 
					### 自分のアカウントのAPIキーを取得する
 | 
				
			||||||
「設定 > API」で、自分のアクセストークンを取得できます。
 | 
					「設定 > API」で、自分のAPIキーを取得できます。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。
 | 
					> アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### アプリケーションとしてアクセストークンを取得する
 | 
					### アプリケーションとしてAPIキーを取得する
 | 
				
			||||||
直接ユーザーのアクセストークンをアプリケーションが扱うのはセキュリティ上のリスクがあるので、
 | 
					直接ユーザーのAPIキーをアプリケーションが扱うのはセキュリティ上のリスクがあるので、
 | 
				
			||||||
アプリケーションからAPIを利用する際には、アプリケーションとアプリケーションを利用するユーザーが結び付けられた専用のアクセストークンをMisskeyに発行してもらいます。
 | 
					アプリケーションからAPIを利用する際には、アプリケーションとアプリケーションを利用するユーザーが結び付けられた専用のAPIキーを発行します。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### 1.アプリケーションを登録する
 | 
					#### 1.アプリケーションを登録する
 | 
				
			||||||
まず、あなたのアプリケーションやWebサービス(以後、あなたのアプリと呼びます)をMisskeyに登録します。
 | 
					まず、あなたのアプリケーションやWebサービス(以後、あなたのアプリと呼びます)をMisskeyに登録します。
 | 
				
			||||||
| 
						 | 
					@ -25,8 +25,7 @@ export const description = `
 | 
				
			||||||
#### 2.ユーザーに認証させる
 | 
					#### 2.ユーザーに認証させる
 | 
				
			||||||
アプリを使ってもらうには、ユーザーにアカウントへのアクセスの許可をもらう必要があります。
 | 
					アプリを使ってもらうには、ユーザーにアカウントへのアクセスの許可をもらう必要があります。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
認証セッションを開始するには、[${config.apiUrl}/auth/session/generate](#operation/auth/session/generate) へパラメータに appSecret としてシークレットキーを含めたリクエストを送信します。
 | 
					認証セッションを開始するには、[${config.apiUrl}/auth/session/generate](#operation/auth/session/generate) へパラメータに\`appSecret\`としてシークレットキーを含めたリクエストを送信します。
 | 
				
			||||||
リクエスト形式はJSONで、メソッドはPOSTです。
 | 
					 | 
				
			||||||
レスポンスとして認証セッションのトークンや認証フォームのURLが取得できるので、認証フォームのURLをブラウザで表示し、ユーザーにフォームを提示してください。
 | 
					レスポンスとして認証セッションのトークンや認証フォームのURLが取得できるので、認証フォームのURLをブラウザで表示し、ユーザーにフォームを提示してください。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
あなたのアプリがコールバックURLを設定している場合、
 | 
					あなたのアプリがコールバックURLを設定している場合、
 | 
				
			||||||
| 
						 | 
					@ -34,14 +33,14 @@ export const description = `
 | 
				
			||||||
 | 
					
 | 
				
			||||||
あなたのアプリがコールバックURLを設定していない場合、ユーザーがあなたのアプリの連携を許可したことを(何らかの方法で(たとえばボタンを押させるなど))確認出来るようにしてください。
 | 
					あなたのアプリがコールバックURLを設定していない場合、ユーザーがあなたのアプリの連携を許可したことを(何らかの方法で(たとえばボタンを押させるなど))確認出来るようにしてください。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### 3.ユーザートークンを取得する
 | 
					#### 3.アクセストークンを取得する
 | 
				
			||||||
ユーザーが連携を許可したら、[${config.apiUrl}/auth/session/userkey](#operation/auth/session/userkey) へリクエストを送信します。
 | 
					ユーザーが連携を許可したら、[${config.apiUrl}/auth/session/userkey](#operation/auth/session/userkey) へリクエストを送信します。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
上手くいけば、認証したユーザーのユーザートークンがレスポンスとして取得できます。おめでとうございます!
 | 
					上手くいけば、認証したユーザーのアクセストークンがレスポンスとして取得できます。おめでとうございます!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ユーザートークンが取得できたら、*「ユーザーのユーザートークン+あなたのアプリのシークレットキーをsha256したもの」*をアクセストークンとして、APIにリクエストできます。
 | 
					アクセストークンが取得できたら、*「ユーザーのアクセストークン+あなたのアプリのシークレットキーをsha256したもの」*をAPIキーとして、APIにリクエストできます。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
アクセストークンの生成方法を擬似コードで表すと次のようになります:
 | 
					APIキーの生成方法を擬似コードで表すと次のようになります:
 | 
				
			||||||
\`\`\` js
 | 
					\`\`\` js
 | 
				
			||||||
const i = sha256(userToken + secretKey);
 | 
					const i = sha256(userToken + secretKey);
 | 
				
			||||||
\`\`\`
 | 
					\`\`\`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -56,6 +56,7 @@ export function genOpenapiSpec(lang = 'ja-JP') {
 | 
				
			||||||
		return {
 | 
							return {
 | 
				
			||||||
			description: (param.data || {}).desc,
 | 
								description: (param.data || {}).desc,
 | 
				
			||||||
			default: (param.data || {}).default,
 | 
								default: (param.data || {}).default,
 | 
				
			||||||
 | 
								deprecated: (param.data || {}).deprecated,
 | 
				
			||||||
			...((param.data || {}).default ? { default: (param.data || {}).default } : {}),
 | 
								...((param.data || {}).default ? { default: (param.data || {}).default } : {}),
 | 
				
			||||||
			type: param.name === 'ID' ? 'string' : param.name.toLowerCase(),
 | 
								type: param.name === 'ID' ? 'string' : param.name.toLowerCase(),
 | 
				
			||||||
			...(param.name === 'ID' ? { example: 'xxxxxxxxxxxxxxxxxxxxxxxx', format: 'id' } : {}),
 | 
								...(param.name === 'ID' ? { example: 'xxxxxxxxxxxxxxxxxxxxxxxx', format: 'id' } : {}),
 | 
				
			||||||
| 
						 | 
					@ -97,6 +98,7 @@ export function genOpenapiSpec(lang = 'ja-JP') {
 | 
				
			||||||
			for (const [k, v] of Object.entries(endpoint.meta.params)) {
 | 
								for (const [k, v] of Object.entries(endpoint.meta.params)) {
 | 
				
			||||||
				if (v.validator.data == null) v.validator.data = {};
 | 
									if (v.validator.data == null) v.validator.data = {};
 | 
				
			||||||
				if (v.desc) v.validator.data.desc = v.desc[lang];
 | 
									if (v.desc) v.validator.data.desc = v.desc[lang];
 | 
				
			||||||
 | 
									if (v.deprecated) v.validator.data.deprecated = v.deprecated;
 | 
				
			||||||
				if (v.default) v.validator.data.default = v.default;
 | 
									if (v.default) v.validator.data.default = v.default;
 | 
				
			||||||
				porops[k] = v.validator;
 | 
									porops[k] = v.validator;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue