<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="youtubeAnalytics_v2.html">YouTube Analytics API</a> . <a href="youtubeAnalytics_v2.groupItems.html">groupItems</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=None, onBehalfOfContentOwner=None, x__xgafv=None)</a></code></p>
<p class="firstline">Removes an item from a group.</p>
<p class="toc_element">
  <code><a href="#insert">insert(body=None, onBehalfOfContentOwner=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a group item.</p>
<p class="toc_element">
  <code><a href="#list">list(groupId=None, onBehalfOfContentOwner=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a collection of group items that match the API request parameters.</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=None, onBehalfOfContentOwner=None, x__xgafv=None)</code>
  <pre>Removes an item from a group.

Args:
  id: string, The `id` parameter specifies the YouTube group item ID of the group item that is being deleted.
  onBehalfOfContentOwner: string, This parameter can only be used in a properly authorized request. **Note:** This parameter is intended exclusively for YouTube content partners that own and manage many different YouTube channels. The `onBehalfOfContentOwner` parameter indicates that the request&#x27;s authorization credentials identify a YouTube user who is acting on behalf of the content owner specified in the parameter value. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The account that the user authenticates with must be linked to the specified YouTube content owner.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Empty response.
    &quot;errors&quot;: { # Request Error information. The presence of an error field signals that the operation has failed. # Apiary error details
      &quot;error&quot;: [ # Specific error description and codes
        { # Describes one specific error.
          &quot;externalErrorMessage&quot;: &quot;A String&quot;, # A short explanation for the error, which can be shared outside Google. Please set domain, code and arguments whenever possible instead of this error message so that external APIs can build safe error messages themselves. External messages built in a RoSy interface will most likely refer to information and concepts that are not available externally and should not be exposed. It is safer if external APIs can understand the errors and decide what the error message should look like.
          &quot;locationType&quot;: &quot;A String&quot;,
          &quot;argument&quot;: [ # Error arguments, to be used when building user-friendly error messages given the error domain and code. Different error codes require different arguments.
            &quot;A String&quot;,
          ],
          &quot;domain&quot;: &quot;A String&quot;, # Error domain. RoSy services can define their own domain and error codes. This should normally be the name of an enum type, such as: gdata.CoreErrorDomain
          &quot;location&quot;: &quot;A String&quot;, # Location of the error, as specified by the location type. If location_type is PATH, this should be a path to a field that&#x27;s relative to the request, using FieldPath notation (net/proto2/util/public/field_path.h). Examples: authenticated_user.gaia_id resource.address[2].country
          &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information, which should not be shared externally.
          &quot;code&quot;: &quot;A String&quot;, # Error code in the error domain. This should correspond to a value of the enum type whose name is in domain. See the core error domain in error_domain.proto.
        },
      ],
      &quot;requestId&quot;: &quot;A String&quot;, # Request identifier generated by the service, which can be used to identify the error in the logs
      &quot;code&quot;: &quot;A String&quot;, # Global error code. Deprecated and ignored. Set custom error codes in ErrorProto.domain and ErrorProto.code instead.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(body=None, onBehalfOfContentOwner=None, x__xgafv=None)</code>
  <pre>Creates a group item.

Args:
  body: object, The request body.
    The object takes the form of:

{ # A group item.
  &quot;errors&quot;: { # Request Error information. The presence of an error field signals that the operation has failed. # Apiary error details
    &quot;error&quot;: [ # Specific error description and codes
      { # Describes one specific error.
        &quot;externalErrorMessage&quot;: &quot;A String&quot;, # A short explanation for the error, which can be shared outside Google. Please set domain, code and arguments whenever possible instead of this error message so that external APIs can build safe error messages themselves. External messages built in a RoSy interface will most likely refer to information and concepts that are not available externally and should not be exposed. It is safer if external APIs can understand the errors and decide what the error message should look like.
        &quot;locationType&quot;: &quot;A String&quot;,
        &quot;argument&quot;: [ # Error arguments, to be used when building user-friendly error messages given the error domain and code. Different error codes require different arguments.
          &quot;A String&quot;,
        ],
        &quot;domain&quot;: &quot;A String&quot;, # Error domain. RoSy services can define their own domain and error codes. This should normally be the name of an enum type, such as: gdata.CoreErrorDomain
        &quot;location&quot;: &quot;A String&quot;, # Location of the error, as specified by the location type. If location_type is PATH, this should be a path to a field that&#x27;s relative to the request, using FieldPath notation (net/proto2/util/public/field_path.h). Examples: authenticated_user.gaia_id resource.address[2].country
        &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information, which should not be shared externally.
        &quot;code&quot;: &quot;A String&quot;, # Error code in the error domain. This should correspond to a value of the enum type whose name is in domain. See the core error domain in error_domain.proto.
      },
    ],
    &quot;requestId&quot;: &quot;A String&quot;, # Request identifier generated by the service, which can be used to identify the error in the logs
    &quot;code&quot;: &quot;A String&quot;, # Global error code. Deprecated and ignored. Set custom error codes in ErrorProto.domain and ErrorProto.code instead.
  },
  &quot;resource&quot;: { # The `resource` object contains information that identifies the item being added to the group.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies the type of resource being added to the group. Valid values for this property are: * `youtube#channel` * `youtube#playlist` * `youtube#video` * `youtubePartner#asset`
    &quot;id&quot;: &quot;A String&quot;, # The channel, video, playlist, or asset ID that YouTube uses to uniquely identify the item that is being added to the group.
  },
  &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the `channel`, `video`, `playlist`, or `asset` resource that is included in the group. Note that this ID refers specifically to the inclusion of that resource in a particular group and is different than the channel ID, video ID, playlist ID, or asset ID that uniquely identifies the resource itself. The `resource.id` property&#x27;s value specifies the unique channel, video, playlist, or asset ID.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies the API resource&#x27;s type. The value will be `youtube#groupItem`.
  &quot;etag&quot;: &quot;A String&quot;, # The Etag of this resource.
  &quot;groupId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the group that contains the item.
}

  onBehalfOfContentOwner: string, This parameter can only be used in a properly authorized request. **Note:** This parameter is intended exclusively for YouTube content partners that own and manage many different YouTube channels. The `onBehalfOfContentOwner` parameter indicates that the request&#x27;s authorization credentials identify a YouTube user who is acting on behalf of the content owner specified in the parameter value. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The account that the user authenticates with must be linked to the specified YouTube content owner.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A group item.
    &quot;errors&quot;: { # Request Error information. The presence of an error field signals that the operation has failed. # Apiary error details
      &quot;error&quot;: [ # Specific error description and codes
        { # Describes one specific error.
          &quot;externalErrorMessage&quot;: &quot;A String&quot;, # A short explanation for the error, which can be shared outside Google. Please set domain, code and arguments whenever possible instead of this error message so that external APIs can build safe error messages themselves. External messages built in a RoSy interface will most likely refer to information and concepts that are not available externally and should not be exposed. It is safer if external APIs can understand the errors and decide what the error message should look like.
          &quot;locationType&quot;: &quot;A String&quot;,
          &quot;argument&quot;: [ # Error arguments, to be used when building user-friendly error messages given the error domain and code. Different error codes require different arguments.
            &quot;A String&quot;,
          ],
          &quot;domain&quot;: &quot;A String&quot;, # Error domain. RoSy services can define their own domain and error codes. This should normally be the name of an enum type, such as: gdata.CoreErrorDomain
          &quot;location&quot;: &quot;A String&quot;, # Location of the error, as specified by the location type. If location_type is PATH, this should be a path to a field that&#x27;s relative to the request, using FieldPath notation (net/proto2/util/public/field_path.h). Examples: authenticated_user.gaia_id resource.address[2].country
          &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information, which should not be shared externally.
          &quot;code&quot;: &quot;A String&quot;, # Error code in the error domain. This should correspond to a value of the enum type whose name is in domain. See the core error domain in error_domain.proto.
        },
      ],
      &quot;requestId&quot;: &quot;A String&quot;, # Request identifier generated by the service, which can be used to identify the error in the logs
      &quot;code&quot;: &quot;A String&quot;, # Global error code. Deprecated and ignored. Set custom error codes in ErrorProto.domain and ErrorProto.code instead.
    },
    &quot;resource&quot;: { # The `resource` object contains information that identifies the item being added to the group.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies the type of resource being added to the group. Valid values for this property are: * `youtube#channel` * `youtube#playlist` * `youtube#video` * `youtubePartner#asset`
      &quot;id&quot;: &quot;A String&quot;, # The channel, video, playlist, or asset ID that YouTube uses to uniquely identify the item that is being added to the group.
    },
    &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the `channel`, `video`, `playlist`, or `asset` resource that is included in the group. Note that this ID refers specifically to the inclusion of that resource in a particular group and is different than the channel ID, video ID, playlist ID, or asset ID that uniquely identifies the resource itself. The `resource.id` property&#x27;s value specifies the unique channel, video, playlist, or asset ID.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies the API resource&#x27;s type. The value will be `youtube#groupItem`.
    &quot;etag&quot;: &quot;A String&quot;, # The Etag of this resource.
    &quot;groupId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the group that contains the item.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(groupId=None, onBehalfOfContentOwner=None, x__xgafv=None)</code>
  <pre>Returns a collection of group items that match the API request parameters.

Args:
  groupId: string, The `groupId` parameter specifies the unique ID of the group for which you want to retrieve group items.
  onBehalfOfContentOwner: string, This parameter can only be used in a properly authorized request. **Note:** This parameter is intended exclusively for YouTube content partners that own and manage many different YouTube channels. The `onBehalfOfContentOwner` parameter indicates that the request&#x27;s authorization credentials identify a YouTube user who is acting on behalf of the content owner specified in the parameter value. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The account that the user authenticates with must be linked to the specified YouTube content owner.
  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 GroupsService.ListGroupItems.
    &quot;etag&quot;: &quot;A String&quot;, # The Etag of this resource.
    &quot;errors&quot;: { # Request Error information. The presence of an error field signals that the operation has failed. # Apiary error details
      &quot;error&quot;: [ # Specific error description and codes
        { # Describes one specific error.
          &quot;externalErrorMessage&quot;: &quot;A String&quot;, # A short explanation for the error, which can be shared outside Google. Please set domain, code and arguments whenever possible instead of this error message so that external APIs can build safe error messages themselves. External messages built in a RoSy interface will most likely refer to information and concepts that are not available externally and should not be exposed. It is safer if external APIs can understand the errors and decide what the error message should look like.
          &quot;locationType&quot;: &quot;A String&quot;,
          &quot;argument&quot;: [ # Error arguments, to be used when building user-friendly error messages given the error domain and code. Different error codes require different arguments.
            &quot;A String&quot;,
          ],
          &quot;domain&quot;: &quot;A String&quot;, # Error domain. RoSy services can define their own domain and error codes. This should normally be the name of an enum type, such as: gdata.CoreErrorDomain
          &quot;location&quot;: &quot;A String&quot;, # Location of the error, as specified by the location type. If location_type is PATH, this should be a path to a field that&#x27;s relative to the request, using FieldPath notation (net/proto2/util/public/field_path.h). Examples: authenticated_user.gaia_id resource.address[2].country
          &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information, which should not be shared externally.
          &quot;code&quot;: &quot;A String&quot;, # Error code in the error domain. This should correspond to a value of the enum type whose name is in domain. See the core error domain in error_domain.proto.
        },
      ],
      &quot;requestId&quot;: &quot;A String&quot;, # Request identifier generated by the service, which can be used to identify the error in the logs
      &quot;code&quot;: &quot;A String&quot;, # Global error code. Deprecated and ignored. Set custom error codes in ErrorProto.domain and ErrorProto.code instead.
    },
    &quot;items&quot;: [ # A list of groups that match the API request parameters. Each item in the list represents a `groupItem` resource.
      { # A group item.
        &quot;errors&quot;: { # Request Error information. The presence of an error field signals that the operation has failed. # Apiary error details
          &quot;error&quot;: [ # Specific error description and codes
            { # Describes one specific error.
              &quot;externalErrorMessage&quot;: &quot;A String&quot;, # A short explanation for the error, which can be shared outside Google. Please set domain, code and arguments whenever possible instead of this error message so that external APIs can build safe error messages themselves. External messages built in a RoSy interface will most likely refer to information and concepts that are not available externally and should not be exposed. It is safer if external APIs can understand the errors and decide what the error message should look like.
              &quot;locationType&quot;: &quot;A String&quot;,
              &quot;argument&quot;: [ # Error arguments, to be used when building user-friendly error messages given the error domain and code. Different error codes require different arguments.
                &quot;A String&quot;,
              ],
              &quot;domain&quot;: &quot;A String&quot;, # Error domain. RoSy services can define their own domain and error codes. This should normally be the name of an enum type, such as: gdata.CoreErrorDomain
              &quot;location&quot;: &quot;A String&quot;, # Location of the error, as specified by the location type. If location_type is PATH, this should be a path to a field that&#x27;s relative to the request, using FieldPath notation (net/proto2/util/public/field_path.h). Examples: authenticated_user.gaia_id resource.address[2].country
              &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information, which should not be shared externally.
              &quot;code&quot;: &quot;A String&quot;, # Error code in the error domain. This should correspond to a value of the enum type whose name is in domain. See the core error domain in error_domain.proto.
            },
          ],
          &quot;requestId&quot;: &quot;A String&quot;, # Request identifier generated by the service, which can be used to identify the error in the logs
          &quot;code&quot;: &quot;A String&quot;, # Global error code. Deprecated and ignored. Set custom error codes in ErrorProto.domain and ErrorProto.code instead.
        },
        &quot;resource&quot;: { # The `resource` object contains information that identifies the item being added to the group.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies the type of resource being added to the group. Valid values for this property are: * `youtube#channel` * `youtube#playlist` * `youtube#video` * `youtubePartner#asset`
          &quot;id&quot;: &quot;A String&quot;, # The channel, video, playlist, or asset ID that YouTube uses to uniquely identify the item that is being added to the group.
        },
        &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the `channel`, `video`, `playlist`, or `asset` resource that is included in the group. Note that this ID refers specifically to the inclusion of that resource in a particular group and is different than the channel ID, video ID, playlist ID, or asset ID that uniquely identifies the resource itself. The `resource.id` property&#x27;s value specifies the unique channel, video, playlist, or asset ID.
        &quot;kind&quot;: &quot;A String&quot;, # Identifies the API resource&#x27;s type. The value will be `youtube#groupItem`.
        &quot;etag&quot;: &quot;A String&quot;, # The Etag of this resource.
        &quot;groupId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the group that contains the item.
      },
    ],
    &quot;kind&quot;: &quot;A String&quot;, # Identifies the API resource&#x27;s type. The value will be `youtube#groupItemListResponse`.
  }</pre>
</div>

</body></html>