All chats are based on the group notion. The group is a common ground for any message exchange. It is where users exchange messages. And vice versa, if users do mesage exchange, they do it with some sort of groups. Each user participating in a group has a subscription. Subscription allow users read, write and arministate groups they are involved in. To understand main the object relations see the simplified diagram:
Below wediscuss in details different types of groups.
Private chats (p2p)
Are intended for peer-to-peer (often mentionaed as p2p in docs) conversations. These simplest group type have some limitations:
- private chats can't be deleted once created
- invitations are disabled
- both users gane permanent RW access
- there us always exactly 2 participants
- administration is disabled
The only way for a party to control some p2p chat is to manipulate its unichat subscription.
These are groups where limited number fo admins have RW access and all other subscribers (that might me thousands) have only read permission. Channels are most often public groups, nut not necessarily.
- channels always set RO access for invited users
Chat rooms are most common chat objects, by default all participants have RW access. Rooms have no special limitations.