<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="appengine_v1beta5.html">Google App Engine Admin API</a> . <a href="appengine_v1beta5.apps.html">apps</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="appengine_v1beta5.apps.operations.html">operations()</a></code>
</p>
<p class="firstline">Returns the operations Resource.</p>

<p class="toc_element">
  <code><a href="appengine_v1beta5.apps.services.html">services()</a></code>
</p>
<p class="firstline">Returns the services Resource.</p>

<p class="toc_element">
  <code><a href="#get">get(appsId, x__xgafv=None, ensureResourcesExist=None)</a></code></p>
<p class="firstline">Gets information about an application.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(appsId, x__xgafv=None, ensureResourcesExist=None)</code>
  <pre>Gets information about an application.

Args:
  appsId: string, Part of `name`. Name of the application to get. For example: "apps/myapp". (required)
  x__xgafv: string, V1 error format.
  ensureResourcesExist: boolean, Certain resources associated with an application are created on-demand. Controls whether these resources should be created when performing the `GET` operation. If specified and any resources could not be created, the request will fail with an error code. Additionally, this parameter can cause the request to take longer to complete. Note: This parameter will be deprecated in a future version of the API.

Returns:
  An object of the form:

    { # An Application contains the top-level configuration of an App Engine application.
    "defaultHostname": "A String", # The hostname used to reach the application, as resolved by App Engine. @OutputOnly
    "name": "A String", # The full path to the application in the API. Example: "apps/myapp". @OutputOnly
    "codeBucket": "A String", # A Google Cloud Storage bucket which can be used for storing files associated with an application. This bucket is associated with the application and can be used by the gcloud deployment commands. @OutputOnly
    "defaultBucket": "A String", # A Google Cloud Storage bucket which can be used by the application to store content. @OutputOnly
    "dispatchRules": [ # HTTP path dispatch rules for requests to the app that do not explicitly target a service or version. The rules are order-dependent. @OutputOnly
      { # Rules to match an HTTP request and dispatch that request to a service.
        "path": "A String", # The pathname within the host. This must start with a '/'. A single '*' (glob) can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
        "domain": "A String", # The domain name to match on. Supports '*' (glob) wildcarding on the left-hand side of a '.'. If empty, all domains will be matched (the same as '*').
        "service": "A String", # The resource id of a Service in this application that should service the matched request. The Service must already exist. Example: "default".
      },
    ],
    "defaultCookieExpiration": "A String", # Determines the cookie expiration policy for the application. @OutputOnly
    "location": "A String", # The location from which the application will be run. Application instances will run out of data centers in the chosen location and all of the application's End User Content will be stored at rest. The default is "us-central". Choices are: "us-central" - Central US "europe-west" - Western Europe "us-east1" - Eastern US
    "authDomain": "A String", # If set, only users from the specified Google Apps authentication domain may access the application. If not set, any Google Account may access the application.
    "id": "A String", # The relative name/path of the application. Example: "myapp".
  }</pre>
</div>

</body></html>