# Google Cloud Runtime Configuration API . projects . configs . variables

## Instance Methods

Creates a variable within the given configuration. You cannot create

Deletes a variable or multiple variables.

Gets information about a single variable.

Lists variables within given a configuration, matching any provided filters.

Retrieves the next page of results.

Returns permissions that a caller has on the specified resource.

Updates an existing variable with a new value.

Watches a specific variable and waits for a change in the variable's value.

### Method Details

`create(parent, body, requestId=None, x__xgafv=None)`

    Creates a variable within the given configuration. You cannot create
    a variable with a name that is a prefix of an existing variable name, or a
    name that has an existing variable name as a prefix.

    To learn more about creating a variable, read the
    [Setting and Getting Data](/deployment-manager/runtime-configurator/set-and-get-variables)
    documentation.

    Args:
      parent: string, The path to the RutimeConfig resource that this variable should belong to.
    The configuration must exist beforehand; the path must by in the format:

    `projects/[PROJECT_ID]/configs/[CONFIG_NAME]` (required)
      body: object, The request body. (required)
        The object takes the form of:

    { # Describes a single variable within a RuntimeConfig resource.
        # The name denotes the hierarchical variable name. For example,
        # `ports/serving_port` is a valid variable name. The variable value is an
        # opaque string and only leaf variables can have values (that is, variables
        # that do not have any child variables).
      "text": "A String", # The string value of the variable. The length of the value must be less
          # than 4096 bytes. Empty values are also accepted. For example,
          # `text: "my text value"`. The string must be valid UTF-8.
      "updateTime": "A String", # [Output Only] The time of the last variable update.
      "state": "A String", # [Ouput only] The current state of the variable. The variable state indicates
          # the outcome of the `variables().watch` call and is visible through the
          # `get` and `list` calls.
      "value": "A String", # The binary value of the variable. The length of the value must be less
          # than 4096 bytes. Empty values are also accepted. The value must be
          # base64 encoded. Only one of `value` or `text` can be set.
      "name": "A String", # The name of the variable resource, in the format:
          #
          #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]
          #
          # The `[PROJECT_ID]` must be a valid project ID, `[CONFIG_NAME]` must be a
          # valid RuntimeConfig reource and `[VARIABLE_NAME]` follows Unix file system
          # file path naming.
          #
          # The `[VARIABLE_NAME]` can contain ASCII letters, numbers, slashes and
          # dashes. Slashes are used as path element separators and are not part of the
          # `[VARIABLE_NAME]` itself, so `[VARIABLE_NAME]` must contain at least one
          # non-slash character. Multiple slashes are coalesced into single slash
          # character. Each path segment should follow RFC 1035 segment specification.
          # The length of a `[VARIABLE_NAME]` must be less than 256 bytes.
          #
          # Once you create a variable, you cannot change the variable name.
    }

      requestId: string, An optional but recommended unique `request_id`. If the server
    receives two `create()` requests  with the same
    `request_id`, then the second request will be ignored and the
    first resource created and stored in the backend is returned.
    Empty `request_id` fields are ignored.

    It is responsibility of the client to ensure uniqueness of the
    `request_id` strings.

    `request_id` strings are limited to 64 characters.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # Describes a single variable within a RuntimeConfig resource.
          # The name denotes the hierarchical variable name. For example,
          # `ports/serving_port` is a valid variable name. The variable value is an
          # opaque string and only leaf variables can have values (that is, variables
          # that do not have any child variables).
        "text": "A String", # The string value of the variable. The length of the value must be less
            # than 4096 bytes. Empty values are also accepted. For example,
            # `text: "my text value"`. The string must be valid UTF-8.
        "updateTime": "A String", # [Output Only] The time of the last variable update.
        "state": "A String", # [Ouput only] The current state of the variable. The variable state indicates
            # the outcome of the `variables().watch` call and is visible through the
            # `get` and `list` calls.
        "value": "A String", # The binary value of the variable. The length of the value must be less
            # than 4096 bytes. Empty values are also accepted. The value must be
            # base64 encoded. Only one of `value` or `text` can be set.
        "name": "A String", # The name of the variable resource, in the format:
            #
            #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]
            #
            # The `[PROJECT_ID]` must be a valid project ID, `[CONFIG_NAME]` must be a
            # valid RuntimeConfig reource and `[VARIABLE_NAME]` follows Unix file system
            # file path naming.
            #
            # The `[VARIABLE_NAME]` can contain ASCII letters, numbers, slashes and
            # dashes. Slashes are used as path element separators and are not part of the
            # `[VARIABLE_NAME]` itself, so `[VARIABLE_NAME]` must contain at least one
            # non-slash character. Multiple slashes are coalesced into single slash
            # character. Each path segment should follow RFC 1035 segment specification.
            # The length of a `[VARIABLE_NAME]` must be less than 256 bytes.
            #
            # Once you create a variable, you cannot change the variable name.
      }

`delete(name, recursive=None, x__xgafv=None)`

    Deletes a variable or multiple variables.

    If you specify a variable name, then that variable is deleted. If you
    specify a prefix and `recursive` is true, then all variables with that
    prefix are deleted. You must set a `recursive` to true if you delete
    variables by prefix.

    Args:
      name: string, The name of the variable to delete, in the format:

    `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]` (required)
      recursive: boolean, Set to `true` to recursively delete multiple variables with the same
    prefix.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # 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);
          #     }
          #
          # The JSON representation for `Empty` is empty JSON object `{}`.
      }

`get(name, x__xgafv=None)`

    Gets information about a single variable.

    Args:
      name: string, The name of the variable to return, in the format:

    `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIBLE_NAME]` (required)
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # Describes a single variable within a RuntimeConfig resource.
          # The name denotes the hierarchical variable name. For example,
          # `ports/serving_port` is a valid variable name. The variable value is an
          # opaque string and only leaf variables can have values (that is, variables
          # that do not have any child variables).
        "text": "A String", # The string value of the variable. The length of the value must be less
            # than 4096 bytes. Empty values are also accepted. For example,
            # `text: "my text value"`. The string must be valid UTF-8.
        "updateTime": "A String", # [Output Only] The time of the last variable update.
        "state": "A String", # [Ouput only] The current state of the variable. The variable state indicates
            # the outcome of the `variables().watch` call and is visible through the
            # `get` and `list` calls.
        "value": "A String", # The binary value of the variable. The length of the value must be less
            # than 4096 bytes. Empty values are also accepted. The value must be
            # base64 encoded. Only one of `value` or `text` can be set.
        "name": "A String", # The name of the variable resource, in the format:
            #
            #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]
            #
            # The `[PROJECT_ID]` must be a valid project ID, `[CONFIG_NAME]` must be a
            # valid RuntimeConfig reource and `[VARIABLE_NAME]` follows Unix file system
            # file path naming.
            #
            # The `[VARIABLE_NAME]` can contain ASCII letters, numbers, slashes and
            # dashes. Slashes are used as path element separators and are not part of the
            # `[VARIABLE_NAME]` itself, so `[VARIABLE_NAME]` must contain at least one
            # non-slash character. Multiple slashes are coalesced into single slash
            # character. Each path segment should follow RFC 1035 segment specification.
            # The length of a `[VARIABLE_NAME]` must be less than 256 bytes.
            #
            # Once you create a variable, you cannot change the variable name.
      }

`list(parent, pageSize=None, returnValues=None, filter=None, pageToken=None, x__xgafv=None)`

    Lists variables within given a configuration, matching any provided filters.
    This only lists variable names, not the values, unless `return_values` is
    true, in which case only variables that user has IAM permission to GetVariable
    will be returned.

    Args:
      parent: string, The path to the RuntimeConfig resource for which you want to list variables.
    The configuration must exist beforehand; the path must by in the format:

    `projects/[PROJECT_ID]/configs/[CONFIG_NAME]` (required)
      pageSize: integer, Specifies the number of results to return per page. If there are fewer
    elements than the specified number, returns all elements.
      returnValues: boolean, The flag indicates whether the user wants to return values of variables.
    If true, then only those variables that user has IAM GetVariable permission
    will be returned along with their values.
      filter: string, Filters variables by matching the specified filter. For example:

    `projects/example-project/config/[CONFIG_NAME]/variables/example-variable`.
      pageToken: string, Specifies a page token to use. Set `pageToken` to a `nextPageToken`
    returned by a previous list request to get the next page of results.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # Response for the `ListVariables()` method.
        "nextPageToken": "A String", # This token allows you to get the next page of results for list requests.
            # If the number of results is larger than `pageSize`, use the `nextPageToken`
            # as a value for the query parameter `pageToken` in the next list request.
            # Subsequent list requests will have their own `nextPageToken` to continue
            # paging through the results
        "variables": [ # A list of variables and their values. The order of returned variable
            # objects is arbitrary.
          { # Describes a single variable within a RuntimeConfig resource.
              # The name denotes the hierarchical variable name. For example,
              # `ports/serving_port` is a valid variable name. The variable value is an
              # opaque string and only leaf variables can have values (that is, variables
              # that do not have any child variables).
            "text": "A String", # The string value of the variable. The length of the value must be less
                # than 4096 bytes. Empty values are also accepted. For example,
                # `text: "my text value"`. The string must be valid UTF-8.
            "updateTime": "A String", # [Output Only] The time of the last variable update.
            "state": "A String", # [Ouput only] The current state of the variable. The variable state indicates
                # the outcome of the `variables().watch` call and is visible through the
                # `get` and `list` calls.
            "value": "A String", # The binary value of the variable. The length of the value must be less
                # than 4096 bytes. Empty values are also accepted. The value must be
                # base64 encoded. Only one of `value` or `text` can be set.
            "name": "A String", # The name of the variable resource, in the format:
                #
                #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]
                #
                # The `[PROJECT_ID]` must be a valid project ID, `[CONFIG_NAME]` must be a
                # valid RuntimeConfig reource and `[VARIABLE_NAME]` follows Unix file system
                # file path naming.
                #
                # The `[VARIABLE_NAME]` can contain ASCII letters, numbers, slashes and
                # dashes. Slashes are used as path element separators and are not part of the
                # `[VARIABLE_NAME]` itself, so `[VARIABLE_NAME]` must contain at least one
                # non-slash character. Multiple slashes are coalesced into single slash
                # character. Each path segment should follow RFC 1035 segment specification.
                # The length of a `[VARIABLE_NAME]` must be less than 256 bytes.
                #
                # Once you create a variable, you cannot change the variable name.
          },
        ],
      }

`list_next(previous_request, previous_response)`

    Retrieves the next page of results.

    Args:
      previous_request: The request for the previous page. (required)
      previous_response: The response from the request for the previous page. (required)

    Returns:
      A request object that you can call 'execute()' on to request the next
      page. Returns None if there are no more items in the collection.

`testIamPermissions(resource, body, x__xgafv=None)`

    Returns permissions that a caller has on the specified resource.
    If the resource does not exist, this will return an empty set of
    permissions, not a NOT_FOUND error.

    Note: This operation is designed to be used for building permission-aware
    UIs and command-line tools, not for authorization checking. This operation
    may "fail open" without warning.

    Args:
      resource: string, REQUIRED: The resource for which the policy detail is being requested.
    See the operation documentation for the appropriate value for this field. (required)
      body: object, The request body. (required)
        The object takes the form of:

    { # Request message for `TestIamPermissions` method.
        "permissions": [ # The set of permissions to check for the `resource`. Permissions with
            # wildcards (such as '*' or 'storage.*') are not allowed. For more
            # information see
            # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
          "A String",
        ],
      }

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

    Returns:
      An object of the form:

        { # Response message for `TestIamPermissions` method.
        "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is
            # allowed.
          "A String",
        ],
      }

`update(name, body, x__xgafv=None)`

    Updates an existing variable with a new value.

    Args:
      name: string, The name of the variable to update, in the format:

    `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]` (required)
      body: object, The request body. (required)
        The object takes the form of:

    { # Describes a single variable within a RuntimeConfig resource.
        # The name denotes the hierarchical variable name. For example,
        # `ports/serving_port` is a valid variable name. The variable value is an
        # opaque string and only leaf variables can have values (that is, variables
        # that do not have any child variables).
      "text": "A String", # The string value of the variable. The length of the value must be less
          # than 4096 bytes. Empty values are also accepted. For example,
          # `text: "my text value"`. The string must be valid UTF-8.
      "updateTime": "A String", # [Output Only] The time of the last variable update.
      "state": "A String", # [Ouput only] The current state of the variable. The variable state indicates
          # the outcome of the `variables().watch` call and is visible through the
          # `get` and `list` calls.
      "value": "A String", # The binary value of the variable. The length of the value must be less
          # than 4096 bytes. Empty values are also accepted. The value must be
          # base64 encoded. Only one of `value` or `text` can be set.
      "name": "A String", # The name of the variable resource, in the format:
          #
          #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]
          #
          # The `[PROJECT_ID]` must be a valid project ID, `[CONFIG_NAME]` must be a
          # valid RuntimeConfig reource and `[VARIABLE_NAME]` follows Unix file system
          # file path naming.
          #
          # The `[VARIABLE_NAME]` can contain ASCII letters, numbers, slashes and
          # dashes. Slashes are used as path element separators and are not part of the
          # `[VARIABLE_NAME]` itself, so `[VARIABLE_NAME]` must contain at least one
          # non-slash character. Multiple slashes are coalesced into single slash
          # character. Each path segment should follow RFC 1035 segment specification.
          # The length of a `[VARIABLE_NAME]` must be less than 256 bytes.
          #
          # Once you create a variable, you cannot change the variable name.
    }

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

    Returns:
      An object of the form:

        { # Describes a single variable within a RuntimeConfig resource.
          # The name denotes the hierarchical variable name. For example,
          # `ports/serving_port` is a valid variable name. The variable value is an
          # opaque string and only leaf variables can have values (that is, variables
          # that do not have any child variables).
        "text": "A String", # The string value of the variable. The length of the value must be less
            # than 4096 bytes. Empty values are also accepted. For example,
            # `text: "my text value"`. The string must be valid UTF-8.
        "updateTime": "A String", # [Output Only] The time of the last variable update.
        "state": "A String", # [Ouput only] The current state of the variable. The variable state indicates
            # the outcome of the `variables().watch` call and is visible through the
            # `get` and `list` calls.
        "value": "A String", # The binary value of the variable. The length of the value must be less
            # than 4096 bytes. Empty values are also accepted. The value must be
            # base64 encoded. Only one of `value` or `text` can be set.
        "name": "A String", # The name of the variable resource, in the format:
            #
            #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]
            #
            # The `[PROJECT_ID]` must be a valid project ID, `[CONFIG_NAME]` must be a
            # valid RuntimeConfig reource and `[VARIABLE_NAME]` follows Unix file system
            # file path naming.
            #
            # The `[VARIABLE_NAME]` can contain ASCII letters, numbers, slashes and
            # dashes. Slashes are used as path element separators and are not part of the
            # `[VARIABLE_NAME]` itself, so `[VARIABLE_NAME]` must contain at least one
            # non-slash character. Multiple slashes are coalesced into single slash
            # character. Each path segment should follow RFC 1035 segment specification.
            # The length of a `[VARIABLE_NAME]` must be less than 256 bytes.
            #
            # Once you create a variable, you cannot change the variable name.
      }

`watch(name, body, x__xgafv=None)`

    Watches a specific variable and waits for a change in the variable's value.
    When there is a change, this method returns the new value or times out.

    If a variable is deleted while being watched, the `variableState` state is
    set to `DELETED` and the method returns the last known variable `value`.

    If you set the deadline for watching to a larger value than internal timeout
    (60 seconds), the current variable value is returned and the `variableState`
    will be `VARIABLE_STATE_UNSPECIFIED`.

    To learn more about creating a watcher, read the
    [Watching a Variable for Changes](/deployment-manager/runtime-configurator/watching-a-variable)
    documentation.

    Args:
      name: string, The name of the variable to watch, in the format:

    `projects/[PROJECT_ID]/configs/[CONFIG_NAME]` (required)
      body: object, The request body. (required)
        The object takes the form of:

    { # Request for the `WatchVariable()` method.
        "newerThan": "A String", # If specified, checks the current timestamp of the variable and if the
            # current timestamp is newer than `newerThan` timestamp, the method returns
            # immediately.
            #
            # If not specified or the variable has an older timestamp, the watcher waits
            # for a the value to change before returning.
      }

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

    Returns:
      An object of the form:

        { # Describes a single variable within a RuntimeConfig resource.
          # The name denotes the hierarchical variable name. For example,
          # `ports/serving_port` is a valid variable name. The variable value is an
          # opaque string and only leaf variables can have values (that is, variables
          # that do not have any child variables).
        "text": "A String", # The string value of the variable. The length of the value must be less
            # than 4096 bytes. Empty values are also accepted. For example,
            # `text: "my text value"`. The string must be valid UTF-8.
        "updateTime": "A String", # [Output Only] The time of the last variable update.
        "state": "A String", # [Ouput only] The current state of the variable. The variable state indicates
            # the outcome of the `variables().watch` call and is visible through the
            # `get` and `list` calls.
        "value": "A String", # The binary value of the variable. The length of the value must be less
            # than 4096 bytes. Empty values are also accepted. The value must be
            # base64 encoded. Only one of `value` or `text` can be set.
        "name": "A String", # The name of the variable resource, in the format:
            #
            #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]
            #
            # The `[PROJECT_ID]` must be a valid project ID, `[CONFIG_NAME]` must be a
            # valid RuntimeConfig reource and `[VARIABLE_NAME]` follows Unix file system
            # file path naming.
            #
            # The `[VARIABLE_NAME]` can contain ASCII letters, numbers, slashes and
            # dashes. Slashes are used as path element separators and are not part of the
            # `[VARIABLE_NAME]` itself, so `[VARIABLE_NAME]` must contain at least one
            # non-slash character. Multiple slashes are coalesced into single slash
            # character. Each path segment should follow RFC 1035 segment specification.
            # The length of a `[VARIABLE_NAME]` must be less than 256 bytes.
            #
            # Once you create a variable, you cannot change the variable name.
      }