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 endpoints

  • x-business-tenant-id: <tenant_id> - Required for multi-tenancy support

  • Content-Type: application/json - For POST/PUT requests

  • Content-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 management

Product 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 upload

  • Additional 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 ID

  • id (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

  1. SKU Uniqueness: Each product must have a unique SKU within the tenant

  2. Language Validation: At least one language version is required

  3. Price Validation: Price value must be positive and currency must be valid

  4. Tag Validation: All tags must exist in the product tag collection

  5. Image Constraints: Maximum 10 images per product, each under 5MB

Product Updates

  1. SKU Immutability: SKU cannot be changed after product creation

  2. Language Preservation: Cannot remove all language versions

  3. Price History: Price changes are tracked for audit purposes

  4. Tag Management: Tags are managed separately and referenced by name

  5. Image Management: Images can be added, updated, or removed independently

Product Deletion

  1. Soft Delete: Products are marked as deleted rather than physically removed

  2. Order Dependency: Cannot delete products that are used in active orders

  3. History Preservation: All historical data is maintained for audit purposes

  4. Cascade Rules: Associated images are also soft deleted

Tag Management

  1. Name Uniqueness: Tag names must be unique within the tenant

  2. Case Sensitivity: Tag names are case-insensitive

  3. Usage Tracking: Cannot delete tags that are currently used by products

  4. Bulk Operations: Support for bulk tag creation and management

Permission Requirements

  1. Product Operations:

    • READ_PRODUCT (11001) - View products

    • CREATE_PRODUCT (11002) - Create new products

    • EDIT_PRODUCT (11003) - Update existing products

    • DELETE_PRODUCT (11004) - Delete products

    • CRUD_PRODUCT (11000) - All product operations

  2. Tag Operations:

    • READ_PRODUCT_TAG (12001) - View product tags

    • CREATE_PRODUCT_TAG (12002) - Create new tags

    • EDIT_PRODUCT_TAG (12003) - Update existing tags

    • DELETE_PRODUCT_TAG (12004) - Delete tags

    • CRUD_PRODUCT_TAG (12000) - All tag operations

Image Management

  1. File Types: Only JPEG, PNG, and WebP formats are supported

  2. File Size: Maximum 5MB per image

  3. Image Count: Maximum 10 images per product

  4. Resolution: Recommended minimum 800x600 pixels

  5. 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

  • 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

Bulk Image Upload Workflow

Last updated

Was this helpful?