<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.webpropertyUserLinks.html">webpropertyUserLinks</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(accountId, webPropertyId, linkId)</a></code></p>
<p class="firstline">Removes a user from the given web property.</p>
<p class="toc_element">
  <code><a href="#insert">insert(accountId, webPropertyId, body=None)</a></code></p>
<p class="firstline">Adds a new user to the given web property.</p>
<p class="toc_element">
  <code><a href="#list">list(accountId, webPropertyId, max_results=None, start_index=None)</a></code></p>
<p class="firstline">Lists webProperty-user links for a given web property.</p>
<p class="toc_element">
  <code><a href="#update">update(accountId, webPropertyId, linkId, body=None)</a></code></p>
<p class="firstline">Updates permissions for an existing user on the given web property.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(accountId, webPropertyId, linkId)</code>
  <pre>Removes a user from the given web property.

Args:
  accountId: string, Account ID to delete the user link for. (required)
  webPropertyId: string, Web Property 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, webPropertyId, body=None)</code>
  <pre>Adds a new user to the given web property.

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


Returns:
  An object of the form:

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

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

Args:
  accountId: string, Account ID which the given web property belongs to. (required)
  webPropertyId: string, Web Property ID for the webProperty-user links to retrieve. Can either be a specific web property ID or &#x27;~all&#x27;, which refers to all the web properties that user has access to. (required)
  max_results: integer, The maximum number of webProperty-user Links to include in this response.
  start_index: integer, An index of the first webProperty-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;id&quot;: &quot;A String&quot;, # Entity user link ID
          &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;name&quot;: &quot;A String&quot;, # Account name.
              &quot;kind&quot;: &quot;analytics#accountRef&quot;, # Analytics account reference.
              &quot;href&quot;: &quot;A String&quot;, # Link for this account.
              &quot;id&quot;: &quot;A String&quot;, # Account ID.
            },
            &quot;webPropertyRef&quot;: { # JSON template for a web property reference. # Web property for this link.
              &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
              &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
              &quot;kind&quot;: &quot;analytics#webPropertyRef&quot;, # Analytics web property reference.
              &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;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
            },
            &quot;profileRef&quot;: { # JSON template for a linked view (profile). # View (Profile) for this link.
              &quot;id&quot;: &quot;A String&quot;, # View (Profile) ID.
              &quot;name&quot;: &quot;A String&quot;, # Name of this view (profile).
              &quot;kind&quot;: &quot;analytics#profileRef&quot;, # Analytics view (profile) reference.
              &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this view (profile) belongs.
              &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this view (profile) belongs.
              &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;userRef&quot;: { # JSON template for a user reference. # User reference.
            &quot;id&quot;: &quot;A String&quot;, # User ID.
            &quot;email&quot;: &quot;A String&quot;, # Email ID of this user.
            &quot;kind&quot;: &quot;analytics#userRef&quot;,
          },
          &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;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;startIndex&quot;: 42, # The starting index of the entries, which is 1 by default or otherwise specified by the start-index query parameter.
    &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;totalResults&quot;: 42, # The total number of results for the query, regardless of the number of results in the response.
    &quot;previousLink&quot;: &quot;A String&quot;, # Previous link for this account collection.
    &quot;kind&quot;: &quot;analytics#entityUserLinks&quot;, # Collection type.
    &quot;nextLink&quot;: &quot;A String&quot;, # Next link for this account collection.
  }</pre>
</div>

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

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


Returns:
  An object of the form:

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

</body></html>