<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="tagmanager_v1.html">Tag Manager API</a> . <a href="tagmanager_v1.accounts.html">accounts</a> . <a href="tagmanager_v1.accounts.permissions.html">permissions</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="#create">create(accountId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a user's Account & Container Permissions.</p>
<p class="toc_element">
  <code><a href="#delete">delete(accountId, permissionId, x__xgafv=None)</a></code></p>
<p class="firstline">Removes a user from the account, revoking access to it and all of its containers.</p>
<p class="toc_element">
  <code><a href="#get">get(accountId, permissionId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a user's Account & Container Permissions.</p>
<p class="toc_element">
  <code><a href="#list">list(accountId, x__xgafv=None)</a></code></p>
<p class="firstline">List all users that have access to the account along with Account and Container Permissions granted to each of them.</p>
<p class="toc_element">
  <code><a href="#update">update(accountId, permissionId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a user's Account & Container Permissions.</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="create">create(accountId, body=None, x__xgafv=None)</code>
  <pre>Creates a user&#x27;s Account &amp; Container Permissions.

Args:
  accountId: string, The GTM Account ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents a user&#x27;s permissions to an account and its container.
  &quot;accountAccess&quot;: { # Defines the Google Tag Manager Account access permissions. # GTM Account access permissions. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
    &quot;permission&quot;: [ # List of Account permissions. Valid account permissions are read and manage. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
      &quot;A String&quot;,
    ],
  },
  &quot;accountId&quot;: &quot;A String&quot;, # GTM Account ID.
  &quot;containerAccess&quot;: [ # GTM Container access permissions. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
    { # Defines the Google Tag Manager Container access permissions.
      &quot;containerId&quot;: &quot;A String&quot;, # GTM Container ID. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
      &quot;permission&quot;: [ # List of Container permissions. Valid container permissions are: read, edit, delete, publish. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address. @mutable tagmanager.accounts.permissions.create
  &quot;permissionId&quot;: &quot;A String&quot;, # Account Permission ID.
}

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

Returns:
  An object of the form:

    { # Represents a user&#x27;s permissions to an account and its container.
  &quot;accountAccess&quot;: { # Defines the Google Tag Manager Account access permissions. # GTM Account access permissions. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
    &quot;permission&quot;: [ # List of Account permissions. Valid account permissions are read and manage. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
      &quot;A String&quot;,
    ],
  },
  &quot;accountId&quot;: &quot;A String&quot;, # GTM Account ID.
  &quot;containerAccess&quot;: [ # GTM Container access permissions. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
    { # Defines the Google Tag Manager Container access permissions.
      &quot;containerId&quot;: &quot;A String&quot;, # GTM Container ID. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
      &quot;permission&quot;: [ # List of Container permissions. Valid container permissions are: read, edit, delete, publish. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address. @mutable tagmanager.accounts.permissions.create
  &quot;permissionId&quot;: &quot;A String&quot;, # Account Permission ID.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(accountId, permissionId, x__xgafv=None)</code>
  <pre>Removes a user from the account, revoking access to it and all of its containers.

Args:
  accountId: string, The GTM Account ID. (required)
  permissionId: string, The GTM User ID. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(accountId, permissionId, x__xgafv=None)</code>
  <pre>Gets a user&#x27;s Account &amp; Container Permissions.

Args:
  accountId: string, The GTM Account ID. (required)
  permissionId: string, The GTM User ID. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a user&#x27;s permissions to an account and its container.
  &quot;accountAccess&quot;: { # Defines the Google Tag Manager Account access permissions. # GTM Account access permissions. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
    &quot;permission&quot;: [ # List of Account permissions. Valid account permissions are read and manage. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
      &quot;A String&quot;,
    ],
  },
  &quot;accountId&quot;: &quot;A String&quot;, # GTM Account ID.
  &quot;containerAccess&quot;: [ # GTM Container access permissions. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
    { # Defines the Google Tag Manager Container access permissions.
      &quot;containerId&quot;: &quot;A String&quot;, # GTM Container ID. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
      &quot;permission&quot;: [ # List of Container permissions. Valid container permissions are: read, edit, delete, publish. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address. @mutable tagmanager.accounts.permissions.create
  &quot;permissionId&quot;: &quot;A String&quot;, # Account Permission ID.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(accountId, x__xgafv=None)</code>
  <pre>List all users that have access to the account along with Account and Container Permissions granted to each of them.

Args:
  accountId: string, The GTM Account ID. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # List AccountUsers Response.
  &quot;userAccess&quot;: [ # All GTM AccountUsers of a GTM Account.
    { # Represents a user&#x27;s permissions to an account and its container.
      &quot;accountAccess&quot;: { # Defines the Google Tag Manager Account access permissions. # GTM Account access permissions. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
        &quot;permission&quot;: [ # List of Account permissions. Valid account permissions are read and manage. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
          &quot;A String&quot;,
        ],
      },
      &quot;accountId&quot;: &quot;A String&quot;, # GTM Account ID.
      &quot;containerAccess&quot;: [ # GTM Container access permissions. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
        { # Defines the Google Tag Manager Container access permissions.
          &quot;containerId&quot;: &quot;A String&quot;, # GTM Container ID. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
          &quot;permission&quot;: [ # List of Container permissions. Valid container permissions are: read, edit, delete, publish. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address. @mutable tagmanager.accounts.permissions.create
      &quot;permissionId&quot;: &quot;A String&quot;, # Account Permission ID.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(accountId, permissionId, body=None, x__xgafv=None)</code>
  <pre>Updates a user&#x27;s Account &amp; Container Permissions.

Args:
  accountId: string, The GTM Account ID. (required)
  permissionId: string, The GTM User ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents a user&#x27;s permissions to an account and its container.
  &quot;accountAccess&quot;: { # Defines the Google Tag Manager Account access permissions. # GTM Account access permissions. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
    &quot;permission&quot;: [ # List of Account permissions. Valid account permissions are read and manage. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
      &quot;A String&quot;,
    ],
  },
  &quot;accountId&quot;: &quot;A String&quot;, # GTM Account ID.
  &quot;containerAccess&quot;: [ # GTM Container access permissions. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
    { # Defines the Google Tag Manager Container access permissions.
      &quot;containerId&quot;: &quot;A String&quot;, # GTM Container ID. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
      &quot;permission&quot;: [ # List of Container permissions. Valid container permissions are: read, edit, delete, publish. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address. @mutable tagmanager.accounts.permissions.create
  &quot;permissionId&quot;: &quot;A String&quot;, # Account Permission ID.
}

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

Returns:
  An object of the form:

    { # Represents a user&#x27;s permissions to an account and its container.
  &quot;accountAccess&quot;: { # Defines the Google Tag Manager Account access permissions. # GTM Account access permissions. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
    &quot;permission&quot;: [ # List of Account permissions. Valid account permissions are read and manage. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
      &quot;A String&quot;,
    ],
  },
  &quot;accountId&quot;: &quot;A String&quot;, # GTM Account ID.
  &quot;containerAccess&quot;: [ # GTM Container access permissions. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
    { # Defines the Google Tag Manager Container access permissions.
      &quot;containerId&quot;: &quot;A String&quot;, # GTM Container ID. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
      &quot;permission&quot;: [ # List of Container permissions. Valid container permissions are: read, edit, delete, publish. @mutable tagmanager.accounts.permissions.create @mutable tagmanager.accounts.permissions.update
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;emailAddress&quot;: &quot;A String&quot;, # User&#x27;s email address. @mutable tagmanager.accounts.permissions.create
  &quot;permissionId&quot;: &quot;A String&quot;, # Account Permission ID.
}</pre>
</div>

</body></html>