<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="playcustomapp_v1.html">Google Play Custom App Publishing API</a> . <a href="playcustomapp_v1.accounts.html">accounts</a> . <a href="playcustomapp_v1.accounts.customApps.html">customApps</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(account, body=None, media_body=None, media_mime_type=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new custom app.</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(account, body=None, media_body=None, media_mime_type=None, x__xgafv=None)</code>
  <pre>Creates a new custom app.

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

{ # This resource represents a custom app.
  &quot;languageCode&quot;: &quot;A String&quot;, # Default listing language in BCP 47 format.
  &quot;organizations&quot;: [ # Organizations to which the custom app should be made available. If the request contains any organizations, then the app will be restricted to only these organizations. To support the organization linked to the developer account, the organization ID should be provided explicitly together with other organizations. If no organizations are provided, then the app is only available to the organization linked to the developer account.
    { # Represents an organization that can access a custom app.
      &quot;organizationId&quot;: &quot;A String&quot;, # Required. ID of the organization.
      &quot;organizationName&quot;: &quot;A String&quot;, # Optional. A human-readable name of the organization, to help recognize the organization.
    },
  ],
  &quot;packageName&quot;: &quot;A String&quot;, # Output only. Package name of the created Android app. Only present in the API response.
  &quot;title&quot;: &quot;A String&quot;, # Title for the Android app.
}

  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a custom app.
  &quot;languageCode&quot;: &quot;A String&quot;, # Default listing language in BCP 47 format.
  &quot;organizations&quot;: [ # Organizations to which the custom app should be made available. If the request contains any organizations, then the app will be restricted to only these organizations. To support the organization linked to the developer account, the organization ID should be provided explicitly together with other organizations. If no organizations are provided, then the app is only available to the organization linked to the developer account.
    { # Represents an organization that can access a custom app.
      &quot;organizationId&quot;: &quot;A String&quot;, # Required. ID of the organization.
      &quot;organizationName&quot;: &quot;A String&quot;, # Optional. A human-readable name of the organization, to help recognize the organization.
    },
  ],
  &quot;packageName&quot;: &quot;A String&quot;, # Output only. Package name of the created Android app. Only present in the API response.
  &quot;title&quot;: &quot;A String&quot;, # Title for the Android app.
}</pre>
</div>

</body></html>