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

🔍 Organization スキーマブロック

Organization スキーマブロックは、NodeBlocks アプリケーションにおける組織データ検証のための JSON Schema 定義を提供します。これらのスキーマはデータ整合性を確保し、組織関連の API エンドポイントのための明確なコントラクトを提供します。


🎯 概要

Organization スキーマブロックは次のことを目的として設計されています:

  • 処理前に組織データを検証
  • 組織内のメンバー役割管理をサポート
  • 組織メンバーシップと権限を処理
  • 組織検索とフィルタリング機能を有効化
  • 組織分離付きマルチテナントアプリケーションをサポート
  • 連絡先と住所管理を提供

📋 Organization スキーマタイプ

ベース組織スキーマ

他のスキーマの基礎として使用されるコア組織構造。

組織作成スキーマ

必須フィールド検証付き組織作成スキーマ。

組織更新スキーマ

オプションのフィールド検証付き組織変更スキーマ。

組織メンバーマネージメントスキーマ

組織内のメンバー役割とメンバーシップを管理するためのスキーマ。

組織クエリスクーマ

組織フィルタリングとページネーションパラメータのスキーマ。


🔧 利用可能な Organization スキーマ

organizationSchema

組織データの構造を定義するベース組織スキーマ。

目的: 連絡先情報付き組織データの構造を定義

スキーマ詳細:

  • タイプ: object
  • 必須フィールド: なし(ベーススキーマ)
  • 追加プロパティ: false(厳密検証)
  • プロパティ:
    • name?: string - 組織名(最小長 1)
    • description?: string - 組織説明
    • contact_email?: string - 組織連絡先メール(メール形式)
    • contact_phone?: string - 組織連絡先電話番号
    • address?: object - 組織住所オブジェクト
    • logo?: { objectId: string; type: string } | null - 組織ロゴ記述子または null

使用例:

import { schemas } from '@nodeblocks/backend-sdk';

const { organizationSchema } = schemas;

const validate = ajv.compile(organizationSchema as SchemaDefinition);
const isValid = validate({
name: 'Acme Corporation',
description: 'A leading technology company',
contact_email: 'contact@acme.com',
});

createOrganizationSchema

新規組織のための必須フィールド付き組織作成スキーマ。

目的: 作成時の組織データを検証

スキーマ詳細:

  • タイプ: object
  • 必須フィールド: organization.name, organization.description, organization.contact_email, ownerId
  • オプションのフィールド: organization.contact_phone, organization.address
  • 追加プロパティ: false(厳密検証)
  • Content-Type: 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({
organization: {
name: 'Acme Corporation',
description: 'A leading technology company',
contact_email: 'contact@acme.com',
contact_phone: '+1-555-0123'
},
ownerId: 'identity123'
});

organizationMembersSchema

組織内のメンバー役割を管理するための組織メンバーシーマ。

目的: 組織メンバー割り当ての構造を定義

スキーマ詳細:

  • タイプ: array
  • 必須フィールド: identityId, role(各項目に対して)
  • 最小項目数: 1
  • 追加プロパティ: false(厳密検証)
  • プロパティ:
    • identityId: string - メンバーアイデンティティ ID
    • role: string - 組織内のメンバー役割

使用例:

import { schemas } from '@nodeblocks/backend-sdk';

const { organizationMembersSchema } = schemas;

const membersSchema = organizationMembersSchema({});
const validate = ajv.compile(membersSchema.schemas as SchemaDefinition);
const isValid = validate([
{ identityId: 'identity1', role: 'admin' },
{ identityId: 'identity2', role: 'member' }
]);

upsertOrganizationMembersSchema

組織内のメンバー役割を管理するための組織メンバーアップサートスキーマ。

目的: 組織のメンバー役割割り当てを検証

スキーマ詳細:

  • タイプ: array
  • 必須フィールド: identityId, role(各項目に対して)
  • 最小項目数: 1
  • 追加プロパティ: false(厳密検証)
  • Content-Type: application/json
  • パラメータ: organizationId(パスパラメータ)
  • リクエストボディ: required

使用例:

import { schemas } from '@nodeblocks/backend-sdk';

const { upsertOrganizationMembersSchema } = schemas;

const membersSchema = upsertOrganizationMembersSchema({});
const validate = ajv.compile(membersSchema.schemas as SchemaDefinition);
const isValid = validate([
{ identityId: 'identity1', role: 'admin' },
{ identityId: 'identity2', role: 'member' }
]);

updateOrganizationSchema

組織変更のためのオプションのフィールド付き組織更新スキーマ。

目的: 部分的な組織データ更新を検証

スキーマ詳細:

  • タイプ: object
  • 必須フィールド: なし(すべてのフィールドがオプション)
  • 追加プロパティ: false(厳密検証)
  • Content-Type: application/json
  • パラメータ: organizationId(パスパラメータ)
  • リクエストボディ: required

使用例:

import { schemas } from '@nodeblocks/backend-sdk';

const { updateOrganizationSchema } = schemas;

const organizationSchema = updateOrganizationSchema({});
const validate = ajv.compile(organizationSchema.schemas as SchemaDefinition);
const isValid = validate({
description: 'Updated description',
contact_phone: '+1-555-9999'
});

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'
});

getOrganizationMemberRoleSchema

組織内のメンバー役割を取得するための組織メンバー役割取得スキーマ。

目的: 組織内のメンバー役割を取得するリクエストを検証

スキーマ詳細:

  • パラメータ: organizationId, identityId(パスパラメータ)
  • 目的: 組織内のメンバー役割を取得するリクエストを検証

使用例:

import { schemas } from '@nodeblocks/backend-sdk';

const { getOrganizationMemberRoleSchema } = schemas;

const memberRoleSchema = getOrganizationMemberRoleSchema({});
const validate = ajv.compile(memberRoleSchema.schemas as SchemaDefinition);
const isValid = validate({
organizationId: 'org123',
identityId: 'identity456'
});

checkOrganizationMemberExistenceSchema

メンバーシップを確認するための組織メンバー存在チェックスキーマ。

目的: 組織内のメンバー存在をチェックするリクエストを検証

スキーマ詳細:

  • パラメータ: organizationId(パスパラメータ)、identityId(クエリパラメータ)
  • 目的: 組織内のメンバー存在をチェックするリクエストを検証

使用例:

import { schemas } from '@nodeblocks/backend-sdk';

const { checkOrganizationMemberExistenceSchema } = schemas;

const memberExistenceSchema = checkOrganizationMemberExistenceSchema({});
const validate = ajv.compile(memberExistenceSchema.schemas as SchemaDefinition);
const isValid = validate({
organizationId: 'org123',
identityId: 'identity456'
});

findOrganizationMembersSchema

組織内のメンバーを検索するための組織メンバー検索スキーマ。

目的: 組織内のメンバーを検索するリクエストを検証

スキーマ詳細:

  • パラメータ: organizationId(パスパラメータ)
  • 目的: 組織内のメンバーを検索するリクエストを検証

使用例:

import { schemas } from '@nodeblocks/backend-sdk';

const { findOrganizationMembersSchema } = schemas;

const membersSchema = findOrganizationMembersSchema({});
const validate = ajv.compile(membersSchema.schemas as SchemaDefinition);
const isValid = validate({
organizationId: 'org123'
});

deleteOrganizationMemberSchema

組織からメンバーを削除するための組織メンバー削除スキーマ。

目的: 組織からメンバーを削除するリクエストを検証

スキーマ詳細:

  • パラメータ: organizationId, identityId(パスパラメータ)
  • 目的: 組織からメンバーを削除するリクエストを検証

使用例:

import { schemas } from '@nodeblocks/backend-sdk';

const { deleteOrganizationMemberSchema } = schemas;

const memberDeletionSchema = deleteOrganizationMemberSchema({});
const validate = ajv.compile(memberDeletionSchema.schemas as SchemaDefinition);
const isValid = validate({
organizationId: 'org123',
identityId: 'identity456'
});

findOrganizationsForMemberSchema

特定のメンバー向けの組織を検索するためのスキーマ、オプションで役割と継承を含むクエリパラメータ付き。

目的: 特定のメンバーに関連付けられた組織のリクエストを検証、オプションで役割と継承でフィルタリング

スキーマ詳細:

  • パスパラメータ: identityId(必須)
  • クエリパラメータ: roles?, includeInherited?

使用例:

import { schemas } from '@nodeblocks/backend-sdk';

const { findOrganizationsForMemberSchema } = schemas;

const memberOrgsSchema = findOrganizationsForMemberSchema({});
const validate = ajv.compile(memberOrgsSchema.schemas as SchemaDefinition);
const isValid = validate({
identityId: 'identity456',
roles: 'admin',
includeInherited: true
});

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
});

findOrganizationDescendantsSchema

階層内の子孫組織を取得するための組織子孫取得スキーマ。

目的: オプションの深さ制御付きで子孫組織を取得するリクエストを検証

スキーマ詳細:

  • パラメータ: organizationId(パスパラメータ)、depth?(オプションのクエリパラメータ、1以上の数値)

使用例:

import { schemas } from '@nodeblocks/backend-sdk';

const { findOrganizationDescendantsSchema } = schemas;

const descendantsSchema = findOrganizationDescendantsSchema({});
const validate = ajv.compile(descendantsSchema.schemas as SchemaDefinition);
const isValid = validate({
organizationId: 'org123',
depth: 2
});

🔗 関連ドキュメント