{
  "description": "FCM send API that provides a cross-platform messaging solution to reliably deliver messages at no cost.",
  "servicePath": "",
  "batchPath": "batch",
  "name": "fcm",
  "version": "v1",
  "fullyEncodeReservedExpansion": true,
  "parameters": {
    "uploadType": {
      "location": "query",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "type": "string"
    },
    "callback": {
      "location": "query",
      "type": "string",
      "description": "JSONP"
    },
    "upload_protocol": {
      "location": "query",
      "type": "string",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")."
    },
    "oauth_token": {
      "location": "query",
      "description": "OAuth 2.0 token for the current user.",
      "type": "string"
    },
    "fields": {
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query",
      "type": "string"
    },
    "alt": {
      "default": "json",
      "location": "query",
      "description": "Data format for response.",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "type": "string"
    },
    "key": {
      "type": "string",
      "location": "query",
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token."
    },
    "prettyPrint": {
      "default": "true",
      "description": "Returns response with indentations and line breaks.",
      "location": "query",
      "type": "boolean"
    },
    "access_token": {
      "description": "OAuth access token.",
      "type": "string",
      "location": "query"
    },
    "$.xgafv": {
      "type": "string",
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "enum": [
        "1",
        "2"
      ],
      "description": "V1 error format.",
      "location": "query"
    },
    "quotaUser": {
      "location": "query",
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
      "type": "string"
    }
  },
  "documentationLink": "https://firebase.google.com/docs/cloud-messaging",
  "ownerName": "Google",
  "discoveryVersion": "v1",
  "title": "Firebase Cloud Messaging API",
  "version_module": true,
  "kind": "discovery#restDescription",
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/cloud-platform": {
          "description": "View and manage your data across Google Cloud Platform services"
        }
      }
    }
  },
  "protocol": "rest",
  "basePath": "",
  "id": "fcm:v1",
  "schemas": {
    "Message": {
      "type": "object",
      "id": "Message",
      "description": "Message to send by Firebase Cloud Messaging Service.",
      "properties": {
        "condition": {
          "description": "Condition to send a message to, e.g. \"'foo' in topics && 'bar' in topics\".",
          "type": "string"
        },
        "webpush": {
          "$ref": "WebpushConfig",
          "description": "Input only. [Webpush protocol](https://tools.ietf.org/html/rfc8030) options."
        },
        "android": {
          "description": "Input only. Android specific options for messages sent through [FCM connection server](https://goo.gl/4GLdUl).",
          "$ref": "AndroidConfig"
        },
        "apns": {
          "description": "Input only. [Apple Push Notification Service](https://goo.gl/MXRTPa) specific options.",
          "$ref": "ApnsConfig"
        },
        "token": {
          "description": "Registration token to send a message to.",
          "type": "string"
        },
        "notification": {
          "description": "Input only. Basic notification template to use across all platforms.",
          "$ref": "Notification"
        },
        "topic": {
          "description": "Topic name to send a message to, e.g. \"weather\". Note: \"/topics/\" prefix should not be provided.",
          "type": "string"
        },
        "fcmOptions": {
          "description": "Input only. Template for FCM SDK feature options to use across all platforms.",
          "$ref": "FcmOptions"
        },
        "name": {
          "type": "string",
          "description": "Output Only. The identifier of the message sent, in the format of `projects/*/messages/{message_id}`."
        },
        "data": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Input only. Arbitrary key/value payload. The key should not be a reserved word (\"from\", \"message_type\", or any word starting with \"google\" or \"gcm\")."
        }
      }
    },
    "Color": {
      "properties": {
        "red": {
          "description": "The amount of red in the color as a value in the interval [0, 1].",
          "format": "float",
          "type": "number"
        },
        "blue": {
          "description": "The amount of blue in the color as a value in the interval [0, 1].",
          "format": "float",
          "type": "number"
        },
        "green": {
          "description": "The amount of green in the color as a value in the interval [0, 1].",
          "type": "number",
          "format": "float"
        },
        "alpha": {
          "format": "float",
          "description": "The fraction of this color that should be applied to the pixel. That is, the final pixel color is defined by the equation: pixel color = alpha * (this color) + (1.0 - alpha) * (background color) This means that a value of 1.0 corresponds to a solid color, whereas a value of 0.0 corresponds to a completely transparent color. This uses a wrapper message rather than a simple float scalar so that it is possible to distinguish between a default value and the value being unset. If omitted, this color object is to be rendered as a solid color (as if the alpha value had been explicitly given with a value of 1.0).",
          "type": "number"
        }
      },
      "description": "Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to/from color representations in various languages over compactness; for example, the fields of this representation can be trivially provided to the constructor of \"java.awt.Color\" in Java; it can also be trivially provided to UIColor's \"+colorWithRed:green:blue:alpha\" method in iOS; and, with just a little work, it can be easily formatted into a CSS \"rgba()\" string in JavaScript, as well. Note: this proto does not carry information about the absolute color space that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB, DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color space. Note: when color equality needs to be decided, implementations, unless documented otherwise, will treat two colors to be equal if all their red, green, blue and alpha values each differ by at most 1e-5. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha \u003c= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) { return rgbToCssColor_(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); }; var rgbToCssColor_ = function(red, green, blue) { var rgbNumber = new Number((red \u003c\u003c 16) | (green \u003c\u003c 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i \u003c missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ...",
      "type": "object",
      "id": "Color"
    },
    "WebpushFcmOptions": {
      "description": "Options for features provided by the FCM SDK for Web.",
      "properties": {
        "analyticsLabel": {
          "type": "string",
          "description": "Label associated with the message's analytics data."
        },
        "link": {
          "type": "string",
          "description": "The link to open when the user clicks on the notification. For all URL values, HTTPS is required."
        }
      },
      "id": "WebpushFcmOptions",
      "type": "object"
    },
    "Notification": {
      "properties": {
        "body": {
          "description": "The notification's body text.",
          "type": "string"
        },
        "image": {
          "type": "string",
          "description": "Contains the URL of an image that is going to be downloaded on the device and displayed in a notification. JPEG, PNG, BMP have full support across platforms. Animated GIF and video only work on iOS. WebP and HEIF have varying levels of support across platforms and platform versions. Android has 1MB image size limit. Quota usage and implications/costs for hosting image on Firebase Storage: https://firebase.google.com/pricing"
        },
        "title": {
          "type": "string",
          "description": "The notification's title."
        }
      },
      "description": "Basic notification template to use across all platforms.",
      "type": "object",
      "id": "Notification"
    },
    "AndroidFcmOptions": {
      "properties": {
        "analyticsLabel": {
          "description": "Label associated with the message's analytics data.",
          "type": "string"
        }
      },
      "description": "Options for features provided by the FCM SDK for Android.",
      "type": "object",
      "id": "AndroidFcmOptions"
    },
    "SendMessageRequest": {
      "description": "Request to send a message to specified target.",
      "id": "SendMessageRequest",
      "properties": {
        "message": {
          "description": "Required. Message to send.",
          "$ref": "Message"
        },
        "validateOnly": {
          "description": "Flag for testing the request without actually delivering the message.",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "LightSettings": {
      "type": "object",
      "properties": {
        "lightOffDuration": {
          "type": "string",
          "format": "google-duration",
          "description": "Required. Along with `light_on_duration `, define the blink rate of LED flashes. Resolution defined by [proto.Duration](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.Duration)"
        },
        "color": {
          "$ref": "Color",
          "description": "Required. Set `color` of the LED with [google.type.Color](https://github.com/googleapis/googleapis/blob/master/google/type/color.proto)."
        },
        "lightOnDuration": {
          "description": "Required. Along with `light_off_duration`, define the blink rate of LED flashes. Resolution defined by [proto.Duration](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.Duration)",
          "type": "string",
          "format": "google-duration"
        }
      },
      "id": "LightSettings",
      "description": "Settings to control notification LED."
    },
    "FcmOptions": {
      "type": "object",
      "id": "FcmOptions",
      "description": "Platform independent options for features provided by the FCM SDKs.",
      "properties": {
        "analyticsLabel": {
          "type": "string",
          "description": "Label associated with the message's analytics data."
        }
      }
    },
    "ApnsFcmOptions": {
      "properties": {
        "analyticsLabel": {
          "description": "Label associated with the message's analytics data.",
          "type": "string"
        },
        "image": {
          "description": "Contains the URL of an image that is going to be displayed in a notification. If present, it will override google.firebase.fcm.v1.Notification.image.",
          "type": "string"
        }
      },
      "id": "ApnsFcmOptions",
      "description": "Options for features provided by the FCM SDK for iOS.",
      "type": "object"
    },
    "WebpushConfig": {
      "description": "[Webpush protocol](https://tools.ietf.org/html/rfc8030) options.",
      "properties": {
        "headers": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "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\".",
          "type": "object"
        },
        "fcmOptions": {
          "description": "Options for features provided by the FCM SDK for Web.",
          "$ref": "WebpushFcmOptions"
        },
        "notification": {
          "description": "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].",
          "type": "object",
          "additionalProperties": {
            "description": "Properties of the object.",
            "type": "any"
          }
        },
        "data": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Arbitrary key/value payload. If present, it will override google.firebase.fcm.v1.Message.data.",
          "type": "object"
        }
      },
      "type": "object",
      "id": "WebpushConfig"
    },
    "AndroidConfig": {
      "properties": {
        "collapseKey": {
          "description": "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.",
          "type": "string"
        },
        "priority": {
          "type": "string",
          "description": "Message priority. Can take \"normal\" and \"high\" values. For more information, see [Setting the priority of a message](https://goo.gl/GjONJv).",
          "enum": [
            "NORMAL",
            "HIGH"
          ],
          "enumDescriptions": [
            "Default priority for data messages. Normal priority messages won't open network connections on a sleeping device, and their delivery may be delayed to conserve the battery. For less time-sensitive messages, such as notifications of new email or other data to sync, choose normal delivery priority.",
            "Default priority for notification messages. FCM attempts to deliver high priority messages immediately, allowing the FCM service to wake a sleeping device when possible and open a network connection to your app server. Apps with instant messaging, chat, or voice call alerts, for example, generally need to open a network connection and make sure FCM delivers the message to the device without delay. Set high priority if the message is time-critical and requires the user's immediate interaction, but beware that setting your messages to high priority contributes more to battery drain compared with normal priority messages."
          ]
        },
        "restrictedPackageName": {
          "type": "string",
          "description": "Package name of the application where the registration token must match in order to receive the message."
        },
        "notification": {
          "description": "Notification to send to android devices.",
          "$ref": "AndroidNotification"
        },
        "fcmOptions": {
          "description": "Options for features provided by the FCM SDK for Android.",
          "$ref": "AndroidFcmOptions"
        },
        "directBootOk": {
          "type": "boolean",
          "description": "If set to true, messages will be allowed to be delivered to the app while the device is in direct boot mode. See [Support Direct Boot mode](https://developer.android.com/training/articles/direct-boot)."
        },
        "ttl": {
          "description": "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.",
          "format": "google-duration",
          "type": "string"
        },
        "data": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "Arbitrary key/value payload. If present, it will override google.firebase.fcm.v1.Message.data."
        }
      },
      "type": "object",
      "id": "AndroidConfig",
      "description": "Android specific options for messages sent through [FCM connection server](https://goo.gl/4GLdUl)."
    },
    "ApnsConfig": {
      "properties": {
        "fcmOptions": {
          "$ref": "ApnsFcmOptions",
          "description": "Options for features provided by the FCM SDK for iOS."
        },
        "payload": {
          "type": "object",
          "additionalProperties": {
            "description": "Properties of the object.",
            "type": "any"
          },
          "description": "APNs payload as a JSON object, including both `aps` dictionary and custom payload. See [Payload Key Reference](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/generating_a_remote_notification). If present, it overrides google.firebase.fcm.v1.Notification.title and google.firebase.fcm.v1.Notification.body."
        },
        "headers": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "HTTP request headers defined in Apple Push Notification Service. Refer to [APNs request headers](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns) for supported headers, e.g. \"apns-priority\": \"10\"."
        }
      },
      "description": "[Apple Push Notification Service](https://goo.gl/MXRTPa) specific options.",
      "type": "object",
      "id": "ApnsConfig"
    },
    "AndroidNotification": {
      "description": "Notification to send to android devices.",
      "properties": {
        "channelId": {
          "type": "string",
          "description": "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."
        },
        "bodyLocArgs": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "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."
        },
        "icon": {
          "type": "string",
          "description": "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."
        },
        "notificationCount": {
          "description": "Sets the number of items this notification represents. May be displayed as a badge count for launchers that support badging.See [Notification Badge](https://developer.android.com/training/notify-user/badges). For example, this might be useful if you're using just one notification to represent multiple new messages but you want the count here to represent the number of total new messages. If zero or unspecified, systems that support badging use the default, which is to increment a number displayed on the long-press menu each time a new notification arrives.",
          "type": "integer",
          "format": "int32"
        },
        "defaultVibrateTimings": {
          "type": "boolean",
          "description": "If set to true, use the Android framework's default vibrate pattern for the notification. Default values are specified in [config.xml](https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml). If `default_vibrate_timings` is set to true and `vibrate_timings` is also set, the default value is used instead of the user-specified `vibrate_timings`."
        },
        "visibility": {
          "description": "Set the [Notification.visibility](https://developer.android.com/reference/android/app/Notification.html#visibility) of the notification.",
          "enumDescriptions": [
            "If unspecified, default to `Visibility.PRIVATE`.",
            "Show this notification on all lockscreens, but conceal sensitive or private information on secure lockscreens.",
            "Show this notification in its entirety on all lockscreens.",
            "Do not reveal any part of this notification on a secure lockscreen."
          ],
          "enum": [
            "VISIBILITY_UNSPECIFIED",
            "PRIVATE",
            "PUBLIC",
            "SECRET"
          ],
          "type": "string"
        },
        "tag": {
          "description": "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.",
          "type": "string"
        },
        "titleLocKey": {
          "type": "string",
          "description": "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."
        },
        "notificationPriority": {
          "description": "Set the relative priority for this notification. Priority is an indication of how much of the user's attention should be consumed by this notification. Low-priority notifications may be hidden from the user in certain situations, while the user might be interrupted for a higher-priority notification. The effect of setting the same priorities may differ slightly on different platforms. Note this priority differs from `AndroidMessagePriority`. This priority is processed by the client after the message has been delivered, whereas [AndroidMessagePriority](https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages#androidmessagepriority) is an FCM concept that controls when the message is delivered.",
          "enumDescriptions": [
            "If priority is unspecified, notification priority is set to `PRIORITY_DEFAULT`.",
            "Lowest notification priority. Notifications with this `PRIORITY_MIN` might not be shown to the user except under special circumstances, such as detailed notification logs.",
            "Lower notification priority. The UI may choose to show the notifications smaller, or at a different position in the list, compared with notifications with `PRIORITY_DEFAULT`.",
            "Default notification priority. If the application does not prioritize its own notifications, use this value for all notifications.",
            "Higher notification priority. Use this for more important notifications or alerts. The UI may choose to show these notifications larger, or at a different position in the notification lists, compared with notifications with `PRIORITY_DEFAULT`.",
            "Highest notification priority. Use this for the application's most important items that require the user's prompt attention or input."
          ],
          "type": "string",
          "enum": [
            "PRIORITY_UNSPECIFIED",
            "PRIORITY_MIN",
            "PRIORITY_LOW",
            "PRIORITY_DEFAULT",
            "PRIORITY_HIGH",
            "PRIORITY_MAX"
          ]
        },
        "defaultSound": {
          "description": "If set to true, use the Android framework's default sound for the notification. Default values are specified in [config.xml](https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml).",
          "type": "boolean"
        },
        "clickAction": {
          "description": "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.",
          "type": "string"
        },
        "vibrateTimings": {
          "items": {
            "format": "google-duration",
            "type": "string"
          },
          "type": "array",
          "description": "Set the vibration pattern to use. Pass in an array of [protobuf.Duration](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.Duration) to turn on or off the vibrator. The first value indicates the `Duration` to wait before turning the vibrator on. The next value indicates the `Duration` to keep the vibrator on. Subsequent values alternate between `Duration` to turn the vibrator off and to turn the vibrator on. If `vibrate_timings` is set and `default_vibrate_timings` is set to `true`, the default value is used instead of the user-specified `vibrate_timings`."
        },
        "title": {
          "description": "The notification's title. If present, it will override google.firebase.fcm.v1.Notification.title.",
          "type": "string"
        },
        "sound": {
          "type": "string",
          "description": "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/."
        },
        "localOnly": {
          "description": "Set whether or not this notification is relevant only to the current device. Some notifications can be bridged to other devices for remote display, such as a Wear OS watch. This hint can be set to recommend this notification not be bridged. See [Wear OS guides](https://developer.android.com/training/wearables/notifications/bridger#existing-method-of-preventing-bridging)",
          "type": "boolean"
        },
        "defaultLightSettings": {
          "type": "boolean",
          "description": "If set to true, use the Android framework's default LED light settings for the notification. Default values are specified in [config.xml](https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml). If `default_light_settings` is set to true and `light_settings` is also set, the user-specified `light_settings` is used instead of the default value."
        },
        "bodyLocKey": {
          "description": "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.",
          "type": "string"
        },
        "lightSettings": {
          "description": "Settings to control the notification's LED blinking rate and color if LED is available on the device. The total blinking time is controlled by the OS.",
          "$ref": "LightSettings"
        },
        "image": {
          "type": "string",
          "description": "Contains the URL of an image that is going to be displayed in a notification. If present, it will override google.firebase.fcm.v1.Notification.image."
        },
        "sticky": {
          "type": "boolean",
          "description": "When set to false or unset, the notification is automatically dismissed when the user clicks it in the panel. When set to true, the notification persists even when the user clicks it."
        },
        "body": {
          "description": "The notification's body text. If present, it will override google.firebase.fcm.v1.Notification.body.",
          "type": "string"
        },
        "color": {
          "description": "The notification's icon color, expressed in #rrggbb format.",
          "type": "string"
        },
        "titleLocArgs": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "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."
        },
        "eventTime": {
          "description": "Set the time that the event in the notification occurred. Notifications in the panel are sorted by this time. A point in time is represented using [protobuf.Timestamp](https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/Timestamp).",
          "type": "string",
          "format": "google-datetime"
        },
        "ticker": {
          "type": "string",
          "description": "Sets the \"ticker\" text, which is sent to accessibility services. Prior to API level 21 (`Lollipop`), sets the text that is displayed in the status bar when the notification first arrives."
        }
      },
      "type": "object",
      "id": "AndroidNotification"
    }
  },
  "resources": {
    "projects": {
      "resources": {
        "messages": {
          "methods": {
            "send": {
              "request": {
                "$ref": "SendMessageRequest"
              },
              "id": "fcm.projects.messages.send",
              "description": "Send a message to specified target (a registration token, topic or condition).",
              "path": "v1/{+parent}/messages:send",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "description": "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": true,
                  "pattern": "^projects/[^/]+$",
                  "location": "path",
                  "type": "string"
                }
              },
              "flatPath": "v1/projects/{projectsId}/messages:send",
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "Message"
              }
            }
          }
        }
      }
    }
  },
  "baseUrl": "https://fcm.googleapis.com/",
  "mtlsRootUrl": "https://fcm.mtls.googleapis.com/",
  "rootUrl": "https://fcm.googleapis.com/",
  "revision": "20200720",
  "ownerDomain": "google.com",
  "icons": {
    "x32": "http://www.google.com/images/icons/product/search-32.gif",
    "x16": "http://www.google.com/images/icons/product/search-16.gif"
  },
  "canonicalName": "Firebase Cloud Messaging"
}
