Skip to main content
Version: 0.5.0 (Previous)

🔍 Organization Schema Blocks

Organization schema blocks provide JSON Schema definitions for organization data validation in Nodeblocks applications. These schemas ensure data integrity and provide clear contracts for organization-related API endpoints.


🎯 Overview​

Organization schema blocks are designed to:

  • Validate organization data before processing
  • Support member role management within organizations
  • Handle organization membership and permissions
  • Enable organization search and filtering capabilities
  • Support multi-tenant applications with organization isolation
  • Provide contact and address management

📋 Organization Schema Types​

Base Organization Schemas​

Core organization structures used as foundations for other schemas.

Organization Creation Schemas​

Schemas for organization creation with required field validation.

Organization Update Schemas​

Schemas for organization modifications with optional field validation.

Organization Member Management Schemas​

Schemas for managing member roles and membership in organizations.

Organization Query Schemas​

Schemas for organization filtering and pagination parameters.


🔧 Available Organization Schemas​

organizationSchema​

Base organization schema defining the structure for organization data.

Purpose: Defines the structure for organization data with contact information

Schema Details:

  • Type: object
  • Required Fields: None (base schema)
  • Additional Properties: false (strict validation)
  • Properties:
    • name?: string - Organization name (minimum length 1)
    • description?: string - Organization description
    • contact_email?: string - Organization contact email (email format)
    • contact_phone?: string - Organization contact phone number
    • address?: object - Organization address object
    • logo?: { objectId: string; type: string } | null - Organization logo descriptor or null

Usage:

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​

Organization creation schema with required fields for new organizations.

Purpose: Validates organization data during creation

Schema Details:

  • Type: object
  • Required Fields: organization.name, organization.description, organization.contact_email, ownerId
  • Optional Fields: organization.contact_phone, organization.address
  • Additional Properties: false (strict validation)
  • Content-Type: application/json
  • Request Body: required

Usage:

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​

Organization members schema for managing member roles in organizations.

Purpose: Defines the structure for organization member assignments

Schema Details:

  • Type: array
  • Required Fields: identityId, role (for each item)
  • Minimum Items: 1
  • Additional Properties: false (strict validation)
  • Properties:
    • identityId: string - Member identity ID
    • role: string - Member role in organization

Usage:

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​

Organization members upsert schema for managing member roles in organization.

Purpose: Validates member role assignments for organization

Schema Details:

  • Type: array
  • Required Fields: identityId, role (for each item)
  • Minimum Items: 1
  • Additional Properties: false (strict validation)
  • Content-Type: application/json
  • Parameters: organizationId (path parameter)
  • Request Body: required

Usage:

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​

Organization update schema with optional fields for organization modifications.

Purpose: Validates partial organization data updates

Schema Details:

  • Type: object
  • Required Fields: None (all fields optional)
  • Additional Properties: false (strict validation)
  • Content-Type: application/json
  • Parameters: organizationId (path parameter)
  • Request Body: required

Usage:

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​

Organization retrieval schema for getting single organizations.

Purpose: Validates requests for retrieving specific organizations

Schema Details:

  • Parameters: organizationId (path parameter)
  • Purpose: Validates requests for retrieving specific organizations

Usage:

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​

Organization deletion schema for removing organizations.

Purpose: Validates requests for deleting specific organizations

Schema Details:

  • Parameters: organizationId (path parameter)
  • Purpose: Validates requests for deleting specific organizations

Usage:

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​

Organization member role retrieval schema for getting member roles in organizations.

Purpose: Validates requests for retrieving member roles in organizations

Schema Details:

  • Parameters: organizationId, identityId (path parameters)
  • Purpose: Validates requests for retrieving member roles in organizations

Usage:

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​

Organization member existence check schema for verifying member membership.

Purpose: Validates requests for checking member existence in organizations

Schema Details:

  • Parameters: organizationId (path parameter), identityId (query parameter)
  • Purpose: Validates requests for checking member existence in organizations

Usage:

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​

Organization members search schema for finding members in organizations.

Purpose: Validates requests for finding members in organizations

Schema Details:

  • Parameters: organizationId (path parameter)
  • Purpose: Validates requests for finding members in organizations

Usage:

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​

Organization member deletion schema for removing members from organizations.

Purpose: Validates requests for removing members from organizations

Schema Details:

  • Parameters: organizationId, identityId (path parameters)
  • Purpose: Validates requests for removing members from organizations

Usage:

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​

Schema for finding organizations for a given member, with optional role and includeInherited query parameters.

Purpose: Validates requests for organizations associated with a specific member, optionally filtered by role and inheritance

Schema Details:

  • Path Parameters: identityId (required)
  • Query Parameters: roles?, includeInherited?

Usage:

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​

Organizations search schema for finding organizations with filtering and pagination.

Purpose: Validates requests for searching and paginating organizations

Schema Details:

  • Query Parameters:
    • contact_email?: string - Filter by contact email (email format)
    • contact_phone?: string - Filter by contact phone
    • description?: string - Filter by description
    • name?: string - Filter by name (minimum length 1)
    • page?: number - Pagination page number
    • limit?: number - Pagination limit
  • Purpose: Validates requests for searching and paginating organizations

Usage:

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​

Organization descendants retrieval schema for getting descendant organizations in hierarchy.

Purpose: Validates requests for retrieving descendant organizations with optional depth control

Schema Details:

  • Parameters: organizationId (path parameter), depth? (optional query parameter, number >= 1)

Usage:

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