Skip to main content
Version: 0.4.2 (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 user 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 User Management Schemas​

Schemas for managing user 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
    • ownerId?: string - Organization owner user ID

Usage:

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 Corporation',
description: 'A leading technology company',
contact_email: 'contact@acme.com',
ownerId: 'user123'
});

createOrganizationSchema​

Organization creation schema with required fields for new organizations.

Purpose: Validates organization data during creation

Schema Details:

  • Type: object
  • Required Fields: name, description, contact_email, ownerId
  • Optional Fields: contact_phone, 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({
name: 'Acme Corporation',
description: 'A leading technology company',
contact_email: 'contact@acme.com',
ownerId: 'user123',
contact_phone: '+1-555-0123'
});

organizationUsersSchema​

Organization users schema for managing user roles in organizations.

Purpose: Defines the structure for organization user assignments

Schema Details:

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

Usage:

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​

Organization users upsert schema for managing user roles in organization.

Purpose: Validates user role assignments for organization

Schema Details:

  • Type: array
  • Required Fields: id, 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 { upsertOrganizationUsersSchema } = schemas;

const usersSchema = upsertOrganizationUsersSchema({});
const validate = ajv.compile(usersSchema.schemas as SchemaDefinition);
const isValid = validate([
{ id: 'user1', role: 'admin' },
{ id: 'user2', 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'
});

getOrganizationUserRoleSchema​

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

Purpose: Validates requests for retrieving user roles in organizations

Schema Details:

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

Usage:

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​

Organization user existence check schema for verifying user membership.

Purpose: Validates requests for checking user existence in organizations

Schema Details:

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

Usage:

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​

Organization users search schema for finding users in organizations.

Purpose: Validates requests for finding users in organizations

Schema Details:

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

Usage:

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​

Organization user deletion schema for removing users from organizations.

Purpose: Validates requests for removing users from organizations

Schema Details:

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

Usage:

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​

User organizations search schema for finding organizations for a user.

Purpose: Validates requests for finding organizations for a specific user

Schema Details:

  • Parameters: userId (path parameter), role (optional query parameter)
  • Purpose: Validates requests for finding organizations for a specific user

Usage:

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​

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