<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, start_index=None, max_results=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;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;kind&quot;: &quot;analytics#accountRef&quot;, # Analytics account reference.
        &quot;id&quot;: &quot;A String&quot;, # Account ID.
        &quot;href&quot;: &quot;A String&quot;, # Link for this account.
        &quot;name&quot;: &quot;A String&quot;, # Account name.
      },
      &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;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
        &quot;href&quot;: &quot;A String&quot;, # Link for this web property.
        &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;profileRef&quot;: { # JSON template for a linked view (profile). # View (Profile) for this link.
        &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY to which this view (profile) belongs.
        &quot;name&quot;: &quot;A String&quot;, # Name of this view (profile).
        &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this view (profile) belongs.
        &quot;id&quot;: &quot;A String&quot;, # View (Profile) ID.
        &quot;href&quot;: &quot;A String&quot;, # Link for this view (profile).
        &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;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;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;id&quot;: &quot;A String&quot;, # Entity user link ID
  }


Returns:
  An object of the form:

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

<div class="method">
    <code class="details" id="list">list(accountId, webPropertyId, start_index=None, max_results=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)
  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.
  max_results: integer, The maximum number of webProperty-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;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.
    &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;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;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;kind&quot;: &quot;analytics#accountRef&quot;, # Analytics account reference.
              &quot;id&quot;: &quot;A String&quot;, # Account ID.
              &quot;href&quot;: &quot;A String&quot;, # Link for this account.
              &quot;name&quot;: &quot;A String&quot;, # Account name.
            },
            &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;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
              &quot;href&quot;: &quot;A String&quot;, # Link for this web property.
              &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;profileRef&quot;: { # JSON template for a linked view (profile). # View (Profile) for this link.
              &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY to which this view (profile) belongs.
              &quot;name&quot;: &quot;A String&quot;, # Name of this view (profile).
              &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this view (profile) belongs.
              &quot;id&quot;: &quot;A String&quot;, # View (Profile) ID.
              &quot;href&quot;: &quot;A String&quot;, # Link for this view (profile).
              &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;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;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;id&quot;: &quot;A String&quot;, # Entity user link ID
        },
    ],
  }</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;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;kind&quot;: &quot;analytics#accountRef&quot;, # Analytics account reference.
        &quot;id&quot;: &quot;A String&quot;, # Account ID.
        &quot;href&quot;: &quot;A String&quot;, # Link for this account.
        &quot;name&quot;: &quot;A String&quot;, # Account name.
      },
      &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;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
        &quot;href&quot;: &quot;A String&quot;, # Link for this web property.
        &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;profileRef&quot;: { # JSON template for a linked view (profile). # View (Profile) for this link.
        &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY to which this view (profile) belongs.
        &quot;name&quot;: &quot;A String&quot;, # Name of this view (profile).
        &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this view (profile) belongs.
        &quot;id&quot;: &quot;A String&quot;, # View (Profile) ID.
        &quot;href&quot;: &quot;A String&quot;, # Link for this view (profile).
        &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;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;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;id&quot;: &quot;A String&quot;, # Entity user link ID
  }


Returns:
  An object of the form:

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

</body></html>