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

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

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

{ # JSON template for an Analytics Entity-User Link. Returns permissions that a user has for an entity.
    "kind": "analytics#entityUserLink", # Resource type for entity user link.
    "entity": { # Entity for this link. It can be an account, a web property, or a view (profile).
      "accountRef": { # JSON template for a linked account. # Account for this link.
        "kind": "analytics#accountRef", # Analytics account reference.
        "href": "A String", # Link for this account.
        "id": "A String", # Account ID.
        "name": "A String", # Account name.
      },
      "profileRef": { # JSON template for a linked view (profile). # View (Profile) for this link.
        "kind": "analytics#profileRef", # Analytics view (profile) reference.
        "name": "A String", # Name of this view (profile).
        "internalWebPropertyId": "A String", # Internal ID for the web property to which this view (profile) belongs.
        "href": "A String", # Link for this view (profile).
        "webPropertyId": "A String", # Web property ID of the form UA-XXXXX-YY to which this view (profile) belongs.
        "id": "A String", # View (Profile) ID.
        "accountId": "A String", # Account ID to which this view (profile) belongs.
      },
      "webPropertyRef": { # JSON template for a web property reference. # Web property for this link.
        "kind": "analytics#webPropertyRef", # Analytics web property reference.
        "name": "A String", # Name of this web property.
        "internalWebPropertyId": "A String", # Internal ID for this web property.
        "href": "A String", # Link for this web property.
        "id": "A String", # Web property ID of the form UA-XXXXX-YY.
        "accountId": "A String", # Account ID to which this web property belongs.
      },
    },
    "userRef": { # JSON template for a user reference. # User reference.
      "kind": "analytics#userRef",
      "email": "A String", # Email ID of this user.
      "id": "A String", # User ID.
    },
    "id": "A String", # Entity user link ID
    "selfLink": "A String", # Self link for this resource.
    "permissions": { # Permissions the user has for this entity.
      "local": [ # Permissions that a user has been assigned at this very level. Does not include any implied or inherited permissions. Local permissions are modifiable.
        "A String",
      ],
      "effective": [ # 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.
        "A String",
      ],
    },
  }


Returns:
  An object of the form:

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

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

Args:
  accountId: string, Account ID which the given view (profile) belongs to. (required)
  webPropertyId: string, Web Property ID which the given view (profile) belongs to. Can either be a specific web property ID or '~all', which refers to all the web properties that user has access to. (required)
  profileId: string, View (Profile) ID to retrieve the profile-user links for. Can either be a specific profile ID or '~all', which refers to all the profiles that user has access to. (required)
  max_results: integer, The maximum number of profile-user links to include in this response.
  start_index: integer, An index of the first profile-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.
    "kind": "analytics#entityUserLinks", # Collection type.
    "items": [ # A list of entity user links.
      { # JSON template for an Analytics Entity-User Link. Returns permissions that a user has for an entity.
          "kind": "analytics#entityUserLink", # Resource type for entity user link.
          "entity": { # Entity for this link. It can be an account, a web property, or a view (profile).
            "accountRef": { # JSON template for a linked account. # Account for this link.
              "kind": "analytics#accountRef", # Analytics account reference.
              "href": "A String", # Link for this account.
              "id": "A String", # Account ID.
              "name": "A String", # Account name.
            },
            "profileRef": { # JSON template for a linked view (profile). # View (Profile) for this link.
              "kind": "analytics#profileRef", # Analytics view (profile) reference.
              "name": "A String", # Name of this view (profile).
              "internalWebPropertyId": "A String", # Internal ID for the web property to which this view (profile) belongs.
              "href": "A String", # Link for this view (profile).
              "webPropertyId": "A String", # Web property ID of the form UA-XXXXX-YY to which this view (profile) belongs.
              "id": "A String", # View (Profile) ID.
              "accountId": "A String", # Account ID to which this view (profile) belongs.
            },
            "webPropertyRef": { # JSON template for a web property reference. # Web property for this link.
              "kind": "analytics#webPropertyRef", # Analytics web property reference.
              "name": "A String", # Name of this web property.
              "internalWebPropertyId": "A String", # Internal ID for this web property.
              "href": "A String", # Link for this web property.
              "id": "A String", # Web property ID of the form UA-XXXXX-YY.
              "accountId": "A String", # Account ID to which this web property belongs.
            },
          },
          "userRef": { # JSON template for a user reference. # User reference.
            "kind": "analytics#userRef",
            "email": "A String", # Email ID of this user.
            "id": "A String", # User ID.
          },
          "id": "A String", # Entity user link ID
          "selfLink": "A String", # Self link for this resource.
          "permissions": { # Permissions the user has for this entity.
            "local": [ # Permissions that a user has been assigned at this very level. Does not include any implied or inherited permissions. Local permissions are modifiable.
              "A String",
            ],
            "effective": [ # 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.
              "A String",
            ],
          },
        },
    ],
    "itemsPerPage": 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.
    "previousLink": "A String", # Previous link for this account collection.
    "startIndex": 42, # The starting index of the entries, which is 1 by default or otherwise specified by the start-index query parameter.
    "nextLink": "A String", # Next link for this account collection.
    "totalResults": 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, webPropertyId, profileId, linkId, body)</code>
  <pre>Updates permissions for an existing user on the given view (profile).

Args:
  accountId: string, Account ID to update the user link for. (required)
  webPropertyId: string, Web Property ID to update the user link for. (required)
  profileId: string, View (Profile ID) to update the user link for. (required)
  linkId: string, Link ID to update the user link for. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # JSON template for an Analytics Entity-User Link. Returns permissions that a user has for an entity.
    "kind": "analytics#entityUserLink", # Resource type for entity user link.
    "entity": { # Entity for this link. It can be an account, a web property, or a view (profile).
      "accountRef": { # JSON template for a linked account. # Account for this link.
        "kind": "analytics#accountRef", # Analytics account reference.
        "href": "A String", # Link for this account.
        "id": "A String", # Account ID.
        "name": "A String", # Account name.
      },
      "profileRef": { # JSON template for a linked view (profile). # View (Profile) for this link.
        "kind": "analytics#profileRef", # Analytics view (profile) reference.
        "name": "A String", # Name of this view (profile).
        "internalWebPropertyId": "A String", # Internal ID for the web property to which this view (profile) belongs.
        "href": "A String", # Link for this view (profile).
        "webPropertyId": "A String", # Web property ID of the form UA-XXXXX-YY to which this view (profile) belongs.
        "id": "A String", # View (Profile) ID.
        "accountId": "A String", # Account ID to which this view (profile) belongs.
      },
      "webPropertyRef": { # JSON template for a web property reference. # Web property for this link.
        "kind": "analytics#webPropertyRef", # Analytics web property reference.
        "name": "A String", # Name of this web property.
        "internalWebPropertyId": "A String", # Internal ID for this web property.
        "href": "A String", # Link for this web property.
        "id": "A String", # Web property ID of the form UA-XXXXX-YY.
        "accountId": "A String", # Account ID to which this web property belongs.
      },
    },
    "userRef": { # JSON template for a user reference. # User reference.
      "kind": "analytics#userRef",
      "email": "A String", # Email ID of this user.
      "id": "A String", # User ID.
    },
    "id": "A String", # Entity user link ID
    "selfLink": "A String", # Self link for this resource.
    "permissions": { # Permissions the user has for this entity.
      "local": [ # Permissions that a user has been assigned at this very level. Does not include any implied or inherited permissions. Local permissions are modifiable.
        "A String",
      ],
      "effective": [ # 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.
        "A String",
      ],
    },
  }


Returns:
  An object of the form:

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

</body></html>