<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;code&quot;: &quot;A String&quot;, # Global error code. Deprecated and ignored. Set custom error codes in ErrorProto.domain and ErrorProto.code instead.
    &quot;error&quot;: [ # Specific error description and codes
      { # Describes one specific error.
        &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;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;debugInfo&quot;: &quot;A String&quot;, # Debugging information, which should not be shared externally.
        &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;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;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;locationType&quot;: &quot;A String&quot;,
      },
    ],
    &quot;requestId&quot;: &quot;A String&quot;, # Request identifier generated by the service, which can be used to identify the error in the logs
  },
}</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;code&quot;: &quot;A String&quot;, # Global error code. Deprecated and ignored. Set custom error codes in ErrorProto.domain and ErrorProto.code instead.
    &quot;error&quot;: [ # Specific error description and codes
      { # Describes one specific error.
        &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;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;debugInfo&quot;: &quot;A String&quot;, # Debugging information, which should not be shared externally.
        &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;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;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;locationType&quot;: &quot;A String&quot;,
      },
    ],
    &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;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;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;resource&quot;: { # The `resource` object contains information that identifies the item being added to the group.
    &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;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`
  },
}

  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;code&quot;: &quot;A String&quot;, # Global error code. Deprecated and ignored. Set custom error codes in ErrorProto.domain and ErrorProto.code instead.
    &quot;error&quot;: [ # Specific error description and codes
      { # Describes one specific error.
        &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;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;debugInfo&quot;: &quot;A String&quot;, # Debugging information, which should not be shared externally.
        &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;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;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;locationType&quot;: &quot;A String&quot;,
      },
    ],
    &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;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;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;resource&quot;: { # The `resource` object contains information that identifies the item being added to the group.
    &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;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`
  },
}</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;errors&quot;: { # Request Error information. The presence of an error field signals that the operation has failed. # Apiary error details
    &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;error&quot;: [ # Specific error description and codes
      { # Describes one specific error.
        &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;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;debugInfo&quot;: &quot;A String&quot;, # Debugging information, which should not be shared externally.
        &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;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;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;locationType&quot;: &quot;A String&quot;,
      },
    ],
    &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;etag&quot;: &quot;A String&quot;, # The Etag of this resource.
  &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;code&quot;: &quot;A String&quot;, # Global error code. Deprecated and ignored. Set custom error codes in ErrorProto.domain and ErrorProto.code instead.
        &quot;error&quot;: [ # Specific error description and codes
          { # Describes one specific error.
            &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;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;debugInfo&quot;: &quot;A String&quot;, # Debugging information, which should not be shared externally.
            &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;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;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;locationType&quot;: &quot;A String&quot;,
          },
        ],
        &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;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;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;resource&quot;: { # The `resource` object contains information that identifies the item being added to the group.
        &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;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;kind&quot;: &quot;A String&quot;, # Identifies the API resource&#x27;s type. The value will be `youtube#groupItemListResponse`.
}</pre>
</div>

</body></html>