{
  "batchPath": "batch",
  "title": "Firebase Remote Config API",
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/cloud-platform": {
          "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
        }
      }
    }
  },
  "rootUrl": "https://firebaseremoteconfig.googleapis.com/",
  "ownerName": "Google",
  "id": "firebaseremoteconfig:v1",
  "version_module": true,
  "mtlsRootUrl": "https://firebaseremoteconfig.mtls.googleapis.com/",
  "canonicalName": "Firebase Remote Config",
  "ownerDomain": "google.com",
  "baseUrl": "https://firebaseremoteconfig.googleapis.com/",
  "basePath": "",
  "servicePath": "",
  "parameters": {
    "access_token": {
      "type": "string",
      "description": "OAuth access token.",
      "location": "query"
    },
    "alt": {
      "type": "string",
      "description": "Data format for response.",
      "default": "json",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "location": "query"
    },
    "callback": {
      "type": "string",
      "description": "JSONP",
      "location": "query"
    },
    "fields": {
      "type": "string",
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query"
    },
    "key": {
      "type": "string",
      "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.",
      "location": "query"
    },
    "oauth_token": {
      "type": "string",
      "description": "OAuth 2.0 token for the current user.",
      "location": "query"
    },
    "prettyPrint": {
      "type": "boolean",
      "description": "Returns response with indentations and line breaks.",
      "default": "true",
      "location": "query"
    },
    "quotaUser": {
      "type": "string",
      "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.",
      "location": "query"
    },
    "upload_protocol": {
      "type": "string",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query"
    },
    "uploadType": {
      "type": "string",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "location": "query"
    },
    "$.xgafv": {
      "type": "string",
      "description": "V1 error format.",
      "enum": [
        "1",
        "2"
      ],
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "location": "query"
    }
  },
  "protocol": "rest",
  "description": "The Firebase Remote Config API lets developers change the behavior and appearance of their apps without requiring users to download an app update. It is an alternative to, but can be used in tandem with, the Firebase console at https://console.firebase.google.com.",
  "kind": "discovery#restDescription",
  "name": "firebaseremoteconfig",
  "version": "v1",
  "discoveryVersion": "v1",
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "schemas": {
    "RemoteConfig": {
      "id": "RemoteConfig",
      "description": "* A RemoteConfig represents a Remote Config template. A project's Remote Config template is evaluated during each application instance's fetch. Note: Server templates currently support percentage conditions. Publishing a server template with unsupported conditional values will return a validation error. See [Remote Config in Server Environments](https://firebase.google.com/docs/remote-config/server) for more information. The resolved value of a parameter is determined as follows: Given the conditional values that refer to `true` conditions for the application instance, the parameter's resolved value is the conditional value whose name is the earliest in the conditions list. Else, if the parameter has a default value, the resolved value is set to the default value. Else, the parameter has no value and is omitted from the result that the application instance fetches. For example, assume we have parameter key `fruit`, with default value `pear` and conditional value submap `{\"is_ios\": \"apple\", \"is_in_20_percent\": \"banana\"}` where `\"is_ios\"` and `\"is_20_percent\"` are names of conditions in the ordered condition list. The value of `fruit` would evaluate to `apple` if `is_ios` is true. Otherwise, if `is_in_20_percent` is `true`, `fruit` would evaluate to `banana`, and if `is_ios` and `is_in_20_percent` are both false, `fruit` would evaluate to `pear`. If no default value were specified, and `is_ios` and `is_in_20_percent` were both false, no value for `fruit` would be returned from the Remote Config server to the client. Once a project's Remote Config template has been published via a successful UpdateRemoteConfig call, clients can fetch these parameter values and display them to users.",
      "type": "object",
      "properties": {
        "conditions": {
          "description": "A list of conditions in descending order by priority. The values of the google.firebase.remoteconfig.v1.RemoteConfigCondition.name entries must be unique.",
          "type": "array",
          "items": {
            "$ref": "RemoteConfigCondition"
          }
        },
        "parameters": {
          "description": "Map of parameter keys to their optional default values and optional conditional values.",
          "type": "object",
          "additionalProperties": {
            "$ref": "RemoteConfigParameter"
          }
        },
        "version": {
          "description": "Output only, except for the version description. Metadata associated with a particular version of a template. A version's description field may be specified in UpdateRemoteConfig calls.",
          "$ref": "Version"
        },
        "parameterGroups": {
          "description": "Map of parameter group names to their descriptions and grouped parameters. A group's name is mutable but must be unique among groups in the config. The name is limited to 256 characters and intended to be human-readable. Any Unicode characters are allowed. Groups have a list of parameters which allows users of the API to group parameters that are associated with the same feature or theme together for easy organizational access. For example, a parameter group with the name \"Search V2\" may have the `description` \"New mobile search view\" and contain parameters for the new search's layout and font.",
          "type": "object",
          "additionalProperties": {
            "$ref": "RemoteConfigParameterGroup"
          }
        }
      }
    },
    "RemoteConfigCondition": {
      "id": "RemoteConfigCondition",
      "description": "A condition targeting a specific group of users. A list of these conditions make up part of a RemoteConfig object.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Required. A non-empty and unique name of this condition.",
          "type": "string"
        },
        "expression": {
          "description": "Required. The logic of this condition. See the documentation regarding [Condition Expressions](/docs/remote-config/condition-reference) for the expected syntax of this field.",
          "type": "string"
        },
        "tagColor": {
          "description": "Optional. The color associated with this condition for display purposes in the Firebase Console. Not specifying this value or having \"CONDITION_DISPLAY_COLOR_UNSPECIFIED\" results in the Console picking an arbitrary color to associate with the condition.",
          "type": "string",
          "enumDescriptions": [
            "Catch-all for unrecognized enum values.",
            "Blue",
            "Brown",
            "Cyan",
            "aka \"Red Orange\"",
            "Green",
            "Indigo",
            "Lime",
            "Orange",
            "Pink",
            "Purple",
            "Teal"
          ],
          "enum": [
            "CONDITION_DISPLAY_COLOR_UNSPECIFIED",
            "BLUE",
            "BROWN",
            "CYAN",
            "DEEP_ORANGE",
            "GREEN",
            "INDIGO",
            "LIME",
            "ORANGE",
            "PINK",
            "PURPLE",
            "TEAL"
          ]
        }
      }
    },
    "RemoteConfigParameter": {
      "id": "RemoteConfigParameter",
      "description": "A parameter value associated with a parameter key in google.firebase.remoteconfig.v1.RemoteConfig.parameters. At minimum, a `default_value` or a `conditional_values` entry should be present for the parameter to have any effect.",
      "type": "object",
      "properties": {
        "defaultValue": {
          "description": "Optional - value to set the parameter to, when none of the named conditions evaluate to `true`.",
          "$ref": "RemoteConfigParameterValue"
        },
        "conditionalValues": {
          "description": "Optional - a (condition name, value) map. The condition_name of the highest priority (the one listed first in the RemoteConfig's conditions list) determines the value of this parameter.",
          "type": "object",
          "additionalProperties": {
            "$ref": "RemoteConfigParameterValue"
          }
        },
        "description": {
          "description": "Optional. A description for this Parameter. Its length must be less than or equal to 256 characters . A description may contain any Unicode characters.",
          "type": "string"
        },
        "valueType": {
          "description": "The data type for all values of this parameter in the current version of the template. Defaults to `ParameterValueType.STRING` if unspecified.",
          "type": "string",
          "enumDescriptions": [
            "Catch-all for unrecognized enum values.",
            "Represents String values.",
            "Represents Boolean values (\"true\" or \"false\").",
            "Represents both positive and negative integer and float values.",
            "Represents JSON values."
          ],
          "enum": [
            "PARAMETER_VALUE_TYPE_UNSPECIFIED",
            "STRING",
            "BOOLEAN",
            "NUMBER",
            "JSON"
          ]
        }
      }
    },
    "RemoteConfigParameterValue": {
      "id": "RemoteConfigParameterValue",
      "description": "A RemoteConfigParameterValue resource contains the value that a parameter may have.",
      "type": "object",
      "properties": {
        "value": {
          "description": "The string value that the parameter is set to.",
          "type": "string"
        },
        "useInAppDefault": {
          "description": "If true, the parameter is omitted from the parameter values returned to a client.",
          "type": "boolean"
        },
        "personalizationValue": {
          "description": "A dynamic, user-specific value computed when config is fetched.",
          "$ref": "PersonalizationValue"
        },
        "experimentValue": {
          "description": "A dynamic value managed by the Firebase ABT Experiment service.",
          "$ref": "ExperimentValue"
        },
        "rolloutValue": {
          "description": "A dynamic Rollout value managed by the Firebase ABT Experiment service.",
          "$ref": "RolloutValue"
        }
      }
    },
    "PersonalizationValue": {
      "id": "PersonalizationValue",
      "description": "Contains the necessary information to fetch a personalized value.",
      "type": "object",
      "properties": {
        "personalizationId": {
          "description": "Identifier that represents a personalization definition. This definition is used to resolve the value at config fetch time. This system-generated value should not be modified.",
          "type": "string"
        }
      }
    },
    "ExperimentValue": {
      "id": "ExperimentValue",
      "description": "Information related to a parameter value managed by Firebase ABT.",
      "type": "object",
      "properties": {
        "experimentId": {
          "description": "The identifier that associates a parameter value to an Experiment in Firebase ABT.",
          "type": "string"
        },
        "variantValue": {
          "description": "A repeated of variants associated with the Experiment.",
          "type": "array",
          "items": {
            "$ref": "ExperimentVariantValue"
          }
        },
        "exposurePercent": {
          "description": "Optional. Represents the server-side exposure evaluation. This value represents the fraction of users exposed to the experiment, ranging from 0 (0% exposure) to 100 (100% exposure), inclusive.",
          "type": "number",
          "format": "double"
        }
      }
    },
    "ExperimentVariantValue": {
      "id": "ExperimentVariantValue",
      "description": "Information about the variant for the Experiment.",
      "type": "object",
      "properties": {
        "variantId": {
          "description": "The variant identifier for the Experiment.",
          "type": "string"
        },
        "value": {
          "description": "The user-specified value for this variant. Can be empty string.",
          "type": "string"
        },
        "noChange": {
          "description": "If this boolean is set, then fallback to the next parameter in the Template condition chain",
          "type": "boolean"
        }
      }
    },
    "RolloutValue": {
      "id": "RolloutValue",
      "description": "Information related to a Rollout.",
      "type": "object",
      "properties": {
        "rolloutId": {
          "description": "The identifier that associates a parameter value to a Rollout experiment.",
          "type": "string"
        },
        "value": {
          "description": "The user-specified value to be rolled out.",
          "type": "string"
        },
        "percent": {
          "description": "The percentage of users that will receive the rollout value.",
          "type": "number",
          "format": "double"
        }
      }
    },
    "Version": {
      "id": "Version",
      "description": "Contains all metadata about a particular version of the Remote Config template. All fields are set at the time the specified Remote Config template was written.",
      "type": "object",
      "properties": {
        "versionNumber": {
          "description": "Output only. The version number of the version's corresponding Remote Config template.",
          "type": "string",
          "format": "int64"
        },
        "updateTime": {
          "description": "Output only. When the Remote Config template was written to the Remote Config server.",
          "type": "string",
          "format": "google-datetime"
        },
        "updateUser": {
          "description": "Output only. Aggregation of all metadata fields about the account that performed the update.",
          "$ref": "RemoteConfigUser"
        },
        "description": {
          "description": "Optional. The user-provided description of the corresponding Remote Config template",
          "type": "string"
        },
        "updateOrigin": {
          "description": "Output only. Where the update action originated.",
          "type": "string",
          "enumDescriptions": [
            "Catch-all for unrecognized values.",
            "The update came from the Firebase UI.",
            "The update came from the Remote Config REST API.",
            "This value is used when the update came from the Firebase Admin Node SDK"
          ],
          "enum": [
            "REMOTE_CONFIG_UPDATE_ORIGIN_UNSPECIFIED",
            "CONSOLE",
            "REST_API",
            "ADMIN_SDK_NODE"
          ]
        },
        "updateType": {
          "description": "Output only. What type of update was made.",
          "type": "string",
          "enumDescriptions": [
            "Catch-all for unrecognized enum values.",
            "A regular incremental update.",
            "A forced update. The ETag was specified as \"*\" in an UpdateRemoteConfigRequest request or the \"Force Update\" button was pressed on the console.",
            "A rollback to a previous Remote Config template."
          ],
          "enum": [
            "REMOTE_CONFIG_UPDATE_TYPE_UNSPECIFIED",
            "INCREMENTAL_UPDATE",
            "FORCED_UPDATE",
            "ROLLBACK"
          ]
        },
        "rollbackSource": {
          "description": "Output only. Only present if this version is the result of a rollback, and will be the version number of the Remote Config template that was rolled-back to.",
          "type": "string",
          "format": "int64"
        },
        "isLegacy": {
          "description": "Output only. `True` if this Remote Config template was published before version history was supported.",
          "type": "boolean"
        }
      }
    },
    "RemoteConfigUser": {
      "id": "RemoteConfigUser",
      "description": "All the fields associated with the person/service account that wrote a Remote Config template.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Output only. Display name.",
          "type": "string"
        },
        "email": {
          "description": "Output only. Email address.",
          "type": "string"
        },
        "imageUrl": {
          "description": "Output only. Image URL.",
          "type": "string"
        }
      }
    },
    "RemoteConfigParameterGroup": {
      "id": "RemoteConfigParameterGroup",
      "description": "A named group of parameters. Grouping parameters is only for management purposes and does not affect client-side fetching of parameter values.",
      "type": "object",
      "properties": {
        "description": {
          "description": "Optional. A description for the group. Its length must be less than or equal to 256 characters. A description may contain any Unicode characters.",
          "type": "string"
        },
        "parameters": {
          "description": "Map of parameter keys to their optional default values and optional conditional values for parameters that belong to this group. A parameter only appears once per RemoteConfig: an ungrouped parameter appears at the top level; a parameter organized within a group appears within its group's map of parameters.",
          "type": "object",
          "additionalProperties": {
            "$ref": "RemoteConfigParameter"
          }
        }
      }
    },
    "HttpBody": {
      "id": "HttpBody",
      "description": "Message that represents an arbitrary HTTP body. It should only be used for payload formats that can't be represented as JSON, such as raw binary or an HTML page. This message can be used both in streaming and non-streaming API methods in the request as well as the response. It can be used as a top-level request field, which is convenient if one wants to extract parameters from either the URL or HTTP template into the request fields and also want access to the raw HTTP body. Example: message GetResourceRequest { // A unique request id. string request_id = 1; // The raw HTTP body is bound to this field. google.api.HttpBody http_body = 2; } service ResourceService { rpc GetResource(GetResourceRequest) returns (google.api.HttpBody); rpc UpdateResource(google.api.HttpBody) returns (google.protobuf.Empty); } Example with streaming methods: service CaldavService { rpc GetCalendar(stream google.api.HttpBody) returns (stream google.api.HttpBody); rpc UpdateCalendar(stream google.api.HttpBody) returns (stream google.api.HttpBody); } Use of this type only changes how the request and response bodies are handled, all other features will continue to work unchanged.",
      "type": "object",
      "properties": {
        "contentType": {
          "description": "The HTTP Content-Type header value specifying the content type of the body.",
          "type": "string"
        },
        "data": {
          "description": "The HTTP request/response body as raw binary.",
          "type": "string",
          "format": "byte"
        },
        "extensions": {
          "description": "Application specific response metadata. Must be set in the first response for streaming APIs.",
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "any",
              "description": "Properties of the object. Contains field @type with type URL."
            }
          }
        }
      }
    },
    "RollbackRemoteConfigRequest": {
      "id": "RollbackRemoteConfigRequest",
      "description": "Replace the published Remote Config template with an earlier version.",
      "type": "object",
      "properties": {
        "project": {
          "description": "The Firebase project's Project ID or Project Number, prefixed with \"projects/\". This field is required if the `name` field is not provided.",
          "type": "string"
        },
        "versionNumber": {
          "description": "Required. The version number of the RemoteConfig to roll back to. The specified version number must be less than the current version number, and not have been deleted due to staleness.",
          "type": "string",
          "format": "int64"
        },
        "name": {
          "description": "Optional. The name of the RemoteConfig to rollback. Format: projects/{project}/namespaces/{namespace}/remoteConfig Project is a Firebase project ID or project number. Namespace is the namespace ID (e.g.: firebase or firebase-server)",
          "type": "string"
        }
      }
    },
    "ListVersionsResponse": {
      "id": "ListVersionsResponse",
      "description": "Contains a paginated list of versions of the RemoteConfig.",
      "type": "object",
      "properties": {
        "versions": {
          "description": "A list of version metadata objects, sorted in reverse chronological order.",
          "type": "array",
          "items": {
            "$ref": "Version"
          }
        },
        "nextPageToken": {
          "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
          "type": "string"
        }
      }
    },
    "FetchRemoteConfigRequest": {
      "id": "FetchRemoteConfigRequest",
      "description": "* A request to render parameter values from the current RemoteConfig template and Firebase A/B Testing experiments.",
      "type": "object",
      "properties": {
        "appInstanceId": {
          "description": "Required. The instance id of the app. If unspecified, fetch will return 400 (Bad Request). Refer to https://firebase.google.com/support/privacy/manage-iids.",
          "type": "string"
        },
        "appInstanceIdToken": {
          "description": "Required. The instance id token of the app, which is retrieved using the default scope. If specified incorrectly, and if the template has any percentile conditions, they will be evaluated to false. If omitted, fetch can lead to a 400 response code (Bad Request).",
          "type": "string"
        },
        "appId": {
          "description": "Required. If not specified, fetch will return 400 (Bad Request). GMP App id.",
          "type": "string"
        },
        "countryCode": {
          "description": "Optional - If omitted and the template has any conditions that depend on country_code, they will be evaluated as false. Should be 2 lower-case letters, e.g. \"us\", \"tr\", or \"gb\", as defined in ISO 3166-1 alpha-2. This is case-insensitive. See https://www.iso.org/obp/ui/#search .",
          "type": "string"
        },
        "languageCode": {
          "description": "Optional - If omitted and the template has any conditions that depend on locale, they will be evaluated as false. The default locale of the device, in BCP47 format, for example \"en-US\". This is case-insensitive. See https://www.w3.org/International/core/langtags/rfc3066bis.html .",
          "type": "string"
        },
        "platformVersion": {
          "description": "Optional - If omitted and the template has any conditions that depend on platform version, they will be evaluated as false. The version string of the device, e.g. \"21\" for (Android) Lollipop, or (for iOS) three non-negative, period separated integers, e.g. \"9.0.0\".",
          "type": "string"
        },
        "timeZone": {
          "description": "Optional - If omitted and the template has any conditions that depend on timezone, they will be evaluated as false. The timezone id of the device, in Olson Id format, e.g. \"America/Los_Angeles\".",
          "type": "string"
        },
        "appVersion": {
          "description": "Optional - If omitted and the template has any conditions that depend on app_version, they will be evaluated as false. App version, using the native app version format on the client's OS. Examples: 0, 123, 0123, 1.2.3, 001.33.043.321.55 .",
          "type": "string"
        },
        "packageName": {
          "description": "Optional - If omitted, the project's default package will be fetched. Name of the package for which we are fetching data from. Should match the app name for Android apps, or the corresponding entity (e.g. bundle name) for iOS apps.",
          "type": "string"
        },
        "sdkVersion": {
          "description": "Optional - Version of the Firebase Remote Config SDK. This number is hard-coded into each client.",
          "type": "string"
        },
        "analyticsUserProperties": {
          "description": "Optional - List of Analytics user properties.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "appBuild": {
          "description": "Optional - If omitted and the template has any conditions that depend on app_build, they will be evaluated as false. * On Android, this is the Version Code, which is a positive integer, e.g., 42. * On iOS, this is the CFBundleVersion, which is a string comprised of three non-negative, period-separated integers with the first integer being greater than zero—for example, 3.1.2. * On Web, the concept of a build number is not well defined, and thus should not be set.",
          "type": "string"
        },
        "firstOpenTime": {
          "description": "The first time a user launches an app after installing or re-installing it. This value comes from GA, and will not be set if GA SDK is not available on the client or if GA does not have the first-open time value.",
          "type": "string",
          "format": "google-datetime"
        },
        "customSignals": {
          "description": "Optional. Optional - List of Custom Signals.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "FetchRemoteConfigResponse": {
      "id": "FetchRemoteConfigResponse",
      "description": "* The Firebase Remote Config configuration data for an app instance.",
      "type": "object",
      "properties": {
        "entries": {
          "description": "The Key-Value pairs of the config.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "appName": {
          "description": "For Android apps, app_name is the package name of the app. For iOS apps, it is the bundle name.",
          "type": "string"
        },
        "state": {
          "description": "The state of the fetched response.",
          "type": "string",
          "enumDescriptions": [
            "Default (when the enum is not set by the server for any reason).",
            "The Remote Config parameter values and/or the Firebase A/B Testing experiments differ from the last fetch.",
            "No template defined.",
            "The Remote Config parameter values and Firebase A/B Testing experiments both match those returned during the last fetch.",
            "Template found, but evaluates to empty (e.g. all keys omitted)"
          ],
          "enum": [
            "INSTANCE_STATE_UNSPECIFIED",
            "UPDATE",
            "NO_TEMPLATE",
            "NO_CHANGE",
            "EMPTY_CONFIG"
          ]
        },
        "experimentDescriptions": {
          "description": "Firebase A/B Testing experiment configuration and metadata.",
          "type": "array",
          "items": {
            "$ref": "ExperimentDescription"
          }
        },
        "personalizationMetadata": {
          "description": "A map of Remote Config parameter key to Firebase Personalization related metadata that should be delivered to the particular device making the fetch call.",
          "type": "object",
          "additionalProperties": {
            "$ref": "PersonalizationMetadata"
          }
        },
        "templateVersion": {
          "description": "Used to record the current template in the response.",
          "type": "string",
          "format": "int64"
        },
        "rolloutMetadata": {
          "description": "Metadata describing active Remote Config rollouts which are related to parameters delivered via this fetch response.",
          "type": "array",
          "items": {
            "$ref": "RolloutMetadata"
          }
        }
      }
    },
    "ExperimentDescription": {
      "id": "ExperimentDescription",
      "description": "Encapsulates per-experiment data.",
      "type": "object",
      "properties": {
        "experimentId": {
          "description": "The Firebase A/B Testing experiment ID. A string of max length 22 characters. Format: _exp_ This is referred to as the tracking id and is different from the experiment id which is used internally by ABT.",
          "type": "string"
        },
        "variantId": {
          "description": "The variant of the experiment assigned to the app instance.",
          "type": "string"
        },
        "triggerEvent": {
          "description": "The Google Analytics event that activates the experiment.",
          "type": "string"
        },
        "experimentStartTime": {
          "description": "When the experiment was started.",
          "type": "string",
          "format": "google-datetime"
        },
        "triggerTimeoutMillis": {
          "description": "How long the experiment can remain in STANDBY state. Valid range from 1 ms to 6 months.",
          "type": "string",
          "format": "int64"
        },
        "timeToLiveMillis": {
          "description": "How long the experiment can remain in ON state. Valid range from 1 ms to 6 months.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "PersonalizationMetadata": {
      "id": "PersonalizationMetadata",
      "description": "LINT.IfChange Metadata associated with a particular Remote Config parameter key, managed by Firebase Personalization.",
      "type": "object",
      "properties": {
        "personalizationId": {
          "description": "The ID of this Personalization experiment. Should be composed of letters, numbers, hyphens, and underscores.",
          "type": "string"
        },
        "armIndex": {
          "description": "The selected arm's index, which may be 0.",
          "type": "integer",
          "format": "int32"
        },
        "choiceId": {
          "description": "Identifier for the choice. For internal use only.",
          "type": "string"
        },
        "group": {
          "description": "Variant group to which user belongs.",
          "type": "string",
          "enumDescriptions": [
            "Default value.",
            "Audience we put aside for baseline quality measurement and comparison.",
            "Audience to which personalized experiences are being rolled out."
          ],
          "enum": [
            "GROUP_UNSPECIFIED",
            "BASELINE",
            "P13N"
          ]
        }
      }
    },
    "RolloutMetadata": {
      "id": "RolloutMetadata",
      "description": "Metadata describing Remote Config rollouts.",
      "type": "object",
      "properties": {
        "rolloutId": {
          "description": "The Firebase Remote Config rollout ID uniquely identifying a rollout. This is the tracking ID of the Rollout object defined in ExperimentsEntities.",
          "type": "string"
        },
        "variantId": {
          "description": "The variant of the rollout assigned to this instance in this fetch response.",
          "type": "string"
        },
        "affectedParameterKeys": {
          "description": "The parameter keys affected by this rollout.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "ServerRemoteConfig": {
      "id": "ServerRemoteConfig",
      "description": "* A ServerRemoteConfig represents the raw data-plane version of a control plane Remote Config template. This raw template will be evaluated by the Admin SDK (RC Server SDK) to form the config.",
      "type": "object",
      "properties": {
        "conditions": {
          "description": "A list of conditions in descending order by priority.",
          "type": "array",
          "items": {
            "$ref": "ServerRemoteConfigCondition"
          }
        },
        "parameters": {
          "description": "Map of parameter keys to their optional default values and optional conditional values.",
          "type": "object",
          "additionalProperties": {
            "$ref": "ServerRemoteConfigParameter"
          }
        },
        "version": {
          "description": "Contains all metadata about a particular version of the server Remote Config template. Note that we are reusing the control plane version proto here.",
          "$ref": "Version"
        }
      }
    },
    "ServerRemoteConfigCondition": {
      "id": "ServerRemoteConfigCondition",
      "description": "A condition targeting a specific group of users and servers. Same as the condition in the control plane.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Required. A non-empty and unique name of this condition.",
          "type": "string"
        },
        "condition": {
          "description": "Required. The logic of this condition.",
          "$ref": "Condition"
        }
      }
    },
    "Condition": {
      "id": "Condition",
      "description": "---------- General Condition Wrapper A general boolean expression that is used to evaluate conditions for server-side Remote Config templates.",
      "type": "object",
      "properties": {
        "andCondition": {
          "description": "Boolean operators Apply logical \"and\" condition to the subset of conditions.",
          "$ref": "AndCondition"
        },
        "orCondition": {
          "description": "Apply logical \"or\" condition to the subset of conditions.",
          "$ref": "OrCondition"
        },
        "percent": {
          "description": "Builtin conditions (aka 'atoms') Target a percentage of the population (users, app instances).",
          "$ref": "PercentCondition"
        },
        "customSignal": {
          "description": "/ Target a developer-defined custom signal.",
          "$ref": "CustomSignalCondition"
        }
      }
    },
    "AndCondition": {
      "id": "AndCondition",
      "description": "---------- Boolean Operators AND of sub-conditions. An AND condition is true if all of its subconditions evaluate to true.",
      "type": "object",
      "properties": {
        "conditions": {
          "description": "Evaluated in given order with short circuit of false. Should contain at least one condition and no more than 100 conditions.",
          "type": "array",
          "items": {
            "$ref": "Condition"
          }
        }
      }
    },
    "OrCondition": {
      "id": "OrCondition",
      "description": "OR of sub-conditions. An OR condition is true if any of its subconditions evaluate to true. If there is an exception evaluating any of its subconditions, that subcondition can be ignored if any other subcondition is true.",
      "type": "object",
      "properties": {
        "conditions": {
          "description": "Evaluated in given order with short circuit of true. Should contain at least one condition and no more than 100 conditions.",
          "type": "array",
          "items": {
            "$ref": "Condition"
          }
        }
      }
    },
    "PercentCondition": {
      "id": "PercentCondition",
      "description": "---------- Primitive Conditions (Atoms) A condition that compares the instance pseudo-random percentile to a given limit. NOTE: Developers provide an ID via the Admin SDK. This ID is hashed to a random percentile. The function is consistent and repeatable and will give the same result for evaluating an ID for the same condition across different platforms and across time. The function is consistent with the function used for evaluating IDs for client templates.",
      "type": "object",
      "properties": {
        "percentOperator": {
          "description": "Required. The choice of percent operator to determine how to compare targets to percent(s).",
          "type": "string",
          "enumDescriptions": [
            "Catch-all for unrecognized enum values.",
            "Target percentiles less than or equal to the target percent. A condition using this operator must specify micro_percent.",
            "Target percentiles greater than the target percent. A condition using this operator must specify micro_percent.",
            "Target percentiles within an interval defined by a lower bound and an upper bound. The lower bound is an exclusive (open) bound and the micro_percent_range_upper_bound is an inclusive (closed) bound. A condition using this operator must specify micro_percent_range."
          ],
          "enum": [
            "UNKNOWN",
            "LESS_OR_EQUAL",
            "GREATER_THAN",
            "BETWEEN"
          ]
        },
        "microPercent": {
          "description": "Required. The limit of percentiles to target in micro-percents. The value must be in the range [0 and 100000000].",
          "type": "integer",
          "format": "int32"
        },
        "seed": {
          "description": "Optional. The seed used when evaluating the hash function to map an instance to a value in the hash space. This is a string which can have 0 - 32 characters and can contain ASCII characters [-_.0-9a-zA-Z]. The string is case-sensitive.",
          "type": "string"
        },
        "microPercentRange": {
          "description": "The range of percentiles to target in micro-percents.",
          "$ref": "MicroPercentRange"
        }
      }
    },
    "MicroPercentRange": {
      "id": "MicroPercentRange",
      "description": "A micro-percent interval defined by lower and upper bounds.",
      "type": "object",
      "properties": {
        "microPercentLowerBound": {
          "description": "The lower limit of percentiles to target in micro-percents. The value must be in the range [0 and 100000000].",
          "type": "integer",
          "format": "int32"
        },
        "microPercentUpperBound": {
          "description": "The upper limit of percentiles to target in micro-percents. The value must be in the range [0 and 100000000].",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "CustomSignalCondition": {
      "id": "CustomSignalCondition",
      "description": "A condition that compares a developer-defined custom signal to a target value. NOTE: Developers provide custom signals via the Admin SDK. These signals can be a string, number, or numeric version (aka semantic version). For numeric interpretation of custom signal values. This will be a numeric value that can have at most 10 digits before and after the decimal point each. For general string interpretation of custom signal values. This will be a string value up to a 100 characters long. For numeric interpretation of semantic versions. The version will be an integer or a set of integers separated by decimal points. Supported format: (1) integer: 123, 50932 etc (2) integer with dots: 1.2, 3.45.2, 0.0.1 etc Unsupported format: any other format, like 1.0.a, v1.2.3, beta-1 etc",
      "type": "object",
      "properties": {
        "customSignalOperator": {
          "description": "Required. The choice of custom signal operator to determine how to compare targets to actual values.",
          "type": "string",
          "enumDescriptions": [
            "Catch-all for unrecognized enum values.",
            "The actual value is less than the target value.",
            "The actual value is less than or equal to the target value.",
            "The actual value is equal to the target value.",
            "The actual value is not equal to the target value.",
            "The actual value is greater than the target value.",
            "The actual value is greater than or equal to the target value.",
            "AT LEAST ONE of the target values is a substring of the actual custom signal value. Eg: \"abc\" contains the string \"a\", \"bc\".",
            "NONE of the target values is a substring of the actual custom signal value.",
            "The actual value exactly matches AT LEAST ONE of the target values.",
            "The target regular expression matches a portion of AT LEAST ONE of the actual values (or the entire string). The regex has to be in RE2 format. See https://github.com/google/re2/wiki/Syntax",
            "The actual value is less than the target value.",
            "The actual value is less than or equal to the target value.",
            "The actual value is equal to the target value.",
            "The actual value is not equal to the target value.",
            "The actual value is greater than the target value.",
            "The actual value is greater than or equal to the target value."
          ],
          "enum": [
            "UNKNOWN",
            "NUMERIC_LESS_THAN",
            "NUMERIC_LESS_EQUAL",
            "NUMERIC_EQUAL",
            "NUMERIC_NOT_EQUAL",
            "NUMERIC_GREATER_THAN",
            "NUMERIC_GREATER_EQUAL",
            "STRING_CONTAINS",
            "STRING_DOES_NOT_CONTAIN",
            "STRING_EXACTLY_MATCHES",
            "STRING_CONTAINS_REGEX",
            "SEMANTIC_VERSION_LESS_THAN",
            "SEMANTIC_VERSION_LESS_EQUAL",
            "SEMANTIC_VERSION_EQUAL",
            "SEMANTIC_VERSION_NOT_EQUAL",
            "SEMANTIC_VERSION_GREATER_THAN",
            "SEMANTIC_VERSION_GREATER_EQUAL"
          ]
        },
        "customSignalKey": {
          "description": "Required. The custom signal name. This must match what is provided in the EvaluationContext in the Admin SDK.",
          "type": "string"
        },
        "targetCustomSignalValues": {
          "description": "Required. A list of at most 100 target custom signal values. For numeric operators: this list must have exactly ONE target signal value that is of a valid numeric format specified above. For string operators, this is a list of target custom signal values, where each value conforms to the length limits specified above.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "ServerRemoteConfigParameter": {
      "id": "ServerRemoteConfigParameter",
      "description": "A parameter value associated with a parameter key in [google.firebase.remoteconfig.v1.ServerRemoteConfig.parameters]. At minimum, a `default_value` or a `conditional_values` entry should be present for the parameter to have any effect.",
      "type": "object",
      "properties": {
        "defaultValue": {
          "description": "Optional - value to set the parameter to, when none of the named conditions evaluate to true.",
          "$ref": "ServerRemoteConfigParameterValue"
        },
        "conditionalValues": {
          "description": "Optional - a (condition name, value) map. The condition_name of the highest priority (the one listed first in the RemoteConfig's conditions list) determines the value of this parameter.",
          "type": "object",
          "additionalProperties": {
            "$ref": "ServerRemoteConfigParameterValue"
          }
        }
      }
    },
    "ServerRemoteConfigParameterValue": {
      "id": "ServerRemoteConfigParameterValue",
      "description": "A ServerRemoteConfigParameterValue resource contains the value that a parameter may have. Currently, there is no support for managed values like ABT or P13n.",
      "type": "object",
      "properties": {
        "value": {
          "description": "The string value that the parameter is set to.",
          "type": "string"
        },
        "useInAppDefault": {
          "description": "If true, the parameter is omitted from the parameter values returned to the server.",
          "type": "boolean"
        }
      }
    },
    "Namespace": {
      "id": "Namespace",
      "description": "The namespace of the RemoteConfig.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Required. Identifier. The name of the namespace.",
          "type": "string"
        }
      }
    },
    "ListNamespacesResponse": {
      "id": "ListNamespacesResponse",
      "description": "Response message for ListNamespaces.",
      "type": "object",
      "properties": {
        "namespaces": {
          "description": "The list of namespaces for the project.",
          "type": "array",
          "items": {
            "$ref": "Namespace"
          }
        },
        "nextPageToken": {
          "description": "Optional. The token for the specific page to retrieve.",
          "type": "string"
        }
      }
    },
    "Experiment": {
      "id": "Experiment",
      "description": "Representation of an A/B testing experiment.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Required. Identifier. The name of the experiment to get. Format: projects/{project}/namespaces/{namespace}/experiments/{experiment_id}",
          "type": "string"
        },
        "definition": {
          "description": "The experiment definition.",
          "$ref": "ExperimentDefinition"
        },
        "state": {
          "description": "Output only. The experiment state.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "The experiment state is unspecified.",
            "The experiment is pending.",
            "The experiment is running.",
            "The experiment is done.",
            "The experiment is expired."
          ],
          "enum": [
            "STATE_UNSPECIFIED",
            "PENDING",
            "RUNNING",
            "DONE",
            "EXPIRED"
          ]
        },
        "startTime": {
          "description": "Output only. The time when the experiment was started.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "endTime": {
          "description": "Output only. The time when the experiment was ended.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "lastUpdateTime": {
          "description": "Output only. The time when the experiment was last updated.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "etag": {
          "description": "The etag of the experiment.",
          "type": "string"
        }
      }
    },
    "ExperimentDefinition": {
      "id": "ExperimentDefinition",
      "description": "The definition of an experiment, detailing its name, description, objectives, variants, and other settings.",
      "type": "object",
      "properties": {
        "displayName": {
          "description": "The name of the experiment.",
          "type": "string"
        },
        "description": {
          "description": "The description of the experiment.",
          "type": "string"
        },
        "service": {
          "description": "The service that the experiment belongs to.",
          "type": "string",
          "enumDescriptions": [
            "The experiment service is unspecified.",
            "The Firebase Remote Config Service."
          ],
          "enum": [
            "EXPERIMENT_SERVICE_UNSPECIFIED",
            "EXPERIMENT_SERVICE_REMOTE_CONFIG"
          ]
        },
        "objectives": {
          "description": "The objectives of the experiment.",
          "$ref": "ExperimentObjectives"
        },
        "variants": {
          "description": "The variants of the experiment.",
          "type": "array",
          "items": {
            "$ref": "ExperimentVariant"
          }
        }
      }
    },
    "ExperimentObjectives": {
      "id": "ExperimentObjectives",
      "description": "The objectives of an experiment, including an activation event and a list of event-based objectives to track.",
      "type": "object",
      "properties": {
        "activationEvent": {
          "description": "Optional. The event which triggers the start of the experiment. If not specified, receiving an experiment on the device would count as the activation event.",
          "$ref": "ActivationEvent"
        },
        "eventObjectives": {
          "description": "Required. The Objectives which are used to determine the winner of an experiment and measure desired outcomes. This must have between [1-4] objectives: one primary objective and a maximum of 3 secondary objectives. The order of the objectives does not matter. The server preserves the order.",
          "type": "array",
          "items": {
            "$ref": "EventObjective"
          }
        }
      }
    },
    "ActivationEvent": {
      "id": "ActivationEvent",
      "description": "An event which triggers the start of the experiment. This can be qualified with zero or more event parameters.",
      "type": "object",
      "properties": {
        "event": {
          "description": "Optional. The Analytics even which indicates that the user has seen an experiment. This is case-sensitive and must be 0-32 characters long. It may only contain alphanumeric characters and underscores, and must start with an alphabetic character. The \"firebase_\" prefix is reserved and should not be used.",
          "type": "string"
        }
      }
    },
    "EventObjective": {
      "id": "EventObjective",
      "description": "An objective to measure the performance of an experiment. An experiment must have a single primary objective and can have multiple secondary objectives.",
      "type": "object",
      "properties": {
        "isPrimary": {
          "description": "Required. If true, this is the primary objective of the experiment. Exactly one objective should be marked primary.",
          "type": "boolean"
        },
        "customObjectiveDetails": {
          "description": "Configuration details for user-defined custom objectives.",
          "$ref": "CustomObjectiveDetails"
        },
        "systemObjectiveDetails": {
          "description": "Configuration details for system objectives.",
          "$ref": "SystemObjectiveDetails"
        },
        "abtOptimizationFunction": {
          "description": "Required. How to optimize this metric. NOTE: This field should only be set for custom objectives. Always set to \"MAXIMIZE\" for \"app_crashes\" and \"app_exception\" objectives.",
          "type": "string",
          "enumDescriptions": [
            "Catch-all for unrecognized enum values.",
            "If more is good, maximize; eg. revenue related events",
            "If less is good, minimize; eg. app crashes"
          ],
          "enum": [
            "ABT_OPTIMIZATION_FUNCTION_UNSPECIFIED",
            "MAXIMIZE",
            "MINIMIZE"
          ]
        }
      }
    },
    "CustomObjectiveDetails": {
      "id": "CustomObjectiveDetails",
      "description": "A custom objective defined by a user-generated Firebase Analytics event.",
      "type": "object",
      "properties": {
        "event": {
          "description": "Required. The name of the user-defined Firebase Analytics event to optimize. The event name is case-sensitive and must be 0-32 characters long. It may only contain alphanumeric characters and underscores, and must start with an alphabetic character. The \"firebase_\" prefix is reserved and should not be used.",
          "type": "string"
        },
        "countType": {
          "description": "Required. Which count_type is used to measure this objective. Always set to \"NO_EVENT_USERS\" for \"app_crashes\" and \"app_exception\" objectives.",
          "type": "string",
          "enumDescriptions": [
            "Default value.",
            "The objective is capped at 1 per user.",
            "Count number of occurrences of this event.",
            "Count the number of users with zero occurrences of the event."
          ],
          "enum": [
            "COUNT_TYPE_UNSPECIFIED",
            "UNIQUE",
            "NUM_OCCURRENCES",
            "NO_EVENT_USERS"
          ]
        }
      }
    },
    "SystemObjectiveDetails": {
      "id": "SystemObjectiveDetails",
      "description": "A pre-defined system objective.",
      "type": "object",
      "properties": {
        "objective": {
          "description": "Required. One of the predefined system objective names, such as purchase_revenue. The name determines what to measure and how to count it. For example, app_exception measures the number of app_exception event, while unique_user:app_exception measures the number of unique users who have had at least one app_exception event.",
          "type": "string"
        }
      }
    },
    "ExperimentVariant": {
      "id": "ExperimentVariant",
      "description": "A variant of an experiment.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Identifier. The name of the variant. Eg: \"Notification A\", \"Control\". Variant names must be unique for a single experiment.",
          "type": "string"
        },
        "weight": {
          "description": "Action weight proportional to other Actions. This number should be a whole number in the range [1-100] inclusive. If a weight is not specified, this value will be treated as 1. Example: if Action 1 has a weight of 1 and Action 2 has a weight of 2, Action 2 is twice as likely to be assigned to an instance.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "Empty": {
      "id": "Empty",
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
      "type": "object",
      "properties": {}
    },
    "ListExperimentsResponse": {
      "id": "ListExperimentsResponse",
      "description": "Response message for ListExperiments.",
      "type": "object",
      "properties": {
        "experiments": {
          "description": "List of experiments",
          "type": "array",
          "items": {
            "$ref": "Experiment"
          }
        },
        "nextPageToken": {
          "description": "Token for the next page",
          "type": "string"
        }
      }
    },
    "ListRolloutsResponse": {
      "id": "ListRolloutsResponse",
      "description": "Response message for ListRollouts.",
      "type": "object",
      "properties": {
        "rollouts": {
          "description": "The list of rollouts for the project.",
          "type": "array",
          "items": {
            "$ref": "Rollout"
          }
        },
        "nextPageToken": {
          "description": "Token for the next page",
          "type": "string"
        }
      }
    },
    "Rollout": {
      "id": "Rollout",
      "description": "Representation of a rollout Experiment",
      "type": "object",
      "properties": {
        "name": {
          "description": "Identifier. The name of the rollout to get. Format: projects/{project}/namespaces/{namespace}/rollouts/{rollout_id}",
          "type": "string"
        },
        "definition": {
          "description": "The rollout definition.",
          "$ref": "RolloutDefinition"
        },
        "state": {
          "description": "Output only. The experiment state of the rollout. Will only be RUNNING or DONE.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "The experiment state is unspecified.",
            "The experiment is pending.",
            "The experiment is running.",
            "The experiment is done.",
            "The experiment is expired."
          ],
          "enum": [
            "STATE_UNSPECIFIED",
            "PENDING",
            "RUNNING",
            "DONE",
            "EXPIRED"
          ]
        },
        "createTime": {
          "description": "Output only. Create time of the rollout experiment.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "startTime": {
          "description": "Output only. Start time of the rollout experiment. It is always the same as the create_time.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "endTime": {
          "description": "Output only. End time of the rollout experiment.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "lastUpdateTime": {
          "description": "Output only. Last update time of the rollout experiment.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "etag": {
          "description": "Etag for the Experiment which is generated using hash of update_time. Can be filled during call to UpdateRollout to ensure that the correct version of the experiment is updated. This will ensure that there are no conflicting writes. If no `etag` is provided, then the update will over-write the experiment blindly.",
          "type": "string"
        }
      }
    },
    "RolloutDefinition": {
      "id": "RolloutDefinition",
      "description": "Definition to represent a rollout experiment.",
      "type": "object",
      "properties": {
        "displayName": {
          "description": "Required. The display name of the rollout experiment.",
          "type": "string"
        },
        "description": {
          "description": "Optional. Text description of the rollout experiment.",
          "type": "string"
        },
        "controlVariant": {
          "description": "Required. This is the control variant of the rollout. It will always have weight of 1 and name set as \"Control\".",
          "$ref": "ExperimentVariant"
        },
        "enabledVariant": {
          "description": "Required. This is the enabled variant of the rollout. It will always have weight of 1 and name set as \"Enabled\".",
          "$ref": "ExperimentVariant"
        }
      }
    }
  },
  "fullyEncodeReservedExpansion": true,
  "documentationLink": "https://firebase.google.com/docs/remote-config/use-config-rest",
  "revision": "20260331",
  "resources": {
    "projects": {
      "methods": {
        "getRemoteConfig": {
          "id": "firebaseremoteconfig.projects.getRemoteConfig",
          "path": "v1/{+project}/remoteConfig",
          "flatPath": "v1/projects/{projectsId}/remoteConfig",
          "httpMethod": "GET",
          "parameters": {
            "project": {
              "description": "Required. The Firebase project's Project ID or Project Number, prefixed with \"projects/\".",
              "pattern": "^projects/[^/]+$",
              "location": "path",
              "required": true,
              "type": "string"
            },
            "versionNumber": {
              "description": "Optional. Version number of the RemoteConfig to look up. If not specified, the latest RemoteConfig will be returned.",
              "location": "query",
              "type": "string",
              "format": "int64"
            },
            "name": {
              "description": "Optional. The name of the RemoteConfig to get. Format: projects/{project}/namespaces/{namespace}/remoteConfig Project is a Firebase project ID or project number. Namespace is the namespace ID (e.g.: 'firebase' or 'firebase-server')",
              "location": "query",
              "type": "string"
            }
          },
          "parameterOrder": [
            "project"
          ],
          "response": {
            "$ref": "RemoteConfig"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Get a project's Remote Config template and associated ETag header. Returns the requested RemoteConfig as the payload and an ETag as a response header. The REST resource name for a Remote Config template is in the format: `projects/{project_id}/namespaces/{namespace_id}/remoteConfig`. To retrieve the server-side template, use \"firebase-server\" as the namespace ID in [GetRemoteConfigRequest.name]. If [GetRemoteConfigRequest.name] is not provided, the client-side template ('firebase' namespace) is returned."
        },
        "updateRemoteConfig": {
          "id": "firebaseremoteconfig.projects.updateRemoteConfig",
          "path": "v1/{+project}/remoteConfig",
          "flatPath": "v1/projects/{projectsId}/remoteConfig",
          "httpMethod": "PUT",
          "parameters": {
            "project": {
              "description": "The Firebase project's Project ID or Project Number, prefixed with \"projects/\". This field is required if the `name` field is not provided.",
              "pattern": "^projects/[^/]+$",
              "location": "path",
              "required": true,
              "type": "string"
            },
            "validateOnly": {
              "description": "Optional. Defaults to `false`. If `true`, the server will only attempt to validate the RemoteConfig. If validation succeeds, the RemoteConfig is not written to the Remote Config server, instead a `200 OK` response is returned. If validation fails, a validation error is returned. Note: other errors may still occur after this boolean is set to `false`, even if getting a `200 OK` when calling with UpdateRemoteConfig with `validate_only` set to `true`.",
              "location": "query",
              "type": "boolean"
            },
            "name": {
              "description": "Optional. The name of the RemoteConfig to update. Format: projects/{project}/namespaces/{namespace}/remoteConfig Project is a Firebase project ID or project number. Namespace is the namespace ID (e.g.: firebase or firebase-server)",
              "location": "query",
              "type": "string"
            }
          },
          "parameterOrder": [
            "project"
          ],
          "request": {
            "$ref": "RemoteConfig"
          },
          "response": {
            "$ref": "RemoteConfig"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Publish a project's Remote Config template. Pass the ETag returned by GetRemoteConfig as an `If-Match` header to ensure the last seen Remote Config template is the one being overwritten by this update. Pass `If-Match: *` to force an update, regardless of the current version. Returns the published RemoteConfig and the updated ETag as a response header if successful, or an error. To update the server-side template, use \"firebase-server\" as the namespace ID in [UpdateRemoteConfigRequest.name]. If [UpdateRemoteConfigRequest.name] is not provided, the client-side template ('firebase' namespace) is updated. See the publishing guide for a list of [error codes](/docs/remote-config/use-config-rest#step_5_publish_json_data_to_replace_data_in_the_service)."
        }
      },
      "resources": {
        "namespaces": {
          "methods": {
            "getRemoteConfig": {
              "id": "firebaseremoteconfig.projects.namespaces.getRemoteConfig",
              "path": "v1/{+name}",
              "flatPath": "v1/projects/{projectsId}/namespaces/{namespacesId}/remoteConfig",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Optional. The name of the RemoteConfig to get. Format: projects/{project}/namespaces/{namespace}/remoteConfig Project is a Firebase project ID or project number. Namespace is the namespace ID (e.g.: 'firebase' or 'firebase-server')",
                  "pattern": "^projects/[^/]+/namespaces/[^/]+/remoteConfig$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "project": {
                  "description": "Required. The Firebase project's Project ID or Project Number, prefixed with \"projects/\".",
                  "location": "query",
                  "type": "string"
                },
                "versionNumber": {
                  "description": "Optional. Version number of the RemoteConfig to look up. If not specified, the latest RemoteConfig will be returned.",
                  "location": "query",
                  "type": "string",
                  "format": "int64"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "RemoteConfig"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Get a project's Remote Config template and associated ETag header. Returns the requested RemoteConfig as the payload and an ETag as a response header. The REST resource name for a Remote Config template is in the format: `projects/{project_id}/namespaces/{namespace_id}/remoteConfig`. To retrieve the server-side template, use \"firebase-server\" as the namespace ID in [GetRemoteConfigRequest.name]. If [GetRemoteConfigRequest.name] is not provided, the client-side template ('firebase' namespace) is returned."
            },
            "updateRemoteConfig": {
              "id": "firebaseremoteconfig.projects.namespaces.updateRemoteConfig",
              "path": "v1/{+name}",
              "flatPath": "v1/projects/{projectsId}/namespaces/{namespacesId}/remoteConfig",
              "httpMethod": "PUT",
              "parameters": {
                "name": {
                  "description": "Optional. The name of the RemoteConfig to update. Format: projects/{project}/namespaces/{namespace}/remoteConfig Project is a Firebase project ID or project number. Namespace is the namespace ID (e.g.: firebase or firebase-server)",
                  "pattern": "^projects/[^/]+/namespaces/[^/]+/remoteConfig$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "project": {
                  "description": "The Firebase project's Project ID or Project Number, prefixed with \"projects/\". This field is required if the `name` field is not provided.",
                  "location": "query",
                  "type": "string"
                },
                "validateOnly": {
                  "description": "Optional. Defaults to `false`. If `true`, the server will only attempt to validate the RemoteConfig. If validation succeeds, the RemoteConfig is not written to the Remote Config server, instead a `200 OK` response is returned. If validation fails, a validation error is returned. Note: other errors may still occur after this boolean is set to `false`, even if getting a `200 OK` when calling with UpdateRemoteConfig with `validate_only` set to `true`.",
                  "location": "query",
                  "type": "boolean"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "RemoteConfig"
              },
              "response": {
                "$ref": "RemoteConfig"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Publish a project's Remote Config template. Pass the ETag returned by GetRemoteConfig as an `If-Match` header to ensure the last seen Remote Config template is the one being overwritten by this update. Pass `If-Match: *` to force an update, regardless of the current version. Returns the published RemoteConfig and the updated ETag as a response header if successful, or an error. To update the server-side template, use \"firebase-server\" as the namespace ID in [UpdateRemoteConfigRequest.name]. If [UpdateRemoteConfigRequest.name] is not provided, the client-side template ('firebase' namespace) is updated. See the publishing guide for a list of [error codes](/docs/remote-config/use-config-rest#step_5_publish_json_data_to_replace_data_in_the_service)."
            },
            "fetch": {
              "id": "firebaseremoteconfig.projects.namespaces.fetch",
              "path": "v1/projects/{project}/namespaces/{namespace}:fetch",
              "flatPath": "v1/projects/{project}/namespaces/{namespace}:fetch",
              "httpMethod": "POST",
              "parameters": {
                "project": {
                  "description": "Required. The Firebase project ID or project number. (NOTE: These identifiers can be retrieved from the Firebase console.)",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "namespace": {
                  "description": "Required. The string \"firebase\".",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "project",
                "namespace"
              ],
              "request": {
                "$ref": "FetchRemoteConfigRequest"
              },
              "response": {
                "$ref": "FetchRemoteConfigResponse"
              },
              "description": "Fetch parameter values and any Firebase A/B Testing experiment information for the calling device. An ETag header is also returned. Pass the ETag in future requests via the `If-None-Match` header to save bandwidth. NOTE: The Fetch REST API requires an Instance ID to be populated in the request. The Instance ID can obtained from the IID SDK. See https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceId and https://firebase.google.com/docs/reference/ios/firebaseinstanceid/api/reference/Classes/FIRInstanceID"
            },
            "getServerRemoteConfig": {
              "id": "firebaseremoteconfig.projects.namespaces.getServerRemoteConfig",
              "path": "v1/{+name}",
              "flatPath": "v1/projects/{projectsId}/namespaces/{namespacesId}/serverRemoteConfig",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. The name of the template to get. Format: projects/{project}/namespaces/{namespace}/serverRemoteConfig Project is a Firebase project ID or project number. Namespace is the namespace ID (e.g.: firebase-server)",
                  "pattern": "^projects/[^/]+/namespaces/[^/]+/serverRemoteConfig$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "ServerRemoteConfig"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Get a project's server-side Remote Config template. Note that this request proto is structured differently from other request messages in this proto, however this is consistent and compliant with the new API guidance (https://google.aip.dev/122#fields-representing-resource-names) and the standard going forward."
            },
            "get": {
              "id": "firebaseremoteconfig.projects.namespaces.get",
              "path": "v1/{+name}",
              "flatPath": "v1/projects/{projectsId}/namespaces/{namespacesId}",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. The name of the namespace to get. Format: projects/{project}/namespaces/{namespace}",
                  "pattern": "^projects/[^/]+/namespaces/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "Namespace"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Gets a namespace object by name. The namespace provided in [GetNamespaceRequest.name] must be \"firebase\" (for the client-side template) or \"firebase-server\" (for the server-side template)."
            },
            "list": {
              "id": "firebaseremoteconfig.projects.namespaces.list",
              "path": "v1/{+parent}/namespaces",
              "flatPath": "v1/projects/{projectsId}/namespaces",
              "httpMethod": "GET",
              "parameters": {
                "parent": {
                  "description": "Required. The parent project for which to list namespaces. Format: projects/{project}",
                  "pattern": "^projects/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "pageSize": {
                  "description": "Optional. The maximum number of items to return per page. If not specified, defaults to 100.",
                  "location": "query",
                  "type": "integer",
                  "format": "int32"
                },
                "pageToken": {
                  "description": "Optional. The token for the specific page to retrieve.",
                  "location": "query",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "ListNamespacesResponse"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Lists all available namespaces for a given Firebase project. The returned list currently includes \"firebase\" (for the client-side template) and \"firebase-server\" (for the server-side template)."
            }
          },
          "resources": {
            "remoteConfig": {
              "methods": {
                "downloadDefaults": {
                  "id": "firebaseremoteconfig.projects.namespaces.remoteConfig.downloadDefaults",
                  "path": "v1/{+name}:downloadDefaults",
                  "flatPath": "v1/projects/{projectsId}/namespaces/{namespacesId}/remoteConfig:downloadDefaults",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "description": "Optional. The name of the RemoteConfig to get defaults from. Format: projects/{project}/namespaces/{namespace}/remoteConfig Project is a Firebase project ID or project number. Namespace is the namespace ID (e.g.: 'firebase' or 'firebase-server')",
                      "pattern": "^projects/[^/]+/namespaces/[^/]+/remoteConfig$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "project": {
                      "description": "Required. The Firebase project's Project ID or Project Number, prefixed with \"projects/\".",
                      "location": "query",
                      "type": "string"
                    },
                    "format": {
                      "description": "Required. The file structure to return.",
                      "location": "query",
                      "type": "string",
                      "enumDescriptions": [
                        "Catch-all for unrecognized enum values.",
                        "Returns a response in XML format.",
                        "Returns a response in property list (plist) format.",
                        "Returns a response in raw JSON format (not packaged in an HttpBody object)."
                      ],
                      "enum": [
                        "FORMAT_UNSPECIFIED",
                        "XML",
                        "PLIST",
                        "JSON"
                      ]
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "HttpBody"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Get a project's current Remote Config template parameters and default values in JSON, property list (plist), or XML format. To download the server-side template defaults, use \"firebase-server\" as the namespace ID in [DownloadDefaultsRequest.name]. If [DownloadDefaultsRequest.name] is not provided, the client-side template defaults ('firebase' namespace) are downloaded."
                },
                "rollback": {
                  "id": "firebaseremoteconfig.projects.namespaces.remoteConfig.rollback",
                  "path": "v1/{+name}:rollback",
                  "flatPath": "v1/projects/{projectsId}/namespaces/{namespacesId}/remoteConfig:rollback",
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "description": "Optional. The name of the RemoteConfig to rollback. Format: projects/{project}/namespaces/{namespace}/remoteConfig Project is a Firebase project ID or project number. Namespace is the namespace ID (e.g.: firebase or firebase-server)",
                      "pattern": "^projects/[^/]+/namespaces/[^/]+/remoteConfig$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "RollbackRemoteConfigRequest"
                  },
                  "response": {
                    "$ref": "RemoteConfig"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Roll back a project's published Remote Config template to the one specified by the provided version number. A rollback is equivalent to getting a previously published Remote Config template, and re-publishing it using a force update. Returns the published RemoteConfig and the updated ETag as a response header if successful, or an error. To roll back the server-side template, use \"firebase-server\" as the namespace ID in [RollbackRemoteConfigRequest.name]. If [RollbackRemoteConfigRequest.name] is not provided, the client-side template ('firebase' namespace) is rolled back. See the publishing guide for a list of [error codes](/docs/remote-config/use-config-rest#step_5_publish_json_data_to_replace_data_in_the_service). In particular, note that the method returns an error with HTTP Status 404 if the requested version_number to rollback to is not found."
                },
                "listVersions": {
                  "id": "firebaseremoteconfig.projects.namespaces.remoteConfig.listVersions",
                  "path": "v1/{+parent}:listVersions",
                  "flatPath": "v1/projects/{projectsId}/namespaces/{namespacesId}/remoteConfig:listVersions",
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "description": "Optional. The resource name of the RemoteConfig to list versions for. Format: projects/{project}/namespaces/{namespace}/remoteConfig Project is a Firebase project ID or project number. Namespace is the namespace ID (e.g.: 'firebase' or 'firebase-server')",
                      "pattern": "^projects/[^/]+/namespaces/[^/]+/remoteConfig$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "project": {
                      "description": "Required. The Firebase project's Project ID or Project Number, prefixed with \"projects/\".",
                      "location": "query",
                      "type": "string"
                    },
                    "pageSize": {
                      "description": "Optional. The maximum number of items to return per page.",
                      "location": "query",
                      "type": "integer",
                      "format": "int32"
                    },
                    "pageToken": {
                      "description": "Optional. The next_page_token value returned from a previous List request, if any.",
                      "location": "query",
                      "type": "string"
                    },
                    "endVersionNumber": {
                      "description": "Optional. Specify the newest version number to include in the results. If specified, must be greater than zero. Defaults to the newest version.",
                      "location": "query",
                      "type": "string",
                      "format": "int64"
                    },
                    "startTime": {
                      "description": "Optional. Specify the earliest update time to include in the results; any entries updated before this time are omitted.",
                      "location": "query",
                      "type": "string",
                      "format": "google-datetime"
                    },
                    "endTime": {
                      "description": "Optional. Specify the latest update time to include in the results; any entries updated on or after this time are omitted.",
                      "location": "query",
                      "type": "string",
                      "format": "google-datetime"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListVersionsResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Get a list of Remote Config template versions that have been published, sorted in reverse chronological order. Only the last 300 versions are stored. All versions that correspond to non-active Remote Config templates (i.e., all except the template that is being fetched by clients) are also deleted if they are older than 90 days. To list server-side template versions, use \"firebase-server\" as the namespace ID in [ListVersionsRequest.parent]. If [ListVersionsRequest.parent] is not provided, the client-side template versions ('firebase' namespace) are listed."
                }
              }
            },
            "experiments": {
              "methods": {
                "get": {
                  "id": "firebaseremoteconfig.projects.namespaces.experiments.get",
                  "path": "v1/{+name}",
                  "flatPath": "v1/projects/{projectsId}/namespaces/{namespacesId}/experiments/{experimentsId}",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the experiment to get. Format: projects/{project}/namespaces/{namespace}/experiments/{experiment_id}",
                      "pattern": "^projects/[^/]+/namespaces/[^/]+/experiments/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Experiment"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Get information about an existing experiment. Additional responses codes: NOT_FOUND: The experiment does not exist. --- **BETA:** This API is in a Beta launch stage. It is intended for public testing and feedback. While expected to be stable, interfaces may change ## with notice, and it may not be subject to the same SLAs as stable features."
                },
                "delete": {
                  "id": "firebaseremoteconfig.projects.namespaces.experiments.delete",
                  "path": "v1/{+name}",
                  "flatPath": "v1/projects/{projectsId}/namespaces/{namespacesId}/experiments/{experimentsId}",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the experiment to delete. Format: projects/{project}/namespaces/{namespace}/experiments/{experiment_id}",
                      "pattern": "^projects/[^/]+/namespaces/[^/]+/experiments/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Empty"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Delete an experiment. --- **BETA:** This API is in a Beta launch stage. It is intended for public testing and feedback. While expected to be stable, interfaces may change ## with notice, and it may not be subject to the same SLAs as stable features."
                },
                "list": {
                  "id": "firebaseremoteconfig.projects.namespaces.experiments.list",
                  "path": "v1/{+parent}/experiments",
                  "flatPath": "v1/projects/{projectsId}/namespaces/{namespacesId}/experiments",
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "description": "Required. The parent project for which to list experiments. Format: projects/{project}/namespaces/{namespace}",
                      "pattern": "^projects/[^/]+/namespaces/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "filter": {
                      "description": "Optional. Filter expression following AIP-160 The following filters are supported: name: String. The experiment name.",
                      "location": "query",
                      "type": "string"
                    },
                    "pageSize": {
                      "description": "Optional. The maximum number of items to return per page. If not specified, defaults to 100.",
                      "location": "query",
                      "type": "integer",
                      "format": "int32"
                    },
                    "pageToken": {
                      "description": "Optional. The token for the specific page to retrieve.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListExperimentsResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "List all experiments for a project. --- **BETA:** This API is in a Beta launch stage. It is intended for public testing and feedback. While expected to be stable, interfaces may change ## with notice, and it may not be subject to the same SLAs as stable features."
                }
              }
            },
            "rollouts": {
              "methods": {
                "list": {
                  "id": "firebaseremoteconfig.projects.namespaces.rollouts.list",
                  "path": "v1/{+parent}/rollouts",
                  "flatPath": "v1/projects/{projectsId}/namespaces/{namespacesId}/rollouts",
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "description": "Required. The parent project for which to list rollouts. Format: projects/{project}/namespaces/{namespace}",
                      "pattern": "^projects/[^/]+/namespaces/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "filter": {
                      "description": "Optional. Filter expression following AIP-160",
                      "location": "query",
                      "type": "string"
                    },
                    "pageSize": {
                      "description": "Optional. The maximum number of items to return per page.",
                      "location": "query",
                      "type": "integer",
                      "format": "int32"
                    },
                    "pageToken": {
                      "description": "Optional. The token for the specific page to retrieve.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListRolloutsResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Get a list of all rollouts for a project. --- **BETA:** This API is in a Beta launch stage. It is intended for public testing and feedback. While expected to be stable, interfaces may change ## with notice, and it may not be subject to the same SLAs as stable features."
                },
                "get": {
                  "id": "firebaseremoteconfig.projects.namespaces.rollouts.get",
                  "path": "v1/{+name}",
                  "flatPath": "v1/projects/{projectsId}/namespaces/{namespacesId}/rollouts/{rolloutsId}",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the rollout to get. Format: projects/{project}/namespaces/{namespace}/rollouts/{rollout_id}",
                      "pattern": "^projects/[^/]+/namespaces/[^/]+/rollouts/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Rollout"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Get details about a rollout experiment. --- **BETA:** This API is in a Beta launch stage. It is intended for public testing and feedback. While expected to be stable, interfaces may change ## with notice, and it may not be subject to the same SLAs as stable features."
                },
                "delete": {
                  "id": "firebaseremoteconfig.projects.namespaces.rollouts.delete",
                  "path": "v1/{+name}",
                  "flatPath": "v1/projects/{projectsId}/namespaces/{namespacesId}/rollouts/{rolloutsId}",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the rollout to delete. Format: projects/{project}/namespaces/{namespace}/rollouts/{rollout_id}",
                      "pattern": "^projects/[^/]+/namespaces/[^/]+/rollouts/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Empty"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Delete a rollout experiment. --- **BETA:** This API is in a Beta launch stage. It is intended for public testing and feedback. While expected to be stable, interfaces may change ## with notice, and it may not be subject to the same SLAs as stable features."
                }
              }
            }
          }
        },
        "remoteConfig": {
          "methods": {
            "downloadDefaults": {
              "id": "firebaseremoteconfig.projects.remoteConfig.downloadDefaults",
              "path": "v1/{+project}/remoteConfig:downloadDefaults",
              "flatPath": "v1/projects/{projectsId}/remoteConfig:downloadDefaults",
              "httpMethod": "GET",
              "parameters": {
                "project": {
                  "description": "Required. The Firebase project's Project ID or Project Number, prefixed with \"projects/\".",
                  "pattern": "^projects/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "format": {
                  "description": "Required. The file structure to return.",
                  "location": "query",
                  "type": "string",
                  "enumDescriptions": [
                    "Catch-all for unrecognized enum values.",
                    "Returns a response in XML format.",
                    "Returns a response in property list (plist) format.",
                    "Returns a response in raw JSON format (not packaged in an HttpBody object)."
                  ],
                  "enum": [
                    "FORMAT_UNSPECIFIED",
                    "XML",
                    "PLIST",
                    "JSON"
                  ]
                },
                "name": {
                  "description": "Optional. The name of the RemoteConfig to get defaults from. Format: projects/{project}/namespaces/{namespace}/remoteConfig Project is a Firebase project ID or project number. Namespace is the namespace ID (e.g.: 'firebase' or 'firebase-server')",
                  "location": "query",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "project"
              ],
              "response": {
                "$ref": "HttpBody"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Get a project's current Remote Config template parameters and default values in JSON, property list (plist), or XML format. To download the server-side template defaults, use \"firebase-server\" as the namespace ID in [DownloadDefaultsRequest.name]. If [DownloadDefaultsRequest.name] is not provided, the client-side template defaults ('firebase' namespace) are downloaded."
            },
            "rollback": {
              "id": "firebaseremoteconfig.projects.remoteConfig.rollback",
              "path": "v1/{+project}/remoteConfig:rollback",
              "flatPath": "v1/projects/{projectsId}/remoteConfig:rollback",
              "httpMethod": "POST",
              "parameters": {
                "project": {
                  "description": "The Firebase project's Project ID or Project Number, prefixed with \"projects/\". This field is required if the `name` field is not provided.",
                  "pattern": "^projects/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "project"
              ],
              "request": {
                "$ref": "RollbackRemoteConfigRequest"
              },
              "response": {
                "$ref": "RemoteConfig"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Roll back a project's published Remote Config template to the one specified by the provided version number. A rollback is equivalent to getting a previously published Remote Config template, and re-publishing it using a force update. Returns the published RemoteConfig and the updated ETag as a response header if successful, or an error. To roll back the server-side template, use \"firebase-server\" as the namespace ID in [RollbackRemoteConfigRequest.name]. If [RollbackRemoteConfigRequest.name] is not provided, the client-side template ('firebase' namespace) is rolled back. See the publishing guide for a list of [error codes](/docs/remote-config/use-config-rest#step_5_publish_json_data_to_replace_data_in_the_service). In particular, note that the method returns an error with HTTP Status 404 if the requested version_number to rollback to is not found."
            },
            "listVersions": {
              "id": "firebaseremoteconfig.projects.remoteConfig.listVersions",
              "path": "v1/{+project}/remoteConfig:listVersions",
              "flatPath": "v1/projects/{projectsId}/remoteConfig:listVersions",
              "httpMethod": "GET",
              "parameters": {
                "project": {
                  "description": "Required. The Firebase project's Project ID or Project Number, prefixed with \"projects/\".",
                  "pattern": "^projects/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "pageSize": {
                  "description": "Optional. The maximum number of items to return per page.",
                  "location": "query",
                  "type": "integer",
                  "format": "int32"
                },
                "pageToken": {
                  "description": "Optional. The next_page_token value returned from a previous List request, if any.",
                  "location": "query",
                  "type": "string"
                },
                "endVersionNumber": {
                  "description": "Optional. Specify the newest version number to include in the results. If specified, must be greater than zero. Defaults to the newest version.",
                  "location": "query",
                  "type": "string",
                  "format": "int64"
                },
                "startTime": {
                  "description": "Optional. Specify the earliest update time to include in the results; any entries updated before this time are omitted.",
                  "location": "query",
                  "type": "string",
                  "format": "google-datetime"
                },
                "endTime": {
                  "description": "Optional. Specify the latest update time to include in the results; any entries updated on or after this time are omitted.",
                  "location": "query",
                  "type": "string",
                  "format": "google-datetime"
                },
                "parent": {
                  "description": "Optional. The resource name of the RemoteConfig to list versions for. Format: projects/{project}/namespaces/{namespace}/remoteConfig Project is a Firebase project ID or project number. Namespace is the namespace ID (e.g.: 'firebase' or 'firebase-server')",
                  "location": "query",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "project"
              ],
              "response": {
                "$ref": "ListVersionsResponse"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Get a list of Remote Config template versions that have been published, sorted in reverse chronological order. Only the last 300 versions are stored. All versions that correspond to non-active Remote Config templates (i.e., all except the template that is being fetched by clients) are also deleted if they are older than 90 days. To list server-side template versions, use \"firebase-server\" as the namespace ID in [ListVersionsRequest.parent]. If [ListVersionsRequest.parent] is not provided, the client-side template versions ('firebase' namespace) are listed."
            }
          }
        }
      }
    }
  }
}
