<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.managedconfigurationsforuser.html">managedconfigurationsforuser</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#delete">delete(enterpriseId, userId, managedConfigurationForUserId, x__xgafv=None)</a></code></p>
<p class="firstline">Removes a per-user managed configuration for an app for the specified user.</p>
<p class="toc_element">
  <code><a href="#get">get(enterpriseId, userId, managedConfigurationForUserId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves details of a per-user managed configuration for an app for the specified user.</p>
<p class="toc_element">
  <code><a href="#list">list(enterpriseId, userId, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all the per-user managed configurations for the specified user. Only the ID is set.</p>
<p class="toc_element">
  <code><a href="#update">update(enterpriseId, userId, managedConfigurationForUserId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Adds or updates the managed configuration settings for an app for the specified user. If you support the Managed configurations iframe, you can apply managed configurations to a user by specifying an mcmId and its associated configuration variables (if any) in the request. Alternatively, all EMMs can apply managed configurations by passing a list of managed properties.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(enterpriseId, userId, managedConfigurationForUserId, x__xgafv=None)</code>
  <pre>Removes a per-user managed configuration for an app for the specified user.

Args:
  enterpriseId: string, The ID of the enterprise. (required)
  userId: string, The ID of the user. (required)
  managedConfigurationForUserId: string, The ID of the managed configuration (a product ID), e.g. &quot;app:com.google.android.gm&quot;. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(enterpriseId, userId, managedConfigurationForUserId, x__xgafv=None)</code>
  <pre>Retrieves details of a per-user managed configuration for an app for the specified user.

Args:
  enterpriseId: string, The ID of the enterprise. (required)
  userId: string, The ID of the user. (required)
  managedConfigurationForUserId: string, The ID of the managed configuration (a product ID), e.g. &quot;app:com.google.android.gm&quot;. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A managed configuration resource contains the set of managed properties defined by the app developer in the app&#x27;s managed configurations schema, as well as any configuration variables defined for the user.
  &quot;configurationVariables&quot;: { # A configuration variables resource contains the managed configuration settings ID to be applied to a single user, as well as the variable set that is attributed to the user. The variable set will be used to replace placeholders in the managed configuration settings. # Contains the ID of the managed configuration profile and the set of configuration variables (if any) defined for the user.
    &quot;mcmId&quot;: &quot;A String&quot;, # The ID of the managed configurations settings.
    &quot;variableSet&quot;: [ # The variable set that is attributed to the user.
      { # A variable set is a key-value pair of EMM-provided placeholders and its corresponding value, which is attributed to a user. For example, $FIRSTNAME could be a placeholder, and its value could be Alice. Placeholders should start with a &#x27;$&#x27; sign and should be alphanumeric only.
        &quot;placeholder&quot;: &quot;A String&quot;, # The placeholder string; defined by EMM.
        &quot;userValue&quot;: &quot;A String&quot;, # The value of the placeholder, specific to the user.
      },
    ],
  },
  &quot;kind&quot;: &quot;A String&quot;, # Deprecated.
  &quot;managedProperty&quot;: [ # 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&#x27;s type in the app restrictions schema.
      &quot;key&quot;: &quot;A String&quot;, # The unique key that identifies the property.
      &quot;valueBool&quot;: True or False, # The boolean value - this will only be present if type of the property is bool.
      &quot;valueBundle&quot;: { # A bundle of managed properties. # The bundle of managed properties - this will only be present if type of the property is bundle.
        &quot;managedProperty&quot;: [ # The list of managed properties.
          # Object with schema name: ManagedProperty
        ],
      },
      &quot;valueBundleArray&quot;: [ # The list of bundles of properties - this will only be present if type of the property is bundle_array.
        { # A bundle of managed properties.
          &quot;managedProperty&quot;: [ # The list of managed properties.
            # Object with schema name: ManagedProperty
          ],
        },
      ],
      &quot;valueInteger&quot;: 42, # The integer value - this will only be present if type of the property is integer.
      &quot;valueString&quot;: &quot;A String&quot;, # The string value - this will only be present if type of the property is string, choice or hidden.
      &quot;valueStringArray&quot;: [ # The list of string values - this will only be present if type of the property is multiselect.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;productId&quot;: &quot;A String&quot;, # The ID of the product that the managed configuration is for, e.g. &quot;app:com.google.android.gm&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(enterpriseId, userId, x__xgafv=None)</code>
  <pre>Lists all the per-user managed configurations for the specified user. Only the ID is set.

Args:
  enterpriseId: string, The ID of the enterprise. (required)
  userId: string, The ID of the user. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;managedConfigurationForUser&quot;: [ # A managed configuration for an app for a specific user.
    { # A managed configuration resource contains the set of managed properties defined by the app developer in the app&#x27;s managed configurations schema, as well as any configuration variables defined for the user.
      &quot;configurationVariables&quot;: { # A configuration variables resource contains the managed configuration settings ID to be applied to a single user, as well as the variable set that is attributed to the user. The variable set will be used to replace placeholders in the managed configuration settings. # Contains the ID of the managed configuration profile and the set of configuration variables (if any) defined for the user.
        &quot;mcmId&quot;: &quot;A String&quot;, # The ID of the managed configurations settings.
        &quot;variableSet&quot;: [ # The variable set that is attributed to the user.
          { # A variable set is a key-value pair of EMM-provided placeholders and its corresponding value, which is attributed to a user. For example, $FIRSTNAME could be a placeholder, and its value could be Alice. Placeholders should start with a &#x27;$&#x27; sign and should be alphanumeric only.
            &quot;placeholder&quot;: &quot;A String&quot;, # The placeholder string; defined by EMM.
            &quot;userValue&quot;: &quot;A String&quot;, # The value of the placeholder, specific to the user.
          },
        ],
      },
      &quot;kind&quot;: &quot;A String&quot;, # Deprecated.
      &quot;managedProperty&quot;: [ # 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&#x27;s type in the app restrictions schema.
          &quot;key&quot;: &quot;A String&quot;, # The unique key that identifies the property.
          &quot;valueBool&quot;: True or False, # The boolean value - this will only be present if type of the property is bool.
          &quot;valueBundle&quot;: { # A bundle of managed properties. # The bundle of managed properties - this will only be present if type of the property is bundle.
            &quot;managedProperty&quot;: [ # The list of managed properties.
              # Object with schema name: ManagedProperty
            ],
          },
          &quot;valueBundleArray&quot;: [ # The list of bundles of properties - this will only be present if type of the property is bundle_array.
            { # A bundle of managed properties.
              &quot;managedProperty&quot;: [ # The list of managed properties.
                # Object with schema name: ManagedProperty
              ],
            },
          ],
          &quot;valueInteger&quot;: 42, # The integer value - this will only be present if type of the property is integer.
          &quot;valueString&quot;: &quot;A String&quot;, # The string value - this will only be present if type of the property is string, choice or hidden.
          &quot;valueStringArray&quot;: [ # The list of string values - this will only be present if type of the property is multiselect.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;productId&quot;: &quot;A String&quot;, # The ID of the product that the managed configuration is for, e.g. &quot;app:com.google.android.gm&quot;.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(enterpriseId, userId, managedConfigurationForUserId, body=None, x__xgafv=None)</code>
  <pre>Adds or updates the managed configuration settings for an app for the specified user. If you support the Managed configurations iframe, you can apply managed configurations to a user by specifying an mcmId and its associated configuration variables (if any) in the request. Alternatively, all EMMs can apply managed configurations by passing a list of managed properties.

Args:
  enterpriseId: string, The ID of the enterprise. (required)
  userId: string, The ID of the user. (required)
  managedConfigurationForUserId: string, The ID of the managed configuration (a product ID), e.g. &quot;app:com.google.android.gm&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # A managed configuration resource contains the set of managed properties defined by the app developer in the app&#x27;s managed configurations schema, as well as any configuration variables defined for the user.
  &quot;configurationVariables&quot;: { # A configuration variables resource contains the managed configuration settings ID to be applied to a single user, as well as the variable set that is attributed to the user. The variable set will be used to replace placeholders in the managed configuration settings. # Contains the ID of the managed configuration profile and the set of configuration variables (if any) defined for the user.
    &quot;mcmId&quot;: &quot;A String&quot;, # The ID of the managed configurations settings.
    &quot;variableSet&quot;: [ # The variable set that is attributed to the user.
      { # A variable set is a key-value pair of EMM-provided placeholders and its corresponding value, which is attributed to a user. For example, $FIRSTNAME could be a placeholder, and its value could be Alice. Placeholders should start with a &#x27;$&#x27; sign and should be alphanumeric only.
        &quot;placeholder&quot;: &quot;A String&quot;, # The placeholder string; defined by EMM.
        &quot;userValue&quot;: &quot;A String&quot;, # The value of the placeholder, specific to the user.
      },
    ],
  },
  &quot;kind&quot;: &quot;A String&quot;, # Deprecated.
  &quot;managedProperty&quot;: [ # 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&#x27;s type in the app restrictions schema.
      &quot;key&quot;: &quot;A String&quot;, # The unique key that identifies the property.
      &quot;valueBool&quot;: True or False, # The boolean value - this will only be present if type of the property is bool.
      &quot;valueBundle&quot;: { # A bundle of managed properties. # The bundle of managed properties - this will only be present if type of the property is bundle.
        &quot;managedProperty&quot;: [ # The list of managed properties.
          # Object with schema name: ManagedProperty
        ],
      },
      &quot;valueBundleArray&quot;: [ # The list of bundles of properties - this will only be present if type of the property is bundle_array.
        { # A bundle of managed properties.
          &quot;managedProperty&quot;: [ # The list of managed properties.
            # Object with schema name: ManagedProperty
          ],
        },
      ],
      &quot;valueInteger&quot;: 42, # The integer value - this will only be present if type of the property is integer.
      &quot;valueString&quot;: &quot;A String&quot;, # The string value - this will only be present if type of the property is string, choice or hidden.
      &quot;valueStringArray&quot;: [ # The list of string values - this will only be present if type of the property is multiselect.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;productId&quot;: &quot;A String&quot;, # The ID of the product that the managed configuration is for, e.g. &quot;app:com.google.android.gm&quot;.
}

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

Returns:
  An object of the form:

    { # A managed configuration resource contains the set of managed properties defined by the app developer in the app&#x27;s managed configurations schema, as well as any configuration variables defined for the user.
  &quot;configurationVariables&quot;: { # A configuration variables resource contains the managed configuration settings ID to be applied to a single user, as well as the variable set that is attributed to the user. The variable set will be used to replace placeholders in the managed configuration settings. # Contains the ID of the managed configuration profile and the set of configuration variables (if any) defined for the user.
    &quot;mcmId&quot;: &quot;A String&quot;, # The ID of the managed configurations settings.
    &quot;variableSet&quot;: [ # The variable set that is attributed to the user.
      { # A variable set is a key-value pair of EMM-provided placeholders and its corresponding value, which is attributed to a user. For example, $FIRSTNAME could be a placeholder, and its value could be Alice. Placeholders should start with a &#x27;$&#x27; sign and should be alphanumeric only.
        &quot;placeholder&quot;: &quot;A String&quot;, # The placeholder string; defined by EMM.
        &quot;userValue&quot;: &quot;A String&quot;, # The value of the placeholder, specific to the user.
      },
    ],
  },
  &quot;kind&quot;: &quot;A String&quot;, # Deprecated.
  &quot;managedProperty&quot;: [ # 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&#x27;s type in the app restrictions schema.
      &quot;key&quot;: &quot;A String&quot;, # The unique key that identifies the property.
      &quot;valueBool&quot;: True or False, # The boolean value - this will only be present if type of the property is bool.
      &quot;valueBundle&quot;: { # A bundle of managed properties. # The bundle of managed properties - this will only be present if type of the property is bundle.
        &quot;managedProperty&quot;: [ # The list of managed properties.
          # Object with schema name: ManagedProperty
        ],
      },
      &quot;valueBundleArray&quot;: [ # The list of bundles of properties - this will only be present if type of the property is bundle_array.
        { # A bundle of managed properties.
          &quot;managedProperty&quot;: [ # The list of managed properties.
            # Object with schema name: ManagedProperty
          ],
        },
      ],
      &quot;valueInteger&quot;: 42, # The integer value - this will only be present if type of the property is integer.
      &quot;valueString&quot;: &quot;A String&quot;, # The string value - this will only be present if type of the property is string, choice or hidden.
      &quot;valueStringArray&quot;: [ # The list of string values - this will only be present if type of the property is multiselect.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;productId&quot;: &quot;A String&quot;, # The ID of the product that the managed configuration is for, e.g. &quot;app:com.google.android.gm&quot;.
}</pre>
</div>

</body></html>