メインコンテンツまでスキップ
バージョン: 0.5.0 (最新)

🔍 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 - メッセージ送信者アイデンティティ ID
    • title?: 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 - サブスクライバーアイデンティティ ID
    • channelId?: 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
});

🔗 関連ドキュメント