<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="drive_v2.html">Drive API</a> . <a href="drive_v2.apps.html">apps</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(appId)</a></code></p>
<p class="firstline">Gets a specific app.</p>
<p class="toc_element">
  <code><a href="#list">list()</a></code></p>
<p class="firstline">Lists a user's installed apps.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(appId)</code>
  <pre>Gets a specific app.

Args:
  appId: string, The ID of the app. (required)

Returns:
  An object of the form:

    { # The apps resource provides a list of the apps that a user has installed, with information about each app's supported MIME types, file extensions, and other details.
    "kind": "drive#app", # This is always drive#app.
    "primaryFileExtensions": [ # The list of primary file extensions.
      "A String",
    ],
    "useByDefault": True or False, # Whether the app is selected as the default handler for the types it supports.
    "name": "A String", # The name of the app.
    "icons": [ # The various icons for the app.
      {
        "category": "A String", # Category of the icon. Allowed values are:
            # - application - icon for the application
            # - document - icon for a file associated with the app
            # - documentShared - icon for a shared file associated with the app
        "iconUrl": "A String", # URL for the icon.
        "size": 42, # Size of the icon. Represented as the maximum of the width and height.
      },
    ],
    "secondaryFileExtensions": [ # The list of secondary file extensions.
      "A String",
    ],
    "installed": True or False, # Whether the app is installed.
    "productUrl": "A String", # The product URL.
    "secondaryMimeTypes": [ # The list of secondary mime types.
      "A String",
    ],
    "authorized": True or False, # Whether the app is authorized to access data on the user's Drive.
    "supportsCreate": True or False, # Whether this app supports creating new objects.
    "supportsImport": True or False, # Whether this app supports importing Google Docs.
    "primaryMimeTypes": [ # The list of primary mime types.
      "A String",
    ],
    "id": "A String", # The ID of the app.
    "objectType": "A String", # The type of object this app creates (e.g. Chart). If empty, the app name should be used instead.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list()</code>
  <pre>Lists a user's installed apps.

Args:

Returns:
  An object of the form:

    { # A list of third-party applications which the user has installed or given access to Google Drive.
    "items": [ # The actual list of apps.
      { # The apps resource provides a list of the apps that a user has installed, with information about each app's supported MIME types, file extensions, and other details.
        "kind": "drive#app", # This is always drive#app.
        "primaryFileExtensions": [ # The list of primary file extensions.
          "A String",
        ],
        "useByDefault": True or False, # Whether the app is selected as the default handler for the types it supports.
        "name": "A String", # The name of the app.
        "icons": [ # The various icons for the app.
          {
            "category": "A String", # Category of the icon. Allowed values are:
                # - application - icon for the application
                # - document - icon for a file associated with the app
                # - documentShared - icon for a shared file associated with the app
            "iconUrl": "A String", # URL for the icon.
            "size": 42, # Size of the icon. Represented as the maximum of the width and height.
          },
        ],
        "secondaryFileExtensions": [ # The list of secondary file extensions.
          "A String",
        ],
        "installed": True or False, # Whether the app is installed.
        "productUrl": "A String", # The product URL.
        "secondaryMimeTypes": [ # The list of secondary mime types.
          "A String",
        ],
        "authorized": True or False, # Whether the app is authorized to access data on the user's Drive.
        "supportsCreate": True or False, # Whether this app supports creating new objects.
        "supportsImport": True or False, # Whether this app supports importing Google Docs.
        "primaryMimeTypes": [ # The list of primary mime types.
          "A String",
        ],
        "id": "A String", # The ID of the app.
        "objectType": "A String", # The type of object this app creates (e.g. Chart). If empty, the app name should be used instead.
      },
    ],
    "kind": "drive#appList", # This is always drive#appList.
    "etag": "A String", # The ETag of the list.
    "selfLink": "A String", # A link back to this list.
  }</pre>
</div>

</body></html>