<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.storelayoutpages.html">storelayoutpages</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(enterpriseId, pageId)</a></code></p>
<p class="firstline">Deletes a store page.</p>
<p class="toc_element">
  <code><a href="#get">get(enterpriseId, pageId)</a></code></p>
<p class="firstline">Retrieves details of a store page.</p>
<p class="toc_element">
  <code><a href="#insert">insert(enterpriseId, body=None)</a></code></p>
<p class="firstline">Inserts a new store page.</p>
<p class="toc_element">
  <code><a href="#list">list(enterpriseId)</a></code></p>
<p class="firstline">Retrieves the details of all pages in the store.</p>
<p class="toc_element">
  <code><a href="#update">update(enterpriseId, pageId, body=None)</a></code></p>
<p class="firstline">Updates the content of a store page.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(enterpriseId, pageId)</code>
  <pre>Deletes a store page.

Args:
  enterpriseId: string, The ID of the enterprise. (required)
  pageId: string, The ID of the page. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(enterpriseId, pageId)</code>
  <pre>Retrieves details of a store page.

Args:
  enterpriseId: string, The ID of the enterprise. (required)
  pageId: string, The ID of the page. (required)

Returns:
  An object of the form:

    { # Definition of a managed Google Play store page, made of a localized name and links to other pages. A page also contains clusters defined as a subcollection.
    &quot;id&quot;: &quot;A String&quot;, # Unique ID of this page. Assigned by the server. Immutable once assigned.
    &quot;kind&quot;: &quot;androidenterprise#storePage&quot;,
    &quot;link&quot;: [ # Ordered list of pages a user should be able to reach from this page. The list can&#x27;t include this page. It is recommended that the basic pages are created first, before adding the links between pages.
        #
        # The API doesn&#x27;t verify that the pages exist or the pages are reachable.
      &quot;A String&quot;,
    ],
    &quot;name&quot;: [ # Ordered list of localized strings giving the name of this page. The text displayed is the one that best matches the user locale, or the first entry if there is no good match. There needs to be at least one entry.
      { # A localized string with its locale.
        &quot;locale&quot;: &quot;A String&quot;, # The BCP47 tag for a locale. (e.g. &quot;en-US&quot;, &quot;de&quot;).
        &quot;text&quot;: &quot;A String&quot;, # The text localized in the associated locale.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(enterpriseId, body=None)</code>
  <pre>Inserts a new store page.

Args:
  enterpriseId: string, The ID of the enterprise. (required)
  body: object, The request body.
    The object takes the form of:

{ # Definition of a managed Google Play store page, made of a localized name and links to other pages. A page also contains clusters defined as a subcollection.
  &quot;id&quot;: &quot;A String&quot;, # Unique ID of this page. Assigned by the server. Immutable once assigned.
  &quot;kind&quot;: &quot;androidenterprise#storePage&quot;,
  &quot;link&quot;: [ # Ordered list of pages a user should be able to reach from this page. The list can&#x27;t include this page. It is recommended that the basic pages are created first, before adding the links between pages.
      # 
      # The API doesn&#x27;t verify that the pages exist or the pages are reachable.
    &quot;A String&quot;,
  ],
  &quot;name&quot;: [ # Ordered list of localized strings giving the name of this page. The text displayed is the one that best matches the user locale, or the first entry if there is no good match. There needs to be at least one entry.
    { # A localized string with its locale.
      &quot;locale&quot;: &quot;A String&quot;, # The BCP47 tag for a locale. (e.g. &quot;en-US&quot;, &quot;de&quot;).
      &quot;text&quot;: &quot;A String&quot;, # The text localized in the associated locale.
    },
  ],
}


Returns:
  An object of the form:

    { # Definition of a managed Google Play store page, made of a localized name and links to other pages. A page also contains clusters defined as a subcollection.
    &quot;id&quot;: &quot;A String&quot;, # Unique ID of this page. Assigned by the server. Immutable once assigned.
    &quot;kind&quot;: &quot;androidenterprise#storePage&quot;,
    &quot;link&quot;: [ # Ordered list of pages a user should be able to reach from this page. The list can&#x27;t include this page. It is recommended that the basic pages are created first, before adding the links between pages.
        #
        # The API doesn&#x27;t verify that the pages exist or the pages are reachable.
      &quot;A String&quot;,
    ],
    &quot;name&quot;: [ # Ordered list of localized strings giving the name of this page. The text displayed is the one that best matches the user locale, or the first entry if there is no good match. There needs to be at least one entry.
      { # A localized string with its locale.
        &quot;locale&quot;: &quot;A String&quot;, # The BCP47 tag for a locale. (e.g. &quot;en-US&quot;, &quot;de&quot;).
        &quot;text&quot;: &quot;A String&quot;, # The text localized in the associated locale.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(enterpriseId)</code>
  <pre>Retrieves the details of all pages in the store.

Args:
  enterpriseId: string, The ID of the enterprise. (required)

Returns:
  An object of the form:

    { # The store page resources for the enterprise.
    &quot;kind&quot;: &quot;androidenterprise#storeLayoutPagesListResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;androidenterprise#storeLayoutPagesListResponse&quot;.
    &quot;page&quot;: [ # A store page of an enterprise.
      { # Definition of a managed Google Play store page, made of a localized name and links to other pages. A page also contains clusters defined as a subcollection.
        &quot;id&quot;: &quot;A String&quot;, # Unique ID of this page. Assigned by the server. Immutable once assigned.
        &quot;kind&quot;: &quot;androidenterprise#storePage&quot;,
        &quot;link&quot;: [ # Ordered list of pages a user should be able to reach from this page. The list can&#x27;t include this page. It is recommended that the basic pages are created first, before adding the links between pages.
            #
            # The API doesn&#x27;t verify that the pages exist or the pages are reachable.
          &quot;A String&quot;,
        ],
        &quot;name&quot;: [ # Ordered list of localized strings giving the name of this page. The text displayed is the one that best matches the user locale, or the first entry if there is no good match. There needs to be at least one entry.
          { # A localized string with its locale.
            &quot;locale&quot;: &quot;A String&quot;, # The BCP47 tag for a locale. (e.g. &quot;en-US&quot;, &quot;de&quot;).
            &quot;text&quot;: &quot;A String&quot;, # The text localized in the associated locale.
          },
        ],
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(enterpriseId, pageId, body=None)</code>
  <pre>Updates the content of a store page.

Args:
  enterpriseId: string, The ID of the enterprise. (required)
  pageId: string, The ID of the page. (required)
  body: object, The request body.
    The object takes the form of:

{ # Definition of a managed Google Play store page, made of a localized name and links to other pages. A page also contains clusters defined as a subcollection.
  &quot;id&quot;: &quot;A String&quot;, # Unique ID of this page. Assigned by the server. Immutable once assigned.
  &quot;kind&quot;: &quot;androidenterprise#storePage&quot;,
  &quot;link&quot;: [ # Ordered list of pages a user should be able to reach from this page. The list can&#x27;t include this page. It is recommended that the basic pages are created first, before adding the links between pages.
      # 
      # The API doesn&#x27;t verify that the pages exist or the pages are reachable.
    &quot;A String&quot;,
  ],
  &quot;name&quot;: [ # Ordered list of localized strings giving the name of this page. The text displayed is the one that best matches the user locale, or the first entry if there is no good match. There needs to be at least one entry.
    { # A localized string with its locale.
      &quot;locale&quot;: &quot;A String&quot;, # The BCP47 tag for a locale. (e.g. &quot;en-US&quot;, &quot;de&quot;).
      &quot;text&quot;: &quot;A String&quot;, # The text localized in the associated locale.
    },
  ],
}


Returns:
  An object of the form:

    { # Definition of a managed Google Play store page, made of a localized name and links to other pages. A page also contains clusters defined as a subcollection.
    &quot;id&quot;: &quot;A String&quot;, # Unique ID of this page. Assigned by the server. Immutable once assigned.
    &quot;kind&quot;: &quot;androidenterprise#storePage&quot;,
    &quot;link&quot;: [ # Ordered list of pages a user should be able to reach from this page. The list can&#x27;t include this page. It is recommended that the basic pages are created first, before adding the links between pages.
        #
        # The API doesn&#x27;t verify that the pages exist or the pages are reachable.
      &quot;A String&quot;,
    ],
    &quot;name&quot;: [ # Ordered list of localized strings giving the name of this page. The text displayed is the one that best matches the user locale, or the first entry if there is no good match. There needs to be at least one entry.
      { # A localized string with its locale.
        &quot;locale&quot;: &quot;A String&quot;, # The BCP47 tag for a locale. (e.g. &quot;en-US&quot;, &quot;de&quot;).
        &quot;text&quot;: &quot;A String&quot;, # The text localized in the associated locale.
      },
    ],
  }</pre>
</div>

</body></html>