🔍 組織スキーマブロック
組織スキーマブロックは、Nodeblocksアプリケーションにおける組織データ検証のためのJSONスキーマ定義を提供します。これらのスキーマは、データ整合性を確保し、組織関連のAPIエンドポイントの明確な契約を提供します。
🎯 概要
組織スキーマブロックは以下を目的として設計されています:
- 処理前の組織データの検証
- 組織内でのユーザー役割管理のサポート
- 組織メンバーシップと権限の処理
- 組織検索とフィルタリング機能の実現
- 組織分離によるマルチテナントアプリケーションのサポート
- 連絡先とアドレス管理の提供
📋 組織スキーマ種類
ベース組織スキーマ
他のスキーマの基盤として使用されるコア組織構造。
組織作成スキーマ
必須フィールド検証による組織作成のためのスキーマ。
組織更新スキーマ
オプションフィールド検証による組織変更のためのスキーマ。
組織ユーザー管理スキーマ
組織でのユーザー役割とメンバーシップ管理のためのスキーマ。
組織クエリスキーマ
組織フィルタリングとページネーションパラメータのためのスキーマ。
🔧 利用可能な組織スキーマ
organizationSchema
組織データの構造を定義するベース組織スキーマ。
目的: 連絡先情報付き組織データの構造を定義
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし(ベーススキーマ)
- 追加プロパティ:
false
(厳密な検証) - プロパティ:
name?: string
- 組織名(最小長1)description?: string
- 組織説明contact_email?: string
- 組織連絡先メール(メールフォーマット)contact_phone?: string
- 組織連絡先電話番号address?: object
- 組織アドレスオブジェクトownerId?: string
- 組織オーナーユーザーID
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { organizationSchema } = schemas;
const organizationSchema = organizationSchema({});
const validate = ajv.compile(organizationSchema.schemas as SchemaDefinition);
const isValid = validate({
name: 'Acme株式会社',
description: '先進技術企業',
contact_email: 'contact@acme.co.jp',
ownerId: 'user123'
});
createOrganizationSchema
新しい組織のための必須フィールド付き組織作成スキーマ。
目的: 作成時の組織データを検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
name
- オプションフィールド:
description
,contact_email
,contact_phone
,address
,ownerId
- 追加プロパティ:
false
(厳密な検証) - コンテンツタイプ:
application/json
- リクエストボディ:
required
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { createOrganizationSchema } = schemas;
const organizationSchema = createOrganizationSchema({});
const validate = ajv.compile(organizationSchema.schemas as SchemaDefinition);
const isValid = validate({
name: 'テクノロジー株式会社',
description: 'イノベーション企業',
contact_email: 'info@technology.co.jp',
contact_phone: '+81-3-1234-5678'
});
updateOrganizationSchema
組織変更のための組織更新スキーマ。
目的: 部分的な組織更新を検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし(すべてオプション)
- オプションフィールド:
name
,description
,contact_email
,contact_phone
,address
- 追加プロパティ:
false
(厳密な検証) - パラメータ:
organizationId
(パスパラメータ)
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { updateOrganizationSchema } = schemas;
const organizationSchema = updateOrganizationSchema({});
const validate = ajv.compile(organizationSchema.schemas as SchemaDefinition);
const isValid = validate({
description: '更新された企業説明',
contact_email: 'new-contact@technology.co.jp'
});
👥 組織ユーザー管理スキーマ
organizationUserSchema
組織ユーザー関係の構造を定義するスキーマ。
目的: 組織内でのユーザー役割とメンバーシップデータを検証
スキーマ詳細:
- タイプ:
object
- プロパティ:
userId: string
- ユーザーID(UUIDフォーマット)role: string
- 組織内でのユーザー役割permissions?: string[]
- ユーザー権限の配列joinedAt?: string
- 参加日時(date-timeフォーマット)
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { organizationUserSchema } = schemas;
const validate = ajv.compile(organizationUserSchema);
const isValid = validate({
userId: '123e4567-e89b-12d3-a456-426614174000',
role: 'admin',
permissions: ['read', 'write', 'delete'],
joinedAt: '2023-01-01T00:00:00Z'
});
organizationUsersSchema
組織でのユーザー役割管理のための組織ユーザー管理スキーマ。
目的: 組織でのユーザー割り当ての構造を定義
スキーマ詳細:
- タイプ:
array
- 必須フィールド: 各項目に
id
,role
- 最小項目数: 1
- 追加プロパティ:
false
(厳密な検証) - プロパティ:
id: string
- ユーザーIDrole: string
- 組織内でのユーザー役割
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { organizationUsersSchema } = schemas;
const usersSchema = organizationUsersSchema({});
const validate = ajv.compile(usersSchema.schemas as SchemaDefinition);
const isValid = validate([
{ id: 'user1', role: 'admin' },
{ id: 'user2', role: 'member' }
]);
upsertOrganizationUsersSchema
組織でのユーザー役割管理のための組織ユーザーアップサートスキーマ。
目的: 組織でのユーザー役割割り当てを検証
スキーマ詳細:
- タイプ:
array
- 必須フィールド: 各項目に
id
,role
- 最小項目数: 1
- 追加プロパティ:
false
(厳密な検証) - コンテンツタイプ:
application/json
- パラメータ:
organizationId
(パスパラメータ) - リクエストボディ:
required
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { upsertOrganizationUsersSchema } = schemas;
const usersSchema = upsertOrganizationUsersSchema({});
const validate = ajv.compile(usersSchema.schemas as SchemaDefinition);
const isValid = validate([
{ id: 'user1', role: 'admin' },
{ id: 'user2', role: 'member' }
]);
getOrganizationSchema
単一組織取得のための組織取得スキーマ。
目的: 特定組織取得リクエストの検証
スキーマ詳細:
- パラメータ:
organizationId
(パスパラメータ) - 目的: 特定組織取得リクエストの検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { getOrganizationSchema } = schemas;
const organizationSchema = getOrganizationSchema({});
const validate = ajv.compile(organizationSchema.schemas as SchemaDefinition);
const isValid = validate({
organizationId: 'org123'
});
deleteOrganizationSchema
組織削除のための組織削除スキーマ。
目的: 特定組織削除リクエストの検証
スキーマ詳細:
- パラメータ:
organizationId
(パスパラメータ) - 目的: 特定組織削除リクエストの検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteOrganizationSchema } = schemas;
const organizationSchema = deleteOrganizationSchema({});
const validate = ajv.compile(organizationSchema.schemas as SchemaDefinition);
const isValid = validate({
organizationId: 'org123'
});
getOrganizationUserRoleSchema
組織でのユーザー役割取得のための組織ユーザー役割取得スキーマ。
目的: 組織でのユーザー役割取得リクエストの検証
スキーマ詳細:
- パラメータ:
organizationId
,userId
(パスパラメータ) - 目的: 組織でのユーザー役割取得リクエストの検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { getOrganizationUserRoleSchema } = schemas;
const userRoleSchema = getOrganizationUserRoleSchema({});
const validate = ajv.compile(userRoleSchema.schemas as SchemaDefinition);
const isValid = validate({
organizationId: 'org123',
userId: 'user456'
});
checkOrganizationUserExistenceSchema
ユーザーメンバーシップ検証のための組織ユーザー存在チェックスキーマ。
目的: 組織でのユーザー存在チェックリクエストの検証
スキーマ詳細:
- パラメータ:
organizationId
(パスパラメータ),userId
(クエリパラメータ) - 目的: 組織でのユーザー存在チェックリクエストの検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { checkOrganizationUserExistenceSchema } = schemas;
const userExistenceSchema = checkOrganizationUserExistenceSchema({});
const validate = ajv.compile(userExistenceSchema.schemas as SchemaDefinition);
const isValid = validate({
organizationId: 'org123',
userId: 'user456'
});
findOrganizationUsersSchema
組織でのユーザー検索のための組織ユーザー検索スキーマ。
目的: 組織でのユーザー検索リクエストの検証
スキーマ詳細:
- パラメータ:
organizationId
(パスパラメータ) - 目的: 組織でのユーザー検索リクエストの検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { findOrganizationUsersSchema } = schemas;
const usersSchema = findOrganizationUsersSchema({});
const validate = ajv.compile(usersSchema.schemas as SchemaDefinition);
const isValid = validate({
organizationId: 'org123'
});
deleteOrganizationUserSchema
組織からのユーザー削除のための組織ユーザー削除スキーマ。
目的: 組織からのユーザー削除リクエストの検証
スキーマ詳細:
- パラメータ:
organizationId
,userId
(パスパラメータ) - 目的: 組織からのユーザー削除リクエストの検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteOrganizationUserSchema } = schemas;
const userDeletionSchema = deleteOrganizationUserSchema({});
const validate = ajv.compile(userDeletionSchema.schemas as SchemaDefinition);
const isValid = validate({
organizationId: 'org123',
userId: 'user456'
});
findOrganizationsForUserSchema
ユーザー組織検索のためのユーザー組織検索スキーマ。
目的: 特定ユーザーの組織検索リクエストの検証
スキーマ詳細:
- パラメータ:
userId
(パスパラメータ),role
(オプショナルクエリパラメータ) - 目的: 特定ユーザーの組織検索リクエストの検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { findOrganizationsForUserSchema } = schemas;
const userOrgsSchema = findOrganizationsForUserSchema({});
const validate = ajv.compile(userOrgsSchema.schemas as SchemaDefinition);
const isValid = validate({
userId: 'user456',
role: 'admin'
});
findOrganizationsSchema
フィルタリングとページネーション付き組織検索のための組織検索スキーマ。
目的: 組織検索とページングリクエストの検証
スキーマ詳細:
- クエリパラメータ:
contact_email?: string
- 連絡先メールでのフィルタ(メールフォーマット)contact_phone?: string
- 連絡先電話でのフィルタdescription?: string
- 説明でのフィルタname?: string
- 名前でのフィルタ(最小長1)page?: number
- ページネーションのページ番号limit?: number
- ページネーションの制限
- 目的: 組織検索とページングリクエストの検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { findOrganizationsSchema } = schemas;
const organizationsSchema = findOrganizationsSchema({});
const validate = ajv.compile(organizationsSchema.schemas as SchemaDefinition);
const isValid = validate({
name: 'Acme',
contact_email: 'contact@acme.com',
page: 1,
limit: 10
});