Get desktop application:
View/edit binary Protocol Buffers messages
This is the single method that needs to be implemented by a gRPC client.
Client sends a stream of ClientMsg, server responds with a stream of ServerMsg
Plugin interface.
This plugin method is called by Tinode server for every message received from the clients. The method returns a ServerCtrl message. Non-zero ServerCtrl.code indicates that no further processing is needed. The Tinode server will generate a {ctrl} message from the returned ServerCtrl and forward it to the client session. ServerCtrl.code equals to 0 instructs the server to continue with default processing of the client message.
An alteranative user and topic discovery mechanism. A search request issued on a 'fnd' topic. This method is called to generate an alternative result set.
New search query If status == REPLACE, otherwise unset.
Search results.
Account created, updated or deleted
Indexable tags for user discovery
Topic created, updated [or deleted -- not supported yet]
Subscription created, updated or deleted
Message published or deleted
Actual access mode
Used in:
, , ,Access mode requested by the user
Access mode granted to the user by the admin
Authentication level
Used in:
, ,Used in:
,Invalid value. The name must be globally unique.
User creation message {acc}
Used in:
User being created or updated
The initial authentication scheme the account can use
Shared secret
Authenticate session with the newly created account
Indexable tags for user discovery
User initialization data when creating a new user, otherwise ignored
Credentials for verification.
Authentication token used for resetting a password.
Account state: normal ("ok"), suspended
AuthLevel
Temporary auth params for one-off actions like password reset.
Credentials such as email or phone number
Used in:
, , ,Credential type, i.e. `email` or `tel`.
Value to verify, i.e. `user@example.com` or `+18003287448`
Verification response
Request parameters, such as preferences or country code.
ClientDel delete messages or topic
Used in:
Delete messages by id or range of ids
User ID of the subscription to delete
Credential to delete.
Request to hard-delete messages for all users, if such option is available.
What to delete, either "msg" to delete messages (default) or "topic" to delete the topic or "sub" to delete a subscription to topic.
Used in:
Invalid value. The name must be globally unique.
Used in:
Root user may send messages on behalf of other users.
Query topic state {get}
Used in:
Client handshake
Used in:
Unsubscribe {leave} request message
Used in:
Login {login} message
Used in:
Authentication scheme
Shared secret
Credentials for verification.
Used as request type in: Node.MessageLoop
Used as field type in:
,Additional message parameters.
ClientNote is a client-generated notification for topic subscribers
Used in:
what is being reported: "recv" - message received, "read" - message read, "kp" - typing notification, "call" - voice/video call
Server-issued message ID being reported
Client's count of unread messages to report back to the server. Used in push notifications on iOS.
Call event.
Arbitrary json payload (used in video calls).
ClientPub is client's request to publish data to topic subscribers {pub}
Used in:
Update topic state {set}
Used in:
Subscription request {sub} message
Used in:
mirrors {set}
mirrors {get}
Used in:
, , ,Topic default access mode
Used in:
, ,Used in:
Used in:
Timestamp in milliseconds since epoch 01/01/1970
Limit search to this user ID
Limit search results to one topic;
Load messages with seq id equal or greater than this
Load messages with seq id lower than this
Maximum number of results to return
Used in:
,Parameters of "desc" request
Parameters of "sub" request
Parameters of "data" request
Used in:
,Invalid value. The name must be globally unique.
Plugin response codes
Used in:
,Instruct Tinode server to continue with default processing of the client request.
Drop the request as if the client did not send it
Send the the provided response to the client.
Replace client's original request with the provided request then continue with processing.
Used in:
, ,Credentials
Used in:
Credential type, i.e. `email` or `tel`.
Value to verify, i.e. `user@example.com` or `+18003287448`
Indicator that the credential is validated
{ctrl} message
Used in:
{data} message
Used in:
,ID of the user who originated the message as {pub}, could be empty if sent by the system
Timestamp when the message was sent.
Timestamp when the message was deleted or 0. Milliseconds since the epoch 01/01/1970
{info} message: server-side copy of ClientNote with From and optional Src added.
Used in:
{meta} message
Used in:
Cumulative message
Used as response type in: Node.MessageLoop
Used as field type in:
DEPRECATED. Will be removed soon. When response is sent to Root, send internal topic name too.
{pres} message
Used in:
Used in:
Invalid value. The name must be globally unique.
Context message
Used in:
SetDesc: C2S in set.what == "desc" and sub.init message
Used in:
,Used in:
,Topic metadata, new topic & new subscriptions only
Subscription parameters
Indexable tags
Credential being updated.
SetSub: payload in set.sub request to update current subscription or invite another user, {sub.what} == "sub"
Used in:
User affected by this request. Default (empty): current user
Access mode change, either Given or Want depending on context
Topic description, S2C in Meta message
Used in:
,17!
P2P only: other user's last online timestamp & user agent
MsgTopicSub: topic subscription details, sent in Meta message
Used in:
,16!
Uid of the subscribed user
Topic name of this subscription
ID of the last {data} message in a topic
Messages are deleted up to this ID
Other user's last online timestamp & user agent
Dummy placeholder message.
Used as response type in: Plugin.Account, Plugin.Message, Plugin.Subscription, Plugin.Topic
(message has no fields)