Topic: Think of this as a notification subject. Notifications are created on a topic in response to an event occurring on it. For example, v2.users.{id}.conversations.calls will have notifications created on it for calls being created, ended etc.
Channel: This is basically a websocket. A channel can be connected to several notification topics as a subscriber and you (the client) can connect to the channel to receive these notifications.
Application: The software application connecting to the notification service and possibly making SDK calls etc. This will authenticate with Genesys Cloud using credentials. These credentials will be limited to 20 channels at one time.
Note the following usage limitations for channels and topics.
Channels remain active for 24 hours. To maintain a channel for longer than 24 hours, resubscribe to topics.
You can create up to 20 channels per user and application. When the channel limit is reached, then the new channel replaces the oldest channel that does not have an active connection.
Each WebSocket connection is limited to 1,000 topics. If you subscribe to more than 1,000 topics, then the notification service returns a 400 error code.
Each channel can only be used by one WebSocket at a time. If you connect a second WebSocket with the same channel ID, the first WebSocket disconnects.
If we use a combined topic like this:
"id": "v2.users.fd1738bd-3b06-4b20-9dd0-37bd0248f00z?presence&routingStatus&station"
Does that count (regarding hitting the limits) as one topic subscription or as three?