# Google Cloud RuntimeConfig 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=None, 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".
      "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".
        "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=None, 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=None, 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".
        "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=None, pageSize=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.

    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.
      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".
            "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=None, x__xgafv=None, permissions=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.

    Args:
      resource: string, REQUIRED: The resource for which the policy detail is being requested.
    `resource` is usually specified as a path. For example, a Project
    resource is specified as `projects/{project}`. (required)
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format
      permissions: string, 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). (repeated)

    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=None, 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".
      "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".
        "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=None, 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".
        "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.
      }