🔍 Chat スキーマブロック
Chat スキーマブロックは、NodeBlocks アプリケーションにおけるチャットデータ検証のための JSON Schema 定義を提供します。これらのスキーマはデータ整合性を確保し、チャット関連 API エンドポイントのための明確なコントラクトを提供します。
🎯 概要
Chat スキーマブロックは以下を目的として設計されています:
- チャットデータを処理前に検証する
- ユーザー間のリアルタイムメッセージングをサポートする
- チャンネル管理とユーザーサブスクリプションを処理する
- メッセージ検索とフィルタリング機能を有効化する
- チャンネル権限とアクセス制御を提供する
- リアルタイム通知と更新をサポートする
📋 Chat スキーマタイプ
チャンネルスキーマ
チャンネル管理のためのコアチャットチャンネル構造。
メッセージスキーマ
リアルタイム通信のためのチャットメッセージ構造。
サブスクリプションスキーマ
チャンネルアクセス制御のためのユーザーサブスクリプション構造。
🔧 利用可能なチャットスキーマ
📺 チャンネルスキーマ
chatChannelSchema
コアチャンネルフィールドを含むベースチャットチャンネルスキーマ。
目的: チャット機能のための基本的なチャンネル構造を定義します
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし
- 追加プロパティ:
false
(厳密な検証) - プロパティ:
name?: string
- チャンネル名ownerId?: string
- チャンネル所有者アイデンティティ ID
使用法:
import { schemas } from '@nodeblocks/backend-sdk';
const { chatChannelSchema } = schemas;
const validate = ajv.compile(chatChannelSchema as SchemaDefinition);
const isValid = validate({
name: 'General Chat',
ownerId: 'identity123'
});
createChatChannelSchema
必須の名前と所有者を含むチャットチャンネル作成スキーマ。
目的: 作成時のチャンネルデータを検証します
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
name
,ownerId
- 追加プロパティ:
false
(厳密な検証) - Content-Type:
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: 'General Chat',
ownerId: 'user123'
});
updateChatChannelSchema
チャンネル変更のためのオプションのフィールドを含むチャットチャンネル更新スキーマ。
目的: 部分的なチャンネルデータ更新を検証します
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし(すべてのフィールドがオプション)
- 追加プロパティ:
false
(厳密な検証) - Content-Type:
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: 'Updated Channel 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: 'General', page: 1, limit: 10 });
💬 メッセージスキーマ
chatMessageSchema
コアメッセージフィールドを含むベースチャットメッセージスキーマ。
目的: チャット機能のための基本的なメッセージ構造を定義します
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし
- 追加プロパティ:
false
(厳密な検証) - プロパティ:
content?: string
- メッセージコンテンツsenderId?: string
- メッセージ送信者アイデンティティ IDtitle?: string
- メッセージタイトル
使用法:
import { schemas } from '@nodeblocks/backend-sdk';
const { chatMessageSchema } = schemas;
const validate = ajv.compile(chatMessageSchema as SchemaDefinition);
const isValid = validate({
content: 'Hello world!',
senderId: 'identity123',
title: 'Greeting'
});
createChatMessageSchema
必須のコンテンツ、送信者、チャンネルを含むチャットメッセージ作成スキーマ。
目的: 作成時のメッセージデータを検証します
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
content
,senderId
,channelId
- オプションのフィールド:
title
- 追加プロパティ:
false
(厳密な検証) - Content-Type:
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: 'Hello world!',
senderId: 'user123',
channelId: 'channel456'
});
updateChatMessageSchema
メッセージ変更のためのオプションのフィールドを含むチャットメッセージ更新スキーマ。
目的: 部分的なメッセージデータ更新を検証します
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし(すべてのフィールドがオプション)
- 追加プロパティ:
false
(厳密な検証) - Content-Type:
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: 'Updated message 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
- サブスクリプション日付(日時形式)subscribedId?: string
- サブスクライバーアイデンティティ IDchannelId?: string
- チャンネル ID
使用法:
import { schemas } from '@nodeblocks/backend-sdk';
const { chatSubscriptionSchema } = schemas;
const validate = ajv.compile(chatSubscriptionSchema as SchemaDefinition);
const isValid = validate({
channelId: 'channel123',
subscribedId: 'identity456',
approved: true,
permissions: ['read', 'write']
});
createChatSubscriptionSchema
必須のチャンネルIDを含むチャットサブスクリプション作成スキーマ。
目的: 作成時のサブスクリプションデータを検証します
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
channelId
,subscribedId
- オプションのフィールド:
approved
,permissions
,subscribedAt
- 追加プロパティ:
false
(厳密な検証) - Content-Type:
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
- サブスクリプション日付でフィルター(日時形式)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
});
🔗 関連ドキュメント
- Chat ドメインの概要 - チャットドメインの概要