<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="androidpublisher_v3.html">Google Play Android Developer API</a> . <a href="androidpublisher_v3.applications.html">applications</a> . <a href="androidpublisher_v3.applications.deviceTierConfigs.html">deviceTierConfigs</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="#create">create(packageName, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new device tier config for an app.</p>
<p class="toc_element">
  <code><a href="#get">get(packageName, deviceTierConfigId, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a particular device tier config.</p>
<p class="toc_element">
  <code><a href="#list">list(packageName, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns created device tier configs, ordered by descending creation time.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</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="create">create(packageName, body=None, x__xgafv=None)</code>
  <pre>Creates a new device tier config for an app.

Args:
  packageName: string, Package name of the app. (required)
  body: object, The request body.
    The object takes the form of:

{ # LINT.IfChange Configuration describing device targeting criteria for the content of an app.
  &quot;deviceGroups&quot;: [ # Definition of device groups for the app.
    { # LINT.IfChange A group of devices. A group is defined by a set of device selectors. A device belongs to the group if it matches any selector (logical OR).
      &quot;deviceSelectors&quot;: [ # Device selectors for this group. A device matching any of the selectors is included in this group.
        { # Selector for a device group. A selector consists of a set of conditions on the device that should all match (logical AND) to determine a device group eligibility. For instance, if a selector specifies RAM conditions, device model inclusion and device model exclusion, a device is considered to match if: device matches RAM conditions AND device matches one of the included device models AND device doesn&#x27;t match excluded device models
          &quot;deviceRam&quot;: { # Conditions about a device&#x27;s RAM capabilities. # Conditions on the device&#x27;s RAM.
            &quot;maxBytes&quot;: &quot;A String&quot;, # Maximum RAM in bytes (bound excluded).
            &quot;minBytes&quot;: &quot;A String&quot;, # Minimum RAM in bytes (bound included).
          },
          &quot;excludedDeviceIds&quot;: [ # Device models excluded by this selector, even if they match all other conditions.
            { # Identifier of a device.
              &quot;buildBrand&quot;: &quot;A String&quot;, # Value of Build.BRAND.
              &quot;buildDevice&quot;: &quot;A String&quot;, # Value of Build.DEVICE.
            },
          ],
          &quot;forbiddenSystemFeatures&quot;: [ # A device that has any of these system features is excluded by this selector, even if it matches all other conditions.
            { # Representation of a system feature.
              &quot;name&quot;: &quot;A String&quot;, # The name of the feature.
            },
          ],
          &quot;includedDeviceIds&quot;: [ # Device models included by this selector.
            { # Identifier of a device.
              &quot;buildBrand&quot;: &quot;A String&quot;, # Value of Build.BRAND.
              &quot;buildDevice&quot;: &quot;A String&quot;, # Value of Build.DEVICE.
            },
          ],
          &quot;requiredSystemFeatures&quot;: [ # A device needs to have all these system features to be included by the selector.
            { # Representation of a system feature.
              &quot;name&quot;: &quot;A String&quot;, # The name of the feature.
            },
          ],
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # The name of the group.
    },
  ],
  &quot;deviceTierConfigId&quot;: &quot;A String&quot;, # Output only. The device tier config ID.
  &quot;deviceTierSet&quot;: { # A set of device tiers. A tier set determines what variation of app content gets served to a specific device, for device-targeted content. You should assign a priority level to each tier, which determines the ordering by which they are evaluated by Play. See the documentation of DeviceTier.level for more details. # Definition of the set of device tiers for the app.
    &quot;deviceTiers&quot;: [ # Device tiers belonging to the set.
      { # A single device tier. Devices matching any of the device groups in device_group_names are considered to match the tier.
        &quot;deviceGroupNames&quot;: [ # Groups of devices included in this tier. These groups must be defined explicitly under device_groups in this configuration.
          &quot;A String&quot;,
        ],
        &quot;level&quot;: 42, # The priority level of the tier. Tiers are evaluated in descending order of level: the highest level tier has the highest priority. The highest tier matching a given device is selected for that device. You should use a contiguous range of levels for your tiers in a tier set; tier levels in a tier set must be unique. For instance, if your tier set has 4 tiers (including the global fallback), you should define tiers 1, 2 and 3 in this configuration. Note: tier 0 is implicitly defined as a global fallback and selected for devices that don&#x27;t match any of the tiers explicitly defined here. You mustn&#x27;t define level 0 explicitly in this configuration.
      },
    ],
  },
}

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

Returns:
  An object of the form:

    { # LINT.IfChange Configuration describing device targeting criteria for the content of an app.
  &quot;deviceGroups&quot;: [ # Definition of device groups for the app.
    { # LINT.IfChange A group of devices. A group is defined by a set of device selectors. A device belongs to the group if it matches any selector (logical OR).
      &quot;deviceSelectors&quot;: [ # Device selectors for this group. A device matching any of the selectors is included in this group.
        { # Selector for a device group. A selector consists of a set of conditions on the device that should all match (logical AND) to determine a device group eligibility. For instance, if a selector specifies RAM conditions, device model inclusion and device model exclusion, a device is considered to match if: device matches RAM conditions AND device matches one of the included device models AND device doesn&#x27;t match excluded device models
          &quot;deviceRam&quot;: { # Conditions about a device&#x27;s RAM capabilities. # Conditions on the device&#x27;s RAM.
            &quot;maxBytes&quot;: &quot;A String&quot;, # Maximum RAM in bytes (bound excluded).
            &quot;minBytes&quot;: &quot;A String&quot;, # Minimum RAM in bytes (bound included).
          },
          &quot;excludedDeviceIds&quot;: [ # Device models excluded by this selector, even if they match all other conditions.
            { # Identifier of a device.
              &quot;buildBrand&quot;: &quot;A String&quot;, # Value of Build.BRAND.
              &quot;buildDevice&quot;: &quot;A String&quot;, # Value of Build.DEVICE.
            },
          ],
          &quot;forbiddenSystemFeatures&quot;: [ # A device that has any of these system features is excluded by this selector, even if it matches all other conditions.
            { # Representation of a system feature.
              &quot;name&quot;: &quot;A String&quot;, # The name of the feature.
            },
          ],
          &quot;includedDeviceIds&quot;: [ # Device models included by this selector.
            { # Identifier of a device.
              &quot;buildBrand&quot;: &quot;A String&quot;, # Value of Build.BRAND.
              &quot;buildDevice&quot;: &quot;A String&quot;, # Value of Build.DEVICE.
            },
          ],
          &quot;requiredSystemFeatures&quot;: [ # A device needs to have all these system features to be included by the selector.
            { # Representation of a system feature.
              &quot;name&quot;: &quot;A String&quot;, # The name of the feature.
            },
          ],
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # The name of the group.
    },
  ],
  &quot;deviceTierConfigId&quot;: &quot;A String&quot;, # Output only. The device tier config ID.
  &quot;deviceTierSet&quot;: { # A set of device tiers. A tier set determines what variation of app content gets served to a specific device, for device-targeted content. You should assign a priority level to each tier, which determines the ordering by which they are evaluated by Play. See the documentation of DeviceTier.level for more details. # Definition of the set of device tiers for the app.
    &quot;deviceTiers&quot;: [ # Device tiers belonging to the set.
      { # A single device tier. Devices matching any of the device groups in device_group_names are considered to match the tier.
        &quot;deviceGroupNames&quot;: [ # Groups of devices included in this tier. These groups must be defined explicitly under device_groups in this configuration.
          &quot;A String&quot;,
        ],
        &quot;level&quot;: 42, # The priority level of the tier. Tiers are evaluated in descending order of level: the highest level tier has the highest priority. The highest tier matching a given device is selected for that device. You should use a contiguous range of levels for your tiers in a tier set; tier levels in a tier set must be unique. For instance, if your tier set has 4 tiers (including the global fallback), you should define tiers 1, 2 and 3 in this configuration. Note: tier 0 is implicitly defined as a global fallback and selected for devices that don&#x27;t match any of the tiers explicitly defined here. You mustn&#x27;t define level 0 explicitly in this configuration.
      },
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(packageName, deviceTierConfigId, x__xgafv=None)</code>
  <pre>Returns a particular device tier config.

Args:
  packageName: string, Package name of the app. (required)
  deviceTierConfigId: string, Required. Id of an existing device tier config. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # LINT.IfChange Configuration describing device targeting criteria for the content of an app.
  &quot;deviceGroups&quot;: [ # Definition of device groups for the app.
    { # LINT.IfChange A group of devices. A group is defined by a set of device selectors. A device belongs to the group if it matches any selector (logical OR).
      &quot;deviceSelectors&quot;: [ # Device selectors for this group. A device matching any of the selectors is included in this group.
        { # Selector for a device group. A selector consists of a set of conditions on the device that should all match (logical AND) to determine a device group eligibility. For instance, if a selector specifies RAM conditions, device model inclusion and device model exclusion, a device is considered to match if: device matches RAM conditions AND device matches one of the included device models AND device doesn&#x27;t match excluded device models
          &quot;deviceRam&quot;: { # Conditions about a device&#x27;s RAM capabilities. # Conditions on the device&#x27;s RAM.
            &quot;maxBytes&quot;: &quot;A String&quot;, # Maximum RAM in bytes (bound excluded).
            &quot;minBytes&quot;: &quot;A String&quot;, # Minimum RAM in bytes (bound included).
          },
          &quot;excludedDeviceIds&quot;: [ # Device models excluded by this selector, even if they match all other conditions.
            { # Identifier of a device.
              &quot;buildBrand&quot;: &quot;A String&quot;, # Value of Build.BRAND.
              &quot;buildDevice&quot;: &quot;A String&quot;, # Value of Build.DEVICE.
            },
          ],
          &quot;forbiddenSystemFeatures&quot;: [ # A device that has any of these system features is excluded by this selector, even if it matches all other conditions.
            { # Representation of a system feature.
              &quot;name&quot;: &quot;A String&quot;, # The name of the feature.
            },
          ],
          &quot;includedDeviceIds&quot;: [ # Device models included by this selector.
            { # Identifier of a device.
              &quot;buildBrand&quot;: &quot;A String&quot;, # Value of Build.BRAND.
              &quot;buildDevice&quot;: &quot;A String&quot;, # Value of Build.DEVICE.
            },
          ],
          &quot;requiredSystemFeatures&quot;: [ # A device needs to have all these system features to be included by the selector.
            { # Representation of a system feature.
              &quot;name&quot;: &quot;A String&quot;, # The name of the feature.
            },
          ],
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # The name of the group.
    },
  ],
  &quot;deviceTierConfigId&quot;: &quot;A String&quot;, # Output only. The device tier config ID.
  &quot;deviceTierSet&quot;: { # A set of device tiers. A tier set determines what variation of app content gets served to a specific device, for device-targeted content. You should assign a priority level to each tier, which determines the ordering by which they are evaluated by Play. See the documentation of DeviceTier.level for more details. # Definition of the set of device tiers for the app.
    &quot;deviceTiers&quot;: [ # Device tiers belonging to the set.
      { # A single device tier. Devices matching any of the device groups in device_group_names are considered to match the tier.
        &quot;deviceGroupNames&quot;: [ # Groups of devices included in this tier. These groups must be defined explicitly under device_groups in this configuration.
          &quot;A String&quot;,
        ],
        &quot;level&quot;: 42, # The priority level of the tier. Tiers are evaluated in descending order of level: the highest level tier has the highest priority. The highest tier matching a given device is selected for that device. You should use a contiguous range of levels for your tiers in a tier set; tier levels in a tier set must be unique. For instance, if your tier set has 4 tiers (including the global fallback), you should define tiers 1, 2 and 3 in this configuration. Note: tier 0 is implicitly defined as a global fallback and selected for devices that don&#x27;t match any of the tiers explicitly defined here. You mustn&#x27;t define level 0 explicitly in this configuration.
      },
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(packageName, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Returns created device tier configs, ordered by descending creation time.

Args:
  packageName: string, Package name of the app. (required)
  pageSize: integer, The maximum number of device tier configs to return. The service may return fewer than this value. If unspecified, at most 10 device tier configs will be returned. The maximum value for this field is 100; values above 100 will be coerced to 100. Device tier configs will be ordered by descending creation time.
  pageToken: string, A page token, received from a previous `ListDeviceTierConfigs` call. Provide this to retrieve the subsequent page.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response listing existing device tier configs.
  &quot;deviceTierConfigs&quot;: [ # Device tier configs created by the developer.
    { # LINT.IfChange Configuration describing device targeting criteria for the content of an app.
      &quot;deviceGroups&quot;: [ # Definition of device groups for the app.
        { # LINT.IfChange A group of devices. A group is defined by a set of device selectors. A device belongs to the group if it matches any selector (logical OR).
          &quot;deviceSelectors&quot;: [ # Device selectors for this group. A device matching any of the selectors is included in this group.
            { # Selector for a device group. A selector consists of a set of conditions on the device that should all match (logical AND) to determine a device group eligibility. For instance, if a selector specifies RAM conditions, device model inclusion and device model exclusion, a device is considered to match if: device matches RAM conditions AND device matches one of the included device models AND device doesn&#x27;t match excluded device models
              &quot;deviceRam&quot;: { # Conditions about a device&#x27;s RAM capabilities. # Conditions on the device&#x27;s RAM.
                &quot;maxBytes&quot;: &quot;A String&quot;, # Maximum RAM in bytes (bound excluded).
                &quot;minBytes&quot;: &quot;A String&quot;, # Minimum RAM in bytes (bound included).
              },
              &quot;excludedDeviceIds&quot;: [ # Device models excluded by this selector, even if they match all other conditions.
                { # Identifier of a device.
                  &quot;buildBrand&quot;: &quot;A String&quot;, # Value of Build.BRAND.
                  &quot;buildDevice&quot;: &quot;A String&quot;, # Value of Build.DEVICE.
                },
              ],
              &quot;forbiddenSystemFeatures&quot;: [ # A device that has any of these system features is excluded by this selector, even if it matches all other conditions.
                { # Representation of a system feature.
                  &quot;name&quot;: &quot;A String&quot;, # The name of the feature.
                },
              ],
              &quot;includedDeviceIds&quot;: [ # Device models included by this selector.
                { # Identifier of a device.
                  &quot;buildBrand&quot;: &quot;A String&quot;, # Value of Build.BRAND.
                  &quot;buildDevice&quot;: &quot;A String&quot;, # Value of Build.DEVICE.
                },
              ],
              &quot;requiredSystemFeatures&quot;: [ # A device needs to have all these system features to be included by the selector.
                { # Representation of a system feature.
                  &quot;name&quot;: &quot;A String&quot;, # The name of the feature.
                },
              ],
            },
          ],
          &quot;name&quot;: &quot;A String&quot;, # The name of the group.
        },
      ],
      &quot;deviceTierConfigId&quot;: &quot;A String&quot;, # Output only. The device tier config ID.
      &quot;deviceTierSet&quot;: { # A set of device tiers. A tier set determines what variation of app content gets served to a specific device, for device-targeted content. You should assign a priority level to each tier, which determines the ordering by which they are evaluated by Play. See the documentation of DeviceTier.level for more details. # Definition of the set of device tiers for the app.
        &quot;deviceTiers&quot;: [ # Device tiers belonging to the set.
          { # A single device tier. Devices matching any of the device groups in device_group_names are considered to match the tier.
            &quot;deviceGroupNames&quot;: [ # Groups of devices included in this tier. These groups must be defined explicitly under device_groups in this configuration.
              &quot;A String&quot;,
            ],
            &quot;level&quot;: 42, # The priority level of the tier. Tiers are evaluated in descending order of level: the highest level tier has the highest priority. The highest tier matching a given device is selected for that device. You should use a contiguous range of levels for your tiers in a tier set; tier levels in a tier set must be unique. For instance, if your tier set has 4 tiers (including the global fallback), you should define tiers 1, 2 and 3 in this configuration. Note: tier 0 is implicitly defined as a global fallback and selected for devices that don&#x27;t match any of the tiers explicitly defined here. You mustn&#x27;t define level 0 explicitly in this configuration.
          },
        ],
      },
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>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 &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>