<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(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(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;error&quot;: [ # Specific error description and codes
        { # Describes one specific error.
          &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;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;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;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;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;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;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;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;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;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;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;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;groupId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the group that contains the item.
    &quot;etag&quot;: &quot;A String&quot;, # The Etag of this resource.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies the API resource&#x27;s type. The value will be `youtube#groupItem`.
  }

  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;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;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;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;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;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;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;groupId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the group that contains the item.
      &quot;etag&quot;: &quot;A String&quot;, # The Etag of this resource.
      &quot;kind&quot;: &quot;A String&quot;, # Identifies the API resource&#x27;s type. The value will be `youtube#groupItem`.
    }</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;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;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;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;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;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;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;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;groupId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the group that contains the item.
          &quot;etag&quot;: &quot;A String&quot;, # The Etag of this resource.
          &quot;kind&quot;: &quot;A String&quot;, # Identifies the API resource&#x27;s type. The value will be `youtube#groupItem`.
        },
    ],
    &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;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;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;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;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;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;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;etag&quot;: &quot;A String&quot;, # The Etag of this resource.
    &quot;kind&quot;: &quot;A String&quot;, # Identifies the API resource&#x27;s type. The value will be `youtube#groupItemListResponse`.
  }</pre>
</div>

</body></html>