メインコンテンツまでスキップ
バージョン: 0.4.2

🔍 組織スキーマブロック

組織スキーマブロックは、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 - ユーザーID
    • role: 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
});

🔗 関連ドキュメント