<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="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.liveChatModerators.html">liveChatModerators</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(id)</a></code></p>
<p class="firstline">Removes a chat moderator.</p>
<p class="toc_element">
  <code><a href="#insert">insert(part, body=None)</a></code></p>
<p class="firstline">Adds a new moderator for the chat.</p>
<p class="toc_element">
  <code><a href="#list">list(liveChatId, part, maxResults=None, pageToken=None)</a></code></p>
<p class="firstline">Lists moderators for a live chat.</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>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(id)</code>
  <pre>Removes a chat moderator.

Args:
  id: string, The id parameter identifies the chat moderator to remove. The value uniquely identifies both the moderator and the chat. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(part, body=None)</code>
  <pre>Adds a new moderator for the chat.

Args:
  part: string, The part parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response returns. Set the parameter value to snippet. (required)
  body: object, The request body.
    The object takes the form of:

{ # A liveChatModerator resource represents a moderator for a YouTube live chat. A chat moderator has the ability to ban/unban users from a chat, remove message, etc.
    &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the moderator.
    &quot;kind&quot;: &quot;youtube#liveChatModerator&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveChatModerator&quot;.
    &quot;snippet&quot;: { # The snippet object contains basic details about the moderator.
      &quot;liveChatId&quot;: &quot;A String&quot;, # The ID of the live chat this moderator can act on.
      &quot;moderatorDetails&quot;: { # Details about the moderator.
        &quot;channelId&quot;: &quot;A String&quot;, # The YouTube channel ID.
        &quot;channelUrl&quot;: &quot;A String&quot;, # The channel&#x27;s URL.
        &quot;displayName&quot;: &quot;A String&quot;, # The channel&#x27;s display name.
        &quot;profileImageUrl&quot;: &quot;A String&quot;, # The channels&#x27;s avatar URL.
      },
    },
  }


Returns:
  An object of the form:

    { # A liveChatModerator resource represents a moderator for a YouTube live chat. A chat moderator has the ability to ban/unban users from a chat, remove message, etc.
      &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
      &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the moderator.
      &quot;kind&quot;: &quot;youtube#liveChatModerator&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveChatModerator&quot;.
      &quot;snippet&quot;: { # The snippet object contains basic details about the moderator.
        &quot;liveChatId&quot;: &quot;A String&quot;, # The ID of the live chat this moderator can act on.
        &quot;moderatorDetails&quot;: { # Details about the moderator.
          &quot;channelId&quot;: &quot;A String&quot;, # The YouTube channel ID.
          &quot;channelUrl&quot;: &quot;A String&quot;, # The channel&#x27;s URL.
          &quot;displayName&quot;: &quot;A String&quot;, # The channel&#x27;s display name.
          &quot;profileImageUrl&quot;: &quot;A String&quot;, # The channels&#x27;s avatar URL.
        },
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(liveChatId, part, maxResults=None, pageToken=None)</code>
  <pre>Lists moderators for a live chat.

Args:
  liveChatId: string, The liveChatId parameter specifies the YouTube live chat for which the API should return moderators. (required)
  part: string, The part parameter specifies the liveChatModerator resource parts that the API response will include. Supported values are id and snippet. (required)
  maxResults: integer, The maxResults parameter specifies the maximum number of items that should be returned in the result set.
  pageToken: string, The pageToken parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved.

Returns:
  An object of the form:

    {
    &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    &quot;eventId&quot;: &quot;A String&quot;, # Serialized EventId of the request which produced this response.
    &quot;items&quot;: [ # A list of moderators that match the request criteria.
      { # A liveChatModerator resource represents a moderator for a YouTube live chat. A chat moderator has the ability to ban/unban users from a chat, remove message, etc.
          &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
          &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube assigns to uniquely identify the moderator.
          &quot;kind&quot;: &quot;youtube#liveChatModerator&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveChatModerator&quot;.
          &quot;snippet&quot;: { # The snippet object contains basic details about the moderator.
            &quot;liveChatId&quot;: &quot;A String&quot;, # The ID of the live chat this moderator can act on.
            &quot;moderatorDetails&quot;: { # Details about the moderator.
              &quot;channelId&quot;: &quot;A String&quot;, # The YouTube channel ID.
              &quot;channelUrl&quot;: &quot;A String&quot;, # The channel&#x27;s URL.
              &quot;displayName&quot;: &quot;A String&quot;, # The channel&#x27;s display name.
              &quot;profileImageUrl&quot;: &quot;A String&quot;, # The channels&#x27;s avatar URL.
            },
          },
        },
    ],
    &quot;kind&quot;: &quot;youtube#liveChatModeratorListResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#liveChatModeratorListResponse&quot;.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
    &quot;pageInfo&quot;: { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page.
      &quot;resultsPerPage&quot;: 42, # The number of results included in the API response.
      &quot;totalResults&quot;: 42, # The total number of results in the result set.
    },
    &quot;prevPageToken&quot;: &quot;A String&quot;, # The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
    &quot;tokenPagination&quot;: { # Stub token pagination template to suppress results.
    },
    &quot;visitorId&quot;: &quot;A String&quot;, # The visitorId identifies the visitor.
  }</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>

</body></html>