API Documentation
Overview
The Product Management API provides comprehensive functionality for managing products and product tags within the Bee O'clock panel service. This module handles the complete product lifecycle, including creation, updates, status management, deletion, and image management for products and their associated tags.
Base Configuration
Authentication
All endpoints require Bearer token authentication.
Headers
Authorization: Bearer <token>- Required for all endpointsx-business-tenant-id: <tenant_id>- Required for multi-tenancy supportContent-Type: application/json- For POST/PUT requestsContent-Type: multipart/form-data- For image upload requests
Base URLs
/api/v1/product # Product management
/api/v1/product-tag # Product tag management
/api/v1/product-media # Product image managementProduct Endpoints
1. Get Paginated Products
Endpoint: GET /api/v1/product/paged
Description: Retrieves a paginated list of products with advanced filtering capabilities.
Query Parameters:
Response:
Example Request:
Example Response:
2. Get Product by ID
Endpoint: GET /api/v1/product/{id}
Description: Retrieves a specific product by its ID with permission validation.
Path Parameters:
id(string, required) - Product ID
Response: ProductDto
Example Request:
Example Response:
3. Create Product
Endpoint: POST /api/v1/product
Description: Creates a new product with validation and permission checks.
Request Body: ProductDto
Response: ProductDto
Example Request:
Example Response:
4. Update Product
Endpoint: PUT /api/v1/product/{id}
Description: Updates an existing product with validation and permission checks.
Path Parameters:
id(string, required) - Product ID
Request Body: ProductDto
Response: ProductDto
Example Request:
5. Delete Product
Endpoint: DELETE /api/v1/product/{id}
Description: Soft deletes a product with permission validation and dependency checking.
Path Parameters:
id(string, required) - Product ID
Response: void (204 No Content)
Example Request:
Product Tag Endpoints
1. Get Paginated Product Tags
Endpoint: GET /api/v1/product-tag/paged
Description: Retrieves a paginated list of product tags with filtering capabilities.
Query Parameters:
Response:
Example Request:
Example Response:
2. Get Product Tag by ID
Endpoint: GET /api/v1/product-tag/{id}
Description: Retrieves a specific product tag by its ID.
Path Parameters:
id(string, required) - Tag ID
Response: TagDto
Example Request:
Example Response:
3. Create Product Tag
Endpoint: POST /api/v1/product-tag
Description: Creates a new product tag with validation.
Request Body: TagDto
Response: TagDto
Example Request:
Example Response:
4. Update Product Tag
Endpoint: PUT /api/v1/product-tag/{id}
Description: Updates an existing product tag.
Path Parameters:
id(string, required) - Tag ID
Request Body: TagDto
Response: TagDto
Example Request:
5. Delete Product Tag
Endpoint: DELETE /api/v1/product-tag/{id}
Description: Deletes a product tag with dependency validation.
Path Parameters:
id(string, required) - Tag ID
Response: void (204 No Content)
Example Request:
Product Media Endpoints
1. Upload/Update Product Image
Endpoint: PATCH /api/v1/product-media/{productId}/images
Description: Uploads a new image or updates an existing image for a product.
Path Parameters:
productId(string, required) - Product ID
Request Body: multipart/form-data
file(File, required) - Image file to uploadAdditional media metadata fields
Response: MediaDto
Example Request:
Example Response:
2. Delete Product Image
Endpoint: DELETE /api/v1/product-media/{productId}/{id}
Description: Deletes a specific image from a product.
Path Parameters:
productId(string, required) - Product IDid(string, required) - Image ID
Response: void (204 No Content)
Example Request:
Data Models
ProductDto
ProductPriceDto
ProductPaginationDto
TagDto
TagPaginationDto
LanguageVersionDto
MediaDto
Enums
CurrencyCodeEnum
Error Handling
Common Error Responses
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
409 Conflict
413 Payload Too Large
415 Unsupported Media Type
422 Unprocessable Entity
Business Rules
Product Creation
SKU Uniqueness: Each product must have a unique SKU within the tenant
Language Validation: At least one language version is required
Price Validation: Price value must be positive and currency must be valid
Tag Validation: All tags must exist in the product tag collection
Image Constraints: Maximum 10 images per product, each under 5MB
Product Updates
SKU Immutability: SKU cannot be changed after product creation
Language Preservation: Cannot remove all language versions
Price History: Price changes are tracked for audit purposes
Tag Management: Tags are managed separately and referenced by name
Image Management: Images can be added, updated, or removed independently
Product Deletion
Soft Delete: Products are marked as deleted rather than physically removed
Order Dependency: Cannot delete products that are used in active orders
History Preservation: All historical data is maintained for audit purposes
Cascade Rules: Associated images are also soft deleted
Tag Management
Name Uniqueness: Tag names must be unique within the tenant
Case Sensitivity: Tag names are case-insensitive
Usage Tracking: Cannot delete tags that are currently used by products
Bulk Operations: Support for bulk tag creation and management
Permission Requirements
Product Operations:
READ_PRODUCT(11001) - View productsCREATE_PRODUCT(11002) - Create new productsEDIT_PRODUCT(11003) - Update existing productsDELETE_PRODUCT(11004) - Delete productsCRUD_PRODUCT(11000) - All product operations
Tag Operations:
READ_PRODUCT_TAG(12001) - View product tagsCREATE_PRODUCT_TAG(12002) - Create new tagsEDIT_PRODUCT_TAG(12003) - Update existing tagsDELETE_PRODUCT_TAG(12004) - Delete tagsCRUD_PRODUCT_TAG(12000) - All tag operations
Image Management
File Types: Only JPEG, PNG, and WebP formats are supported
File Size: Maximum 5MB per image
Image Count: Maximum 10 images per product
Resolution: Recommended minimum 800x600 pixels
Optimization: Images are automatically optimized and resized
Performance Considerations
Pagination
Default page size: 10 items
Maximum page size: 100 items
Use pagination for large product catalogs
Filtering and Search
Text search is optimized with MongoDB text indexes
Tag filtering uses indexed arrays for fast queries
Multi-language search supports all language versions
Caching
Product data is cached for frequently accessed items
Image CDN caching with long expiration times
Tag data is heavily cached due to infrequent changes
Database Optimization
Compound indexes on commonly filtered fields
Text indexes for search functionality
Optimized queries with proper field projection
Rate Limiting
Read Operations: 100 requests per minute per user
Write Operations: 30 requests per minute per user
Image Upload: 10 requests per minute per user
Bulk Operations: 5 requests per minute per user
File Upload Specifications
Supported Image Formats
JPEG (.jpg, .jpeg) - Recommended for photographs
PNG (.png) - Recommended for graphics with transparency
WebP (.webp) - Modern format with excellent compression
Image Processing
Automatic Optimization: Images are automatically compressed and optimized
Multiple Sizes: Thumbnails and preview sizes are generated automatically
CDN Distribution: Images are distributed via CDN for fast global access
Format Conversion: Images may be converted to WebP for better performance
Upload Constraints
Maximum File Size: 5MB per image
Maximum Dimensions: 4000x4000 pixels
Minimum Dimensions: 200x200 pixels (recommended)
Image Count: Maximum 10 images per product
Monitoring and Logging
Request Logging
All API requests are logged with:
Request ID for tracing
User context and permissions
Performance metrics
Error details and stack traces
Business Event Logging
Product creation, updates, and deletions
Tag management operations
Image upload and management activities
Permission validation events
Performance Monitoring
Response time tracking for all endpoints
Database query performance analysis
Cache hit rates and effectiveness
Image processing and upload metrics
Error rate monitoring and alerting
Security Considerations
Input Validation
Comprehensive validation of all input data
SQL injection prevention through parameterized queries
XSS prevention through output encoding
File upload security with type and size validation
Access Control
Role-based permission system
Tenant-based data isolation
API rate limiting and abuse prevention
Audit logging for all sensitive operations
Image Security
Virus scanning for uploaded files
Content type validation
File size and dimension limits
Secure file storage with access controls
Integration Examples
Creating a Product with Multiple Languages
Advanced Product Search
Bulk Image Upload Workflow
Last updated
Was this helpful?