<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="androidenterprise_v1.html">Google Play EMM API</a> . <a href="androidenterprise_v1.managedconfigurationssettings.html">managedconfigurationssettings</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(enterpriseId, productId)</a></code></p>
<p class="firstline">Lists all the managed configurations settings for the specified app. Only the ID and the name is set.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="list">list(enterpriseId, productId)</code>
  <pre>Lists all the managed configurations settings for the specified app. Only the ID and the name is set.

Args:
  enterpriseId: string, The ID of the enterprise. (required)
  productId: string, The ID of the product for which the managed configurations settings applies to. (required)

Returns:
  An object of the form:

    { # The managed configurations settings for a product.
    "managedConfigurationsSettings": [ # A managed configurations settings for an app that may be assigned to a group of users in an enterprise.
      { # A managed configurations settings resource contains the set of managed properties that have been configured for an Android app to be applied to a set of users. The app's developer would have defined configurable properties in the managed configurations schema.
        "mcmId": "A String", # The ID of the managed configurations settings.
        "kind": "androidenterprise#managedConfigurationsSettings", # Identifies what kind of resource this is. Value: the fixed string "androidenterprise#managedConfigurationsSettings".
        "managedProperty": [ # The set of managed properties for this configuration.
          { # A managed property of a managed configuration. The property must match one of the properties in the app restrictions schema of the product. Exactly one of the value fields must be populated, and it must match the property's type in the app restrictions schema.
            "key": "A String", # The unique key that identifies the property.
            "valueInteger": 42, # The integer value - this will only be present if type of the property is integer.
            "valueStringArray": [ # The list of string values - this will only be present if type of the property is multiselect.
              "A String",
            ],
            "valueBool": True or False, # The boolean value - this will only be present if type of the property is bool.
            "valueBundleArray": [ # The list of bundles of properties - this will only be present if type of the property is bundle_array.
              { # A bundle of managed properties.
                "managedProperty": [ # The list of managed properties.
                  # Object with schema name: ManagedProperty
                ],
              },
            ],
            "valueBundle": { # A bundle of managed properties. # The bundle of managed properties - this will only be present if type of the property is bundle.
              "managedProperty": [ # The list of managed properties.
                # Object with schema name: ManagedProperty
              ],
            },
            "valueString": "A String", # The string value - this will only be present if type of the property is string, choice or hidden.
          },
        ],
        "name": "A String", # The name of the managed configurations settings.
        "lastUpdatedTimestampMillis": "A String", # The last updated time of the managed configuration settings in milliseconds since 1970-01-01T00:00:00Z.
      },
    ],
    "kind": "androidenterprise#managedConfigurationsSettingsListResponse", # Identifies what kind of resource this is. Value: the fixed string "androidenterprise#managedConfigurationsSettingsListResponse".
  }</pre>
</div>

</body></html>