<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="fcm_v1.html">Firebase Cloud Messaging API</a> . <a href="fcm_v1.projects.html">projects</a> . <a href="fcm_v1.projects.messages.html">messages</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#send">send(parent, body, x__xgafv=None)</a></code></p>
<p class="firstline">Send a message to specified target (a registration token, topic</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="send">send(parent, body, x__xgafv=None)</code>
  <pre>Send a message to specified target (a registration token, topic
or condition).

Args:
  parent: string, Required. It contains the Firebase project id (i.e. the unique identifier
for your Firebase project), in the format of `projects/{project_id}`.
For legacy support, the numeric project number with no padding is also
supported in the format of `projects/{project_number}`. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Request to send a message to specified target.
    "message": { # Message to send by Firebase Cloud Messaging Service. # Required. Message to send.
      "name": "A String", # Output Only. The identifier of the message sent, in the format of
          # `projects/*/messages/{message_id}`.
      "fcmOptions": { # Platform independent options for features provided by the FCM SDKs. # Input only. Template for FCM SDK feature options to use across all
          # platforms.
        "analyticsLabel": "A String", # Label that the message's analytics data will be associated with.
      },
      "notification": { # Basic notification template to use across all platforms. # Input only. Basic notification template to use across all platforms.
        "body": "A String", # The notification's body text.
        "title": "A String", # The notification's title.
      },
      "token": "A String", # Registration token to send a message to.
      "webpush": { # [Webpush protocol](https://tools.ietf.org/html/rfc8030) options. # Input only. [Webpush protocol](https://tools.ietf.org/html/rfc8030)
          # options.
        "headers": { # HTTP headers defined in webpush protocol. Refer to
            # [Webpush protocol](https://tools.ietf.org/html/rfc8030#section-5) for
            # supported headers, e.g. "TTL": "15".
          "a_key": "A String",
        },
        "data": { # Arbitrary key/value payload. If present, it will override
            # google.firebase.fcm.v1.Message.data.
          "a_key": "A String",
        },
        "fcmOptions": { # Options for features provided by the FCM SDK for Web. # Options for features provided by the FCM SDK for Web.
          "link": "A String", # The link to open when the user clicks on the notification.
              # For all URL values, HTTPS is required.
        },
        "notification": { # Web Notification options as a JSON object. Supports Notification instance
            # properties as defined in [Web Notification
            # API](https://developer.mozilla.org/en-US/docs/Web/API/Notification). If
            # present, "title" and "body" fields override
            # [google.firebase.fcm.v1.Notification.title] and
            # [google.firebase.fcm.v1.Notification.body].
          "a_key": "", # Properties of the object.
        },
      },
      "topic": "A String", # Topic name to send a message to, e.g. "weather".
          # Note: "/topics/" prefix should not be provided.
      "apns": { # [Apple Push Notification Service](https://goo.gl/MXRTPa) specific options. # Input only. [Apple Push Notification Service](https://goo.gl/MXRTPa)
          # specific options.
        "headers": { # HTTP request headers defined in Apple Push Notification Service. Refer to
            # [APNs request headers](https://goo.gl/C6Yhia) for
            # supported headers, e.g. "apns-priority": "10".
          "a_key": "A String",
        },
        "payload": { # APNs payload as a JSON object, including both `aps` dictionary and custom
            # payload. See [Payload Key Reference](https://goo.gl/32Pl5W).
            # If present, it overrides google.firebase.fcm.v1.Notification.title
            # and google.firebase.fcm.v1.Notification.body.
          "a_key": "", # Properties of the object.
        },
        "fcmOptions": { # Options for features provided by the FCM SDK for iOS. # Options for features provided by the FCM SDK for iOS.
          "analyticsLabel": "A String", # Label that the message's analytics data will be associated with.
        },
      },
      "android": { # Android specific options for messages sent through # Input only. Android specific options for messages sent through
          # [FCM connection server](https://goo.gl/4GLdUl).
          # [FCM connection server](https://goo.gl/4GLdUl).
        "fcmOptions": { # Options for features provided by the FCM SDK for Android. # Options for features provided by the FCM SDK for Android.
          "analyticsLabel": "A String", # Label that the message's analytics data will be associated with.
        },
        "notification": { # Notification to send to android devices. # Notification to send to android devices.
          "sound": "A String", # The sound to play when the device receives the notification.
              # Supports "default" or the filename of a sound resource bundled in the app.
              # Sound files must reside in /res/raw/.
          "bodyLocKey": "A String", # The key to the body string in the app's string resources to use to localize
              # the body text to the user's current localization.
              # See [String Resources](https://goo.gl/NdFZGI) for more information.
          "bodyLocArgs": [ # Variable string values to be used in place of the format specifiers in
              # body_loc_key to use to localize the body text to the user's current
              # localization.
              # See [Formatting and Styling](https://goo.gl/MalYE3) for more information.
            "A String",
          ],
          "title": "A String", # The notification's title. If present, it will override
              # google.firebase.fcm.v1.Notification.title.
          "color": "A String", # The notification's icon color, expressed in #rrggbb format.
          "channelId": "A String", # The [notification's channel
              # id](https://developer.android.com/guide/topics/ui/notifiers/notifications#ManageChannels)
              # (new in Android O). The app must create a channel with this channel ID
              # before any notification with this channel ID is received. If you don't send
              # this channel ID in the request, or if the channel ID provided has not yet
              # been created by the app, FCM uses the channel ID specified in the app
              # manifest.
          "body": "A String", # The notification's body text. If present, it will override
              # google.firebase.fcm.v1.Notification.body.
          "clickAction": "A String", # The action associated with a user click on the notification.
              # If specified, an activity with a matching intent filter is launched when
              # a user clicks on the notification.
          "titleLocKey": "A String", # The key to the title string in the app's string resources to use to
              # localize the title text to the user's current localization.
              # See [String Resources](https://goo.gl/NdFZGI) for more information.
          "titleLocArgs": [ # Variable string values to be used in place of the format specifiers in
              # title_loc_key to use to localize the title text to the user's current
              # localization.
              # See [Formatting and Styling](https://goo.gl/MalYE3) for more information.
            "A String",
          ],
          "tag": "A String", # Identifier used to replace existing notifications in the notification
              # drawer.
              # If not specified, each request creates a new notification.
              # If specified and a notification with the same tag is already being shown,
              # the new notification replaces the existing one in the notification drawer.
          "icon": "A String", # The notification's icon.
              # Sets the notification icon to myicon for drawable resource myicon.
              # If you don't send this key in the request, FCM displays the launcher icon
              # specified in your app manifest.
        },
        "priority": "A String", # Message priority. Can take "normal" and "high" values.
            # For more information, see [Setting the priority of a
            # message](https://goo.gl/GjONJv).
        "collapseKey": "A String", # An identifier of a group of messages that can be collapsed, so that only
            # the last message gets sent when delivery can be resumed. A maximum of 4
            # different collapse keys is allowed at any given time.
        "ttl": "A String", # How long (in seconds) the message should be kept in FCM storage if the
            # device is offline. The maximum time to live supported is 4 weeks, and the
            # default value is 4 weeks if not set. Set it to 0 if want to send the
            # message immediately.
            # In JSON format, the Duration type is encoded as a string rather than an
            # object, where the string ends in the suffix "s" (indicating seconds) and
            # is preceded by the number of seconds, with nanoseconds expressed as
            # fractional seconds. For example, 3 seconds with 0 nanoseconds should be
            # encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
            # be expressed in JSON format as "3.000000001s". The ttl will be rounded down
            # to the nearest second.
        "restrictedPackageName": "A String", # Package name of the application where the registration token must match in
            # order to receive the message.
        "data": { # Arbitrary key/value payload. If present, it will override
            # google.firebase.fcm.v1.Message.data.
          "a_key": "A String",
        },
      },
      "data": { # Input only. Arbitrary key/value payload.
        "a_key": "A String",
      },
      "condition": "A String", # Condition to send a message to,
          # e.g. "'foo' in topics && 'bar' in topics".
    },
    "validateOnly": True or False, # Flag for testing the request without actually delivering the message.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Message to send by Firebase Cloud Messaging Service.
    "name": "A String", # Output Only. The identifier of the message sent, in the format of
        # `projects/*/messages/{message_id}`.
    "fcmOptions": { # Platform independent options for features provided by the FCM SDKs. # Input only. Template for FCM SDK feature options to use across all
        # platforms.
      "analyticsLabel": "A String", # Label that the message's analytics data will be associated with.
    },
    "notification": { # Basic notification template to use across all platforms. # Input only. Basic notification template to use across all platforms.
      "body": "A String", # The notification's body text.
      "title": "A String", # The notification's title.
    },
    "token": "A String", # Registration token to send a message to.
    "webpush": { # [Webpush protocol](https://tools.ietf.org/html/rfc8030) options. # Input only. [Webpush protocol](https://tools.ietf.org/html/rfc8030)
        # options.
      "headers": { # HTTP headers defined in webpush protocol. Refer to
          # [Webpush protocol](https://tools.ietf.org/html/rfc8030#section-5) for
          # supported headers, e.g. "TTL": "15".
        "a_key": "A String",
      },
      "data": { # Arbitrary key/value payload. If present, it will override
          # google.firebase.fcm.v1.Message.data.
        "a_key": "A String",
      },
      "fcmOptions": { # Options for features provided by the FCM SDK for Web. # Options for features provided by the FCM SDK for Web.
        "link": "A String", # The link to open when the user clicks on the notification.
            # For all URL values, HTTPS is required.
      },
      "notification": { # Web Notification options as a JSON object. Supports Notification instance
          # properties as defined in [Web Notification
          # API](https://developer.mozilla.org/en-US/docs/Web/API/Notification). If
          # present, "title" and "body" fields override
          # [google.firebase.fcm.v1.Notification.title] and
          # [google.firebase.fcm.v1.Notification.body].
        "a_key": "", # Properties of the object.
      },
    },
    "topic": "A String", # Topic name to send a message to, e.g. "weather".
        # Note: "/topics/" prefix should not be provided.
    "apns": { # [Apple Push Notification Service](https://goo.gl/MXRTPa) specific options. # Input only. [Apple Push Notification Service](https://goo.gl/MXRTPa)
        # specific options.
      "headers": { # HTTP request headers defined in Apple Push Notification Service. Refer to
          # [APNs request headers](https://goo.gl/C6Yhia) for
          # supported headers, e.g. "apns-priority": "10".
        "a_key": "A String",
      },
      "payload": { # APNs payload as a JSON object, including both `aps` dictionary and custom
          # payload. See [Payload Key Reference](https://goo.gl/32Pl5W).
          # If present, it overrides google.firebase.fcm.v1.Notification.title
          # and google.firebase.fcm.v1.Notification.body.
        "a_key": "", # Properties of the object.
      },
      "fcmOptions": { # Options for features provided by the FCM SDK for iOS. # Options for features provided by the FCM SDK for iOS.
        "analyticsLabel": "A String", # Label that the message's analytics data will be associated with.
      },
    },
    "android": { # Android specific options for messages sent through # Input only. Android specific options for messages sent through
        # [FCM connection server](https://goo.gl/4GLdUl).
        # [FCM connection server](https://goo.gl/4GLdUl).
      "fcmOptions": { # Options for features provided by the FCM SDK for Android. # Options for features provided by the FCM SDK for Android.
        "analyticsLabel": "A String", # Label that the message's analytics data will be associated with.
      },
      "notification": { # Notification to send to android devices. # Notification to send to android devices.
        "sound": "A String", # The sound to play when the device receives the notification.
            # Supports "default" or the filename of a sound resource bundled in the app.
            # Sound files must reside in /res/raw/.
        "bodyLocKey": "A String", # The key to the body string in the app's string resources to use to localize
            # the body text to the user's current localization.
            # See [String Resources](https://goo.gl/NdFZGI) for more information.
        "bodyLocArgs": [ # Variable string values to be used in place of the format specifiers in
            # body_loc_key to use to localize the body text to the user's current
            # localization.
            # See [Formatting and Styling](https://goo.gl/MalYE3) for more information.
          "A String",
        ],
        "title": "A String", # The notification's title. If present, it will override
            # google.firebase.fcm.v1.Notification.title.
        "color": "A String", # The notification's icon color, expressed in #rrggbb format.
        "channelId": "A String", # The [notification's channel
            # id](https://developer.android.com/guide/topics/ui/notifiers/notifications#ManageChannels)
            # (new in Android O). The app must create a channel with this channel ID
            # before any notification with this channel ID is received. If you don't send
            # this channel ID in the request, or if the channel ID provided has not yet
            # been created by the app, FCM uses the channel ID specified in the app
            # manifest.
        "body": "A String", # The notification's body text. If present, it will override
            # google.firebase.fcm.v1.Notification.body.
        "clickAction": "A String", # The action associated with a user click on the notification.
            # If specified, an activity with a matching intent filter is launched when
            # a user clicks on the notification.
        "titleLocKey": "A String", # The key to the title string in the app's string resources to use to
            # localize the title text to the user's current localization.
            # See [String Resources](https://goo.gl/NdFZGI) for more information.
        "titleLocArgs": [ # Variable string values to be used in place of the format specifiers in
            # title_loc_key to use to localize the title text to the user's current
            # localization.
            # See [Formatting and Styling](https://goo.gl/MalYE3) for more information.
          "A String",
        ],
        "tag": "A String", # Identifier used to replace existing notifications in the notification
            # drawer.
            # If not specified, each request creates a new notification.
            # If specified and a notification with the same tag is already being shown,
            # the new notification replaces the existing one in the notification drawer.
        "icon": "A String", # The notification's icon.
            # Sets the notification icon to myicon for drawable resource myicon.
            # If you don't send this key in the request, FCM displays the launcher icon
            # specified in your app manifest.
      },
      "priority": "A String", # Message priority. Can take "normal" and "high" values.
          # For more information, see [Setting the priority of a
          # message](https://goo.gl/GjONJv).
      "collapseKey": "A String", # An identifier of a group of messages that can be collapsed, so that only
          # the last message gets sent when delivery can be resumed. A maximum of 4
          # different collapse keys is allowed at any given time.
      "ttl": "A String", # How long (in seconds) the message should be kept in FCM storage if the
          # device is offline. The maximum time to live supported is 4 weeks, and the
          # default value is 4 weeks if not set. Set it to 0 if want to send the
          # message immediately.
          # In JSON format, the Duration type is encoded as a string rather than an
          # object, where the string ends in the suffix "s" (indicating seconds) and
          # is preceded by the number of seconds, with nanoseconds expressed as
          # fractional seconds. For example, 3 seconds with 0 nanoseconds should be
          # encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
          # be expressed in JSON format as "3.000000001s". The ttl will be rounded down
          # to the nearest second.
      "restrictedPackageName": "A String", # Package name of the application where the registration token must match in
          # order to receive the message.
      "data": { # Arbitrary key/value payload. If present, it will override
          # google.firebase.fcm.v1.Message.data.
        "a_key": "A String",
      },
    },
    "data": { # Input only. Arbitrary key/value payload.
      "a_key": "A String",
    },
    "condition": "A String", # Condition to send a message to,
        # e.g. "'foo' in topics && 'bar' in topics".
  }</pre>
</div>

</body></html>