package search // SearchResultType enumerates the kinds of entities a global search can return. // Reference: Chatwoot GlobalSearchService — searches across conversations, messages, contacts. type SearchResultType string const ( ResultTypeConversation SearchResultType = "conversation" ResultTypeMessage SearchResultType = "message" ResultTypeContact SearchResultType = "contact" ResultTypeCompany SearchResultType = "company" ResultTypeArticle SearchResultType = "article" ResultTypeHelpCenter SearchResultType = "help_center" ) // SearchResult is a unified hit from any searchable entity. // Each result carries the entity type, its primary ID, a relevance score, // and a snippet (short text excerpt) for display in the search UI. type SearchResult struct { Type SearchResultType `json:"type"` ID uint `json:"id"` AccountID uint `json:"account_id"` Snippet string `json:"snippet"` // short excerpt for display Score float64 `json:"score"` // relevance score (higher = more relevant) Data interface{} `json:"data"` // full entity payload (Conversation, Message, Contact) } // SearchResponse is the top-level response structure for a global search query. // Reference: Chatwoot API returns grouped results by type with pagination metadata. type SearchResponse struct { Results []SearchResult `json:"results"` TotalCount int64 `json:"total_count"` // total hits across all types ByType map[string]int64 `json:"by_type"` // count per type: {"conversation":5,"message":12,...} Page int `json:"page"` PerPage int `json:"per_page"` Query string `json:"query"` }