json.data do
  json.meta do
    json.open_count @conversations_count[:open]
    json.resolved_count @conversations_count[:closed]
    json.conversation_type @type
  end

  json.payload do
    json.array! @conversations do |conversation|
      json.meta do
        json.sender do
          json.id conversation.contact.source_id
          json.name conversation.contact.name
          json.thumbnail conversation.contact.avatar.thumb.url
          json.channel conversation.inbox.try(:channel).try(:name)
        end
        json.assignee conversation.assignee
      end

      json.id conversation.display_id
      if conversation.unread_incoming_messages.count.zero?
        json.messages [conversation.messages.last.try(:push_event_data)]
      else
        json.messages conversation.unread_messages.map(&:push_event_data)
      end
      json.inbox_id conversation.inbox.id
      json.status conversation.status_before_type_cast
      json.timestamp conversation.messages.last.try(:created_at).try(:to_i)
      json.user_last_seen_at conversation.user_last_seen_at.to_i
      json.agent_last_seen_at conversation.agent_last_seen_at.to_i
      json.unread_count conversation.unread_incoming_messages.count
    end
  end
end
