{
  "parameters": {
    "fields": {
      "type": "string",
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query"
    },
    "prettyPrint": {
      "default": "true",
      "type": "boolean",
      "description": "Returns response with indentations and line breaks.",
      "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"
    },
    "uploadType": {
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "location": "query",
      "type": "string"
    },
    "access_token": {
      "description": "OAuth access token.",
      "location": "query",
      "type": "string"
    },
    "oauth_token": {
      "description": "OAuth 2.0 token for the current user.",
      "location": "query",
      "type": "string"
    },
    "quotaUser": {
      "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",
      "type": "string"
    },
    "upload_protocol": {
      "type": "string",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query"
    },
    "alt": {
      "default": "json",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "type": "string",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "description": "Data format for response.",
      "location": "query"
    },
    "callback": {
      "description": "JSONP",
      "location": "query",
      "type": "string"
    },
    "$.xgafv": {
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "type": "string",
      "enum": [
        "1",
        "2"
      ],
      "description": "V1 error format.",
      "location": "query"
    }
  },
  "version_module": true,
  "ownerDomain": "google.com",
  "description": "Google Cloud Memorystore for Memcached API is used for creating and managing Memcached instances in GCP.",
  "mtlsRootUrl": "https://memcache.mtls.googleapis.com/",
  "ownerName": "Google",
  "canonicalName": "Cloud Memorystore for Memcached",
  "protocol": "rest",
  "documentationLink": "https://cloud.google.com/memorystore/",
  "basePath": "",
  "schemas": {
    "MemcacheParameters": {
      "properties": {
        "params": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "User defined set of parameters to use in the memcached process."
        },
        "id": {
          "description": "Output only. The unique ID associated with this set of parameters. Users can use this id to determine if the parameters associated with the instance differ from the parameters associated with the nodes. A discrepancy between parameter ids can inform users that they may need to take action to apply parameters on nodes.",
          "readOnly": true,
          "type": "string"
        }
      },
      "type": "object",
      "id": "MemcacheParameters"
    },
    "SetTagsResponse": {
      "type": "object",
      "properties": {
        "name": {
          "description": "Required. The full resource name of the service resource.",
          "type": "string"
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "Required. Tag keys/values directly bound to this resource. Each item in the map must be expressed as \" : \". For example: \"123/environment\" : \"production\", \"123/costCenter\" : \"marketing\""
        },
        "etag": {
          "type": "string",
          "description": "A checksum based on the current bindings. This field is always set in server responses."
        }
      },
      "id": "SetTagsResponse",
      "description": "Response message for SetTags."
    },
    "NodeConfig": {
      "id": "NodeConfig",
      "description": "Configuration for a Memcached Node.",
      "properties": {
        "cpuCount": {
          "type": "integer",
          "format": "int32",
          "description": "Required. Number of cpus per Memcached node."
        },
        "memorySizeMb": {
          "description": "Required. Memory size in MiB for each Memcached node.",
          "type": "integer",
          "format": "int32"
        }
      },
      "type": "object"
    },
    "RescheduleMaintenanceRequest": {
      "id": "RescheduleMaintenanceRequest",
      "description": "Request for RescheduleMaintenance.",
      "properties": {
        "scheduleTime": {
          "description": "Timestamp when the maintenance shall be rescheduled to if reschedule_type=SPECIFIC_TIME, in RFC 3339 format, for example `2012-11-15T16:19:00.094Z`.",
          "type": "string",
          "format": "google-datetime"
        },
        "rescheduleType": {
          "enum": [
            "RESCHEDULE_TYPE_UNSPECIFIED",
            "IMMEDIATE",
            "NEXT_AVAILABLE_WINDOW",
            "SPECIFIC_TIME"
          ],
          "description": "Required. If reschedule type is SPECIFIC_TIME, must set up schedule_time as well.",
          "enumDescriptions": [
            "Not set.",
            "If the user wants to schedule the maintenance to happen now.",
            "If the user wants to use the existing maintenance policy to find the next available window.",
            "If the user wants to reschedule the maintenance to a specific time."
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "WeeklyMaintenanceWindow": {
      "type": "object",
      "properties": {
        "day": {
          "description": "Required. Allows to define schedule that runs specified day of the week.",
          "enumDescriptions": [
            "The day of the week is unspecified.",
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday",
            "Sunday"
          ],
          "enum": [
            "DAY_OF_WEEK_UNSPECIFIED",
            "MONDAY",
            "TUESDAY",
            "WEDNESDAY",
            "THURSDAY",
            "FRIDAY",
            "SATURDAY",
            "SUNDAY"
          ],
          "type": "string"
        },
        "startTime": {
          "description": "Required. Start time of the window in UTC.",
          "$ref": "TimeOfDay"
        },
        "duration": {
          "description": "Required. Duration of the time window.",
          "type": "string",
          "format": "google-duration"
        }
      },
      "id": "WeeklyMaintenanceWindow",
      "description": "Time window specified for weekly operations."
    },
    "Instance": {
      "type": "object",
      "properties": {
        "nodeCount": {
          "description": "Required. Number of nodes in the Memcached instance.",
          "type": "integer",
          "format": "int32"
        },
        "discoveryEndpoint": {
          "description": "Output only. Endpoint for the Discovery API.",
          "readOnly": true,
          "type": "string"
        },
        "maintenanceSchedule": {
          "readOnly": true,
          "description": "Output only. Published maintenance schedule.",
          "$ref": "MaintenanceSchedule"
        },
        "availableMaintenanceVersions": {
          "readOnly": true,
          "type": "array",
          "description": "Output only. The available maintenance versions that can be applied to the instance.",
          "items": {
            "type": "string"
          }
        },
        "authorizedNetwork": {
          "description": "The full name of the Google Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the instance is connected. If left unspecified, the `default` network will be used.",
          "type": "string"
        },
        "memcacheVersion": {
          "description": "The major version of Memcached software. If not provided, latest supported version will be used. Currently the latest supported major version is `MEMCACHE_1_5`. The minor version will be automatically determined by our system based on the latest supported minor version.",
          "enumDescriptions": [
            "Memcache version is not specified by customer",
            "Memcached 1.5 version.",
            "Memcached 1.6.15 version."
          ],
          "enum": [
            "MEMCACHE_VERSION_UNSPECIFIED",
            "MEMCACHE_1_5",
            "MEMCACHE_1_6_15"
          ],
          "type": "string"
        },
        "satisfiesPzi": {
          "description": "Optional. Output only. Reserved for future use.",
          "readOnly": true,
          "type": "boolean"
        },
        "reservedIpRangeId": {
          "type": "array",
          "description": "Optional. Contains the id of allocated IP address ranges associated with the private service access connection for example, \"test-default\" associated with IP range 10.0.0.0/29.",
          "items": {
            "type": "string"
          }
        },
        "createTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The time the instance was created."
        },
        "labels": {
          "description": "Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "updateTime": {
          "description": "Output only. The time the instance was updated.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "state": {
          "description": "Output only. The state of this Memcached instance.",
          "enum": [
            "STATE_UNSPECIFIED",
            "CREATING",
            "READY",
            "UPDATING",
            "DELETING",
            "PERFORMING_MAINTENANCE",
            "MEMCACHE_VERSION_UPGRADING"
          ],
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "State not set.",
            "Memcached instance is being created.",
            "Memcached instance has been created and ready to be used.",
            "Memcached instance is updating configuration such as maintenance policy and schedule.",
            "Memcached instance is being deleted.",
            "Memcached instance is going through maintenance, e.g. data plane rollout.",
            "Memcached instance is undergoing memcached engine version upgrade."
          ]
        },
        "effectiveMaintenanceVersion": {
          "description": "Output only. The effective maintenance version of the instance.",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "Required. Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/instances/{instance_id}` Note: Memcached instances are managed and addressed at the regional level so `location_id` here refers to a Google Cloud region; however, users may choose which zones Memcached nodes should be provisioned in within an instance. Refer to zones field for more details.",
          "type": "string"
        },
        "parameters": {
          "description": "User defined parameters to apply to the memcached process on each node.",
          "$ref": "MemcacheParameters"
        },
        "satisfiesPzs": {
          "readOnly": true,
          "type": "boolean",
          "description": "Optional. Output only. Reserved for future use."
        },
        "instanceMessages": {
          "type": "array",
          "description": "List of messages that describe the current state of the Memcached instance.",
          "items": {
            "$ref": "InstanceMessage"
          }
        },
        "maintenanceVersion": {
          "type": "string",
          "description": "Optional. Last self service update maintenance version triggered by the customer. If it is empty, it means that the maintenance version is not set by the user."
        },
        "nodeConfig": {
          "$ref": "NodeConfig",
          "description": "Required. Configuration for Memcached nodes."
        },
        "memcacheNodes": {
          "description": "Output only. List of Memcached nodes. Refer to Node message for more details.",
          "items": {
            "$ref": "Node"
          },
          "readOnly": true,
          "type": "array"
        },
        "displayName": {
          "type": "string",
          "description": "User provided name for the instance, which is only used for display purposes. Cannot be more than 80 characters."
        },
        "memcacheFullVersion": {
          "description": "Output only. The full version of memcached server running on this instance. System automatically determines the full memcached version for an instance based on the input MemcacheVersion. The full version format will be \"memcached-1.5.16\".",
          "readOnly": true,
          "type": "string"
        },
        "zones": {
          "description": "Zones in which Memcached nodes should be provisioned. Memcached nodes will be equally distributed across these zones. If not provided, the service will by default create nodes in all zones in the region for the instance.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "maintenancePolicy": {
          "description": "The maintenance policy for the instance. If not provided, the maintenance event will be performed based on Memorystore internal rollout schedule.",
          "$ref": "GoogleCloudMemcacheV1MaintenancePolicy"
        }
      },
      "id": "Instance",
      "description": "A Memorystore for Memcached instance"
    },
    "DenyMaintenancePeriod": {
      "properties": {
        "startDate": {
          "description": "Deny period start date. This can be: * A full date, with non-zero year, month and day values. * A month and day value, with a zero year. Allows recurring deny periods each year. Date matching this period will have to be the same or after the start.",
          "$ref": "Date"
        },
        "endDate": {
          "description": "Deny period end date. This can be: * A full date, with non-zero year, month and day values. * A month and day value, with a zero year. Allows recurring deny periods each year. Date matching this period will have to be before the end.",
          "$ref": "Date"
        },
        "time": {
          "description": "Time in UTC when the Blackout period starts on start_date and ends on end_date. This can be: * Full time. * All zeros for 00:00:00 UTC",
          "$ref": "TimeOfDay"
        }
      },
      "type": "object",
      "id": "DenyMaintenancePeriod",
      "description": "DenyMaintenancePeriod definition. Maintenance is forbidden within the deny period. The start_date must be less than the end_date."
    },
    "GoogleCloudSaasacceleratorManagementProvidersV1NotificationParameter": {
      "id": "GoogleCloudSaasacceleratorManagementProvidersV1NotificationParameter",
      "description": "Contains notification related data.",
      "properties": {
        "values": {
          "description": "Optional. Array of string values. e.g. instance's replica information.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "Schedule": {
      "id": "Schedule",
      "description": "Configure the schedule.",
      "type": "object",
      "properties": {
        "day": {
          "description": "Allows to define schedule that runs specified day of the week.",
          "enumDescriptions": [
            "The day of the week is unspecified.",
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday",
            "Sunday"
          ],
          "enum": [
            "DAY_OF_WEEK_UNSPECIFIED",
            "MONDAY",
            "TUESDAY",
            "WEDNESDAY",
            "THURSDAY",
            "FRIDAY",
            "SATURDAY",
            "SUNDAY"
          ],
          "type": "string"
        },
        "startTime": {
          "$ref": "TimeOfDay",
          "description": "Time within the window to start the operations."
        },
        "duration": {
          "type": "string",
          "format": "google-duration",
          "description": "Output only. Duration of the time window, set by service producer."
        }
      }
    },
    "Node": {
      "id": "Node",
      "properties": {
        "zone": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Location (GCP Zone) for the Memcached node."
        },
        "memcacheFullVersion": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The full version of memcached server running on this node. e.g. - memcached-1.5.16"
        },
        "state": {
          "enumDescriptions": [
            "Node state is not set.",
            "Node is being created.",
            "Node has been created and ready to be used.",
            "Node is being deleted.",
            "Node is being updated."
          ],
          "readOnly": true,
          "type": "string",
          "enum": [
            "STATE_UNSPECIFIED",
            "CREATING",
            "READY",
            "DELETING",
            "UPDATING"
          ],
          "description": "Output only. Current state of the Memcached node."
        },
        "parameters": {
          "description": "User defined parameters currently applied to the node.",
          "$ref": "MemcacheParameters"
        },
        "nodeId": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Identifier of the Memcached node. The node id does not include project or location like the Memcached instance name."
        },
        "host": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Hostname or IP address of the Memcached node used by the clients to connect to the Memcached server on this node."
        },
        "port": {
          "readOnly": true,
          "type": "integer",
          "format": "int32",
          "description": "Output only. The port number of the Memcached server on this node."
        },
        "memcacheVersion": {
          "enumDescriptions": [
            "Memcache version is not specified by customer",
            "Memcached 1.5 version.",
            "Memcached 1.6.15 version."
          ],
          "description": "Output only. Major version of memcached server running on this node, e.g. MEMCACHE_1_5",
          "enum": [
            "MEMCACHE_VERSION_UNSPECIFIED",
            "MEMCACHE_1_5",
            "MEMCACHE_1_6_15"
          ],
          "readOnly": true,
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleCloudMemcacheV1LocationMetadata": {
      "id": "GoogleCloudMemcacheV1LocationMetadata",
      "description": "Metadata for the given google.cloud.location.Location.",
      "type": "object",
      "properties": {
        "availableZones": {
          "description": "Output only. The set of available zones in the location. The map is keyed by the lowercase ID of each zone, as defined by GCE. These keys can be specified in the `zones` field when creating a Memcached instance.",
          "readOnly": true,
          "type": "object",
          "additionalProperties": {
            "$ref": "GoogleCloudMemcacheV1ZoneMetadata"
          }
        }
      }
    },
    "InstanceMessage": {
      "id": "InstanceMessage",
      "type": "object",
      "properties": {
        "code": {
          "type": "string",
          "description": "A code that correspond to one type of user-facing message.",
          "enumDescriptions": [
            "Message Code not set.",
            "Memcached nodes are distributed unevenly."
          ],
          "enum": [
            "CODE_UNSPECIFIED",
            "ZONE_DISTRIBUTION_UNBALANCED"
          ]
        },
        "message": {
          "description": "Message on memcached instance which will be exposed to users.",
          "type": "string"
        }
      }
    },
    "GoogleCloudSaasacceleratorManagementProvidersV1ProvisionedResource": {
      "type": "object",
      "properties": {
        "resourceUrl": {
          "type": "string",
          "description": "URL identifying the resource, e.g. \"https://www.googleapis.com/compute/v1/projects/...)\"."
        },
        "resourceType": {
          "description": "Type of the resource. This can be either a GCP resource or a custom one (e.g. another cloud provider's VM). For GCP compute resources use singular form of the names listed in GCP compute API documentation (https://cloud.google.com/compute/docs/reference/rest/v1/), prefixed with 'compute-', for example: 'compute-instance', 'compute-disk', 'compute-autoscaler'.",
          "type": "string"
        }
      },
      "id": "GoogleCloudSaasacceleratorManagementProvidersV1ProvisionedResource",
      "description": "Describes provisioned dataplane resources."
    },
    "GoogleCloudSaasacceleratorManagementProvidersV1NodeSloMetadata": {
      "id": "GoogleCloudSaasacceleratorManagementProvidersV1NodeSloMetadata",
      "description": "Node information for custom per-node SLO implementations. SSA does not support per-node SLO, but producers can populate per-node information in SloMetadata for custom precomputations. SSA Eligibility Exporter will emit per-node metric based on this information.",
      "type": "object",
      "properties": {
        "perSliEligibility": {
          "description": "If present, this will override eligibility for the node coming from instance or exclusions for specified SLIs.",
          "$ref": "GoogleCloudSaasacceleratorManagementProvidersV1PerSliSloEligibility"
        },
        "nodeId": {
          "type": "string",
          "description": "The id of the node. This should be equal to SaasInstanceNode.node_id."
        },
        "location": {
          "description": "The location of the node, if different from instance location.",
          "type": "string"
        }
      }
    },
    "MaintenancePolicy": {
      "properties": {
        "updateTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The time when the resource was updated."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata. Each label is a key-value pair, where both the key and the value are arbitrary strings provided by the user."
        },
        "state": {
          "enum": [
            "STATE_UNSPECIFIED",
            "READY",
            "DELETING"
          ],
          "description": "Optional. The state of the policy.",
          "enumDescriptions": [
            "Unspecified state.",
            "Resource is ready to be used.",
            "Resource is being deleted. It can no longer be attached to instances."
          ],
          "type": "string"
        },
        "createTime": {
          "description": "Output only. The time when the resource was created.",
          "type": "string",
          "format": "google-datetime"
        },
        "name": {
          "description": "Required. MaintenancePolicy name using the form: `projects/{project_id}/locations/{location_id}/maintenancePolicies/{maintenance_policy_id}` where {project_id} refers to a GCP consumer project ID, {location_id} refers to a GCP region/zone, {maintenance_policy_id} must be 1-63 characters long and match the regular expression `[a-z0-9]([-a-z0-9]*[a-z0-9])?`.",
          "type": "string"
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of what this policy is for. Create/Update methods return INVALID_ARGUMENT if the length is greater than 512."
        },
        "updatePolicy": {
          "description": "Maintenance policy applicable to instance update.",
          "$ref": "UpdatePolicy"
        }
      },
      "type": "object",
      "id": "MaintenancePolicy",
      "description": "Defines policies to service maintenance events."
    },
    "SetTagsRequest": {
      "properties": {
        "requestId": {
          "type": "string",
          "description": "Optional. A unique identifier for this request. Must be a valid UUID. This request is only idempotent if a `request_id` is provided."
        },
        "name": {
          "description": "Required. The full resource name of the service resource.",
          "type": "string"
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "Required. These bindings will override any bindings previously set and will be effective immediately. Each item in the map must be expressed as \" : \". For example: \"123/environment\" : \"production\", \"123/costCenter\" : \"marketing\""
        },
        "etag": {
          "type": "string",
          "description": "Optional. A checksum based on the current bindings which can be passed to prevent race conditions. If not passed, etag check would be skipped."
        }
      },
      "type": "object",
      "id": "SetTagsRequest",
      "description": "Request message for SetTags."
    },
    "ZoneMetadata": {
      "type": "object",
      "properties": {},
      "id": "ZoneMetadata"
    },
    "WeeklyCycle": {
      "type": "object",
      "properties": {
        "schedule": {
          "description": "User can specify multiple windows in a week. Minimum of 1 window.",
          "items": {
            "$ref": "Schedule"
          },
          "type": "array"
        }
      },
      "id": "WeeklyCycle",
      "description": "Time window specified for weekly operations."
    },
    "ListInstancesResponse": {
      "id": "ListInstancesResponse",
      "description": "Response for ListInstances.",
      "properties": {
        "nextPageToken": {
          "type": "string",
          "description": "Token to retrieve the next page of results, or empty if there are no more results in the list."
        },
        "unreachable": {
          "description": "Locations that could not be reached.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "instances": {
          "type": "array",
          "description": "A list of Memcached instances in the project in the specified location, or across all locations. If the `location_id` in the parent field of the request is \"-\", all regions available to the project are queried, and the results aggregated.",
          "items": {
            "$ref": "Instance"
          }
        }
      },
      "type": "object"
    },
    "LocationMetadata": {
      "id": "LocationMetadata",
      "description": "Metadata for the given google.cloud.location.Location.",
      "type": "object",
      "properties": {
        "availableZones": {
          "additionalProperties": {
            "$ref": "ZoneMetadata"
          },
          "readOnly": true,
          "type": "object",
          "description": "Output only. The set of available zones in the location. The map is keyed by the lowercase ID of each zone, as defined by GCE. These keys can be specified in the `zones` field when creating a Memcached instance."
        }
      }
    },
    "Date": {
      "properties": {
        "month": {
          "description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
          "type": "integer",
          "format": "int32"
        },
        "year": {
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
          "type": "integer",
          "format": "int32"
        },
        "day": {
          "type": "integer",
          "format": "int32",
          "description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant."
        }
      },
      "type": "object",
      "id": "Date",
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp"
    },
    "Empty": {
      "type": "object",
      "properties": {},
      "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); }"
    },
    "UpdateParametersRequest": {
      "type": "object",
      "properties": {
        "updateMask": {
          "type": "string",
          "format": "google-fieldmask",
          "description": "Required. Mask of fields to update."
        },
        "parameters": {
          "description": "The parameters to apply to the instance.",
          "$ref": "MemcacheParameters"
        }
      },
      "id": "UpdateParametersRequest",
      "description": "Request for UpdateParameters."
    },
    "Status": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        },
        "code": {
          "description": "The status code, which should be an enum value of google.rpc.Code.",
          "type": "integer",
          "format": "int32"
        },
        "details": {
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
          "items": {
            "additionalProperties": {
              "description": "Properties of the object. Contains field @type with type URL.",
              "type": "any"
            },
            "type": "object"
          },
          "type": "array"
        }
      },
      "id": "Status",
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors)."
    },
    "GetTagsResponse": {
      "id": "GetTagsResponse",
      "description": "Response message for GetTags.",
      "properties": {
        "name": {
          "description": "Required. The full resource name of the service resource.",
          "type": "string"
        },
        "tags": {
          "description": "Required. Tag keys/values directly bound to this resource. Each item in the map must be expressed as \" : \". For example: \"123/environment\" : \"production\", \"123/costCenter\" : \"marketing\"",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "etag": {
          "description": "A checksum based on the current bindings. This field is always set in server responses.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleCloudMemcacheV1OperationMetadata": {
      "id": "GoogleCloudMemcacheV1OperationMetadata",
      "description": "Represents the metadata of a long-running operation.",
      "properties": {
        "apiVersion": {
          "description": "Output only. API version used to start the operation.",
          "readOnly": true,
          "type": "string"
        },
        "createTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. Time when the operation was created."
        },
        "target": {
          "description": "Output only. Server-defined resource path for the target of the operation.",
          "readOnly": true,
          "type": "string"
        },
        "cancelRequested": {
          "description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
          "readOnly": true,
          "type": "boolean"
        },
        "endTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. Time when the operation finished running."
        },
        "verb": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Name of the verb executed by the operation."
        },
        "statusDetail": {
          "description": "Output only. Human-readable status of the operation, if any.",
          "readOnly": true,
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleCloudSaasacceleratorManagementProvidersV1SloEligibility": {
      "id": "GoogleCloudSaasacceleratorManagementProvidersV1SloEligibility",
      "description": "SloEligibility is a tuple containing eligibility value: true if an instance is eligible for SLO calculation or false if it should be excluded from all SLO-related calculations along with a user-defined reason.",
      "type": "object",
      "properties": {
        "eligible": {
          "description": "Whether an instance is eligible or ineligible.",
          "type": "boolean"
        },
        "reason": {
          "type": "string",
          "description": "User-defined reason for the current value of instance eligibility. Usually, this can be directly mapped to the internal state. An empty reason is allowed."
        }
      }
    },
    "UpdatePolicy": {
      "id": "UpdatePolicy",
      "description": "Maintenance policy applicable to instance updates.",
      "type": "object",
      "properties": {
        "channel": {
          "type": "string",
          "enum": [
            "UPDATE_CHANNEL_UNSPECIFIED",
            "EARLIER",
            "LATER",
            "WEEK1",
            "WEEK2",
            "WEEK5"
          ],
          "description": "Optional. Relative scheduling channel applied to resource.",
          "enumDescriptions": [
            "Unspecified channel.",
            "Early channel within a customer project.",
            "Later channel within a customer project.",
            "! ! The follow channels can ONLY be used if you adopt the new MW system! ! ! NOTE: all WEEK channels are assumed to be under a weekly window. ! There is currently no dedicated channel definitions for Daily windows. ! If you use Daily window, the system will assume a 1d (24Hours) advanced ! notification period b/w EARLY and LATER. ! We may consider support more flexible daily channel specifications in ! the future. WEEK1 == EARLIER with minimum 7d advanced notification. {7d, 14d} The system will treat them equally and will use WEEK1 whenever it can. New customers are encouraged to use this channel annotation.",
            "WEEK2 == LATER with minimum 14d advanced notification {14d, 21d}.",
            "WEEK5 == 40d support. minimum 35d advanced notification {35d, 42d}."
          ]
        },
        "window": {
          "$ref": "MaintenanceWindow",
          "description": "Optional. Maintenance window that is applied to resources covered by this policy."
        },
        "denyMaintenancePeriods": {
          "description": "Deny Maintenance Period that is applied to resource to indicate when maintenance is forbidden. The protocol supports zero-to-many such periods, but the current SLM Rollout implementation only supports zero-to-one.",
          "items": {
            "$ref": "DenyMaintenancePeriod"
          },
          "type": "array"
        }
      }
    },
    "GoogleCloudSaasacceleratorManagementProvidersV1SloMetadata": {
      "id": "GoogleCloudSaasacceleratorManagementProvidersV1SloMetadata",
      "description": "SloMetadata contains resources required for proper SLO classification of the instance.",
      "properties": {
        "nodes": {
          "type": "array",
          "description": "Optional. List of nodes. Some producers need to use per-node metadata to calculate SLO. This field allows such producers to publish per-node SLO meta data, which will be consumed by SSA Eligibility Exporter and published in the form of per node metric to Monarch.",
          "items": {
            "$ref": "GoogleCloudSaasacceleratorManagementProvidersV1NodeSloMetadata"
          }
        },
        "perSliEligibility": {
          "description": "Optional. Multiple per-instance SLI eligibilities which apply for individual SLIs.",
          "$ref": "GoogleCloudSaasacceleratorManagementProvidersV1PerSliSloEligibility"
        },
        "tier": {
          "type": "string",
          "description": "Name of the SLO tier the Instance belongs to. This name will be expected to match the tiers specified in the service SLO configuration. Field is mandatory and must not be empty."
        }
      },
      "type": "object"
    },
    "GetTagsRequest": {
      "id": "GetTagsRequest",
      "description": "Request message for GetTags.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Required. The full resource name of the service resource."
        }
      },
      "type": "object"
    },
    "GoogleCloudSaasacceleratorManagementProvidersV1PerSliSloEligibility": {
      "id": "GoogleCloudSaasacceleratorManagementProvidersV1PerSliSloEligibility",
      "description": "PerSliSloEligibility is a mapping from an SLI name to eligibility.",
      "properties": {
        "eligibilities": {
          "description": "An entry in the eligibilities map specifies an eligibility for a particular SLI for the given instance. The SLI key in the name must be a valid SLI name specified in the Eligibility Exporter binary flags otherwise an error will be emitted by Eligibility Exporter and the oncaller will be alerted. If an SLI has been defined in the binary flags but the eligibilities map does not contain it, the corresponding SLI time series will not be emitted by the Eligibility Exporter. This ensures a smooth rollout and compatibility between the data produced by different versions of the Eligibility Exporters. If eligibilities map contains a key for an SLI which has not been declared in the binary flags, there will be an error message emitted in the Eligibility Exporter log and the metric for the SLI in question will not be emitted.",
          "type": "object",
          "additionalProperties": {
            "$ref": "GoogleCloudSaasacceleratorManagementProvidersV1SloEligibility"
          }
        }
      },
      "type": "object"
    },
    "ListLocationsResponse": {
      "properties": {
        "locations": {
          "type": "array",
          "description": "A list of locations that matches the specified filter in the request.",
          "items": {
            "$ref": "Location"
          }
        },
        "nextPageToken": {
          "type": "string",
          "description": "The standard List next-page token."
        }
      },
      "type": "object",
      "id": "ListLocationsResponse",
      "description": "The response message for Locations.ListLocations."
    },
    "OperationMetadata": {
      "id": "OperationMetadata",
      "description": "Represents the metadata of a long-running operation.",
      "properties": {
        "apiVersion": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. API version used to start the operation."
        },
        "createTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. Time when the operation was created."
        },
        "target": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Server-defined resource path for the target of the operation."
        },
        "cancelRequested": {
          "description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
          "readOnly": true,
          "type": "boolean"
        },
        "endTime": {
          "description": "Output only. Time when the operation finished running.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "verb": {
          "description": "Output only. Name of the verb executed by the operation.",
          "readOnly": true,
          "type": "string"
        },
        "statusDetail": {
          "description": "Output only. Human-readable status of the operation, if any.",
          "readOnly": true,
          "type": "string"
        }
      },
      "type": "object"
    },
    "MaintenanceWindow": {
      "type": "object",
      "properties": {
        "dailyCycle": {
          "$ref": "DailyCycle",
          "description": "Daily cycle."
        },
        "weeklyCycle": {
          "description": "Weekly cycle.",
          "$ref": "WeeklyCycle"
        }
      },
      "id": "MaintenanceWindow",
      "description": "MaintenanceWindow definition."
    },
    "CancelOperationRequest": {
      "id": "CancelOperationRequest",
      "description": "The request message for Operations.CancelOperation.",
      "properties": {},
      "type": "object"
    },
    "ApplyParametersRequest": {
      "type": "object",
      "properties": {
        "nodeIds": {
          "type": "array",
          "description": "Nodes to which the instance-level parameter group is applied.",
          "items": {
            "type": "string"
          }
        },
        "applyAll": {
          "description": "Whether to apply instance-level parameter group to all nodes. If set to true, users are restricted from specifying individual nodes, and `ApplyParameters` updates all nodes within the instance.",
          "type": "boolean"
        }
      },
      "id": "ApplyParametersRequest",
      "description": "Request for ApplyParameters."
    },
    "GoogleCloudMemcacheV1MaintenancePolicy": {
      "type": "object",
      "properties": {
        "createTime": {
          "description": "Output only. The time when the policy was created.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "description": {
          "type": "string",
          "description": "Description of what this policy is for. Create/Update methods return INVALID_ARGUMENT if the length is greater than 512."
        },
        "updateTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The time when the policy was updated."
        },
        "weeklyMaintenanceWindow": {
          "description": "Required. Maintenance window that is applied to resources covered by this policy. Minimum 1. For the current version, the maximum number of weekly_maintenance_windows is expected to be one.",
          "items": {
            "$ref": "WeeklyMaintenanceWindow"
          },
          "type": "array"
        }
      },
      "id": "GoogleCloudMemcacheV1MaintenancePolicy",
      "description": "Maintenance policy per instance."
    },
    "MaintenanceSchedule": {
      "id": "MaintenanceSchedule",
      "description": "Upcoming maintenance schedule.",
      "type": "object",
      "properties": {
        "endTime": {
          "description": "Output only. The end time of any upcoming scheduled maintenance for this instance.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "startTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The start time of any upcoming scheduled maintenance for this instance."
        },
        "scheduleDeadlineTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The deadline that the maintenance schedule start time can not go beyond, including reschedule."
        }
      }
    },
    "GoogleCloudMemcacheV1UpgradeInstanceRequest": {
      "id": "GoogleCloudMemcacheV1UpgradeInstanceRequest",
      "description": "Request for UpgradeInstance.",
      "properties": {
        "memcacheVersion": {
          "description": "Required. Specifies the target version of memcached engine to upgrade to.",
          "enumDescriptions": [
            "Memcache version is not specified by customer",
            "Memcached 1.5 version.",
            "Memcached 1.6.15 version."
          ],
          "enum": [
            "MEMCACHE_VERSION_UNSPECIFIED",
            "MEMCACHE_1_5",
            "MEMCACHE_1_6_15"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleCloudSaasacceleratorManagementProvidersV1Instance": {
      "id": "GoogleCloudSaasacceleratorManagementProvidersV1Instance",
      "description": "Instance represents the interface for SLM services to actuate the state of control plane resources. Example Instance in JSON, where consumer-project-number=123456, producer-project-id=cloud-sql: ```json Instance: { \"name\": \"projects/123456/locations/us-east1/instances/prod-instance\", \"create_time\": { \"seconds\": 1526406431, }, \"labels\": { \"env\": \"prod\", \"foo\": \"bar\" }, \"state\": READY, \"software_versions\": { \"software_update\": \"cloud-sql-09-28-2018\", }, \"maintenance_policy_names\": { \"UpdatePolicy\": \"projects/123456/locations/us-east1/maintenancePolicies/prod-update-policy\", } \"tenant_project_id\": \"cloud-sql-test-tenant\", \"producer_metadata\": { \"cloud-sql-tier\": \"basic\", \"cloud-sql-instance-size\": \"1G\", }, \"provisioned_resources\": [ { \"resource-type\": \"compute-instance\", \"resource-url\": \"https://www.googleapis.com/compute/v1/projects/cloud-sql/zones/us-east1-b/instances/vm-1\", } ], \"maintenance_schedules\": { \"csa_rollout\": { \"start_time\": { \"seconds\": 1526406431, }, \"end_time\": { \"seconds\": 1535406431, }, }, \"ncsa_rollout\": { \"start_time\": { \"seconds\": 1526406431, }, \"end_time\": { \"seconds\": 1535406431, }, } }, \"consumer_defined_name\": \"my-sql-instance1\", } ``` LINT.IfChange",
      "properties": {
        "slmInstanceTemplate": {
          "description": "Link to the SLM instance template. Only populated when updating SLM instances via SSA's Actuation service adaptor. Service producers with custom control plane (e.g. Cloud SQL) doesn't need to populate this field. Instead they should use software_versions.",
          "type": "string"
        },
        "notificationParameters": {
          "type": "object",
          "additionalProperties": {
            "$ref": "GoogleCloudSaasacceleratorManagementProvidersV1NotificationParameter"
          },
          "description": "Optional. notification_parameter are information that service producers may like to include that is not relevant to Rollout. This parameter will only be passed to Gamma and Cloud Logging for notification/logging purpose."
        },
        "provisionedResources": {
          "description": "Output only. The list of data plane resources provisioned for this instance, e.g. compute VMs. See go/get-instance-metadata.",
          "items": {
            "$ref": "GoogleCloudSaasacceleratorManagementProvidersV1ProvisionedResource"
          },
          "readOnly": true,
          "type": "array"
        },
        "maintenancePolicyNames": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The MaintenancePolicies that have been attached to the instance. The key must be of the type name of the oneof policy name defined in MaintenancePolicy, and the referenced policy must define the same policy type. For details, please refer to go/mr-user-guide. Should not be set if maintenance_settings.maintenance_policies is set."
        },
        "tenantProjectId": {
          "description": "Output only. ID of the associated GCP tenant project. See go/get-instance-metadata.",
          "readOnly": true,
          "type": "string"
        },
        "maintenanceSettings": {
          "$ref": "GoogleCloudSaasacceleratorManagementProvidersV1MaintenanceSettings",
          "description": "Optional. The MaintenanceSettings associated with instance."
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource. It uses the form: `projects/{project_number}/locations/{location_id}/instances/{instance_id}` Note: This name is passed, stored and logged across the rollout system. So use of consumer project_id or any other consumer PII in the name is strongly discouraged for wipeout (go/wipeout) compliance. See go/elysium/project_ids#storage-guidance for more details."
        },
        "maintenanceSchedules": {
          "additionalProperties": {
            "$ref": "GoogleCloudSaasacceleratorManagementProvidersV1MaintenanceSchedule"
          },
          "type": "object",
          "description": "The MaintenanceSchedule contains the scheduling information of published maintenance schedule with same key as software_versions."
        },
        "instanceType": {
          "description": "Optional. The instance_type of this instance of format: projects/{project_number}/locations/{location_id}/instanceTypes/{instance_type_id}. Instance Type represents a high-level tier or SKU of the service that this instance belong to. When enabled(eg: Maintenance Rollout), Rollout uses 'instance_type' along with 'software_versions' to determine whether instance needs an update or not.",
          "type": "string"
        },
        "consumerProjectNumber": {
          "type": "string",
          "description": "Optional. The consumer_project_number associated with this Apigee instance. This field is added specifically to support Apigee integration with SLM Rollout and UMM. It represents the numerical project ID of the GCP project that consumes this Apigee instance. It is used for SLM rollout notifications and UMM integration, enabling proper mapping to customer projects and log delivery for Apigee instances. This field complements consumer_project_id and may be used for specific Apigee scenarios where the numerical ID is required."
        },
        "createTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. Timestamp when the resource was created."
        },
        "softwareVersions": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "Software versions that are used to deploy this instance. This can be mutated by rollout services."
        },
        "updateTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. Timestamp when the resource was last modified."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata. Each label is a key-value pair, where both the key and the value are arbitrary strings provided by the user."
        },
        "state": {
          "description": "Output only. Current lifecycle state of the resource (e.g. if it's being created or ready to use).",
          "enum": [
            "STATE_UNSPECIFIED",
            "CREATING",
            "READY",
            "UPDATING",
            "REPAIRING",
            "DELETING",
            "ERROR"
          ],
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Unspecified state.",
            "Instance is being created.",
            "Instance has been created and is ready to use.",
            "Instance is being updated.",
            "Instance is unheathy and under repair.",
            "Instance is being deleted.",
            "Instance encountered an error and is in indeterministic state."
          ]
        },
        "sloMetadata": {
          "description": "Output only. SLO metadata for instance classification in the Standardized dataplane SLO platform. See go/cloud-ssa-standard-slo for feature description.",
          "$ref": "GoogleCloudSaasacceleratorManagementProvidersV1SloMetadata",
          "readOnly": true
        },
        "producerMetadata": {
          "readOnly": true,
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Output only. Custom string attributes used primarily to expose producer-specific information in monitoring dashboards. See go/get-instance-metadata."
        },
        "consumerDefinedName": {
          "type": "string",
          "description": "consumer_defined_name is the name of the instance set by the service consumers. Generally this is different from the `name` field which reperesents the system-assigned id of the instance which the service consumers do not recognize. This is a required field for tenants onboarding to Maintenance Window notifications (go/slm-rollout-maintenance-policies#prerequisites)."
        }
      },
      "type": "object"
    },
    "ListOperationsResponse": {
      "properties": {
        "nextPageToken": {
          "description": "The standard List next-page token.",
          "type": "string"
        },
        "unreachable": {
          "type": "array",
          "description": "Unordered list. Unreachable resources. Populated when the request sets `ListOperationsRequest.return_partial_success` and reads across collections. For example, when attempting to list all resources across all supported locations.",
          "items": {
            "type": "string"
          }
        },
        "operations": {
          "type": "array",
          "description": "A list of operations that matches the specified filter in the request.",
          "items": {
            "$ref": "Operation"
          }
        }
      },
      "type": "object",
      "id": "ListOperationsResponse",
      "description": "The response message for Operations.ListOperations."
    },
    "Operation": {
      "type": "object",
      "properties": {
        "done": {
          "description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
          "type": "boolean"
        },
        "error": {
          "$ref": "Status",
          "description": "The error result of the operation in case of failure or cancellation."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "description": "Properties of the object. Contains field @type with type URL.",
            "type": "any"
          },
          "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any."
        },
        "response": {
          "description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
          "type": "object",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          }
        },
        "name": {
          "type": "string",
          "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`."
        }
      },
      "id": "Operation",
      "description": "This resource represents a long-running operation that is the result of a network API call."
    },
    "DailyCycle": {
      "properties": {
        "startTime": {
          "description": "Time within the day to start the operations.",
          "$ref": "TimeOfDay"
        },
        "duration": {
          "type": "string",
          "format": "google-duration",
          "description": "Output only. Duration of the time window, set by service producer."
        }
      },
      "type": "object",
      "id": "DailyCycle",
      "description": "Time window specified for daily operations."
    },
    "TimeOfDay": {
      "id": "TimeOfDay",
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "type": "object",
      "properties": {
        "hours": {
          "type": "integer",
          "format": "int32",
          "description": "Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time."
        },
        "seconds": {
          "type": "integer",
          "format": "int32",
          "description": "Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds."
        },
        "minutes": {
          "type": "integer",
          "format": "int32",
          "description": "Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59."
        },
        "nanos": {
          "type": "integer",
          "format": "int32",
          "description": "Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999."
        }
      }
    },
    "GoogleCloudMemcacheV1ZoneMetadata": {
      "id": "GoogleCloudMemcacheV1ZoneMetadata",
      "properties": {},
      "type": "object"
    },
    "Location": {
      "properties": {
        "locationId": {
          "description": "The canonical id for this location. For example: `\"us-east1\"`.",
          "type": "string"
        },
        "metadata": {
          "description": "Service-specific metadata. For example the available capacity at the given location.",
          "type": "object",
          "additionalProperties": {
            "description": "Properties of the object. Contains field @type with type URL.",
            "type": "any"
          }
        },
        "name": {
          "type": "string",
          "description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`"
        },
        "labels": {
          "description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "displayName": {
          "description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
          "type": "string"
        }
      },
      "type": "object",
      "id": "Location",
      "description": "A resource that represents a Google Cloud location."
    },
    "GoogleCloudSaasacceleratorManagementProvidersV1MaintenanceSchedule": {
      "id": "GoogleCloudSaasacceleratorManagementProvidersV1MaintenanceSchedule",
      "description": "Maintenance schedule which is exposed to customer and potentially end user, indicating published upcoming future maintenance schedule",
      "type": "object",
      "properties": {
        "endTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "The scheduled end time for the maintenance."
        },
        "startTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "The scheduled start time for the maintenance."
        },
        "canReschedule": {
          "description": "This field is deprecated, and will be always set to true since reschedule can happen multiple times now. This field should not be removed until all service producers remove this for their customers.",
          "deprecated": true,
          "type": "boolean"
        },
        "rolloutManagementPolicy": {
          "type": "string",
          "description": "The rollout management policy this maintenance schedule is associated with. When doing reschedule update request, the reschedule should be against this given policy."
        },
        "scheduleDeadlineTime": {
          "description": "schedule_deadline_time is the time deadline any schedule start time cannot go beyond, including reschedule. It's normally the initial schedule start time plus maintenance window length (1 day or 1 week). Maintenance cannot be scheduled to start beyond this deadline.",
          "type": "string",
          "format": "google-datetime"
        }
      }
    },
    "GoogleCloudSaasacceleratorManagementProvidersV1MaintenanceSettings": {
      "properties": {
        "isRollback": {
          "description": "Optional. If the update call is triggered from rollback, set the value as true.",
          "type": "boolean"
        },
        "exclude": {
          "description": "Optional. Exclude instance from maintenance. When true, rollout service will not attempt maintenance on the instance. Rollout service will include the instance in reported rollout progress as not attempted.",
          "type": "boolean"
        },
        "maintenancePolicies": {
          "description": "Optional. The MaintenancePolicies that have been attached to the instance. The key must be of the type name of the oneof policy name defined in MaintenancePolicy, and the embedded policy must define the same policy type. For details, please refer to go/mr-user-guide. Should not be set if maintenance_policy_names is set. If only the name is needed, then only populate MaintenancePolicy.name.",
          "type": "object",
          "additionalProperties": {
            "$ref": "MaintenancePolicy"
          }
        }
      },
      "type": "object",
      "id": "GoogleCloudSaasacceleratorManagementProvidersV1MaintenanceSettings",
      "description": "Maintenance settings associated with instance. Allows service producers and end users to assign settings that controls maintenance on this instance."
    }
  },
  "id": "memcache:v1",
  "discoveryVersion": "v1",
  "name": "memcache",
  "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."
        }
      }
    }
  },
  "baseUrl": "https://memcache.googleapis.com/",
  "version": "v1",
  "rootUrl": "https://memcache.googleapis.com/",
  "kind": "discovery#restDescription",
  "fullyEncodeReservedExpansion": true,
  "servicePath": "",
  "title": "Cloud Memorystore for Memcached API",
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "resources": {
    "projects": {
      "resources": {
        "locations": {
          "methods": {
            "get": {
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "pattern": "^projects/[^/]+/locations/[^/]+$",
                  "required": true,
                  "type": "string",
                  "description": "Resource name for the location.",
                  "location": "path"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "Location"
              },
              "id": "memcache.projects.locations.get",
              "flatPath": "v1/projects/{projectsId}/locations/{locationsId}",
              "description": "Gets information about a location."
            },
            "list": {
              "parameters": {
                "name": {
                  "description": "The resource that owns the locations collection, if applicable.",
                  "location": "path",
                  "type": "string",
                  "required": true,
                  "pattern": "^projects/[^/]+$"
                },
                "pageSize": {
                  "description": "The maximum number of results to return. If not set, the service selects a default.",
                  "location": "query",
                  "type": "integer",
                  "format": "int32"
                },
                "filter": {
                  "description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
                  "location": "query",
                  "type": "string"
                },
                "pageToken": {
                  "type": "string",
                  "description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
                  "location": "query"
                },
                "extraLocationTypes": {
                  "repeated": true,
                  "type": "string",
                  "description": "Optional. Do not use this field unless explicitly documented otherwise. This is primarily for internal usage.",
                  "location": "query"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "ListLocationsResponse"
              },
              "id": "memcache.projects.locations.list",
              "flatPath": "v1/projects/{projectsId}/locations",
              "description": "Lists information about the supported locations for this service. This method lists locations based on the resource scope provided in the ListLocationsRequest.name field: * **Global locations**: If `name` is empty, the method lists the public locations available to all projects. * **Project-specific locations**: If `name` follows the format `projects/{project}`, the method lists locations visible to that specific project. This includes public, private, or other project-specific locations enabled for the project. For gRPC and client library implementations, the resource name is passed as the `name` field. For direct service calls, the resource name is incorporated into the request path based on the specific service implementation and version.",
              "httpMethod": "GET",
              "path": "v1/{+name}/locations",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            }
          },
          "resources": {
            "operations": {
              "methods": {
                "get": {
                  "path": "v1/{+name}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "memcache.projects.locations.operations.get",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
                  "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
                  "parameters": {
                    "name": {
                      "description": "The name of the operation resource.",
                      "location": "path",
                      "type": "string",
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "httpMethod": "GET"
                },
                "cancel": {
                  "parameters": {
                    "name": {
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                      "description": "The name of the operation resource to be cancelled.",
                      "location": "path",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Empty"
                  },
                  "id": "memcache.projects.locations.operations.cancel",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
                  "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
                  "httpMethod": "POST",
                  "path": "v1/{+name}:cancel",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "CancelOperationRequest"
                  }
                },
                "list": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}/operations",
                  "httpMethod": "GET",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "ListOperationsResponse"
                  },
                  "parameters": {
                    "filter": {
                      "type": "string",
                      "description": "The standard list filter.",
                      "location": "query"
                    },
                    "pageToken": {
                      "description": "The standard list page token.",
                      "location": "query",
                      "type": "string"
                    },
                    "pageSize": {
                      "type": "integer",
                      "format": "int32",
                      "description": "The standard list page size.",
                      "location": "query"
                    },
                    "name": {
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "description": "The name of the operation's parent resource.",
                      "location": "path",
                      "type": "string"
                    },
                    "returnPartialSuccess": {
                      "type": "boolean",
                      "description": "When set to `true`, operations that are reachable are returned as normal, and those that are unreachable are returned in the ListOperationsResponse.unreachable field. This can only be `true` when reading across collections. For example, when `parent` is set to `\"projects/example/locations/-\"`. This field is not supported by default and will result in an `UNIMPLEMENTED` error if set unless explicitly documented otherwise in service or product specific documentation.",
                      "location": "query"
                    }
                  },
                  "id": "memcache.projects.locations.operations.list",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations",
                  "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`."
                },
                "delete": {
                  "id": "memcache.projects.locations.operations.delete",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
                  "description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "The name of the operation resource to be deleted.",
                      "location": "path",
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                      "required": true
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Empty"
                  },
                  "httpMethod": "DELETE",
                  "path": "v1/{+name}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                }
              }
            },
            "instances": {
              "methods": {
                "delete": {
                  "httpMethod": "DELETE",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "parameters": {
                    "name": {
                      "description": "Required. Memcached instance resource name in the format: `projects/{project_id}/locations/{location_id}/instances/{instance_id}` where `location_id` refers to a GCP region",
                      "location": "path",
                      "type": "string",
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$"
                    }
                  },
                  "id": "memcache.projects.locations.instances.delete",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}",
                  "description": "Deletes a single Instance.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}"
                },
                "setTags": {
                  "httpMethod": "POST",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "SetTagsResponse"
                  },
                  "parameters": {
                    "name": {
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
                      "description": "Required. The full resource name of the service resource.",
                      "location": "path",
                      "type": "string"
                    }
                  },
                  "id": "memcache.projects.locations.instances.setTags",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}:setTags",
                  "description": "Updates tags directly bound to a GCP resource.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "SetTagsRequest"
                  },
                  "path": "v1/{+name}:setTags"
                },
                "applyParameters": {
                  "id": "memcache.projects.locations.instances.applyParameters",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}:applyParameters",
                  "description": "`ApplyParameters` restarts the set of specified nodes in order to update them to the current set of parameters for the Memcached Instance.",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "Required. Resource name of the Memcached instance for which parameter group updates should be applied.",
                      "location": "path",
                      "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
                      "required": true
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "httpMethod": "POST",
                  "path": "v1/{+name}:applyParameters",
                  "request": {
                    "$ref": "ApplyParametersRequest"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "rescheduleMaintenance": {
                  "httpMethod": "POST",
                  "id": "memcache.projects.locations.instances.rescheduleMaintenance",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}:rescheduleMaintenance",
                  "description": "Reschedules upcoming maintenance event.",
                  "parameters": {
                    "instance": {
                      "description": "Required. Memcache instance resource name using the form: `projects/{project_id}/locations/{location_id}/instances/{instance_id}` where `location_id` refers to a GCP region.",
                      "location": "path",
                      "type": "string",
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$"
                    }
                  },
                  "parameterOrder": [
                    "instance"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "request": {
                    "$ref": "RescheduleMaintenanceRequest"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+instance}:rescheduleMaintenance"
                },
                "getTags": {
                  "httpMethod": "GET",
                  "id": "memcache.projects.locations.instances.getTags",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}:getTags",
                  "description": "Returns tags directly bound to a GCP resource.",
                  "parameters": {
                    "name": {
                      "description": "Required. The full resource name of the service resource.",
                      "location": "path",
                      "type": "string",
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "GetTagsResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}:getTags"
                },
                "patch": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "Instance"
                  },
                  "path": "v1/{+name}",
                  "httpMethod": "PATCH",
                  "parameters": {
                    "name": {
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
                      "description": "Required. Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/instances/{instance_id}` Note: Memcached instances are managed and addressed at the regional level so `location_id` here refers to a Google Cloud region; however, users may choose which zones Memcached nodes should be provisioned in within an instance. Refer to zones field for more details.",
                      "location": "path",
                      "type": "string"
                    },
                    "updateMask": {
                      "description": "Required. Mask of fields to update. * `displayName`",
                      "location": "query",
                      "type": "string",
                      "format": "google-fieldmask"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "id": "memcache.projects.locations.instances.patch",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}",
                  "description": "Updates an existing Instance in a given project and location."
                },
                "get": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
                      "required": true,
                      "type": "string",
                      "description": "Required. Memcached instance resource name in the format: `projects/{project_id}/locations/{location_id}/instances/{instance_id}` where `location_id` refers to a GCP region",
                      "location": "path"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Instance"
                  },
                  "id": "memcache.projects.locations.instances.get",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}",
                  "description": "Gets details of a single Instance."
                },
                "list": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+parent}/instances",
                  "httpMethod": "GET",
                  "id": "memcache.projects.locations.instances.list",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/instances",
                  "description": "Lists Instances in a given location.",
                  "parameters": {
                    "pageToken": {
                      "description": "The `next_page_token` value returned from a previous List request, if any.",
                      "location": "query",
                      "type": "string"
                    },
                    "filter": {
                      "type": "string",
                      "description": "List filter. For example, exclude all Memcached instances with name as my-instance by specifying `\"name != my-instance\"`.",
                      "location": "query"
                    },
                    "pageSize": {
                      "type": "integer",
                      "format": "int32",
                      "description": "The maximum number of items to return. If not specified, a default value of 1000 will be used by the service. Regardless of the `page_size` value, the response may include a partial list and a caller should only rely on response's `next_page_token` to determine if there are more instances left to be queried.",
                      "location": "query"
                    },
                    "orderBy": {
                      "description": "Sort results. Supported values are \"name\", \"name desc\" or \"\" (unsorted).",
                      "location": "query",
                      "type": "string"
                    },
                    "parent": {
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "description": "Required. The resource name of the instance location using the form: `projects/{project_id}/locations/{location_id}` where `location_id` refers to a GCP region",
                      "location": "path",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListInstancesResponse"
                  }
                },
                "create": {
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "parameters": {
                    "instanceId": {
                      "description": "Required. The logical name of the Memcached instance in the user project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-40 characters. * Must end with a number or a letter. * Must be unique within the user project / location. If any of the above are not met, the API raises an invalid argument error.",
                      "location": "query",
                      "type": "string"
                    },
                    "parent": {
                      "description": "Required. The resource name of the instance location using the form: `projects/{project_id}/locations/{location_id}` where `location_id` refers to a GCP region",
                      "location": "path",
                      "type": "string",
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+$"
                    }
                  },
                  "id": "memcache.projects.locations.instances.create",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/instances",
                  "description": "Creates a new Instance in a given location.",
                  "httpMethod": "POST",
                  "path": "v1/{+parent}/instances",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "Instance"
                  }
                },
                "upgrade": {
                  "httpMethod": "POST",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  },
                  "parameters": {
                    "name": {
                      "description": "Required. Memcache instance resource name using the form: `projects/{project}/locations/{location}/instances/{instance}` where `location_id` refers to a GCP region.",
                      "location": "path",
                      "type": "string",
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$"
                    }
                  },
                  "id": "memcache.projects.locations.instances.upgrade",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}:upgrade",
                  "description": "Upgrades the Memcache instance to a newer memcached engine version specified in the request.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "GoogleCloudMemcacheV1UpgradeInstanceRequest"
                  },
                  "path": "v1/{+name}:upgrade"
                },
                "updateParameters": {
                  "request": {
                    "$ref": "UpdateParametersRequest"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}:updateParameters",
                  "httpMethod": "PATCH",
                  "id": "memcache.projects.locations.instances.updateParameters",
                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}:updateParameters",
                  "description": "Updates the defined Memcached parameters for an existing instance. This method only stages the parameters, it must be followed by `ApplyParameters` to apply the parameters to nodes of the Memcached instance.",
                  "parameters": {
                    "name": {
                      "required": true,
                      "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
                      "description": "Required. Resource name of the Memcached instance for which the parameters should be updated.",
                      "location": "path",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Operation"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "batchPath": "batch",
  "revision": "20260517"
}
