package contract import ( "time" "github.com/google/uuid" ) type CreateCategoryRequest struct { Name string `json:"name" validate:"required,min=1,max=255"` Description *string `json:"description,omitempty"` BusinessType *string `json:"business_type,omitempty"` Metadata map[string]interface{} `json:"metadata,omitempty"` } type UpdateCategoryRequest struct { Name *string `json:"name,omitempty" validate:"omitempty,min=1,max=255"` Description *string `json:"description,omitempty"` BusinessType *string `json:"business_type,omitempty"` Metadata map[string]interface{} `json:"metadata,omitempty"` } type ListCategoriesRequest struct { OrganizationID *uuid.UUID `json:"organization_id,omitempty"` BusinessType string `json:"business_type,omitempty"` Search string `json:"search,omitempty"` Page int `json:"page" validate:"required,min=1"` Limit int `json:"limit" validate:"required,min=1,max=100"` } // Category Response DTOs type CategoryResponse struct { ID uuid.UUID `json:"id"` OrganizationID uuid.UUID `json:"organization_id"` Name string `json:"name"` Description *string `json:"description"` BusinessType string `json:"business_type"` Metadata map[string]interface{} `json:"metadata"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type ListCategoriesResponse struct { Categories []CategoryResponse `json:"categories"` TotalCount int `json:"total_count"` Page int `json:"page"` Limit int `json:"limit"` TotalPages int `json:"total_pages"` }