<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="analytics_v3.html">Google Analytics API</a> . <a href="analytics_v3.management.html">management</a> . <a href="analytics_v3.management.accountUserLinks.html">accountUserLinks</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="#delete">delete(accountId, linkId)</a></code></p>
<p class="firstline">Removes a user from the given account.</p>
<p class="toc_element">
  <code><a href="#insert">insert(accountId, body=None)</a></code></p>
<p class="firstline">Adds a new user to the given account.</p>
<p class="toc_element">
  <code><a href="#list">list(accountId, max_results=None, start_index=None)</a></code></p>
<p class="firstline">Lists account-user links for a given account.</p>
<p class="toc_element">
  <code><a href="#update">update(accountId, linkId, body=None)</a></code></p>
<p class="firstline">Updates permissions for an existing user on the given account.</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="delete">delete(accountId, linkId)</code>
  <pre>Removes a user from the given account.

Args:
  accountId: string, Account ID to delete the user link for. (required)
  linkId: string, Link ID to delete the user link for. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(accountId, body=None)</code>
  <pre>Adds a new user to the given account.

Args:
  accountId: string, Account ID to create the user link for. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for an Analytics Entity-User Link. Returns permissions that a user has for an entity.
  &quot;entity&quot;: { # Entity for this link. It can be an account, a web property, or a view (profile).
    &quot;accountRef&quot;: { # JSON template for a linked account. # Account for this link.
      &quot;href&quot;: &quot;A String&quot;, # Link for this account.
      &quot;id&quot;: &quot;A String&quot;, # Account ID.
      &quot;kind&quot;: &quot;analytics#accountRef&quot;, # Analytics account reference.
      &quot;name&quot;: &quot;A String&quot;, # Account name.
    },
    &quot;profileRef&quot;: { # JSON template for a linked view (profile). # View (Profile) for this link.
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this view (profile) belongs.
      &quot;href&quot;: &quot;A String&quot;, # Link for this view (profile).
      &quot;id&quot;: &quot;A String&quot;, # View (Profile) ID.
      &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this view (profile) belongs.
      &quot;kind&quot;: &quot;analytics#profileRef&quot;, # Analytics view (profile) reference.
      &quot;name&quot;: &quot;A String&quot;, # Name of this view (profile).
      &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY to which this view (profile) belongs.
    },
    &quot;webPropertyRef&quot;: { # JSON template for a web property reference. # Web property for this link.
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
      &quot;href&quot;: &quot;A String&quot;, # Link for this web property.
      &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
      &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
      &quot;kind&quot;: &quot;analytics#webPropertyRef&quot;, # Analytics web property reference.
      &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
    },
  },
  &quot;id&quot;: &quot;A String&quot;, # Entity user link ID
  &quot;kind&quot;: &quot;analytics#entityUserLink&quot;, # Resource type for entity user link.
  &quot;permissions&quot;: { # Permissions the user has for this entity.
    &quot;effective&quot;: [ # Effective permissions represent all the permissions that a user has for this entity. These include any implied permissions (e.g., EDIT implies VIEW) or inherited permissions from the parent entity. Effective permissions are read-only.
      &quot;A String&quot;,
    ],
    &quot;local&quot;: [ # Permissions that a user has been assigned at this very level. Does not include any implied or inherited permissions. Local permissions are modifiable.
      &quot;A String&quot;,
    ],
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Self link for this resource.
  &quot;userRef&quot;: { # JSON template for a user reference. # User reference.
    &quot;email&quot;: &quot;A String&quot;, # Email ID of this user.
    &quot;id&quot;: &quot;A String&quot;, # User ID.
    &quot;kind&quot;: &quot;analytics#userRef&quot;,
  },
}


Returns:
  An object of the form:

    { # JSON template for an Analytics Entity-User Link. Returns permissions that a user has for an entity.
  &quot;entity&quot;: { # Entity for this link. It can be an account, a web property, or a view (profile).
    &quot;accountRef&quot;: { # JSON template for a linked account. # Account for this link.
      &quot;href&quot;: &quot;A String&quot;, # Link for this account.
      &quot;id&quot;: &quot;A String&quot;, # Account ID.
      &quot;kind&quot;: &quot;analytics#accountRef&quot;, # Analytics account reference.
      &quot;name&quot;: &quot;A String&quot;, # Account name.
    },
    &quot;profileRef&quot;: { # JSON template for a linked view (profile). # View (Profile) for this link.
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this view (profile) belongs.
      &quot;href&quot;: &quot;A String&quot;, # Link for this view (profile).
      &quot;id&quot;: &quot;A String&quot;, # View (Profile) ID.
      &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this view (profile) belongs.
      &quot;kind&quot;: &quot;analytics#profileRef&quot;, # Analytics view (profile) reference.
      &quot;name&quot;: &quot;A String&quot;, # Name of this view (profile).
      &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY to which this view (profile) belongs.
    },
    &quot;webPropertyRef&quot;: { # JSON template for a web property reference. # Web property for this link.
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
      &quot;href&quot;: &quot;A String&quot;, # Link for this web property.
      &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
      &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
      &quot;kind&quot;: &quot;analytics#webPropertyRef&quot;, # Analytics web property reference.
      &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
    },
  },
  &quot;id&quot;: &quot;A String&quot;, # Entity user link ID
  &quot;kind&quot;: &quot;analytics#entityUserLink&quot;, # Resource type for entity user link.
  &quot;permissions&quot;: { # Permissions the user has for this entity.
    &quot;effective&quot;: [ # Effective permissions represent all the permissions that a user has for this entity. These include any implied permissions (e.g., EDIT implies VIEW) or inherited permissions from the parent entity. Effective permissions are read-only.
      &quot;A String&quot;,
    ],
    &quot;local&quot;: [ # Permissions that a user has been assigned at this very level. Does not include any implied or inherited permissions. Local permissions are modifiable.
      &quot;A String&quot;,
    ],
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Self link for this resource.
  &quot;userRef&quot;: { # JSON template for a user reference. # User reference.
    &quot;email&quot;: &quot;A String&quot;, # Email ID of this user.
    &quot;id&quot;: &quot;A String&quot;, # User ID.
    &quot;kind&quot;: &quot;analytics#userRef&quot;,
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(accountId, max_results=None, start_index=None)</code>
  <pre>Lists account-user links for a given account.

Args:
  accountId: string, Account ID to retrieve the user links for. (required)
  max_results: integer, The maximum number of account-user links to include in this response.
  start_index: integer, An index of the first account-user link to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter.

Returns:
  An object of the form:

    { # An entity user link collection provides a list of Analytics ACL links Each resource in this collection corresponds to a single link.
  &quot;items&quot;: [ # A list of entity user links.
    { # JSON template for an Analytics Entity-User Link. Returns permissions that a user has for an entity.
      &quot;entity&quot;: { # Entity for this link. It can be an account, a web property, or a view (profile).
        &quot;accountRef&quot;: { # JSON template for a linked account. # Account for this link.
          &quot;href&quot;: &quot;A String&quot;, # Link for this account.
          &quot;id&quot;: &quot;A String&quot;, # Account ID.
          &quot;kind&quot;: &quot;analytics#accountRef&quot;, # Analytics account reference.
          &quot;name&quot;: &quot;A String&quot;, # Account name.
        },
        &quot;profileRef&quot;: { # JSON template for a linked view (profile). # View (Profile) for this link.
          &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this view (profile) belongs.
          &quot;href&quot;: &quot;A String&quot;, # Link for this view (profile).
          &quot;id&quot;: &quot;A String&quot;, # View (Profile) ID.
          &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this view (profile) belongs.
          &quot;kind&quot;: &quot;analytics#profileRef&quot;, # Analytics view (profile) reference.
          &quot;name&quot;: &quot;A String&quot;, # Name of this view (profile).
          &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY to which this view (profile) belongs.
        },
        &quot;webPropertyRef&quot;: { # JSON template for a web property reference. # Web property for this link.
          &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
          &quot;href&quot;: &quot;A String&quot;, # Link for this web property.
          &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
          &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
          &quot;kind&quot;: &quot;analytics#webPropertyRef&quot;, # Analytics web property reference.
          &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
        },
      },
      &quot;id&quot;: &quot;A String&quot;, # Entity user link ID
      &quot;kind&quot;: &quot;analytics#entityUserLink&quot;, # Resource type for entity user link.
      &quot;permissions&quot;: { # Permissions the user has for this entity.
        &quot;effective&quot;: [ # Effective permissions represent all the permissions that a user has for this entity. These include any implied permissions (e.g., EDIT implies VIEW) or inherited permissions from the parent entity. Effective permissions are read-only.
          &quot;A String&quot;,
        ],
        &quot;local&quot;: [ # Permissions that a user has been assigned at this very level. Does not include any implied or inherited permissions. Local permissions are modifiable.
          &quot;A String&quot;,
        ],
      },
      &quot;selfLink&quot;: &quot;A String&quot;, # Self link for this resource.
      &quot;userRef&quot;: { # JSON template for a user reference. # User reference.
        &quot;email&quot;: &quot;A String&quot;, # Email ID of this user.
        &quot;id&quot;: &quot;A String&quot;, # User ID.
        &quot;kind&quot;: &quot;analytics#userRef&quot;,
      },
    },
  ],
  &quot;itemsPerPage&quot;: 42, # The maximum number of entries the response can contain, regardless of the actual number of entries returned. Its value ranges from 1 to 1000 with a value of 1000 by default, or otherwise specified by the max-results query parameter.
  &quot;kind&quot;: &quot;analytics#entityUserLinks&quot;, # Collection type.
  &quot;nextLink&quot;: &quot;A String&quot;, # Next link for this account collection.
  &quot;previousLink&quot;: &quot;A String&quot;, # Previous link for this account collection.
  &quot;startIndex&quot;: 42, # The starting index of the entries, which is 1 by default or otherwise specified by the start-index query parameter.
  &quot;totalResults&quot;: 42, # The total number of results for the query, regardless of the number of results in the response.
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(accountId, linkId, body=None)</code>
  <pre>Updates permissions for an existing user on the given account.

Args:
  accountId: string, Account ID to update the account-user link for. (required)
  linkId: string, Link ID to update the account-user link for. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for an Analytics Entity-User Link. Returns permissions that a user has for an entity.
  &quot;entity&quot;: { # Entity for this link. It can be an account, a web property, or a view (profile).
    &quot;accountRef&quot;: { # JSON template for a linked account. # Account for this link.
      &quot;href&quot;: &quot;A String&quot;, # Link for this account.
      &quot;id&quot;: &quot;A String&quot;, # Account ID.
      &quot;kind&quot;: &quot;analytics#accountRef&quot;, # Analytics account reference.
      &quot;name&quot;: &quot;A String&quot;, # Account name.
    },
    &quot;profileRef&quot;: { # JSON template for a linked view (profile). # View (Profile) for this link.
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this view (profile) belongs.
      &quot;href&quot;: &quot;A String&quot;, # Link for this view (profile).
      &quot;id&quot;: &quot;A String&quot;, # View (Profile) ID.
      &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this view (profile) belongs.
      &quot;kind&quot;: &quot;analytics#profileRef&quot;, # Analytics view (profile) reference.
      &quot;name&quot;: &quot;A String&quot;, # Name of this view (profile).
      &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY to which this view (profile) belongs.
    },
    &quot;webPropertyRef&quot;: { # JSON template for a web property reference. # Web property for this link.
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
      &quot;href&quot;: &quot;A String&quot;, # Link for this web property.
      &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
      &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
      &quot;kind&quot;: &quot;analytics#webPropertyRef&quot;, # Analytics web property reference.
      &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
    },
  },
  &quot;id&quot;: &quot;A String&quot;, # Entity user link ID
  &quot;kind&quot;: &quot;analytics#entityUserLink&quot;, # Resource type for entity user link.
  &quot;permissions&quot;: { # Permissions the user has for this entity.
    &quot;effective&quot;: [ # Effective permissions represent all the permissions that a user has for this entity. These include any implied permissions (e.g., EDIT implies VIEW) or inherited permissions from the parent entity. Effective permissions are read-only.
      &quot;A String&quot;,
    ],
    &quot;local&quot;: [ # Permissions that a user has been assigned at this very level. Does not include any implied or inherited permissions. Local permissions are modifiable.
      &quot;A String&quot;,
    ],
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Self link for this resource.
  &quot;userRef&quot;: { # JSON template for a user reference. # User reference.
    &quot;email&quot;: &quot;A String&quot;, # Email ID of this user.
    &quot;id&quot;: &quot;A String&quot;, # User ID.
    &quot;kind&quot;: &quot;analytics#userRef&quot;,
  },
}


Returns:
  An object of the form:

    { # JSON template for an Analytics Entity-User Link. Returns permissions that a user has for an entity.
  &quot;entity&quot;: { # Entity for this link. It can be an account, a web property, or a view (profile).
    &quot;accountRef&quot;: { # JSON template for a linked account. # Account for this link.
      &quot;href&quot;: &quot;A String&quot;, # Link for this account.
      &quot;id&quot;: &quot;A String&quot;, # Account ID.
      &quot;kind&quot;: &quot;analytics#accountRef&quot;, # Analytics account reference.
      &quot;name&quot;: &quot;A String&quot;, # Account name.
    },
    &quot;profileRef&quot;: { # JSON template for a linked view (profile). # View (Profile) for this link.
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this view (profile) belongs.
      &quot;href&quot;: &quot;A String&quot;, # Link for this view (profile).
      &quot;id&quot;: &quot;A String&quot;, # View (Profile) ID.
      &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this view (profile) belongs.
      &quot;kind&quot;: &quot;analytics#profileRef&quot;, # Analytics view (profile) reference.
      &quot;name&quot;: &quot;A String&quot;, # Name of this view (profile).
      &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY to which this view (profile) belongs.
    },
    &quot;webPropertyRef&quot;: { # JSON template for a web property reference. # Web property for this link.
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
      &quot;href&quot;: &quot;A String&quot;, # Link for this web property.
      &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
      &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
      &quot;kind&quot;: &quot;analytics#webPropertyRef&quot;, # Analytics web property reference.
      &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
    },
  },
  &quot;id&quot;: &quot;A String&quot;, # Entity user link ID
  &quot;kind&quot;: &quot;analytics#entityUserLink&quot;, # Resource type for entity user link.
  &quot;permissions&quot;: { # Permissions the user has for this entity.
    &quot;effective&quot;: [ # Effective permissions represent all the permissions that a user has for this entity. These include any implied permissions (e.g., EDIT implies VIEW) or inherited permissions from the parent entity. Effective permissions are read-only.
      &quot;A String&quot;,
    ],
    &quot;local&quot;: [ # Permissions that a user has been assigned at this very level. Does not include any implied or inherited permissions. Local permissions are modifiable.
      &quot;A String&quot;,
    ],
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Self link for this resource.
  &quot;userRef&quot;: { # JSON template for a user reference. # User reference.
    &quot;email&quot;: &quot;A String&quot;, # Email ID of this user.
    &quot;id&quot;: &quot;A String&quot;, # User ID.
    &quot;kind&quot;: &quot;analytics#userRef&quot;,
  },
}</pre>
</div>

</body></html>