<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(onBehalfOfContentOwner=None, id=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(onBehalfOfContentOwner=None, groupId=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(onBehalfOfContentOwner=None, id=None, x__xgafv=None)</code>
  <pre>Removes an item from a group.

Args:
  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.
  id: string, The `id` parameter specifies the YouTube group item ID of the group item that is being deleted.
  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;requestId&quot;: &quot;A String&quot;, # Request identifier generated by the service, which can be used to identify the error in the logs
      &quot;error&quot;: [ # Specific error description and codes
        { # Describes one specific error.
          &quot;locationType&quot;: &quot;A String&quot;,
          &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information, which should not be shared externally.
          &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;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;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;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;groupId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the group that contains the item.
    &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;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;requestId&quot;: &quot;A String&quot;, # Request identifier generated by the service, which can be used to identify the error in the logs
      &quot;error&quot;: [ # Specific error description and codes
        { # Describes one specific error.
          &quot;locationType&quot;: &quot;A String&quot;,
          &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information, which should not be shared externally.
          &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;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;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;code&quot;: &quot;A String&quot;, # Global error code. Deprecated and ignored. Set custom error codes in ErrorProto.domain and ErrorProto.code instead.
    },
    &quot;kind&quot;: &quot;A String&quot;, # Identifies the API resource&#x27;s type. The value will be `youtube#groupItem`.
    &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.
  }

  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;groupId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the group that contains the item.
      &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;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;requestId&quot;: &quot;A String&quot;, # Request identifier generated by the service, which can be used to identify the error in the logs
        &quot;error&quot;: [ # Specific error description and codes
          { # Describes one specific error.
            &quot;locationType&quot;: &quot;A String&quot;,
            &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information, which should not be shared externally.
            &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;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;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;code&quot;: &quot;A String&quot;, # Global error code. Deprecated and ignored. Set custom error codes in ErrorProto.domain and ErrorProto.code instead.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies the API resource&#x27;s type. The value will be `youtube#groupItem`.
      &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.
    }</pre>
</div>

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

Args:
  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.
  groupId: string, The `groupId` parameter specifies the unique ID of the group for which you want to retrieve group items.
  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;requestId&quot;: &quot;A String&quot;, # Request identifier generated by the service, which can be used to identify the error in the logs
      &quot;error&quot;: [ # Specific error description and codes
        { # Describes one specific error.
          &quot;locationType&quot;: &quot;A String&quot;,
          &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information, which should not be shared externally.
          &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;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;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;code&quot;: &quot;A String&quot;, # Global error code. Deprecated and ignored. Set custom error codes in ErrorProto.domain and ErrorProto.code instead.
    },
    &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;groupId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the group that contains the item.
          &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;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;requestId&quot;: &quot;A String&quot;, # Request identifier generated by the service, which can be used to identify the error in the logs
            &quot;error&quot;: [ # Specific error description and codes
              { # Describes one specific error.
                &quot;locationType&quot;: &quot;A String&quot;,
                &quot;debugInfo&quot;: &quot;A String&quot;, # Debugging information, which should not be shared externally.
                &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;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;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;code&quot;: &quot;A String&quot;, # Global error code. Deprecated and ignored. Set custom error codes in ErrorProto.domain and ErrorProto.code instead.
          },
          &quot;kind&quot;: &quot;A String&quot;, # Identifies the API resource&#x27;s type. The value will be `youtube#groupItem`.
          &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#groupItemListResponse`.
  }</pre>
</div>

</body></html>