| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| library fuchsia.firebase.messaging; |
| |
| type Application = struct { |
| /// Full package name of the application. |
| name string; |
| /// Sender ID associated with the firebase project. |
| sender string; |
| /// Application-defined string. |
| version string; |
| }; |
| |
| /// Connectivity events to sign up for. |
| type ConnectivityEvent = strict bits : uint8 { |
| /// Indicates that the client has signed up for connectivity notifications. |
| START = 1; |
| |
| /// Informs the service on client disconnection. |
| DISCONNECT = 2; |
| |
| /// Informs the service of heartbeats from the client. May be noisy. |
| HEARTBEAT = 4; |
| }; |
| |
| type Pair = struct { |
| key string:4096; |
| val string:4096; |
| }; |
| |
| type Priority = strict enum { |
| NORMAL = 5; |
| HIGH = 10; |
| }; |
| |
| /// Data wrapper for FCM. |
| type Message = table { |
| /// This parameter specifies the recipient of a message. |
| /// |
| /// For example it can be a registration token, a topic name, a IID or |
| /// project ID. |
| /// |
| /// For upstream messages, `PROJECT_ID@gcm.googleapis.com` or the more general |
| /// IID format are accepted. |
| 1: to string; |
| |
| /// The metadata, including all original key/value pairs. Includes some of |
| /// the HTTP headers used when sending the message. `gcm`, `google` and |
| /// `goog` prefixes are reserved for internal use. |
| 2: metadata vector<Pair>:4096; |
| |
| /// Binary payload. For webpush and non-json messages, this is the body of |
| /// the request entity. |
| 3: payload bytes:4096; |
| |
| /// Message ID. This can be specified by sender. Internally a hash of the |
| /// message ID and other elements will be used for storage. The ID must be |
| /// unique for each topic subscription - using the same ID may result in |
| /// overriding the original message or duplicate delivery. |
| 4: id string; |
| }; |
| |
| type DownstreamMessage = table { |
| 1: message Message; |
| |
| /// Authenticated ID of the sender. This is a project number in most cases. |
| 2: from string; |
| |
| /// The collapse key used for collapsible messages. |
| 3: collapse_key string; |
| |
| /// Equivalent with a content-type. |
| /// Special types: |
| /// "ack" and "nack" are used for flow control and error handling. |
| /// "control" is used for connection control. |
| 4: type string; |
| |
| /// Priority level. If absent, indicates normal priority (i.e. |
| /// Priority.NORMAL). |
| 5: priority Priority; |
| |
| /// Time to live, in seconds. |
| 6: time_to_live uint32; |
| }; |