<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 v3</a> . <a href="youtube_v3.comments.html">comments</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="#delete">delete(id, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a resource.</p>
<p class="toc_element">
  <code><a href="#insert">insert(part, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Inserts a new resource into this collection.</p>
<p class="toc_element">
  <code><a href="#list">list(part, parentId=None, textFormat=None, maxResults=None, pageToken=None, id=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a list of resources, possibly filtered.</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="#markAsSpam">markAsSpam(id, x__xgafv=None)</a></code></p>
<p class="firstline">Expresses the caller's opinion that one or more comments should be flagged as spam.</p>
<p class="toc_element">
  <code><a href="#setModerationStatus">setModerationStatus(id, moderationStatus, banAuthor=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the moderation status of one or more comments.</p>
<p class="toc_element">
  <code><a href="#update">update(part, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing resource.</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="delete">delete(id, x__xgafv=None)</code>
  <pre>Deletes a resource.

Args:
  id: string, A parameter (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="insert">insert(part, body=None, x__xgafv=None)</code>
  <pre>Inserts a new resource into this collection.

Args:
  part: string, The *part* parameter identifies the properties that the API response will include. Set the parameter value to snippet. The snippet part has a quota cost of 2 units. (required) (repeated)
  body: object, The request body.
    The object takes the form of:

{ # A *comment* represents a single YouTube comment.
  &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the comment.
  &quot;kind&quot;: &quot;youtube#comment&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#comment&quot;.
  &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &quot;snippet&quot;: { # Basic details about a comment, such as its author and text. # The snippet object contains basic details about the comment.
    &quot;authorChannelUrl&quot;: &quot;A String&quot;, # Link to the author&#x27;s YouTube channel, if any.
    &quot;videoId&quot;: &quot;A String&quot;, # The ID of the video the comment refers to, if any.
    &quot;updatedAt&quot;: &quot;A String&quot;, # The date and time when was last updated . The value is specified in ISO 8601 format.
    &quot;canRate&quot;: True or False, # Whether the current viewer can rate this comment.
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time when the comment was orignally published. The value is specified in ISO 8601 format.
    &quot;authorChannelId&quot;: { # The id of the author&#x27;s YouTube channel, if any.
      &quot;value&quot;: &quot;A String&quot;,
    },
    &quot;moderationStatus&quot;: &quot;A String&quot;, # The comment&#x27;s moderation status. Will not be set if the comments were requested through the id filter.
    &quot;authorProfileImageUrl&quot;: &quot;A String&quot;, # The URL for the avatar of the user who posted the comment.
    &quot;viewerRating&quot;: &quot;A String&quot;, # The rating the viewer has given to this comment. For the time being this will never return RATE_TYPE_DISLIKE and instead return RATE_TYPE_NONE. This may change in the future.
    &quot;parentId&quot;: &quot;A String&quot;, # The unique id of the parent comment, only set for replies.
    &quot;channelId&quot;: &quot;A String&quot;, # The id of the corresponding YouTube channel. In case of a channel comment this is the channel the comment refers to. In case of a video comment it&#x27;s the video&#x27;s channel.
    &quot;likeCount&quot;: 42, # The total number of likes this comment has received.
    &quot;authorDisplayName&quot;: &quot;A String&quot;, # The name of the user who posted the comment.
    &quot;textOriginal&quot;: &quot;A String&quot;, # The comment&#x27;s original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment&#x27;s author.
    &quot;textDisplay&quot;: &quot;A String&quot;, # The comment&#x27;s text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
  },
}

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

Returns:
  An object of the form:

    { # A *comment* represents a single YouTube comment.
    &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the comment.
    &quot;kind&quot;: &quot;youtube#comment&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#comment&quot;.
    &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    &quot;snippet&quot;: { # Basic details about a comment, such as its author and text. # The snippet object contains basic details about the comment.
      &quot;authorChannelUrl&quot;: &quot;A String&quot;, # Link to the author&#x27;s YouTube channel, if any.
      &quot;videoId&quot;: &quot;A String&quot;, # The ID of the video the comment refers to, if any.
      &quot;updatedAt&quot;: &quot;A String&quot;, # The date and time when was last updated . The value is specified in ISO 8601 format.
      &quot;canRate&quot;: True or False, # Whether the current viewer can rate this comment.
      &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time when the comment was orignally published. The value is specified in ISO 8601 format.
      &quot;authorChannelId&quot;: { # The id of the author&#x27;s YouTube channel, if any.
        &quot;value&quot;: &quot;A String&quot;,
      },
      &quot;moderationStatus&quot;: &quot;A String&quot;, # The comment&#x27;s moderation status. Will not be set if the comments were requested through the id filter.
      &quot;authorProfileImageUrl&quot;: &quot;A String&quot;, # The URL for the avatar of the user who posted the comment.
      &quot;viewerRating&quot;: &quot;A String&quot;, # The rating the viewer has given to this comment. For the time being this will never return RATE_TYPE_DISLIKE and instead return RATE_TYPE_NONE. This may change in the future.
      &quot;parentId&quot;: &quot;A String&quot;, # The unique id of the parent comment, only set for replies.
      &quot;channelId&quot;: &quot;A String&quot;, # The id of the corresponding YouTube channel. In case of a channel comment this is the channel the comment refers to. In case of a video comment it&#x27;s the video&#x27;s channel.
      &quot;likeCount&quot;: 42, # The total number of likes this comment has received.
      &quot;authorDisplayName&quot;: &quot;A String&quot;, # The name of the user who posted the comment.
      &quot;textOriginal&quot;: &quot;A String&quot;, # The comment&#x27;s original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment&#x27;s author.
      &quot;textDisplay&quot;: &quot;A String&quot;, # The comment&#x27;s text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(part, parentId=None, textFormat=None, maxResults=None, pageToken=None, id=None, x__xgafv=None)</code>
  <pre>Retrieves a list of resources, possibly filtered.

Args:
  part: string, The *part* parameter specifies a comma-separated list of one or more comment resource properties that the API response will include. (required) (repeated)
  parentId: string, Returns replies to the specified comment. Note, currently YouTube features only one level of replies (ie replies to top level comments). However replies to replies may be supported in the future.
  textFormat: string, The requested text format for the returned comments.
    Allowed values
      textFormatUnspecified - 
      html - Returns the comments in HTML format. This is the default value.
      plainText - Returns the comments in plain text format.
  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.
  id: string, Returns the comments with the given IDs for One Platform. (repeated)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;tokenPagination&quot;: { # Stub token pagination template to suppress results.
    },
    &quot;pageInfo&quot;: { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # General pagination information.
      &quot;totalResults&quot;: 42, # The total number of results in the result set.
      &quot;resultsPerPage&quot;: 42, # The number of results included in the API response.
    },
    &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;items&quot;: [ # A list of comments that match the request criteria.
      { # A *comment* represents a single YouTube comment.
        &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the comment.
        &quot;kind&quot;: &quot;youtube#comment&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#comment&quot;.
        &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
        &quot;snippet&quot;: { # Basic details about a comment, such as its author and text. # The snippet object contains basic details about the comment.
          &quot;authorChannelUrl&quot;: &quot;A String&quot;, # Link to the author&#x27;s YouTube channel, if any.
          &quot;videoId&quot;: &quot;A String&quot;, # The ID of the video the comment refers to, if any.
          &quot;updatedAt&quot;: &quot;A String&quot;, # The date and time when was last updated . The value is specified in ISO 8601 format.
          &quot;canRate&quot;: True or False, # Whether the current viewer can rate this comment.
          &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time when the comment was orignally published. The value is specified in ISO 8601 format.
          &quot;authorChannelId&quot;: { # The id of the author&#x27;s YouTube channel, if any.
            &quot;value&quot;: &quot;A String&quot;,
          },
          &quot;moderationStatus&quot;: &quot;A String&quot;, # The comment&#x27;s moderation status. Will not be set if the comments were requested through the id filter.
          &quot;authorProfileImageUrl&quot;: &quot;A String&quot;, # The URL for the avatar of the user who posted the comment.
          &quot;viewerRating&quot;: &quot;A String&quot;, # The rating the viewer has given to this comment. For the time being this will never return RATE_TYPE_DISLIKE and instead return RATE_TYPE_NONE. This may change in the future.
          &quot;parentId&quot;: &quot;A String&quot;, # The unique id of the parent comment, only set for replies.
          &quot;channelId&quot;: &quot;A String&quot;, # The id of the corresponding YouTube channel. In case of a channel comment this is the channel the comment refers to. In case of a video comment it&#x27;s the video&#x27;s channel.
          &quot;likeCount&quot;: 42, # The total number of likes this comment has received.
          &quot;authorDisplayName&quot;: &quot;A String&quot;, # The name of the user who posted the comment.
          &quot;textOriginal&quot;: &quot;A String&quot;, # The comment&#x27;s original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment&#x27;s author.
          &quot;textDisplay&quot;: &quot;A String&quot;, # The comment&#x27;s text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
        },
      },
    ],
    &quot;kind&quot;: &quot;youtube#commentListResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#commentListResponse&quot;.
    &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;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>

<div class="method">
    <code class="details" id="markAsSpam">markAsSpam(id, x__xgafv=None)</code>
  <pre>Expresses the caller&#x27;s opinion that one or more comments should be flagged as spam.

Args:
  id: string, Flags the comments with the given IDs as spam in the caller&#x27;s opinion. (required) (repeated)
  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="setModerationStatus">setModerationStatus(id, moderationStatus, banAuthor=None, x__xgafv=None)</code>
  <pre>Sets the moderation status of one or more comments.

Args:
  id: string, Modifies the moderation status of the comments with the given IDs (required) (repeated)
  moderationStatus: string, Specifies the requested moderation status. Note, comments can be in statuses, which are not available through this call. For example, this call does not allow to mark a comment as &#x27;likely spam&#x27;. Valid values: MODERATION_STATUS_PUBLISHED, MODERATION_STATUS_HELD_FOR_REVIEW, MODERATION_STATUS_REJECTED. (required)
    Allowed values
      published - The comment is available for public display.
      heldForReview - The comment is awaiting review by a moderator.
      likelySpam - 
      rejected - The comment is unfit for display.
  banAuthor: boolean, If set to true the author of the comment gets added to the ban list. This means all future comments of the author will autmomatically be rejected. Only valid in combination with STATUS_REJECTED.
  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="update">update(part, body=None, x__xgafv=None)</code>
  <pre>Updates an existing resource.

Args:
  part: string, The *part* parameter identifies the properties that the API response will include. You must at least include the snippet part in the parameter value since that part contains all of the properties that the API request can update. (required) (repeated)
  body: object, The request body.
    The object takes the form of:

{ # A *comment* represents a single YouTube comment.
  &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the comment.
  &quot;kind&quot;: &quot;youtube#comment&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#comment&quot;.
  &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &quot;snippet&quot;: { # Basic details about a comment, such as its author and text. # The snippet object contains basic details about the comment.
    &quot;authorChannelUrl&quot;: &quot;A String&quot;, # Link to the author&#x27;s YouTube channel, if any.
    &quot;videoId&quot;: &quot;A String&quot;, # The ID of the video the comment refers to, if any.
    &quot;updatedAt&quot;: &quot;A String&quot;, # The date and time when was last updated . The value is specified in ISO 8601 format.
    &quot;canRate&quot;: True or False, # Whether the current viewer can rate this comment.
    &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time when the comment was orignally published. The value is specified in ISO 8601 format.
    &quot;authorChannelId&quot;: { # The id of the author&#x27;s YouTube channel, if any.
      &quot;value&quot;: &quot;A String&quot;,
    },
    &quot;moderationStatus&quot;: &quot;A String&quot;, # The comment&#x27;s moderation status. Will not be set if the comments were requested through the id filter.
    &quot;authorProfileImageUrl&quot;: &quot;A String&quot;, # The URL for the avatar of the user who posted the comment.
    &quot;viewerRating&quot;: &quot;A String&quot;, # The rating the viewer has given to this comment. For the time being this will never return RATE_TYPE_DISLIKE and instead return RATE_TYPE_NONE. This may change in the future.
    &quot;parentId&quot;: &quot;A String&quot;, # The unique id of the parent comment, only set for replies.
    &quot;channelId&quot;: &quot;A String&quot;, # The id of the corresponding YouTube channel. In case of a channel comment this is the channel the comment refers to. In case of a video comment it&#x27;s the video&#x27;s channel.
    &quot;likeCount&quot;: 42, # The total number of likes this comment has received.
    &quot;authorDisplayName&quot;: &quot;A String&quot;, # The name of the user who posted the comment.
    &quot;textOriginal&quot;: &quot;A String&quot;, # The comment&#x27;s original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment&#x27;s author.
    &quot;textDisplay&quot;: &quot;A String&quot;, # The comment&#x27;s text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
  },
}

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

Returns:
  An object of the form:

    { # A *comment* represents a single YouTube comment.
    &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the comment.
    &quot;kind&quot;: &quot;youtube#comment&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#comment&quot;.
    &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    &quot;snippet&quot;: { # Basic details about a comment, such as its author and text. # The snippet object contains basic details about the comment.
      &quot;authorChannelUrl&quot;: &quot;A String&quot;, # Link to the author&#x27;s YouTube channel, if any.
      &quot;videoId&quot;: &quot;A String&quot;, # The ID of the video the comment refers to, if any.
      &quot;updatedAt&quot;: &quot;A String&quot;, # The date and time when was last updated . The value is specified in ISO 8601 format.
      &quot;canRate&quot;: True or False, # Whether the current viewer can rate this comment.
      &quot;publishedAt&quot;: &quot;A String&quot;, # The date and time when the comment was orignally published. The value is specified in ISO 8601 format.
      &quot;authorChannelId&quot;: { # The id of the author&#x27;s YouTube channel, if any.
        &quot;value&quot;: &quot;A String&quot;,
      },
      &quot;moderationStatus&quot;: &quot;A String&quot;, # The comment&#x27;s moderation status. Will not be set if the comments were requested through the id filter.
      &quot;authorProfileImageUrl&quot;: &quot;A String&quot;, # The URL for the avatar of the user who posted the comment.
      &quot;viewerRating&quot;: &quot;A String&quot;, # The rating the viewer has given to this comment. For the time being this will never return RATE_TYPE_DISLIKE and instead return RATE_TYPE_NONE. This may change in the future.
      &quot;parentId&quot;: &quot;A String&quot;, # The unique id of the parent comment, only set for replies.
      &quot;channelId&quot;: &quot;A String&quot;, # The id of the corresponding YouTube channel. In case of a channel comment this is the channel the comment refers to. In case of a video comment it&#x27;s the video&#x27;s channel.
      &quot;likeCount&quot;: 42, # The total number of likes this comment has received.
      &quot;authorDisplayName&quot;: &quot;A String&quot;, # The name of the user who posted the comment.
      &quot;textOriginal&quot;: &quot;A String&quot;, # The comment&#x27;s original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment&#x27;s author.
      &quot;textDisplay&quot;: &quot;A String&quot;, # The comment&#x27;s text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
    },
  }</pre>
</div>

</body></html>