🔍 チャットスキーマブロック
チャットスキーマブロックは、Nodeblocksアプリケーションにおけるチャットデータ検証のためのJSONスキーマ定義を提供します。これらのスキーマは、データ整合性を確保し、チャット関連のAPIエンドポイントの明確な契約を提供します。
🎯 概要
チャットスキーマブロックは以下を目的として設計されています:
- 処理前のチャットデータの検証
- リアルタイム通信のメッセージ構造サポート
- チャンネル管理と階層構成の処理
- サブスクリプション管理と通知システムの実現
- メッセージ履歴と検索機能のサポート
- マルチチャンネルアーキテクチャの提供
📋 チャットスキーマ種類
チャンネルスキーマ
チャットチャンネル管理のためのスキーマ。
メッセージスキーマ
チャットメッセージと通信のためのスキーマ。
サブスクリプションスキーマ
通知とサブスクリプション管理のためのスキーマ。
🔧 利用可能なチャットスキーマ
chatChannelSchema
コアチャンネルフィールド付きベースチャットチャンネルスキーマ。
目的: チャット機能のためのベースチャンネル構造を定義
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし(ベーススキーマ)
- 追加プロパティ:
false
(厳密な検証) - プロパティ:
name?: string
- チャンネル名ownerId?: string
- チャンネルオーナーユーザーID
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { chatChannelSchema } = schemas;
const schema = chatChannelSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
name: '一般チャット',
ownerId: 'user123'
});
createChatChannelSchema
必須の名前とオーナー付きチャットチャンネル作成スキーマ。
目的: 作成時のチャンネルデータを検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
name
,ownerId
- 追加プロパティ:
false
(厳密な検証) - コンテンツタイプ:
application/json
- リクエストボディ:
required
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { createChatChannelSchema } = schemas;
const schema = createChatChannelSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
name: '一般チャット',
ownerId: 'user123'
});
updateChatChannelSchema
チャンネル変更のためのオプションフィールド付きチャットチャンネル更新スキーマ。
目的: 部分的なチャンネルデータ更新を検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし(すべてのフィールドがオプション)
- 追加プロパティ:
false
(厳密な検証) - コンテンツタイプ:
application/json
- パラメータ:
channelId
(パスパラメータ) - リクエストボディ:
required
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { updateChatChannelSchema } = schemas;
const schema = updateChatChannelSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ name: '更新されたチャンネル名' });
getChatChannelSchema
単一チャンネル取得のためのチャットチャンネル取得スキーマ。
目的: 特定チャットチャンネル取得リクエストを検証
スキーマ詳細:
- パラメータ:
channelId
(パスパラメータ) - 目的: 特定チャットチャンネル取得リクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { getChatChannelSchema } = schemas;
const schema = getChatChannelSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ channelId: 'channel123' });
deleteChatChannelSchema
チャンネル削除のためのチャットチャンネル削除スキーマ。
目的: 特定チャットチャンネル削除リクエストを検証
スキーマ詳細:
- パラメータ:
channelId
(パスパラメータ) - 目的: 特定チャットチャンネル削除リクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteChatChannelSchema } = schemas;
const schema = deleteChatChannelSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ channelId: 'channel123' });
findChatChannelsSchema
フィルタリングとページネーション付きチャットチャンネル検索スキーマ。
目的: チャットチャンネルの検索とページングリクエストを検証
スキーマ詳細:
- クエリパラメータ:
name?: string
- チャンネル名でのフィルタownerId?: string
- オーナーでのフィルタpage?: number
- ページネーションのページ番号limit?: number
- ページネーションの制限
- 目的: チャットチャンネルの検索とページングリクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { findChatChannelsSchema } = schemas;
const schema = findChatChannelsSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ name: '一般', page: 1, limit: 10 });
💬 メッセージスキーマ
chatMessageSchema
コアメッセージフィールド付きベースチャットメッセージスキーマ。
目的: チャット機能のためのベースメッセージ構造を定義
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし(ベーススキーマ)
- 追加プロパティ:
false
(厳密な検証) - プロパティ:
content?: string
- メッセージ内容senderId?: string
- メッセージ送信者ユーザーIDtitle?: string
- メッセージタイトル
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { chatMessageSchema } = schemas;
const schema = chatMessageSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
content: 'こんにちは世界!',
senderId: 'user123',
title: '挨拶'
});
createChatMessageSchema
必須のコンテンツ、送信者、チャンネル付きチャットメッセージ作成スキーマ。
目的: 作成時のメッセージデータを検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
content
,senderId
,channelId
- オプションフィールド:
title
- 追加プロパティ:
false
(厳密な検証) - コンテンツタイプ:
application/json
- リクエストボディ:
required
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { createChatMessageSchema } = schemas;
const schema = createChatMessageSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
content: 'こんにちは世界!',
senderId: 'user123',
channelId: 'channel456'
});
updateChatMessageSchema
メッセージ変更のためのオプションフィールド付きチャットメッセージ更新スキーマ。
目的: 部分的なメッセージデータ更新を検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし(すべてのフィールドがオプション)
- 追加プロパティ:
false
(厳密な検証) - コンテンツタイプ:
application/json
- パラメータ:
messageId
(パスパラメータ) - リクエストボディ:
required
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { updateChatMessageSchema } = schemas;
const schema = updateChatMessageSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ content: '更新されたメッセージ内容' });
getChatMessageSchema
単一メッセージ取得のためのチャットメッセージ取得スキーマ。
目的: 特定チャットメッセージ取得リクエストを検証
スキーマ詳細:
- パラメータ:
messageId
(パスパラメータ) - 目的: 特定チャットメッセージ取得リクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { getChatMessageSchema } = schemas;
const schema = getChatMessageSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ messageId: 'message123' });
deleteChatMessageSchema
メッセージ削除のためのチャットメッセージ削除スキーマ。
目的: 特定チャットメッセージ削除リクエストを検証
スキーマ詳細:
- パラメータ:
messageId
(パスパラメータ) - 目的: 特定チャットメッセージ削除リクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteChatMessageSchema } = schemas;
const schema = deleteChatMessageSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ messageId: 'message123' });
findChatMessagesSchema
フィルタリングとページネーション付きチャットメッセージ検索スキーマ。
目的: 特定チャンネル内でのチャットメッセージの検索とページングリクエストを検証
スキーマ詳細:
- クエリパラメータ:
channelId: string
- 必須のチャンネルでのフィルタcontent?: string
- オプションのメッセージ内容でのフィルタsenderId?: string
- オプションの送信者でのフィルタtitle?: string
- オプションのメッセージタイトルでのフィルタpage?: number
- ページネーションのページ番号limit?: number
- ページネーションの制限
- 目的: チャットメッセージの検索とページングリクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { findChatMessagesSchema } = schemas;
const schema = findChatMessagesSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
channelId: 'channel123',
senderId: 'user123',
page: 1,
limit: 10
});
🔔 サブスクリプションスキーマ
chatSubscriptionSchema
コアサブスクリプションフィールド付きベースチャットサブスクリプションスキーマ。
目的: チャットチャンネルのベースサブスクリプション構造を定義
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし(ベーススキーマ)
- 追加プロパティ:
false
(厳密な検証) - プロパティ:
approved?: boolean
- サブスクリプション承認ステータスpermissions?: string[]
- ユーザー権限配列subscribedAt?: string
- サブスクリプション日時(date-timeフォーマット)subscribedId?: string
- サブスクライバーIDchannelId?: string
- チャンネルID
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { chatSubscriptionSchema } = schemas;
const schema = chatSubscriptionSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
channelId: 'channel123',
subscribedId: 'user456',
approved: true,
permissions: ['read', 'write']
});
createChatSubscriptionSchema
必須のチャンネルID付きチャットサブスクリプション作成スキーマ。
目的: 作成時のサブスクリプションデータを検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
channelId
,subscribedId
- オプションフィールド:
approved
,permissions
,subscribedAt
- 追加プロパティ:
false
(厳密な検証) - コンテンツタイプ:
application/json
- リクエストボディ:
required
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { createChatSubscriptionSchema } = schemas;
const schema = createChatSubscriptionSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
channelId: 'channel123',
subscribedId: 'user456',
approved: true
});
getChatSubscriptionSchema
単一サブスクリプション取得のためのチャットサブスクリプション取得スキーマ。
目的: 特定チャットサブスクリプション取得リクエストを検証
スキーマ詳細:
- パラメータ:
subscriptionId
(パスパラメータ) - 目的: 特定チャットサブスクリプション取得リクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { getChatSubscriptionSchema } = schemas;
const schema = getChatSubscriptionSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ subscriptionId: 'sub123' });
deleteChatSubscriptionSchema
サブスクリプション削除のためのチャットサブスクリプション削除スキーマ。
目的: 特定チャットサブスクリプション削除リクエストを検証
スキーマ詳細:
- パラメータ:
subscriptionId
(パスパラメータ) - 目的: 特定チャットサブスクリプション削除リクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteChatSubscriptionSchema } = schemas;
const schema = deleteChatSubscriptionSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ subscriptionId: 'sub123' });
findChatSubscriptionsSchema
フィルタリングとページネーション付きチャットサブスクリプション検索スキーマ。
目的: チャットサブスクリプションの検索とページングリクエストを検証
スキーマ詳細:
- クエリパラメータ:
approved?: boolean
- 承認ステータスでのフィルタchannelId?: string
- チャンネルでのフィルタsubscribedAt?: string
- サブスクリプション日時でのフィルタ(date-timeフォーマット)subscribedId?: string
- サブスクライバーでのフィルタpage?: number
- ページネーションのページ番号limit?: number
- ページネーションの制限
- 目的: チャットサブスクリプションの検索とページングリクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { findChatSubscriptionsSchema } = schemas;
const schema = findChatSubscriptionsSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
approved: true,
page: 1,
limit: 10
});
🔗 関連ドキュメント
- チャットドメイン概要 - チャットドメインの概要
- チャットハンドラー - チャットハンドラー機能
- チャットルート - チャットルートエンドポイント
- チャットフィーチャー - チャットフィーチャー機能
- チャットバリデーター - チャット検証機能