<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="computeaccounts_alpha.html">Compute Accounts API</a> . <a href="computeaccounts_alpha.linux.html">linux</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#getAuthorizedKeysView">getAuthorizedKeysView(project, zone, user, instance)</a></code></p>
<p class="firstline">Returns a list of authorized public keys for a specific user account.</p>
<p class="toc_element">
  <code><a href="#getLinuxAccountViews">getLinuxAccountViews(project, zone, instance, orderBy=None, filter=None, maxResults=None, pageToken=None, user=None)</a></code></p>
<p class="firstline">Retrieves a list of user accounts for an instance within a specific project.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="getAuthorizedKeysView">getAuthorizedKeysView(project, zone, user, instance)</code>
  <pre>Returns a list of authorized public keys for a specific user account.

Args:
  project: string, Project ID for this request. (required)
  zone: string, Name of the zone for this request. (required)
  user: string, The user account for which you want to get a list of authorized public keys. (required)
  instance: string, The fully-qualified URL of the virtual machine requesting the view. (required)

Returns:
  An object of the form:

    {
    "resource": { # A list of authorized public keys for a user account. # [Output Only] A list of authorized public keys for a user.
      "keys": [ # [Output Only] The list of authorized public keys in SSH format.
        "A String",
      ],
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="getLinuxAccountViews">getLinuxAccountViews(project, zone, instance, orderBy=None, filter=None, maxResults=None, pageToken=None, user=None)</code>
  <pre>Retrieves a list of user accounts for an instance within a specific project.

Args:
  project: string, Project ID for this request. (required)
  zone: string, Name of the zone for this request. (required)
  instance: string, The fully-qualified URL of the virtual machine requesting the views. (required)
  orderBy: string, A parameter
  filter: string, Filter expression for filtering listed resources.
  maxResults: integer, Maximum count of results to be returned.
  pageToken: string, Tag returned by a previous list request when that list was truncated to maxResults. Used to continue a previous list request.
  user: string, If provided, the user requesting the views. If left blank, the system is requesting the views, instead of a particular user.

Returns:
  An object of the form:

    {
    "resource": { # A list of all Linux accounts for this project. This API is only used by Compute Engine virtual machines to get information about user accounts for a project or instance. Linux resources are read-only views into users and groups managed by the Compute Engine Accounts API. # [Output Only] A list of authorized user accounts and groups.
      "kind": "computeaccounts#linuxAccountViews", # [Output Only] Type of the resource. Always computeaccounts#linuxAccountViews for Linux resources.
      "userViews": [ # [Output Only] A list of all users within a project.
        { # A detailed view of a Linux user account.
          "username": "A String", # [Output Only] The username of the account.
          "shell": "A String", # [Output Only] The path to the login shell for this account.
          "uid": 42, # [Output Only] User ID.
          "gid": 42, # [Output Only] User's default group ID.
          "gecos": "A String", # [Output Only] The GECOS (user information) entry for this account.
          "homeDirectory": "A String", # [Output Only] The path to the home directory for this account.
        },
      ],
      "groupViews": [ # [Output Only] A list of all groups within a project.
        { # A detailed view of a Linux group.
          "groupName": "A String", # [Output Only] Group name.
          "gid": 42, # [Output Only] The Group ID.
          "members": [ # [Output Only] List of user accounts that belong to the group.
            "A String",
          ],
        },
      ],
    },
  }</pre>
</div>

</body></html>