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

🔍 Profile Schemas

Profile schemas provide JSON Schema definitions for profile relationship data validation in NodeBlocks applications. These schemas ensure data integrity and provide clear contracts for profile-related API endpoints.


🎯 Overview

Profile schemas are designed to:

  • Validate profile relationship data before processing
  • Ensure profile data consistency across the application
  • Provide clear contracts for profile API endpoints
  • Enable type safety with TypeScript integration
  • Support composition with other profile blocks
  • Handle social relationships including follows, organization follows, and product likes

📋 Profile Schema Types

Profile Follow Schemas

Schemas for profile-to-profile follow relationship operations.

Organization Follow Schemas

Schemas for profile-to-organization follow relationship operations.

Product Like Schemas

Schemas for profile-to-product like relationship operations.

Profile Followers Schemas

Schemas for retrieving profile followers with pagination.


🔧 Available Profile Schemas

createProfileFollowSchema

Profile follow creation schema with path parameter validation.

Purpose: Validates requests for creating new profile follow relationships, ensuring both profile IDs are provided as path parameters.

Schema Details:

  • Parameters: profileId (path parameter, required), followProfileId (path parameter, required)
  • Request Body: Not required (empty body)
  • Content-Type: N/A (no body validation)

Usage:

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

const { createProfileFollowSchema } = schemas;

const schema = createProfileFollowSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [
{ in: 'path', name: 'profileId', value: 'user-123' },
{ in: 'path', name: 'followProfileId', value: 'user-456' }
]
});

deleteProfileFollowSchema

Profile follow deletion schema with path parameter validation.

Purpose: Validates requests for deleting profile follow relationships (unfollowing), ensuring both profile IDs are provided as path parameters.

Schema Details:

  • Parameters: profileId (path parameter, required), followProfileId (path parameter, required)
  • Request Body: Not required (empty body)
  • Content-Type: N/A (no body validation)

Usage:

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

const { deleteProfileFollowSchema } = schemas;

const schema = deleteProfileFollowSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [
{ in: 'path', name: 'profileId', value: 'user-123' },
{ in: 'path', name: 'followProfileId', value: 'user-456' }
]
});

getProfileFollowersSchema

Profile followers retrieval schema with path parameter validation.

Purpose: Validates requests for retrieving profile followers list, ensuring the profile ID is provided as a path parameter.

Schema Details:

  • Parameters: profileId (path parameter, required)
  • Query Parameters: page (optional), limit (optional)
  • Request Body: Not required (empty body)
  • Content-Type: N/A (no body validation)

Usage:

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

const { getProfileFollowersSchema } = schemas;

const schema = getProfileFollowersSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [{ in: 'path', name: 'profileId', value: 'user-123' }]
});

createOrganizationFollowSchema

Organization follow creation schema with path parameter validation.

Purpose: Validates requests for creating organization follow relationships, ensuring both profile ID and organization ID are provided as path parameters.

Schema Details:

  • Parameters: profileId (path parameter, required), followOrganizationId (path parameter, required)
  • Request Body: Not required (empty body)
  • Content-Type: N/A (no body validation)

Usage:

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

const { createOrganizationFollowSchema } = schemas;

const schema = createOrganizationFollowSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [
{ in: 'path', name: 'profileId', value: 'user-123' },
{ in: 'path', name: 'followOrganizationId', value: 'org-456' }
]
});

deleteOrganizationFollowSchema

Organization follow deletion schema with path parameter validation.

Purpose: Validates requests for deleting organization follow relationships, ensuring both profile ID and organization ID are provided as path parameters.

Schema Details:

  • Parameters: profileId (path parameter, required), followOrganizationId (path parameter, required)
  • Request Body: Not required (empty body)
  • Content-Type: N/A (no body validation)

Usage:

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

const { deleteOrganizationFollowSchema } = schemas;

const schema = deleteOrganizationFollowSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [
{ in: 'path', name: 'profileId', value: 'user-123' },
{ in: 'path', name: 'followOrganizationId', value: 'org-456' }
]
});

createProductLikeSchema

Product like creation schema with path parameter validation.

Purpose: Validates requests for creating product like relationships, ensuring both profile ID and product ID are provided as path parameters.

Schema Details:

  • Parameters: profileId (path parameter, required), likeProductId (path parameter, required)
  • Request Body: Not required (empty body)
  • Content-Type: N/A (no body validation)

Usage:

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

const { createProductLikeSchema } = schemas;

const schema = createProductLikeSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [
{ in: 'path', name: 'profileId', value: 'user-123' },
{ in: 'path', name: 'likeProductId', value: 'prod-789' }
]
});

deleteProductLikeSchema

Product like deletion schema with path parameter validation for unlike operations.

Purpose: Validates requests for deleting product like relationships, ensuring both profile ID and product ID are provided as path parameters.

Schema Details:

  • Parameters: profileId (path parameter, required), likeProductId (path parameter, required)
  • Request Body: Not required (empty body)
  • Content-Type: N/A (no body validation)

Usage:

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

const { deleteProductLikeSchema } = schemas;

const schema = deleteProductLikeSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [
{ in: 'path', name: 'profileId', value: 'user-123' },
{ in: 'path', name: 'likeProductId', value: 'prod-789' }
]
});