<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="playmoviespartner_v1.html">Google Play Movies Partner API</a> . <a href="playmoviespartner_v1.accounts.html">accounts</a> . <a href="playmoviespartner_v1.accounts.storeInfos.html">storeInfos</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="playmoviespartner_v1.accounts.storeInfos.country.html">country()</a></code>
</p>
<p class="firstline">Returns the country Resource.</p>

<p class="toc_element">
  <code><a href="#list">list(accountId, pphNames=None, pageSize=None, x__xgafv=None, seasonIds=None, studioNames=None, pageToken=None, videoId=None, videoIds=None, name=None, countries=None, mids=None)</a></code></p>
<p class="firstline">List StoreInfos owned or managed by the partner.</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="list">list(accountId, pphNames=None, pageSize=None, x__xgafv=None, seasonIds=None, studioNames=None, pageToken=None, videoId=None, videoIds=None, name=None, countries=None, mids=None)</code>
  <pre>List StoreInfos owned or managed by the partner.

See _Authentication and Authorization rules_ and
_List methods rules_ for more information about this method.

Args:
  accountId: string, REQUIRED. See _General rules_ for more information about this field. (required)
  pphNames: string, See _List methods rules_ for info about this field. (repeated)
  pageSize: integer, See _List methods rules_ for info about this field.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  seasonIds: string, Filter StoreInfos that match any of the given `season_id`s. (repeated)
  studioNames: string, See _List methods rules_ for info about this field. (repeated)
  pageToken: string, See _List methods rules_ for info about this field.
  videoId: string, Filter StoreInfos that match a given `video_id`.
NOTE: this field is deprecated and will be removed on V2; `video_ids`
should be used instead.
  videoIds: string, Filter StoreInfos that match any of the given `video_id`s. (repeated)
  name: string, Filter that matches StoreInfos with a `name` or `show_name`
that contains the given case-insensitive name.
  countries: string, Filter StoreInfos that match (case-insensitive) any of the given country
codes, using the "ISO 3166-1 alpha-2" format (examples: "US", "us", "Us"). (repeated)
  mids: string, Filter StoreInfos that match any of the given `mid`s. (repeated)

Returns:
  An object of the form:

    { # Response to the 'ListStoreInfos' method.
    "nextPageToken": "A String", # See 'List methods rules' for info about this field.
    "storeInfos": [ # List of StoreInfos that match the request criteria.
      { # Information about a playable sequence (video) associated with an Edit
          # and available at the Google Play Store.
          #
          # Internally, each StoreInfo is uniquely identified by a `video_id`
          # and `country`.
          #
          # Externally, Title-level EIDR or Edit-level EIDR, if provided,
          # can also be used to identify a specific title or edit in a country.
        "pphNames": [ # Name of the post-production houses that manage the Edit.
          "A String",
        ],
        "hasEstOffer": True or False, # Whether the Edit has a EST offer.
        "studioName": "A String", # Name of the studio that owns the Edit ordered.
        "hasHdOffer": True or False, # Whether the Edit has a HD offer.
        "editLevelEidr": "A String", # Edit-level EIDR ID.
            # Example: "10.5240/1489-49A2-3956-4B2D-FE16-6".
        "episodeNumber": "A String", # The number assigned to the episode within a season.
            # Only available on TV Edits.
            # Example: "1".
        "mid": "A String", # Knowledge Graph ID associated to this Edit, if available.
            # This ID links the Edit to its knowledge entity, externally accessible
            # at http://freebase.com.
            # In the absense of Title EIDR or Edit EIDR, this ID helps link together
            # multiple Edits across countries.
            # Example: '/m/0ffx29'
        "hasAudio51": True or False, # Whether the Edit has a 5.1 channel audio track.
        "hasInfoCards": True or False, # Whether the Edit has info cards.
        "type": "A String", # Edit type, like Movie, Episode or Season.
        "hasVodOffer": True or False, # Whether the Edit has a VOD offer.
        "titleLevelEidr": "A String", # Title-level EIDR ID.
            # Example: "10.5240/1489-49A2-3956-4B2D-FE16-5".
        "hasSdOffer": True or False, # Whether the Edit has a SD offer.
        "seasonNumber": "A String", # The number assigned to the season within a show.
            # Only available on TV Edits.
            # Example: "1".
        "liveTime": "A String", # Timestamp when the Edit went live on the Store.
        "trailerId": "A String", # Google-generated ID identifying the trailer linked to the Edit.
            # Example: 'bhd_4e_cx'
        "videoId": "A String", # Google-generated ID identifying the video linked to the Edit.
            # Example: 'gtry456_xc'
        "subtitles": [ # Subtitles available for this Edit.
          "A String",
        ],
        "showId": "A String", # Google-generated ID identifying the show linked to the Edit.
            # Only available for TV Edits.
            # Example: 'et2hsue_x'
        "name": "A String", # Default Edit name, usually in the language of the country of
            # origin.
            # Example: "Googlers, The".
        "country": "A String", # Country where Edit is available in ISO 3166-1 alpha-2 country
            # code.
            # Example: "US".
        "seasonId": "A String", # Google-generated ID identifying the season linked to the Edit.
            # Only available for TV Edits.
            # Example: 'ster23ex'
        "seasonName": "A String", # Default Season name, usually in the language of the country of
            # origin.
            # Only available for TV Edits
            # Example: "Googlers, The - A Brave New World".
        "audioTracks": [ # Audio tracks available for this Edit.
          "A String",
        ],
        "showName": "A String", # Default Show name, usually in the language of the country of
            # origin.
            # Only available for TV Edits
            # Example: "Googlers, The".
      },
    ],
    "totalSize": 42, # See _List methods rules_ for more information about this field.
  }</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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>