<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 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="#get">get(packageName, editId, track)</a></code></p>
<p class="firstline">Fetches the track configuration for the specified track type. Includes the APK version codes that are in this track.</p>
<p class="toc_element">
  <code><a href="#list">list(packageName, editId)</a></code></p>
<p class="firstline">Lists all the track configurations for this edit.</p>
<p class="toc_element">
  <code><a href="#patch">patch(packageName, editId, track, body)</a></code></p>
<p class="firstline">Updates the track configuration for the specified track type. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(packageName, editId, track, body)</a></code></p>
<p class="firstline">Updates the track configuration for the specified track type.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(packageName, editId, track)</code>
  <pre>Fetches the track configuration for the specified track type. Includes the APK version codes that are in this track.

Args:
  packageName: string, Unique identifier for the Android app that is being updated; for example, "com.spiffygame". (required)
  editId: string, Unique identifier for this edit. (required)
  track: string, The track to read or modify. (required)

Returns:
  An object of the form:

    {
      "track": "A String", # Identifier for this track.
      "releases": [ # A list of all active releases in this track during a read request. On an update request, it represents desired changes.
        {
          "status": "A String", # The desired status of this release.
          "name": "A String", # The release name, used to identify this release in the Play Console UI. Not required to be unique. This is optional, if not set it will be generated from the version_name in the APKs.
          "versionCodes": [ # A list of all version codes of APKs that will be exposed to the users of this track when this release is rolled out. Note that this list should contain all versions you wish to be active, including those you wish to retain from previous releases.
            "A String",
          ],
          "releaseNotes": [ # The description of what is new in the app in this release.
            {
              "text": "A String", # The text in the given `language`.
              "language": "A String", # The language code, in BCP 47 format (eg "en-US").
            },
          ],
          "countryTargeting": {
            "includeRestOfWorld": True or False,
            "countries": [
              "A String",
            ],
          },
          "userFraction": 3.14, # Fraction of users who are eligible to receive the release. 0 < fraction < 1. To be set, release status must be "inProgress" or "halted".
        },
      ],
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(packageName, editId)</code>
  <pre>Lists all the track configurations for this edit.

Args:
  packageName: string, Unique identifier for the Android app that is being updated; for example, "com.spiffygame". (required)
  editId: string, Unique identifier for this edit. (required)

Returns:
  An object of the form:

    {
    "kind": "androidpublisher#tracksListResponse", # Identifies what kind of resource this is. Value: the fixed string "androidpublisher#tracksListResponse".
    "tracks": [
      {
          "track": "A String", # Identifier for this track.
          "releases": [ # A list of all active releases in this track during a read request. On an update request, it represents desired changes.
            {
              "status": "A String", # The desired status of this release.
              "name": "A String", # The release name, used to identify this release in the Play Console UI. Not required to be unique. This is optional, if not set it will be generated from the version_name in the APKs.
              "versionCodes": [ # A list of all version codes of APKs that will be exposed to the users of this track when this release is rolled out. Note that this list should contain all versions you wish to be active, including those you wish to retain from previous releases.
                "A String",
              ],
              "releaseNotes": [ # The description of what is new in the app in this release.
                {
                  "text": "A String", # The text in the given `language`.
                  "language": "A String", # The language code, in BCP 47 format (eg "en-US").
                },
              ],
              "countryTargeting": {
                "includeRestOfWorld": True or False,
                "countries": [
                  "A String",
                ],
              },
              "userFraction": 3.14, # Fraction of users who are eligible to receive the release. 0 < fraction < 1. To be set, release status must be "inProgress" or "halted".
            },
          ],
        },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(packageName, editId, track, body)</code>
  <pre>Updates the track configuration for the specified track type. This method supports patch semantics.

Args:
  packageName: string, Unique identifier for the Android app that is being updated; for example, "com.spiffygame". (required)
  editId: string, Unique identifier for this edit. (required)
  track: string, The track to read or modify. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "track": "A String", # Identifier for this track.
    "releases": [ # A list of all active releases in this track during a read request. On an update request, it represents desired changes.
      {
        "status": "A String", # The desired status of this release.
        "name": "A String", # The release name, used to identify this release in the Play Console UI. Not required to be unique. This is optional, if not set it will be generated from the version_name in the APKs.
        "versionCodes": [ # A list of all version codes of APKs that will be exposed to the users of this track when this release is rolled out. Note that this list should contain all versions you wish to be active, including those you wish to retain from previous releases.
          "A String",
        ],
        "releaseNotes": [ # The description of what is new in the app in this release.
          {
            "text": "A String", # The text in the given `language`.
            "language": "A String", # The language code, in BCP 47 format (eg "en-US").
          },
        ],
        "countryTargeting": {
          "includeRestOfWorld": True or False,
          "countries": [
            "A String",
          ],
        },
        "userFraction": 3.14, # Fraction of users who are eligible to receive the release. 0 < fraction < 1. To be set, release status must be "inProgress" or "halted".
      },
    ],
  }


Returns:
  An object of the form:

    {
      "track": "A String", # Identifier for this track.
      "releases": [ # A list of all active releases in this track during a read request. On an update request, it represents desired changes.
        {
          "status": "A String", # The desired status of this release.
          "name": "A String", # The release name, used to identify this release in the Play Console UI. Not required to be unique. This is optional, if not set it will be generated from the version_name in the APKs.
          "versionCodes": [ # A list of all version codes of APKs that will be exposed to the users of this track when this release is rolled out. Note that this list should contain all versions you wish to be active, including those you wish to retain from previous releases.
            "A String",
          ],
          "releaseNotes": [ # The description of what is new in the app in this release.
            {
              "text": "A String", # The text in the given `language`.
              "language": "A String", # The language code, in BCP 47 format (eg "en-US").
            },
          ],
          "countryTargeting": {
            "includeRestOfWorld": True or False,
            "countries": [
              "A String",
            ],
          },
          "userFraction": 3.14, # Fraction of users who are eligible to receive the release. 0 < fraction < 1. To be set, release status must be "inProgress" or "halted".
        },
      ],
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(packageName, editId, track, body)</code>
  <pre>Updates the track configuration for the specified track type.

Args:
  packageName: string, Unique identifier for the Android app that is being updated; for example, "com.spiffygame". (required)
  editId: string, Unique identifier for this edit. (required)
  track: string, The track to read or modify. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "track": "A String", # Identifier for this track.
    "releases": [ # A list of all active releases in this track during a read request. On an update request, it represents desired changes.
      {
        "status": "A String", # The desired status of this release.
        "name": "A String", # The release name, used to identify this release in the Play Console UI. Not required to be unique. This is optional, if not set it will be generated from the version_name in the APKs.
        "versionCodes": [ # A list of all version codes of APKs that will be exposed to the users of this track when this release is rolled out. Note that this list should contain all versions you wish to be active, including those you wish to retain from previous releases.
          "A String",
        ],
        "releaseNotes": [ # The description of what is new in the app in this release.
          {
            "text": "A String", # The text in the given `language`.
            "language": "A String", # The language code, in BCP 47 format (eg "en-US").
          },
        ],
        "countryTargeting": {
          "includeRestOfWorld": True or False,
          "countries": [
            "A String",
          ],
        },
        "userFraction": 3.14, # Fraction of users who are eligible to receive the release. 0 < fraction < 1. To be set, release status must be "inProgress" or "halted".
      },
    ],
  }


Returns:
  An object of the form:

    {
      "track": "A String", # Identifier for this track.
      "releases": [ # A list of all active releases in this track during a read request. On an update request, it represents desired changes.
        {
          "status": "A String", # The desired status of this release.
          "name": "A String", # The release name, used to identify this release in the Play Console UI. Not required to be unique. This is optional, if not set it will be generated from the version_name in the APKs.
          "versionCodes": [ # A list of all version codes of APKs that will be exposed to the users of this track when this release is rolled out. Note that this list should contain all versions you wish to be active, including those you wish to retain from previous releases.
            "A String",
          ],
          "releaseNotes": [ # The description of what is new in the app in this release.
            {
              "text": "A String", # The text in the given `language`.
              "language": "A String", # The language code, in BCP 47 format (eg "en-US").
            },
          ],
          "countryTargeting": {
            "includeRestOfWorld": True or False,
            "countries": [
              "A String",
            ],
          },
          "userFraction": 3.14, # Fraction of users who are eligible to receive the release. 0 < fraction < 1. To be set, release status must be "inProgress" or "halted".
        },
      ],
    }</pre>
</div>

</body></html>