メインコンテンツまでスキップ
バージョン: 0.13.0 (Previous)

📐 認証スキーマ

スキーマはエンドポイントの検証とOpenAPIメタデータを定義します。セットアップとHTTPワークフローから始めて、このページでリクエスト契約の詳細を確認してください。対応するフィーチャーが各スキーマとルートを構成します。transport固有の更新・ログアウト動作にはCookieユーティリティをご利用ください。

インベントリ​

エクスポートリクエスト場所契約内容
passwordSchemaN/ASDKのパスワードパターンを使用する再利用可能なパスワードオブジェクト。
providerSchemaN/A再利用可能な provider および providerId オブジェクト。
credentialsSchemaN/A再利用可能なメール/パスワード認証情報オブジェクト。
identitySchemaBody認証情報またはプロバイダーのID JSON。
loginWithCredentialsSchemaBodyオプションのボディフィンガープリント付き認証情報ログイン。
resendMfaCodeSchemaBodyMFAチャレンジトークン。
verifyMfaCodeSchemaBodyMFAチャレンジトークンとコード。
loginWithOnetimeTokenSchemaBodyワンタイムログイントークン。
registerCredentialsSchemaBody登録認証情報とオプションの招待トークン。
sendVerificationEmailSchemaPath, bodyIDとオプションのボディフィンガープリント。
confirmEmailSchemaBodyメール確認トークン。
changeEmailSchemaPath, bodyIDと新しいメール; ソースヘッダーパラメータはコメントアウト済み。
checkTokenSchemaBodyトークンとオプションの预期ターゲット。
confirmNewEmailSchemaBodyメール変更トークン; ソースヘッダーパラメータはコメントアウト済み。
sendResetPasswordLinkEmailSchemaBodyメールアドレス; ソースヘッダーパラメータはコメントアウト済み。
completePasswordResetSchemaBody新規パスワード; ランタイムではスキーマで検証されないAuthorizationヘッダーが必要です。
changePasswordSchemaPath, bodyID、現在のパスワード、および新規パスワード。
deactivateSchemaBody無効化するID。
activateSchemaBody有効化するID。
refreshTokenCookieSchemaBodyCookieモード用の空のボディ更新。
refreshTokenBearerSchemaBodyBearerモード用更新トークン。
refreshTokenSchemaBodyrefreshTokenBearerSchema の非推奨エイリアス。
logoutCookieSchemaBodyCookieモード用の空のボディログアウト。
logoutBearerSchemaBodyログアウトに使用するBearerモードの更新トークン。
deleteRefreshTokensSchemaPath更新レコードを取り消すID。
共有ソースコンテキストを表示
import {OpenAPIParameter, SchemaDefinition, withSchema} from '../primitives';

const identityIdPathParameter: OpenAPIParameter = {
in: 'path',
name: 'identityId',
required: true,
schema: {
type: 'string',
},
};

const hostHeaderParameter: OpenAPIParameter = {
in: 'header',
name: 'host',
required: true,
schema: {
type: 'string',
},
};

const userAgentHeaderParameter: OpenAPIParameter = {
in: 'header',
name: 'user-agent',
required: true,
schema: {
type: 'string',
},
};

const fingerprintHeaderParameter: OpenAPIParameter = {
in: 'header',
name: 'x-nb-fingerprint',
required: false,
schema: {
type: 'string',
},
};

const authorizationHeaderParameter: OpenAPIParameter = {
in: 'header',
name: 'Authorization',
required: true,
schema: {
type: 'string',
},
};

const defaultPasswordPattern = '^(?=.*[a-z])(?=.*[0-9])[A-Za-z0-9.?/_-]{8,24}$';

詳細​

passwordSchema​

定義

additionalProperties: false の再利用可能オブジェクト。フィールド: password は ^(?=.*[a-z])(?=.*[0-9])[A-Za-z0-9.?/_-]{8,24}$ に一致するオプションの文字列です。completePasswordResetSchema で展開されます。ルートやフィーチャーからは直接構成されません。

完全なソースを表示
export const passwordSchema: SchemaDefinition = {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {
password: {
pattern: defaultPasswordPattern,
type: 'string',
},
},
type: 'object',
};

providerSchema​

定義

additionalProperties: false の再利用可能オブジェクト。フィールド: オプションの文字列 provider とオプションの文字列 providerId を持つ; 再利用可能な定義には required 配列はありません。identitySchema で展開されます。ルートやフィーチャーからは直接構成されません。

完全なソースを表示
export const providerSchema: SchemaDefinition = {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {
provider: {type: 'string'},
providerId: {type: 'string'},
},
type: 'object',
};

credentialsSchema​

定義

additionalProperties: false の再利用可能オブジェクトです。ソース順のフィールドは、必須文字列の email、既定値が false の任意の真偽値 emailVerified、必須文字列の password です。identitySchema で展開され、ルートまたはフィーチャーが直接合成することはありません。

完全なソースを表示
export const credentialsSchema: SchemaDefinition = {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {
email: {type: 'string'},
emailVerified: {default: false, type: 'boolean'},
password: {type: 'string'},
},
required: ['email', 'password'],
type: 'object',
};

identitySchema​

定義

追加プロパティを許可せず、email と password、または provider と providerId のいずれかを受け取ることを意図した必須の application/json 本文です。ソースでは完全な credentialsSchema を展開してから providerSchema を展開するため、後者が properties を含む重複する最上位キーを上書きします。このエクスポートは現在、認証フィーチャーまたはルートでは合成されません。

完全なソースを表示
export const identitySchema = withSchema({
requestBody: {
content: {
'application/json': {
schema: {
...credentialsSchema,
...providerSchema,
oneOf: [{required: ['email', 'password']}, {required: ['provider', 'providerId']}],
required: [],
},
},
},
required: true,
},
});

loginWithCredentialsSchema​

定義

additionalProperties: false を持つ必須の application/json 本文です。必須文字列の email と password、任意の文字列 fingerprint を含みます。使用するルート: loginWithCredentialsRoute。使用するフィーチャー: loginWithCredentialsFeature。

完全なソースを表示
export const loginWithCredentialsSchema = withSchema({
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {
email: {type: 'string'},
fingerprint: {type: 'string'},
password: {type: 'string'},
},
required: ['email', 'password'],
type: 'object',
},
},
},
required: true,
},
});

resendMfaCodeSchema​

定義

additionalProperties: false と必須文字列フィールド token を 1 つ持つ、必須の application/json 本文です。使用するルート: resendMfaCodeRoute。使用するフィーチャー: resendMfaCodeFeature。

完全なソースを表示
export const resendMfaCodeSchema = withSchema({
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {
token: {
type: 'string',
},
},
required: ['token'],
type: 'object',
},
},
},
required: true,
},
});

verifyMfaCodeSchema​

定義

additionalProperties: false を持つ必須の application/json 本文です。ソースのプロパティ順は必須文字列 code、続いて必須文字列 token であり、required 配列は ['token', 'code'] です。使用するルート: verifyMfaCodeRoute。使用するフィーチャー: verifyMfaCodeFeature。

完全なソースを表示
export const verifyMfaCodeSchema = withSchema({
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {
code: {type: 'string'},
token: {type: 'string'},
},
required: ['token', 'code'],
type: 'object',
},
},
},
required: true,
},
});

loginWithOnetimeTokenSchema​

定義

additionalProperties: false と必須文字列 token を持つ、必須の application/json 本文です。使用するルート: loginWithOnetimeTokenRoute。使用するフィーチャー: loginWithOnetimeTokenFeature。

完全なソースを表示
export const loginWithOnetimeTokenSchema = withSchema({
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {
token: {type: 'string'},
},
required: ['token'],
type: 'object',
},
},
},
required: true,
},
});

registerCredentialsSchema​

定義

additionalProperties: false を持つ必須の application/json 本文です。文字列フィールドは email、password、token です。password は常に必須であり、oneOf は email と password、または token と password のいずれかを追加で必須にします。使用するルート: registerCredentialsRoute。使用するフィーチャー: registerCredentialsFeature。

完全なソースを表示
export const registerCredentialsSchema = withSchema({
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
oneOf: [{required: ['email', 'password']}, {required: ['token', 'password']}],
properties: {
email: {type: 'string'},
password: {type: 'string'},
token: {type: 'string'},
},
required: ['password'],
type: 'object',
},
},
},
required: true,
},
});

sendVerificationEmailSchema​

定義

必須文字列パスパラメーター identityId と、任意の文字列 fingerprint のみを許可する必須の application/json 本文を持ちます。本文オブジェクト自体も必須です。使用するルート: sendVerificationEmailRoute。使用するフィーチャー: emailVerificationFeature。

完全なソースを表示
export const sendVerificationEmailSchema = withSchema({
parameters: [{...identityIdPathParameter}],
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {
fingerprint: {type: 'string'},
},
type: 'object',
},
},
},
required: true,
},
});

confirmEmailSchema​

定義

additionalProperties: false と必須文字列 token を持つ、必須の application/json 本文です。使用するルート: confirmEmailRoute。使用するフィーチャー: confirmEmailFeature。

完全なソースを表示
export const confirmEmailSchema = withSchema({
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {
token: {type: 'string'},
},
required: ['token'],
type: 'object',
},
},
},
required: true,
},
});

changeEmailSchema​

定義

必須文字列パスパラメーター identityId と、追加プロパティを許可しない必須の application/json 本文を持ちます。本文フィールド email は minLength: 1 とパターン \S を持つ必須文字列です。host、user-agent、fingerprint パラメーターはコメントアウトされており、スキーマで検証されません。使用するルート: changeEmailRoute。使用するフィーチャー: changeEmailFeature。

完全なソースを表示
export const changeEmailSchema = withSchema({
parameters: [
{...identityIdPathParameter},
// TODO: uncomment when withSchema can accept headers
// { ...hostHeaderParameter },
// { ...userAgentHeaderParameter },
// { ...fingerprintHeaderParameter },
],
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {
email: {minLength: 1, pattern: '\\S', type: 'string'},
},
required: ['email'],
type: 'object',
},
},
},
required: true,
},
});

checkTokenSchema​

定義

additionalProperties: false を持つ必須の application/json 本文です。任意の文字列 target の後に必須文字列 token を置きます。使用するルート: checkTokenRoute。使用するフィーチャー: checkTokenFeature。

完全なソースを表示
export const checkTokenSchema = withSchema({
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {
target: {type: 'string'},
token: {type: 'string'},
},
required: ['token'],
type: 'object',
},
},
},
required: true,
},
});

confirmNewEmailSchema​

定義

必須文字列 token のみを許可する application/json 本文です。リクエスト本文ラッパー自体は必須としてマークされません。host、user-agent、fingerprint パラメーターはコメントアウトされています。使用するルート: confirmNewEmailRoute。使用するフィーチャー: confirmNewEmailFeature。

完全なソースを表示
export const confirmNewEmailSchema = withSchema({
// TODO: uncomment when withSchema can accept headers
// parameters: [
// // { ...hostHeaderParameter },
// // { ...userAgentHeaderParameter },
// // { ...fingerprintHeaderParameter },
// ],
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {token: {type: 'string'}},
required: ['token'],
type: 'object',
},
},
},
},
});

sendResetPasswordLinkEmailSchema​

定義

minLength: 1 とパターン \S を持つ必須文字列 email のみを許可する application/json 本文です。リクエスト本文ラッパー自体は必須としてマークされません。host、user-agent、fingerprint パラメーターはコメントアウトされています。使用するルート: sendResetPasswordLinkEmailRoute。使用するフィーチャー: sendResetPasswordLinkEmailFeature。

完全なソースを表示
export const sendResetPasswordLinkEmailSchema = withSchema({
// TODO: uncomment when withSchema can accept headers
// parameters: [
// // { ...hostHeaderParameter },
// // { ...userAgentHeaderParameter },
// // { ...fingerprintHeaderParameter },
// ],
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {
email: {minLength: 1, pattern: '\\S', type: 'string'},
},
required: ['email'],
type: 'object',
},
},
},
},
});

completePasswordResetSchema​

定義

application/json 本文は passwordSchema を展開し、password を必須にします。ソースは host、user-agent、fingerprint、Authorization の項目がコメントアウトされているため、空の parameters 配列を宣言します。実行時は引き続き Authorization: Bearer <token> からリセットトークンを読み取ります。使用するルート: completePasswordResetRoute。使用するフィーチャー: completePasswordResetFeature。

完全なソースを表示
export const completePasswordResetSchema = withSchema({
// TODO: uncomment when withSchema can accept headers
parameters: [
// { ...hostHeaderParameter },
// { ...userAgentHeaderParameter },
// { ...fingerprintHeaderParameter },
// { ...authorizationHeaderParameter },
],
requestBody: {
content: {
'application/json': {
schema: {
...passwordSchema,
required: ['password'],
},
},
},
},
});

changePasswordSchema​

定義

必須文字列パスパラメーター identityId を持ちます。application/json 本文は追加プロパティを許可せず、password(\S に一致する空でない文字列)と newPassword(既定のパスワードパターンに一致する文字列)を必須とします。本文ラッパー自体は必須としてマークされません。使用するルート: changePasswordRoute。使用するフィーチャー: changePasswordFeature。

完全なソースを表示
export const changePasswordSchema = withSchema({
parameters: [{...identityIdPathParameter}],
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {
newPassword: {
pattern: defaultPasswordPattern,
type: 'string',
},
password: {minLength: 1, pattern: '\\S', type: 'string'},
},
required: ['password', 'newPassword'],
type: 'object',
},
},
},
},
});

deactivateSchema​

定義

minLength: 1 とパターン \S を持つ必須文字列 identityId のみを許可する application/json 本文です。本文ラッパー自体は必須としてマークされません。host、user-agent、fingerprint、Authorization パラメーターはコメントアウトされています。使用するルート: deactivateRoute。使用するフィーチャー: deactivateFeature。

完全なソースを表示
export const deactivateSchema = withSchema({
parameters: [
// { ...hostHeaderParameter },
// { ...userAgentHeaderParameter },
// { ...fingerprintHeaderParameter },
// { ...authorizationHeaderParameter },
],
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {
identityId: {minLength: 1, pattern: '\\S', type: 'string'},
},
required: ['identityId'],
type: 'object',
},
},
},
},
});

activateSchema​

定義

minLength: 1 とパターン \S を持つ必須文字列 identityId のみを許可する application/json 本文です。本文ラッパー自体は必須としてマークされません。使用するルート: activateRoute。使用するフィーチャー: activateFeature。

完全なソースを表示
export const activateSchema = withSchema({
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {
identityId: {minLength: 1, pattern: '\\S', type: 'string'},
},
required: ['identityId'],
type: 'object',
},
},
},
},
});

refreshTokenCookieSchema​

定義

オプションの application/json Bodyで、スキーマはプロパティなしのオブジェクトかつ additionalProperties: false です。使用されるルート: refreshTokenRoute。 選択されるフィーチャー: refreshTokenFeature(authMode が 'cookie' の場合)。

完全なソースを表示
export const refreshTokenCookieSchema = withSchema({
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {},
type: 'object',
},
},
},
},
});

refreshTokenBearerSchema​

定義

必須の文字列 refreshToken のみ允许する application/json Body; ボディラッパーは必須としてマークされません。使用されるルート: refreshRoute。 選択されるフィーチャー: refreshFeature Cookieモード以外。

完全なソースを表示
export const refreshTokenBearerSchema = withSchema({
// TODO: uncomment when withSchema can accept headers
// parameters: [
// // { ...hostHeaderParameter },
// // { ...userAgentHeaderParameter },
// // { ...fingerprintHeaderParameter },
// ],
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {refreshToken: {type: 'string'}},
required: ['refreshToken'],
type: 'object',
},
},
},
},
});

refreshTokenSchema​

定義

refreshTokenBearerSchema の非推奨の正確なエイリアスです。フィールドは追加されず、現在のAuthenticationフィーチャーやルートによって構成されることもありません。

完全なソースを表示
export const refreshTokenSchema = refreshTokenBearerSchema;

logoutCookieSchema​

定義

オプションの application/json Bodyで、スキーマはプロパティなしのオブジェクトかつ additionalProperties: false です。使用されるルート: logoutRoute。 選択されるフィーチャー: logoutFeature(authMode が 'cookie' の場合)。

完全なソースを表示
export const logoutCookieSchema = withSchema({
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {},
type: 'object',
},
},
},
},
});

logoutBearerSchema​

定義

必須の文字列 refreshToken のみ允许する application/json Body; ボディラッパーは必須としてマークされません。使用されるルート: logoutRoute。 選択されるフィーチャー: logoutFeature Cookieモード以外。

完全なソースを表示
export const logoutBearerSchema = withSchema({
requestBody: {
content: {
'application/json': {
schema: {
$schema: 'http://json-schema.org/draft-07/schema#',
additionalProperties: false,
properties: {refreshToken: {type: 'string'}},
required: ['refreshToken'],
type: 'object',
},
},
},
},
});

deleteRefreshTokensSchema​

定義

必須の文字列パスパラメータ identityId が1つあります。コメントアウトされているhost、user-agent、fingerprintパラメータはスキーマで検証されません。使用されるルート: deleteRefreshTokensRoute。 使用されるフィーチャー: deleteRefreshTokensFeature。

完全なソースを表示
export const deleteRefreshTokensSchema = withSchema({
// TODO: uncomment when withSchema can accept headers
// parameters: [
// // { ...hostHeaderParameter },
// // { ...userAgentHeaderParameter },
// // { ...fingerprintHeaderParameter },
// ],

parameters: [{...identityIdPathParameter}],
});