<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.edits.html">edits</a> . <a href="androidpublisher_v3.edits.tracks.html">tracks</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="#get">get(packageName, editId, track, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a track.</p>
<p class="toc_element">
  <code><a href="#list">list(packageName, editId, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all tracks.</p>
<p class="toc_element">
  <code><a href="#patch">patch(packageName, editId, track, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Patches a track.</p>
<p class="toc_element">
  <code><a href="#update">update(packageName, editId, track, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a track.</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="get">get(packageName, editId, track, x__xgafv=None)</code>
  <pre>Gets a track.

Args:
  packageName: string, Package name of the app. (required)
  editId: string, Identifier of the edit. (required)
  track: string, Identifier of the track. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A track configuration. The resource for TracksService.
  &quot;releases&quot;: [ # In a read request, represents all active releases in the track. In an update request, represents desired changes.
    { # A release within a track.
      &quot;countryTargeting&quot;: { # Country targeting specification. # Restricts a release to a specific set of countries.
        &quot;countries&quot;: [ # Countries to target, specified as two letter [CLDR codes](https://unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html).
          &quot;A String&quot;,
        ],
        &quot;includeRestOfWorld&quot;: True or False, # Include &quot;rest of world&quot; as well as explicitly targeted countries.
      },
      &quot;inAppUpdatePriority&quot;: 42, # In-app update priority of the release. All newly added APKs in the release will be considered at this priority. Can take values in the range [0, 5], with 5 the highest priority. Defaults to 0. in_app_update_priority can not be updated once the release is rolled out. See https://developer.android.com/guide/playcore/in-app-updates.
      &quot;name&quot;: &quot;A String&quot;, # The release name. Not required to be unique. If not set, the name is generated from the APK&#x27;s version_name. If the release contains multiple APKs, the name is generated from the date.
      &quot;releaseNotes&quot;: [ # A description of what is new in this release.
        { # Release notes specification, i.e. language and text.
          &quot;language&quot;: &quot;A String&quot;, # Language localization code (a BCP-47 language tag; for example, &quot;de-AT&quot; for Austrian German).
          &quot;text&quot;: &quot;A String&quot;, # The text in the given language.
        },
      ],
      &quot;status&quot;: &quot;A String&quot;, # The status of the release.
      &quot;userFraction&quot;: 3.14, # Fraction of users who are eligible for a staged release. 0 &lt; fraction &lt; 1. Can only be set when status is &quot;inProgress&quot; or &quot;halted&quot;.
      &quot;versionCodes&quot;: [ # Version codes of all APKs in the release. Must include version codes to retain from previous releases.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;track&quot;: &quot;A String&quot;, # Identifier of the track.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(packageName, editId, x__xgafv=None)</code>
  <pre>Lists all tracks.

Args:
  packageName: string, Package name of the app. (required)
  editId: string, Identifier of the edit. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response listing all tracks.
  &quot;kind&quot;: &quot;A String&quot;, # The kind of this response (&quot;androidpublisher#tracksListResponse&quot;).
  &quot;tracks&quot;: [ # All tracks.
    { # A track configuration. The resource for TracksService.
      &quot;releases&quot;: [ # In a read request, represents all active releases in the track. In an update request, represents desired changes.
        { # A release within a track.
          &quot;countryTargeting&quot;: { # Country targeting specification. # Restricts a release to a specific set of countries.
            &quot;countries&quot;: [ # Countries to target, specified as two letter [CLDR codes](https://unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html).
              &quot;A String&quot;,
            ],
            &quot;includeRestOfWorld&quot;: True or False, # Include &quot;rest of world&quot; as well as explicitly targeted countries.
          },
          &quot;inAppUpdatePriority&quot;: 42, # In-app update priority of the release. All newly added APKs in the release will be considered at this priority. Can take values in the range [0, 5], with 5 the highest priority. Defaults to 0. in_app_update_priority can not be updated once the release is rolled out. See https://developer.android.com/guide/playcore/in-app-updates.
          &quot;name&quot;: &quot;A String&quot;, # The release name. Not required to be unique. If not set, the name is generated from the APK&#x27;s version_name. If the release contains multiple APKs, the name is generated from the date.
          &quot;releaseNotes&quot;: [ # A description of what is new in this release.
            { # Release notes specification, i.e. language and text.
              &quot;language&quot;: &quot;A String&quot;, # Language localization code (a BCP-47 language tag; for example, &quot;de-AT&quot; for Austrian German).
              &quot;text&quot;: &quot;A String&quot;, # The text in the given language.
            },
          ],
          &quot;status&quot;: &quot;A String&quot;, # The status of the release.
          &quot;userFraction&quot;: 3.14, # Fraction of users who are eligible for a staged release. 0 &lt; fraction &lt; 1. Can only be set when status is &quot;inProgress&quot; or &quot;halted&quot;.
          &quot;versionCodes&quot;: [ # Version codes of all APKs in the release. Must include version codes to retain from previous releases.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;track&quot;: &quot;A String&quot;, # Identifier of the track.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(packageName, editId, track, body=None, x__xgafv=None)</code>
  <pre>Patches a track.

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

{ # A track configuration. The resource for TracksService.
  &quot;releases&quot;: [ # In a read request, represents all active releases in the track. In an update request, represents desired changes.
    { # A release within a track.
      &quot;countryTargeting&quot;: { # Country targeting specification. # Restricts a release to a specific set of countries.
        &quot;countries&quot;: [ # Countries to target, specified as two letter [CLDR codes](https://unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html).
          &quot;A String&quot;,
        ],
        &quot;includeRestOfWorld&quot;: True or False, # Include &quot;rest of world&quot; as well as explicitly targeted countries.
      },
      &quot;inAppUpdatePriority&quot;: 42, # In-app update priority of the release. All newly added APKs in the release will be considered at this priority. Can take values in the range [0, 5], with 5 the highest priority. Defaults to 0. in_app_update_priority can not be updated once the release is rolled out. See https://developer.android.com/guide/playcore/in-app-updates.
      &quot;name&quot;: &quot;A String&quot;, # The release name. Not required to be unique. If not set, the name is generated from the APK&#x27;s version_name. If the release contains multiple APKs, the name is generated from the date.
      &quot;releaseNotes&quot;: [ # A description of what is new in this release.
        { # Release notes specification, i.e. language and text.
          &quot;language&quot;: &quot;A String&quot;, # Language localization code (a BCP-47 language tag; for example, &quot;de-AT&quot; for Austrian German).
          &quot;text&quot;: &quot;A String&quot;, # The text in the given language.
        },
      ],
      &quot;status&quot;: &quot;A String&quot;, # The status of the release.
      &quot;userFraction&quot;: 3.14, # Fraction of users who are eligible for a staged release. 0 &lt; fraction &lt; 1. Can only be set when status is &quot;inProgress&quot; or &quot;halted&quot;.
      &quot;versionCodes&quot;: [ # Version codes of all APKs in the release. Must include version codes to retain from previous releases.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;track&quot;: &quot;A String&quot;, # Identifier of the track.
}

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

Returns:
  An object of the form:

    { # A track configuration. The resource for TracksService.
  &quot;releases&quot;: [ # In a read request, represents all active releases in the track. In an update request, represents desired changes.
    { # A release within a track.
      &quot;countryTargeting&quot;: { # Country targeting specification. # Restricts a release to a specific set of countries.
        &quot;countries&quot;: [ # Countries to target, specified as two letter [CLDR codes](https://unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html).
          &quot;A String&quot;,
        ],
        &quot;includeRestOfWorld&quot;: True or False, # Include &quot;rest of world&quot; as well as explicitly targeted countries.
      },
      &quot;inAppUpdatePriority&quot;: 42, # In-app update priority of the release. All newly added APKs in the release will be considered at this priority. Can take values in the range [0, 5], with 5 the highest priority. Defaults to 0. in_app_update_priority can not be updated once the release is rolled out. See https://developer.android.com/guide/playcore/in-app-updates.
      &quot;name&quot;: &quot;A String&quot;, # The release name. Not required to be unique. If not set, the name is generated from the APK&#x27;s version_name. If the release contains multiple APKs, the name is generated from the date.
      &quot;releaseNotes&quot;: [ # A description of what is new in this release.
        { # Release notes specification, i.e. language and text.
          &quot;language&quot;: &quot;A String&quot;, # Language localization code (a BCP-47 language tag; for example, &quot;de-AT&quot; for Austrian German).
          &quot;text&quot;: &quot;A String&quot;, # The text in the given language.
        },
      ],
      &quot;status&quot;: &quot;A String&quot;, # The status of the release.
      &quot;userFraction&quot;: 3.14, # Fraction of users who are eligible for a staged release. 0 &lt; fraction &lt; 1. Can only be set when status is &quot;inProgress&quot; or &quot;halted&quot;.
      &quot;versionCodes&quot;: [ # Version codes of all APKs in the release. Must include version codes to retain from previous releases.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;track&quot;: &quot;A String&quot;, # Identifier of the track.
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(packageName, editId, track, body=None, x__xgafv=None)</code>
  <pre>Updates a track.

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

{ # A track configuration. The resource for TracksService.
  &quot;releases&quot;: [ # In a read request, represents all active releases in the track. In an update request, represents desired changes.
    { # A release within a track.
      &quot;countryTargeting&quot;: { # Country targeting specification. # Restricts a release to a specific set of countries.
        &quot;countries&quot;: [ # Countries to target, specified as two letter [CLDR codes](https://unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html).
          &quot;A String&quot;,
        ],
        &quot;includeRestOfWorld&quot;: True or False, # Include &quot;rest of world&quot; as well as explicitly targeted countries.
      },
      &quot;inAppUpdatePriority&quot;: 42, # In-app update priority of the release. All newly added APKs in the release will be considered at this priority. Can take values in the range [0, 5], with 5 the highest priority. Defaults to 0. in_app_update_priority can not be updated once the release is rolled out. See https://developer.android.com/guide/playcore/in-app-updates.
      &quot;name&quot;: &quot;A String&quot;, # The release name. Not required to be unique. If not set, the name is generated from the APK&#x27;s version_name. If the release contains multiple APKs, the name is generated from the date.
      &quot;releaseNotes&quot;: [ # A description of what is new in this release.
        { # Release notes specification, i.e. language and text.
          &quot;language&quot;: &quot;A String&quot;, # Language localization code (a BCP-47 language tag; for example, &quot;de-AT&quot; for Austrian German).
          &quot;text&quot;: &quot;A String&quot;, # The text in the given language.
        },
      ],
      &quot;status&quot;: &quot;A String&quot;, # The status of the release.
      &quot;userFraction&quot;: 3.14, # Fraction of users who are eligible for a staged release. 0 &lt; fraction &lt; 1. Can only be set when status is &quot;inProgress&quot; or &quot;halted&quot;.
      &quot;versionCodes&quot;: [ # Version codes of all APKs in the release. Must include version codes to retain from previous releases.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;track&quot;: &quot;A String&quot;, # Identifier of the track.
}

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

Returns:
  An object of the form:

    { # A track configuration. The resource for TracksService.
  &quot;releases&quot;: [ # In a read request, represents all active releases in the track. In an update request, represents desired changes.
    { # A release within a track.
      &quot;countryTargeting&quot;: { # Country targeting specification. # Restricts a release to a specific set of countries.
        &quot;countries&quot;: [ # Countries to target, specified as two letter [CLDR codes](https://unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html).
          &quot;A String&quot;,
        ],
        &quot;includeRestOfWorld&quot;: True or False, # Include &quot;rest of world&quot; as well as explicitly targeted countries.
      },
      &quot;inAppUpdatePriority&quot;: 42, # In-app update priority of the release. All newly added APKs in the release will be considered at this priority. Can take values in the range [0, 5], with 5 the highest priority. Defaults to 0. in_app_update_priority can not be updated once the release is rolled out. See https://developer.android.com/guide/playcore/in-app-updates.
      &quot;name&quot;: &quot;A String&quot;, # The release name. Not required to be unique. If not set, the name is generated from the APK&#x27;s version_name. If the release contains multiple APKs, the name is generated from the date.
      &quot;releaseNotes&quot;: [ # A description of what is new in this release.
        { # Release notes specification, i.e. language and text.
          &quot;language&quot;: &quot;A String&quot;, # Language localization code (a BCP-47 language tag; for example, &quot;de-AT&quot; for Austrian German).
          &quot;text&quot;: &quot;A String&quot;, # The text in the given language.
        },
      ],
      &quot;status&quot;: &quot;A String&quot;, # The status of the release.
      &quot;userFraction&quot;: 3.14, # Fraction of users who are eligible for a staged release. 0 &lt; fraction &lt; 1. Can only be set when status is &quot;inProgress&quot; or &quot;halted&quot;.
      &quot;versionCodes&quot;: [ # Version codes of all APKs in the release. Must include version codes to retain from previous releases.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;track&quot;: &quot;A String&quot;, # Identifier of the track.
}</pre>
</div>

</body></html>