<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="analyticsadmin_v1alpha.html">Google Analytics Admin API</a> . <a href="analyticsadmin_v1alpha.properties.html">properties</a> . <a href="analyticsadmin_v1alpha.properties.userLinks.html">userLinks</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#audit">audit(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all user links on an account or property, including implicit ones that come from effective permissions granted by groups or organization admin roles. If a returned user link does not have direct permissions, they cannot be removed from the account or property directly with the DeleteUserLink command. They have to be removed from the group/etc that gives them permissions, which is currently only usable/discoverable in the GA or GMP UIs.</p>
<p class="toc_element">
  <code><a href="#audit_next">audit_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#batchCreate">batchCreate(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates information about multiple users' links to an account or property. This method is transactional. If any UserLink cannot be created, none of the UserLinks will be created.</p>
<p class="toc_element">
  <code><a href="#batchDelete">batchDelete(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes information about multiple users' links to an account or property.</p>
<p class="toc_element">
  <code><a href="#batchGet">batchGet(parent, names=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets information about multiple users' links to an account or property.</p>
<p class="toc_element">
  <code><a href="#batchUpdate">batchUpdate(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates information about multiple users' links to an account or property.</p>
<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="#create">create(parent, body=None, notifyNewUser=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a user link on an account or property. If the user with the specified email already has permissions on the account or property, then the user's existing permissions will be unioned with the permissions specified in the new UserLink.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a user link on an account or property.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets information about a user's link to an account or property.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all user links on an account or property.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a user link on an account or property.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="audit">audit(parent, body=None, x__xgafv=None)</code>
  <pre>Lists all user links on an account or property, including implicit ones that come from effective permissions granted by groups or organization admin roles. If a returned user link does not have direct permissions, they cannot be removed from the account or property directly with the DeleteUserLink command. They have to be removed from the group/etc that gives them permissions, which is currently only usable/discoverable in the GA or GMP UIs.

Args:
  parent: string, Required. Example format: accounts/1234 (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for AuditUserLinks RPC.
  &quot;pageSize&quot;: 42, # The maximum number of user links to return. The service may return fewer than this value. If unspecified, at most 1000 user links will be returned. The maximum value is 5000; values above 5000 will be coerced to 5000.
  &quot;pageToken&quot;: &quot;A String&quot;, # A page token, received from a previous `AuditUserLinks` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `AuditUserLinks` must match the call that provided the page token.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for AuditUserLinks RPC.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.
  &quot;userLinks&quot;: [ # List of AuditUserLinks. These will be ordered stably, but in an arbitrary order.
    { # Read-only resource used to summarize a principal&#x27;s effective roles.
      &quot;directRoles&quot;: [ # Roles directly assigned to this user for this entity. Format: predefinedRoles/read Excludes roles that are inherited from an account (if this is for a property), group, or organization admin role.
        &quot;A String&quot;,
      ],
      &quot;effectiveRoles&quot;: [ # Union of all permissions a user has at this account or property (includes direct permissions, group-inherited permissions, etc.). Format: predefinedRoles/read
        &quot;A String&quot;,
      ],
      &quot;emailAddress&quot;: &quot;A String&quot;, # Email address of the linked user
      &quot;name&quot;: &quot;A String&quot;, # Example format: properties/1234/userLinks/5678
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="audit_next">audit_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="batchCreate">batchCreate(parent, body=None, x__xgafv=None)</code>
  <pre>Creates information about multiple users&#x27; links to an account or property. This method is transactional. If any UserLink cannot be created, none of the UserLinks will be created.

Args:
  parent: string, Required. The account or property that all user links in the request are for. This field is required. The parent field in the CreateUserLinkRequest messages must either be empty or match this field. Example format: accounts/1234 (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for BatchCreateUserLinks RPC.
  &quot;notifyNewUsers&quot;: True or False, # Optional. If set, then email the new users notifying them that they&#x27;ve been granted permissions to the resource. Regardless of whether this is set or not, notify_new_user field inside each individual request is ignored.
  &quot;requests&quot;: [ # Required. The requests specifying the user links to create. A maximum of 1000 user links can be created in a batch.
    { # Request message for CreateUserLink RPC. Users can have multiple email addresses associated with their Google account, and one of these email addresses is the &quot;primary&quot; email address. Any of the email addresses associated with a Google account may be used for a new UserLink, but the returned UserLink will always contain the &quot;primary&quot; email address. As a result, the input and output email address for this request may differ.
      &quot;notifyNewUser&quot;: True or False, # Optional. If set, then email the new user notifying them that they&#x27;ve been granted permissions to the resource.
      &quot;parent&quot;: &quot;A String&quot;, # Required. Example format: accounts/1234
      &quot;userLink&quot;: { # A resource message representing a user&#x27;s permissions on an Account or Property resource. # Required. The user link to create.
        &quot;directRoles&quot;: [ # Roles directly assigned to this user for this account or property. Valid values: predefinedRoles/read predefinedRoles/collaborate predefinedRoles/edit predefinedRoles/manage-users Excludes roles that are inherited from a higher-level entity, group, or organization admin role. A UserLink that is updated to have an empty list of direct_roles will be deleted.
          &quot;A String&quot;,
        ],
        &quot;emailAddress&quot;: &quot;A String&quot;, # Immutable. Email address of the user to link
        &quot;name&quot;: &quot;A String&quot;, # Output only. Example format: properties/1234/userLinks/5678
      },
    },
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for BatchCreateUserLinks RPC.
  &quot;userLinks&quot;: [ # The user links created.
    { # A resource message representing a user&#x27;s permissions on an Account or Property resource.
      &quot;directRoles&quot;: [ # Roles directly assigned to this user for this account or property. Valid values: predefinedRoles/read predefinedRoles/collaborate predefinedRoles/edit predefinedRoles/manage-users Excludes roles that are inherited from a higher-level entity, group, or organization admin role. A UserLink that is updated to have an empty list of direct_roles will be deleted.
        &quot;A String&quot;,
      ],
      &quot;emailAddress&quot;: &quot;A String&quot;, # Immutable. Email address of the user to link
      &quot;name&quot;: &quot;A String&quot;, # Output only. Example format: properties/1234/userLinks/5678
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="batchDelete">batchDelete(parent, body=None, x__xgafv=None)</code>
  <pre>Deletes information about multiple users&#x27; links to an account or property.

Args:
  parent: string, Required. The account or property that all user links in the request are for. The parent of all values for user link names to delete must match this field. Example format: accounts/1234 (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for BatchDeleteUserLinks RPC.
  &quot;requests&quot;: [ # Required. The requests specifying the user links to update. A maximum of 1000 user links can be updated in a batch.
    { # Request message for DeleteUserLink RPC.
      &quot;name&quot;: &quot;A String&quot;, # Required. Example format: accounts/1234/userLinks/5678
    },
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

<div class="method">
    <code class="details" id="batchGet">batchGet(parent, names=None, x__xgafv=None)</code>
  <pre>Gets information about multiple users&#x27; links to an account or property.

Args:
  parent: string, Required. The account or property that all user links in the request are for. The parent of all provided values for the &#x27;names&#x27; field must match this field. Example format: accounts/1234 (required)
  names: string, Required. The names of the user links to retrieve. A maximum of 1000 user links can be retrieved in a batch. Format: accounts/{accountId}/userLinks/{userLinkId} (repeated)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for BatchGetUserLinks RPC.
  &quot;userLinks&quot;: [ # The requested user links.
    { # A resource message representing a user&#x27;s permissions on an Account or Property resource.
      &quot;directRoles&quot;: [ # Roles directly assigned to this user for this account or property. Valid values: predefinedRoles/read predefinedRoles/collaborate predefinedRoles/edit predefinedRoles/manage-users Excludes roles that are inherited from a higher-level entity, group, or organization admin role. A UserLink that is updated to have an empty list of direct_roles will be deleted.
        &quot;A String&quot;,
      ],
      &quot;emailAddress&quot;: &quot;A String&quot;, # Immutable. Email address of the user to link
      &quot;name&quot;: &quot;A String&quot;, # Output only. Example format: properties/1234/userLinks/5678
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="batchUpdate">batchUpdate(parent, body=None, x__xgafv=None)</code>
  <pre>Updates information about multiple users&#x27; links to an account or property.

Args:
  parent: string, Required. The account or property that all user links in the request are for. The parent field in the UpdateUserLinkRequest messages must either be empty or match this field. Example format: accounts/1234 (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for BatchUpdateUserLinks RPC.
  &quot;requests&quot;: [ # Required. The requests specifying the user links to update. A maximum of 1000 user links can be updated in a batch.
    { # Request message for UpdateUserLink RPC.
      &quot;userLink&quot;: { # A resource message representing a user&#x27;s permissions on an Account or Property resource. # Required. The user link to update.
        &quot;directRoles&quot;: [ # Roles directly assigned to this user for this account or property. Valid values: predefinedRoles/read predefinedRoles/collaborate predefinedRoles/edit predefinedRoles/manage-users Excludes roles that are inherited from a higher-level entity, group, or organization admin role. A UserLink that is updated to have an empty list of direct_roles will be deleted.
          &quot;A String&quot;,
        ],
        &quot;emailAddress&quot;: &quot;A String&quot;, # Immutable. Email address of the user to link
        &quot;name&quot;: &quot;A String&quot;, # Output only. Example format: properties/1234/userLinks/5678
      },
    },
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for BatchUpdateUserLinks RPC.
  &quot;userLinks&quot;: [ # The user links updated.
    { # A resource message representing a user&#x27;s permissions on an Account or Property resource.
      &quot;directRoles&quot;: [ # Roles directly assigned to this user for this account or property. Valid values: predefinedRoles/read predefinedRoles/collaborate predefinedRoles/edit predefinedRoles/manage-users Excludes roles that are inherited from a higher-level entity, group, or organization admin role. A UserLink that is updated to have an empty list of direct_roles will be deleted.
        &quot;A String&quot;,
      ],
      &quot;emailAddress&quot;: &quot;A String&quot;, # Immutable. Email address of the user to link
      &quot;name&quot;: &quot;A String&quot;, # Output only. Example format: properties/1234/userLinks/5678
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, notifyNewUser=None, x__xgafv=None)</code>
  <pre>Creates a user link on an account or property. If the user with the specified email already has permissions on the account or property, then the user&#x27;s existing permissions will be unioned with the permissions specified in the new UserLink.

Args:
  parent: string, Required. Example format: accounts/1234 (required)
  body: object, The request body.
    The object takes the form of:

{ # A resource message representing a user&#x27;s permissions on an Account or Property resource.
  &quot;directRoles&quot;: [ # Roles directly assigned to this user for this account or property. Valid values: predefinedRoles/read predefinedRoles/collaborate predefinedRoles/edit predefinedRoles/manage-users Excludes roles that are inherited from a higher-level entity, group, or organization admin role. A UserLink that is updated to have an empty list of direct_roles will be deleted.
    &quot;A String&quot;,
  ],
  &quot;emailAddress&quot;: &quot;A String&quot;, # Immutable. Email address of the user to link
  &quot;name&quot;: &quot;A String&quot;, # Output only. Example format: properties/1234/userLinks/5678
}

  notifyNewUser: boolean, Optional. If set, then email the new user notifying them that they&#x27;ve been granted permissions to the resource.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A resource message representing a user&#x27;s permissions on an Account or Property resource.
  &quot;directRoles&quot;: [ # Roles directly assigned to this user for this account or property. Valid values: predefinedRoles/read predefinedRoles/collaborate predefinedRoles/edit predefinedRoles/manage-users Excludes roles that are inherited from a higher-level entity, group, or organization admin role. A UserLink that is updated to have an empty list of direct_roles will be deleted.
    &quot;A String&quot;,
  ],
  &quot;emailAddress&quot;: &quot;A String&quot;, # Immutable. Email address of the user to link
  &quot;name&quot;: &quot;A String&quot;, # Output only. Example format: properties/1234/userLinks/5678
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a user link on an account or property.

Args:
  name: string, Required. Example format: accounts/1234/userLinks/5678 (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets information about a user&#x27;s link to an account or property.

Args:
  name: string, Required. Example format: accounts/1234/userLinks/5678 (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A resource message representing a user&#x27;s permissions on an Account or Property resource.
  &quot;directRoles&quot;: [ # Roles directly assigned to this user for this account or property. Valid values: predefinedRoles/read predefinedRoles/collaborate predefinedRoles/edit predefinedRoles/manage-users Excludes roles that are inherited from a higher-level entity, group, or organization admin role. A UserLink that is updated to have an empty list of direct_roles will be deleted.
    &quot;A String&quot;,
  ],
  &quot;emailAddress&quot;: &quot;A String&quot;, # Immutable. Email address of the user to link
  &quot;name&quot;: &quot;A String&quot;, # Output only. Example format: properties/1234/userLinks/5678
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists all user links on an account or property.

Args:
  parent: string, Required. Example format: accounts/1234 (required)
  pageSize: integer, The maximum number of user links to return. The service may return fewer than this value. If unspecified, at most 200 user links will be returned. The maximum value is 500; values above 500 will be coerced to 500.
  pageToken: string, A page token, received from a previous `ListUserLinks` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListUserLinks` must match the call that provided the page token.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for ListUserLinks RPC.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.
  &quot;userLinks&quot;: [ # List of UserLinks. These will be ordered stably, but in an arbitrary order.
    { # A resource message representing a user&#x27;s permissions on an Account or Property resource.
      &quot;directRoles&quot;: [ # Roles directly assigned to this user for this account or property. Valid values: predefinedRoles/read predefinedRoles/collaborate predefinedRoles/edit predefinedRoles/manage-users Excludes roles that are inherited from a higher-level entity, group, or organization admin role. A UserLink that is updated to have an empty list of direct_roles will be deleted.
        &quot;A String&quot;,
      ],
      &quot;emailAddress&quot;: &quot;A String&quot;, # Immutable. Email address of the user to link
      &quot;name&quot;: &quot;A String&quot;, # Output only. Example format: properties/1234/userLinks/5678
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, x__xgafv=None)</code>
  <pre>Updates a user link on an account or property.

Args:
  name: string, Output only. Example format: properties/1234/userLinks/5678 (required)
  body: object, The request body.
    The object takes the form of:

{ # A resource message representing a user&#x27;s permissions on an Account or Property resource.
  &quot;directRoles&quot;: [ # Roles directly assigned to this user for this account or property. Valid values: predefinedRoles/read predefinedRoles/collaborate predefinedRoles/edit predefinedRoles/manage-users Excludes roles that are inherited from a higher-level entity, group, or organization admin role. A UserLink that is updated to have an empty list of direct_roles will be deleted.
    &quot;A String&quot;,
  ],
  &quot;emailAddress&quot;: &quot;A String&quot;, # Immutable. Email address of the user to link
  &quot;name&quot;: &quot;A String&quot;, # Output only. Example format: properties/1234/userLinks/5678
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A resource message representing a user&#x27;s permissions on an Account or Property resource.
  &quot;directRoles&quot;: [ # Roles directly assigned to this user for this account or property. Valid values: predefinedRoles/read predefinedRoles/collaborate predefinedRoles/edit predefinedRoles/manage-users Excludes roles that are inherited from a higher-level entity, group, or organization admin role. A UserLink that is updated to have an empty list of direct_roles will be deleted.
    &quot;A String&quot;,
  ],
  &quot;emailAddress&quot;: &quot;A String&quot;, # Immutable. Email address of the user to link
  &quot;name&quot;: &quot;A String&quot;, # Output only. Example format: properties/1234/userLinks/5678
}</pre>
</div>

</body></html>