<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, start_index=None, max_results=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;userRef&quot;: { # JSON template for a user reference. # User reference.
      &quot;email&quot;: &quot;A String&quot;, # Email ID of this user.
      &quot;kind&quot;: &quot;analytics#userRef&quot;,
      &quot;id&quot;: &quot;A String&quot;, # User ID.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # Self link for this resource.
    &quot;kind&quot;: &quot;analytics#entityUserLink&quot;, # Resource type for entity user link.
    &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;kind&quot;: &quot;analytics#accountRef&quot;, # Analytics account reference.
        &quot;name&quot;: &quot;A String&quot;, # Account name.
        &quot;id&quot;: &quot;A String&quot;, # Account ID.
      },
      &quot;profileRef&quot;: { # JSON template for a linked view (profile). # View (Profile) for this link.
        &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;href&quot;: &quot;A String&quot;, # Link for 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;id&quot;: &quot;A String&quot;, # View (Profile) ID.
        &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this view (profile) belongs.
      },
      &quot;webPropertyRef&quot;: { # JSON template for a web property reference. # Web property for this link.
        &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
        &quot;href&quot;: &quot;A String&quot;, # Link for this web property.
        &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
        &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
        &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
        &quot;kind&quot;: &quot;analytics#webPropertyRef&quot;, # Analytics web property reference.
      },
    },
    &quot;id&quot;: &quot;A String&quot;, # Entity user link ID
    &quot;permissions&quot;: { # Permissions the user has for this entity.
      &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;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;,
      ],
    },
  }


Returns:
  An object of the form:

    { # JSON template for an Analytics Entity-User Link. Returns permissions that a user has for an entity.
      &quot;userRef&quot;: { # JSON template for a user reference. # User reference.
        &quot;email&quot;: &quot;A String&quot;, # Email ID of this user.
        &quot;kind&quot;: &quot;analytics#userRef&quot;,
        &quot;id&quot;: &quot;A String&quot;, # User ID.
      },
      &quot;selfLink&quot;: &quot;A String&quot;, # Self link for this resource.
      &quot;kind&quot;: &quot;analytics#entityUserLink&quot;, # Resource type for entity user link.
      &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;kind&quot;: &quot;analytics#accountRef&quot;, # Analytics account reference.
          &quot;name&quot;: &quot;A String&quot;, # Account name.
          &quot;id&quot;: &quot;A String&quot;, # Account ID.
        },
        &quot;profileRef&quot;: { # JSON template for a linked view (profile). # View (Profile) for this link.
          &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;href&quot;: &quot;A String&quot;, # Link for 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;id&quot;: &quot;A String&quot;, # View (Profile) ID.
          &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this view (profile) belongs.
        },
        &quot;webPropertyRef&quot;: { # JSON template for a web property reference. # Web property for this link.
          &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
          &quot;href&quot;: &quot;A String&quot;, # Link for this web property.
          &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
          &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
          &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
          &quot;kind&quot;: &quot;analytics#webPropertyRef&quot;, # Analytics web property reference.
        },
      },
      &quot;id&quot;: &quot;A String&quot;, # Entity user link ID
      &quot;permissions&quot;: { # Permissions the user has for this entity.
        &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;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;,
        ],
      },
    }</pre>
</div>

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

Args:
  accountId: string, Account ID to retrieve the user links for. (required)
  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.
  max_results: integer, The maximum number of account-user links to include in this response.

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;previousLink&quot;: &quot;A String&quot;, # Previous link for this account collection.
    &quot;nextLink&quot;: &quot;A String&quot;, # Next link for this account collection.
    &quot;totalResults&quot;: 42, # The total number of results for the query, regardless of the number of results in the response.
    &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;userRef&quot;: { # JSON template for a user reference. # User reference.
            &quot;email&quot;: &quot;A String&quot;, # Email ID of this user.
            &quot;kind&quot;: &quot;analytics#userRef&quot;,
            &quot;id&quot;: &quot;A String&quot;, # User ID.
          },
          &quot;selfLink&quot;: &quot;A String&quot;, # Self link for this resource.
          &quot;kind&quot;: &quot;analytics#entityUserLink&quot;, # Resource type for entity user link.
          &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;kind&quot;: &quot;analytics#accountRef&quot;, # Analytics account reference.
              &quot;name&quot;: &quot;A String&quot;, # Account name.
              &quot;id&quot;: &quot;A String&quot;, # Account ID.
            },
            &quot;profileRef&quot;: { # JSON template for a linked view (profile). # View (Profile) for this link.
              &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;href&quot;: &quot;A String&quot;, # Link for 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;id&quot;: &quot;A String&quot;, # View (Profile) ID.
              &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this view (profile) belongs.
            },
            &quot;webPropertyRef&quot;: { # JSON template for a web property reference. # Web property for this link.
              &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
              &quot;href&quot;: &quot;A String&quot;, # Link for this web property.
              &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
              &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
              &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
              &quot;kind&quot;: &quot;analytics#webPropertyRef&quot;, # Analytics web property reference.
            },
          },
          &quot;id&quot;: &quot;A String&quot;, # Entity user link ID
          &quot;permissions&quot;: { # Permissions the user has for this entity.
            &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;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;kind&quot;: &quot;analytics#entityUserLinks&quot;, # Collection type.
    &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;startIndex&quot;: 42, # The starting index of the entries, which is 1 by default or otherwise specified by the start-index query parameter.
  }</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;userRef&quot;: { # JSON template for a user reference. # User reference.
      &quot;email&quot;: &quot;A String&quot;, # Email ID of this user.
      &quot;kind&quot;: &quot;analytics#userRef&quot;,
      &quot;id&quot;: &quot;A String&quot;, # User ID.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # Self link for this resource.
    &quot;kind&quot;: &quot;analytics#entityUserLink&quot;, # Resource type for entity user link.
    &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;kind&quot;: &quot;analytics#accountRef&quot;, # Analytics account reference.
        &quot;name&quot;: &quot;A String&quot;, # Account name.
        &quot;id&quot;: &quot;A String&quot;, # Account ID.
      },
      &quot;profileRef&quot;: { # JSON template for a linked view (profile). # View (Profile) for this link.
        &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;href&quot;: &quot;A String&quot;, # Link for 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;id&quot;: &quot;A String&quot;, # View (Profile) ID.
        &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this view (profile) belongs.
      },
      &quot;webPropertyRef&quot;: { # JSON template for a web property reference. # Web property for this link.
        &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
        &quot;href&quot;: &quot;A String&quot;, # Link for this web property.
        &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
        &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
        &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
        &quot;kind&quot;: &quot;analytics#webPropertyRef&quot;, # Analytics web property reference.
      },
    },
    &quot;id&quot;: &quot;A String&quot;, # Entity user link ID
    &quot;permissions&quot;: { # Permissions the user has for this entity.
      &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;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;,
      ],
    },
  }


Returns:
  An object of the form:

    { # JSON template for an Analytics Entity-User Link. Returns permissions that a user has for an entity.
      &quot;userRef&quot;: { # JSON template for a user reference. # User reference.
        &quot;email&quot;: &quot;A String&quot;, # Email ID of this user.
        &quot;kind&quot;: &quot;analytics#userRef&quot;,
        &quot;id&quot;: &quot;A String&quot;, # User ID.
      },
      &quot;selfLink&quot;: &quot;A String&quot;, # Self link for this resource.
      &quot;kind&quot;: &quot;analytics#entityUserLink&quot;, # Resource type for entity user link.
      &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;kind&quot;: &quot;analytics#accountRef&quot;, # Analytics account reference.
          &quot;name&quot;: &quot;A String&quot;, # Account name.
          &quot;id&quot;: &quot;A String&quot;, # Account ID.
        },
        &quot;profileRef&quot;: { # JSON template for a linked view (profile). # View (Profile) for this link.
          &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;href&quot;: &quot;A String&quot;, # Link for 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;id&quot;: &quot;A String&quot;, # View (Profile) ID.
          &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this view (profile) belongs.
        },
        &quot;webPropertyRef&quot;: { # JSON template for a web property reference. # Web property for this link.
          &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
          &quot;href&quot;: &quot;A String&quot;, # Link for this web property.
          &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
          &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
          &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
          &quot;kind&quot;: &quot;analytics#webPropertyRef&quot;, # Analytics web property reference.
        },
      },
      &quot;id&quot;: &quot;A String&quot;, # Entity user link ID
      &quot;permissions&quot;: { # Permissions the user has for this entity.
        &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;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;,
        ],
      },
    }</pre>
</div>

</body></html>