package notification import ( "tm/pkg/response" ) // CreateRequest represents the request to create a notification type NotificationRequest struct { Recipient []string `json:"recipient"` Tender string `json:"tender" valid:"optional,stringlength(1|100)"` Channels []DeliveryChannel `json:"channels" valid:"required"` Type NotificationType `json:"type" valid:"required"` Priority NotificationPriority `json:"priority" valid:"required"` Target TargetAudienceType `json:"target" valid:"required"` Title string `json:"title" valid:"required"` Description string `json:"description" valid:"required"` Link *string `json:"link" valid:"optional,url"` Image *string `json:"image" valid:"optional,url"` ScheduleAt int64 `json:"schedule_at" valid:"optional"` } // SearchForm represents the form for searching notifications type SearchForm struct { Status string `query:"status" valid:"optional"` Method string `query:"method" valid:"optional"` EventType string `query:"event_type" valid:"optional"` Type string `query:"type" valid:"optional"` Recipient string `query:"recipient" valid:"optional"` Seen *bool `query:"seen" valid:"optional"` Priority string `query:"priority" valid:"optional"` } type NotificationListResponse struct { Notifications []*NotificationResponse `json:"notifications"` Meta *response.Meta `json:"meta"` } type NotificationResponse struct { ID string `json:"id"` UserID string `json:"user_id"` Recipient any `json:"recipient"` Title string `json:"title"` Message string `json:"message"` Link *string `json:"link"` Image *string `json:"image"` Priority string `json:"priority"` Type string `json:"type"` EventType string `json:"event_type"` Status string `json:"status"` Methods map[string]string `json:"methods"` Metadata map[string]any `json:"metadata"` ScheduleAt int64 `json:"schedule_at"` CreatedAt int64 `json:"created_at"` UpdatedAt int64 `json:"updated_at"` Seen bool `json:"seen"` SeenAt int64 `json:"seen_at"` IsScheduled bool `json:"is_scheduled"` ScheduledAt int64 `json:"scheduled_at"` }