package request // CreateClientApprovalSettingsRequest represents request for creating client approval settings type CreateClientApprovalSettingsRequest struct { RequiresApproval bool `json:"requires_approval" validate:"required"` DefaultWorkflowId *uint `json:"default_workflow_id" validate:"omitempty,min=1"` AutoPublishArticles bool `json:"auto_publish_articles"` ApprovalExemptUsers []uint `json:"approval_exempt_users" validate:"omitempty,dive,min=1"` ApprovalExemptRoles []uint `json:"approval_exempt_roles" validate:"omitempty,dive,min=1"` ApprovalExemptCategories []uint `json:"approval_exempt_categories" validate:"omitempty,dive,min=1"` RequireApprovalFor []string `json:"require_approval_for" validate:"omitempty,dive,min=1"` SkipApprovalFor []string `json:"skip_approval_for" validate:"omitempty,dive,min=1"` IsActive bool `json:"is_active"` } // UpdateClientApprovalSettingsRequest represents request for updating client approval settings type UpdateClientApprovalSettingsRequest struct { RequiresApproval *bool `json:"requires_approval"` DefaultWorkflowId **uint `json:"default_workflow_id"` // double pointer to allow nil AutoPublishArticles *bool `json:"auto_publish_articles"` ApprovalExemptUsers []uint `json:"approval_exempt_users" validate:"omitempty,dive,min=1"` ApprovalExemptRoles []uint `json:"approval_exempt_roles" validate:"omitempty,dive,min=1"` ApprovalExemptCategories []uint `json:"approval_exempt_categories" validate:"omitempty,dive,min=1"` RequireApprovalFor []string `json:"require_approval_for" validate:"omitempty,dive,min=1"` SkipApprovalFor []string `json:"skip_approval_for" validate:"omitempty,dive,min=1"` IsActive *bool `json:"is_active"` } // ToggleApprovalRequest represents request for toggling approval requirement type ToggleApprovalRequest struct { RequiresApproval bool `json:"requires_approval" validate:"required"` } // EnableApprovalRequest represents request for enabling approval with smooth transition type EnableApprovalRequest struct { DefaultWorkflowId *uint `json:"default_workflow_id" validate:"omitempty,min=1"` Reason string `json:"reason" validate:"omitempty,max=500"` } // DisableApprovalRequest represents request for disabling approval system type DisableApprovalRequest struct { Reason string `json:"reason" validate:"required,max=500"` HandleAction string `json:"handle_action" validate:"required,oneof=auto_approve keep_pending reset_to_draft"` // How to handle pending articles } // SetDefaultWorkflowRequest represents request for setting default workflow type SetDefaultWorkflowRequest struct { WorkflowId *uint `json:"workflow_id" validate:"omitempty,min=1"` } // AddExemptUserRequest represents request for adding user to exemption type AddExemptUserRequest struct { UserId uint `json:"user_id" validate:"required,min=1"` Reason string `json:"reason" validate:"omitempty,max=500"` } // RemoveExemptUserRequest represents request for removing user from exemption type RemoveExemptUserRequest struct { UserId uint `json:"user_id" validate:"required,min=1"` Reason string `json:"reason" validate:"omitempty,max=500"` } // AddExemptRoleRequest represents request for adding role to exemption type AddExemptRoleRequest struct { RoleId uint `json:"role_id" validate:"required,min=1"` Reason string `json:"reason" validate:"omitempty,max=500"` } // RemoveExemptRoleRequest represents request for removing role from exemption type RemoveExemptRoleRequest struct { RoleId uint `json:"role_id" validate:"required,min=1"` Reason string `json:"reason" validate:"omitempty,max=500"` } // AddExemptCategoryRequest represents request for adding category to exemption type AddExemptCategoryRequest struct { CategoryId uint `json:"category_id" validate:"required,min=1"` Reason string `json:"reason" validate:"omitempty,max=500"` } // RemoveExemptCategoryRequest represents request for removing category from exemption type RemoveExemptCategoryRequest struct { CategoryId uint `json:"category_id" validate:"required,min=1"` Reason string `json:"reason" validate:"omitempty,max=500"` }