{
  "discoveryVersion": "v1",
  "parameters": {
    "key": {
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
      "location": "query",
      "type": "string"
    },
    "prettyPrint": {
      "type": "boolean",
      "default": "true",
      "description": "Returns response with indentations and line breaks.",
      "location": "query"
    },
    "access_token": {
      "type": "string",
      "location": "query",
      "description": "OAuth access token."
    },
    "fields": {
      "type": "string",
      "location": "query",
      "description": "Selector specifying which fields to include in a partial response."
    },
    "$.xgafv": {
      "location": "query",
      "type": "string",
      "description": "V1 error format.",
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "enum": [
        "1",
        "2"
      ]
    },
    "alt": {
      "type": "string",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "description": "Data format for response.",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "location": "query",
      "default": "json"
    },
    "oauth_token": {
      "description": "OAuth 2.0 token for the current user.",
      "location": "query",
      "type": "string"
    },
    "upload_protocol": {
      "location": "query",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "type": "string"
    },
    "quotaUser": {
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
      "location": "query",
      "type": "string"
    },
    "uploadType": {
      "type": "string",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "location": "query"
    },
    "callback": {
      "location": "query",
      "type": "string",
      "description": "JSONP"
    }
  },
  "version": "v3",
  "protocol": "rest",
  "ownerDomain": "google.com",
  "canonicalName": "YouTube",
  "mtlsRootUrl": "https://youtube.mtls.googleapis.com/",
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "documentationLink": "https://developers.google.com/youtube/",
  "revision": "20261001",
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/youtube": {
          "description": "Manage your YouTube account"
        },
        "https://www.googleapis.com/auth/youtube.readonly": {
          "description": "View your YouTube account"
        },
        "https://www.googleapis.com/auth/youtube.force-ssl": {
          "description": "See, edit, and permanently delete your YouTube videos, ratings, comments and captions"
        },
        "https://www.googleapis.com/auth/youtube.channel-memberships.creator": {
          "description": "See a list of your current active channel members, their current level, and when they became a member"
        },
        "https://www.googleapis.com/auth/youtube.upload": {
          "description": "Manage your YouTube videos"
        },
        "https://www.googleapis.com/auth/youtubepartner-channel-audit": {
          "description": "View private information of your YouTube channel relevant during the audit process with a YouTube partner"
        },
        "https://www.googleapis.com/auth/youtubepartner": {
          "description": "View and manage your assets and associated content on YouTube"
        }
      }
    }
  },
  "basePath": "",
  "batchPath": "batch",
  "name": "youtube",
  "id": "youtube:v3",
  "resources": {
    "channels": {
      "methods": {
        "list": {
          "httpMethod": "GET",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly",
            "https://www.googleapis.com/auth/youtubepartner",
            "https://www.googleapis.com/auth/youtubepartner-channel-audit"
          ],
          "path": "youtube/v3/channels",
          "description": "Retrieves a list of resources, possibly filtered.",
          "parameters": {
            "id": {
              "repeated": true,
              "description": "Return the channels with the specified IDs.",
              "location": "query",
              "type": "string"
            },
            "mine": {
              "description": "Return the ids of channels owned by the authenticated user.",
              "location": "query",
              "type": "boolean"
            },
            "maxResults": {
              "description": "The *maxResults* parameter specifies the maximum number of items that should be returned in the result set.",
              "minimum": "0",
              "type": "integer",
              "maximum": "50",
              "location": "query",
              "format": "uint32",
              "default": "5"
            },
            "hl": {
              "type": "string",
              "description": "Stands for \"host language\". Specifies the localization language of the metadata to be filled into snippet.localized. The field is filled with the default metadata if there is no localization in the specified language. The parameter value must be a language code included in the list returned by the i18nLanguages.list method (e.g. en_US, es_MX).",
              "location": "query"
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "location": "query",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner."
            },
            "forHandle": {
              "description": "Return the channel associated with a YouTube handle.",
              "type": "string",
              "location": "query"
            },
            "part": {
              "location": "query",
              "description": "The *part* parameter specifies a comma-separated list of one or more channel resource properties that the API response will include. If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a channel resource, the contentDetails property contains other properties, such as the uploads properties. As such, if you set *part=contentDetails*, the API response will also contain all of those nested properties.",
              "repeated": true,
              "required": true,
              "type": "string"
            },
            "forUsername": {
              "type": "string",
              "description": "Return the channel associated with a YouTube username.",
              "location": "query"
            },
            "pageToken": {
              "location": "query",
              "description": "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.",
              "type": "string"
            },
            "categoryId": {
              "location": "query",
              "type": "string",
              "description": "Return the channels within the specified guide category ID."
            },
            "managedByMe": {
              "description": "Return the channels managed by the authenticated user.",
              "type": "boolean",
              "location": "query"
            },
            "mySubscribers": {
              "description": "Return the channels subscribed to the authenticated user",
              "type": "boolean",
              "location": "query"
            }
          },
          "id": "youtube.channels.list",
          "parameterOrder": [
            "part"
          ],
          "flatPath": "youtube/v3/channels",
          "response": {
            "$ref": "ChannelListResponse"
          }
        },
        "update": {
          "request": {
            "$ref": "Channel"
          },
          "httpMethod": "PUT",
          "parameterOrder": [
            "part"
          ],
          "path": "youtube/v3/channels",
          "description": "Updates an existing resource.",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "response": {
            "$ref": "Channel"
          },
          "flatPath": "youtube/v3/channels",
          "id": "youtube.channels.update",
          "parameters": {
            "onBehalfOfContentOwner": {
              "location": "query",
              "description": "The *onBehalfOfContentOwner* parameter indicates that the authenticated user is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 actual CMS account that the user authenticates with needs to be linked to the specified YouTube content owner. This parameter must be provided if the request is authenticated with credentials for a CMS content owner user acting on a managed channel. If omitted, the request executes under the authenticated user's direct context and returns an HTTP 403 Forbidden error.",
              "type": "string"
            },
            "part": {
              "repeated": true,
              "required": true,
              "location": "query",
              "description": "The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. The API currently only allows the parameter value to be set to either brandingSettings or invideoPromotion. (You cannot update both of those parts with a single request.) Note that this method overrides the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies.",
              "type": "string"
            }
          }
        }
      }
    },
    "liveChatModerators": {
      "methods": {
        "delete": {
          "description": "Deletes a chat moderator.",
          "flatPath": "youtube/v3/liveChat/moderators",
          "parameters": {
            "id": {
              "location": "query",
              "type": "string",
              "required": true
            }
          },
          "httpMethod": "DELETE",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "path": "youtube/v3/liveChat/moderators",
          "id": "youtube.liveChatModerators.delete",
          "parameterOrder": [
            "id"
          ]
        },
        "list": {
          "httpMethod": "GET",
          "id": "youtube.liveChatModerators.list",
          "parameterOrder": [
            "liveChatId",
            "part"
          ],
          "response": {
            "$ref": "LiveChatModeratorListResponse"
          },
          "flatPath": "youtube/v3/liveChat/moderators",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly"
          ],
          "parameters": {
            "part": {
              "repeated": true,
              "required": true,
              "location": "query",
              "type": "string",
              "description": "The *part* parameter specifies the liveChatModerator resource parts that the API response will include. Supported values are id and snippet."
            },
            "liveChatId": {
              "description": "The id of the live chat for which moderators should be returned.",
              "location": "query",
              "type": "string",
              "required": true
            },
            "pageToken": {
              "location": "query",
              "description": "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.",
              "type": "string"
            },
            "maxResults": {
              "location": "query",
              "minimum": "0",
              "type": "integer",
              "description": "The *maxResults* parameter specifies the maximum number of items that should be returned in the result set.",
              "default": "5",
              "maximum": "50",
              "format": "uint32"
            }
          },
          "description": "Retrieves a list of resources, possibly filtered.",
          "path": "youtube/v3/liveChat/moderators"
        },
        "insert": {
          "parameters": {
            "part": {
              "description": "The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response returns. Set the parameter value to snippet.",
              "repeated": true,
              "required": true,
              "location": "query",
              "type": "string"
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "description": "Inserts a new resource into this collection.",
          "request": {
            "$ref": "LiveChatModerator"
          },
          "path": "youtube/v3/liveChat/moderators",
          "httpMethod": "POST",
          "id": "youtube.liveChatModerators.insert",
          "flatPath": "youtube/v3/liveChat/moderators",
          "parameterOrder": [
            "part"
          ],
          "response": {
            "$ref": "LiveChatModerator"
          }
        }
      }
    },
    "members": {
      "methods": {
        "list": {
          "parameters": {
            "part": {
              "location": "query",
              "required": true,
              "type": "string",
              "description": "The *part* parameter specifies the member resource parts that the API response will include. Set the parameter value to snippet.",
              "repeated": true
            },
            "maxResults": {
              "minimum": "0",
              "description": "The *maxResults* parameter specifies the maximum number of items that should be returned in the result set.",
              "default": "5",
              "location": "query",
              "type": "integer",
              "maximum": "1000",
              "format": "uint32"
            },
            "hasAccessToLevel": {
              "location": "query",
              "type": "string",
              "description": "Filter members in the results set to the ones that have access to a level."
            },
            "mode": {
              "description": "Parameter that specifies which channel members to return.",
              "type": "string",
              "location": "query",
              "default": "all_current",
              "enum": [
                "listMembersModeUnknown",
                "updates",
                "all_current"
              ],
              "enumDescriptions": [
                "",
                "Return only members that joined after the first call with this mode was made.",
                "Return all current members, from newest to oldest."
              ]
            },
            "filterByMemberChannelId": {
              "type": "string",
              "description": "Comma separated list of channel IDs. Only data about members that are part of this list will be included in the response.",
              "location": "query"
            },
            "pageToken": {
              "type": "string",
              "description": "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.",
              "location": "query"
            }
          },
          "response": {
            "$ref": "MemberListResponse"
          },
          "flatPath": "youtube/v3/members",
          "parameterOrder": [
            "part"
          ],
          "path": "youtube/v3/members",
          "scopes": [
            "https://www.googleapis.com/auth/youtube.channel-memberships.creator"
          ],
          "description": "Retrieves a list of members that match the request criteria for a channel.",
          "id": "youtube.members.list",
          "httpMethod": "GET"
        }
      }
    },
    "channelSections": {
      "methods": {
        "delete": {
          "path": "youtube/v3/channelSections",
          "flatPath": "youtube/v3/channelSections",
          "id": "youtube.channelSections.delete",
          "description": "Deletes a resource.",
          "httpMethod": "DELETE",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "parameters": {
            "onBehalfOfContentOwner": {
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "type": "string",
              "location": "query"
            },
            "id": {
              "location": "query",
              "required": true,
              "type": "string"
            }
          },
          "parameterOrder": [
            "id"
          ]
        },
        "list": {
          "parameterOrder": [
            "part"
          ],
          "flatPath": "youtube/v3/channelSections",
          "parameters": {
            "hl": {
              "deprecated": true,
              "location": "query",
              "description": "Return content in specified language",
              "type": "string"
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "location": "query",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner."
            },
            "mine": {
              "description": "Return the ChannelSections owned by the authenticated user.",
              "type": "boolean",
              "location": "query"
            },
            "id": {
              "description": "Return the ChannelSections with the given IDs for Stubby or Apiary.",
              "type": "string",
              "location": "query",
              "repeated": true
            },
            "part": {
              "location": "query",
              "repeated": true,
              "description": "The *part* parameter specifies a comma-separated list of one or more channelSection resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, and contentDetails. If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a channelSection resource, the snippet property contains other properties, such as a display title for the channelSection. If you set *part=snippet*, the API response will also contain all of those nested properties.",
              "type": "string",
              "required": true
            },
            "channelId": {
              "location": "query",
              "description": "Return the ChannelSections owned by the specified channel ID.",
              "type": "string"
            }
          },
          "response": {
            "$ref": "ChannelSectionListResponse"
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "path": "youtube/v3/channelSections",
          "id": "youtube.channelSections.list",
          "description": "Retrieves a list of resources, possibly filtered.",
          "httpMethod": "GET"
        },
        "insert": {
          "response": {
            "$ref": "ChannelSection"
          },
          "flatPath": "youtube/v3/channelSections",
          "parameterOrder": [
            "part"
          ],
          "parameters": {
            "part": {
              "required": true,
              "repeated": true,
              "type": "string",
              "description": "The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. The part names that you can include in the parameter value are snippet and contentDetails.",
              "location": "query"
            },
            "onBehalfOfContentOwnerChannel": {
              "location": "query",
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel.",
              "type": "string"
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query"
            }
          },
          "path": "youtube/v3/channelSections",
          "id": "youtube.channelSections.insert",
          "description": "Inserts a new resource into this collection.",
          "request": {
            "$ref": "ChannelSection"
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "httpMethod": "POST"
        },
        "update": {
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "httpMethod": "PUT",
          "description": "Updates an existing resource.",
          "request": {
            "$ref": "ChannelSection"
          },
          "flatPath": "youtube/v3/channelSections",
          "response": {
            "$ref": "ChannelSection"
          },
          "parameterOrder": [
            "part"
          ],
          "parameters": {
            "part": {
              "repeated": true,
              "type": "string",
              "description": "The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. The part names that you can include in the parameter value are snippet and contentDetails.",
              "required": true,
              "location": "query"
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "location": "query",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner."
            }
          },
          "path": "youtube/v3/channelSections",
          "id": "youtube.channelSections.update"
        }
      }
    },
    "abuseReports": {
      "methods": {
        "insert": {
          "httpMethod": "POST",
          "path": "youtube/v3/abuseReports",
          "request": {
            "$ref": "AbuseReport"
          },
          "parameterOrder": [
            "part"
          ],
          "description": "Inserts a new resource into this collection.",
          "id": "youtube.abuseReports.insert",
          "parameters": {
            "part": {
              "type": "string",
              "repeated": true,
              "required": true,
              "description": "The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.",
              "location": "query"
            }
          },
          "response": {
            "$ref": "AbuseReport"
          },
          "flatPath": "youtube/v3/abuseReports",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ]
        }
      }
    },
    "thumbnails": {
      "methods": {
        "set": {
          "parameters": {
            "onBehalfOfContentOwner": {
              "type": "string",
              "location": "query",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 actual CMS account that the user authenticates with must be linked to the specified YouTube content owner."
            },
            "videoId": {
              "location": "query",
              "description": "Returns the Thumbnail with the given video IDs for Stubby or Apiary.",
              "required": true,
              "type": "string"
            }
          },
          "supportsMediaUpload": true,
          "mediaUpload": {
            "protocols": {
              "resumable": {
                "multipart": true,
                "path": "/resumable/upload/youtube/v3/thumbnails/set"
              },
              "simple": {
                "path": "/upload/youtube/v3/thumbnails/set",
                "multipart": true
              }
            },
            "maxSize": "52428800",
            "accept": [
              "image/jpeg",
              "image/png",
              "application/octet-stream"
            ]
          },
          "description": "As this is not an insert in a strict sense (it supports uploading/setting of a thumbnail for multiple videos, which doesn't result in creation of a single resource), I use a custom verb here.",
          "parameterOrder": [
            "videoId"
          ],
          "path": "youtube/v3/thumbnails/set",
          "flatPath": "youtube/v3/thumbnails/set",
          "httpMethod": "POST",
          "response": {
            "$ref": "ThumbnailSetResponse"
          },
          "id": "youtube.thumbnails.set",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.upload",
            "https://www.googleapis.com/auth/youtubepartner"
          ]
        }
      }
    },
    "liveBroadcasts": {
      "methods": {
        "insert": {
          "parameters": {
            "onBehalfOfContentOwnerChannel": {
              "type": "string",
              "location": "query",
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel."
            },
            "onBehalfOfContentOwner": {
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "type": "string",
              "location": "query"
            },
            "part": {
              "type": "string",
              "required": true,
              "repeated": true,
              "description": "The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. The part properties that you can include in the parameter value are id, snippet, contentDetails, and status.",
              "location": "query"
            }
          },
          "parameterOrder": [
            "part"
          ],
          "request": {
            "$ref": "LiveBroadcast"
          },
          "description": "Inserts a new stream for the authenticated user.",
          "path": "youtube/v3/liveBroadcasts",
          "response": {
            "$ref": "LiveBroadcast"
          },
          "id": "youtube.liveBroadcasts.insert",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "httpMethod": "POST",
          "flatPath": "youtube/v3/liveBroadcasts"
        },
        "transition": {
          "description": "Transition a broadcast to a given status.",
          "httpMethod": "POST",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "flatPath": "youtube/v3/liveBroadcasts/transition",
          "response": {
            "$ref": "LiveBroadcast"
          },
          "id": "youtube.liveBroadcasts.transition",
          "parameters": {
            "onBehalfOfContentOwnerChannel": {
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel.",
              "location": "query",
              "type": "string"
            },
            "broadcastStatus": {
              "location": "query",
              "type": "string",
              "description": "The status to which the broadcast is going to transition.",
              "enumDescriptions": [
                "",
                "Start testing the broadcast. YouTube transmits video to the broadcast's monitor stream. Note that you can only transition a broadcast to the testing state if its contentDetails.monitorStream.enableMonitorStream property is set to true.\",",
                "Return only persistent broadcasts.",
                "The broadcast is over. YouTube stops transmitting video."
              ],
              "required": true,
              "enum": [
                "statusUnspecified",
                "testing",
                "live",
                "complete"
              ]
            },
            "onBehalfOfContentOwner": {
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query",
              "type": "string"
            },
            "id": {
              "location": "query",
              "description": "Broadcast to transition.",
              "type": "string",
              "required": true
            },
            "part": {
              "repeated": true,
              "type": "string",
              "required": true,
              "description": "The *part* parameter specifies a comma-separated list of one or more liveBroadcast resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, and status.",
              "location": "query"
            }
          },
          "parameterOrder": [
            "broadcastStatus",
            "id",
            "part"
          ],
          "path": "youtube/v3/liveBroadcasts/transition"
        },
        "update": {
          "parameterOrder": [
            "part"
          ],
          "flatPath": "youtube/v3/liveBroadcasts",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "httpMethod": "PUT",
          "response": {
            "$ref": "LiveBroadcast"
          },
          "id": "youtube.liveBroadcasts.update",
          "path": "youtube/v3/liveBroadcasts",
          "request": {
            "$ref": "LiveBroadcast"
          },
          "description": "Updates an existing broadcast for the authenticated user.",
          "parameters": {
            "onBehalfOfContentOwner": {
              "location": "query",
              "type": "string",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner."
            },
            "onBehalfOfContentOwnerChannel": {
              "type": "string",
              "location": "query",
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel."
            },
            "part": {
              "type": "string",
              "required": true,
              "repeated": true,
              "description": "The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. The part properties that you can include in the parameter value are id, snippet, contentDetails, and status. Note that this method will override the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies. For example, a broadcast's privacy status is defined in the status part. As such, if your request is updating a private or unlisted broadcast, and the request's part parameter value includes the status part, the broadcast's privacy setting will be updated to whatever value the request body specifies. If the request body does not specify a value, the existing privacy setting will be removed and the broadcast will revert to the default privacy setting.",
              "location": "query"
            }
          }
        },
        "bind": {
          "flatPath": "youtube/v3/liveBroadcasts/bind",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "response": {
            "$ref": "LiveBroadcast"
          },
          "parameterOrder": [
            "id",
            "part"
          ],
          "id": "youtube.liveBroadcasts.bind",
          "path": "youtube/v3/liveBroadcasts/bind",
          "parameters": {
            "onBehalfOfContentOwnerChannel": {
              "type": "string",
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel.",
              "location": "query"
            },
            "part": {
              "repeated": true,
              "required": true,
              "location": "query",
              "type": "string",
              "description": "The *part* parameter specifies a comma-separated list of one or more liveBroadcast resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, and status."
            },
            "onBehalfOfContentOwner": {
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "type": "string",
              "location": "query"
            },
            "streamId": {
              "description": "Stream to bind, if not set unbind the current one.",
              "type": "string",
              "location": "query"
            },
            "id": {
              "location": "query",
              "type": "string",
              "required": true,
              "description": "Broadcast to bind to the stream"
            }
          },
          "description": "Bind a broadcast to a stream.",
          "httpMethod": "POST"
        },
        "list": {
          "id": "youtube.liveBroadcasts.list",
          "parameters": {
            "broadcastType": {
              "type": "string",
              "location": "query",
              "description": "Return only broadcasts with the selected type.",
              "enumDescriptions": [
                "",
                "Return all broadcasts.",
                "Return only scheduled event broadcasts.",
                "Return only persistent broadcasts."
              ],
              "default": "event",
              "enum": [
                "broadcastTypeFilterUnspecified",
                "all",
                "event",
                "persistent"
              ]
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "location": "query",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner."
            },
            "broadcastStatus": {
              "location": "query",
              "enum": [
                "broadcastStatusFilterUnspecified",
                "all",
                "active",
                "upcoming",
                "completed"
              ],
              "description": "Return broadcasts with a certain status, e.g. active broadcasts.",
              "enumDescriptions": [
                "",
                "Return all broadcasts.",
                "Return current live broadcasts.",
                "Return broadcasts that have not yet started.",
                "Return broadcasts that have already ended."
              ],
              "type": "string"
            },
            "part": {
              "description": "The *part* parameter specifies a comma-separated list of one or more liveBroadcast resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, status and statistics.",
              "location": "query",
              "type": "string",
              "repeated": true,
              "required": true
            },
            "maxResults": {
              "format": "uint32",
              "minimum": "0",
              "description": "The *maxResults* parameter specifies the maximum number of items that should be returned in the result set.",
              "type": "integer",
              "location": "query",
              "maximum": "50",
              "default": "5"
            },
            "onBehalfOfContentOwnerChannel": {
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel.",
              "type": "string",
              "location": "query"
            },
            "mine": {
              "location": "query",
              "type": "boolean"
            },
            "pageToken": {
              "location": "query",
              "description": "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.",
              "type": "string"
            },
            "id": {
              "repeated": true,
              "description": "Return broadcasts with the given ids from Stubby or Apiary.",
              "location": "query",
              "type": "string"
            }
          },
          "parameterOrder": [
            "part"
          ],
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly"
          ],
          "path": "youtube/v3/liveBroadcasts",
          "description": "Retrieve the list of broadcasts associated with the given channel.",
          "response": {
            "$ref": "LiveBroadcastListResponse"
          },
          "httpMethod": "GET",
          "flatPath": "youtube/v3/liveBroadcasts"
        },
        "insertCuepoint": {
          "httpMethod": "POST",
          "parameterOrder": [],
          "description": "Insert cuepoints in a broadcast",
          "id": "youtube.liveBroadcasts.insertCuepoint",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "parameters": {
            "part": {
              "type": "string",
              "description": "The *part* parameter specifies a comma-separated list of one or more liveBroadcast resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, and status.",
              "repeated": true,
              "location": "query"
            },
            "onBehalfOfContentOwner": {
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query",
              "type": "string"
            },
            "onBehalfOfContentOwnerChannel": {
              "location": "query",
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel.",
              "type": "string"
            },
            "id": {
              "location": "query",
              "description": "Broadcast to insert ads to, or equivalently `external_video_id` for internal use.",
              "type": "string"
            }
          },
          "request": {
            "$ref": "Cuepoint"
          },
          "response": {
            "$ref": "Cuepoint"
          },
          "flatPath": "youtube/v3/liveBroadcasts/cuepoint",
          "path": "youtube/v3/liveBroadcasts/cuepoint"
        },
        "delete": {
          "path": "youtube/v3/liveBroadcasts",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "httpMethod": "DELETE",
          "parameters": {
            "id": {
              "type": "string",
              "location": "query",
              "required": true,
              "description": "Broadcast to delete."
            },
            "onBehalfOfContentOwner": {
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query",
              "type": "string"
            },
            "onBehalfOfContentOwnerChannel": {
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel.",
              "type": "string",
              "location": "query"
            }
          },
          "description": "Delete a given broadcast.",
          "parameterOrder": [
            "id"
          ],
          "flatPath": "youtube/v3/liveBroadcasts",
          "id": "youtube.liveBroadcasts.delete"
        }
      }
    },
    "thirdPartyLinks": {
      "methods": {
        "delete": {
          "parameters": {
            "externalChannelId": {
              "location": "query",
              "type": "string",
              "description": "Channel ID to which changes should be applied, for delegation."
            },
            "linkingToken": {
              "required": true,
              "type": "string",
              "location": "query",
              "description": "Delete the partner links with the given linking token."
            },
            "type": {
              "enum": [
                "linkUnspecified",
                "channelToStoreLink",
                "channelToAffiliateProgramLink"
              ],
              "required": true,
              "enumDescriptions": [
                "",
                "A link that is connecting (or about to connect) a channel with a store on a merchandising platform in order to enable retail commerce capabilities for that channel on YouTube.",
                "A link that is connecting (or about to connect) a channel with an affiliate program of a partner to enable that channel to earn commissions from that partner through affiliate links."
              ],
              "type": "string",
              "location": "query",
              "description": "Type of the link to be deleted."
            },
            "part": {
              "location": "query",
              "type": "string",
              "repeated": true,
              "description": "Do not use. Required for compatibility."
            }
          },
          "httpMethod": "DELETE",
          "description": "Deletes a resource.",
          "parameterOrder": [
            "linkingToken",
            "type"
          ],
          "path": "youtube/v3/thirdPartyLinks",
          "id": "youtube.thirdPartyLinks.delete",
          "flatPath": "youtube/v3/thirdPartyLinks"
        },
        "list": {
          "parameterOrder": [
            "part"
          ],
          "httpMethod": "GET",
          "description": "Retrieves a list of resources, possibly filtered.",
          "parameters": {
            "type": {
              "enum": [
                "linkUnspecified",
                "channelToStoreLink",
                "channelToAffiliateProgramLink"
              ],
              "enumDescriptions": [
                "",
                "A link that is connecting (or about to connect) a channel with a store on a merchandising platform in order to enable retail commerce capabilities for that channel on YouTube.",
                "A link that is connecting (or about to connect) a channel with an affiliate program of a partner to enable that channel to earn commissions from that partner through affiliate links."
              ],
              "type": "string",
              "location": "query",
              "description": "Get a third party link of the given type."
            },
            "part": {
              "description": "The *part* parameter specifies the thirdPartyLink resource parts that the API response will include. Supported values are linkingToken, status, and snippet.",
              "required": true,
              "repeated": true,
              "type": "string",
              "location": "query"
            },
            "externalChannelId": {
              "description": "Channel ID to which changes should be applied, for delegation.",
              "type": "string",
              "location": "query"
            },
            "linkingToken": {
              "description": "Get a third party link with the given linking token.",
              "location": "query",
              "type": "string"
            }
          },
          "flatPath": "youtube/v3/thirdPartyLinks",
          "id": "youtube.thirdPartyLinks.list",
          "response": {
            "$ref": "ThirdPartyLinkListResponse"
          },
          "path": "youtube/v3/thirdPartyLinks"
        },
        "insert": {
          "id": "youtube.thirdPartyLinks.insert",
          "request": {
            "$ref": "ThirdPartyLink"
          },
          "description": "Inserts a new resource into this collection.",
          "httpMethod": "POST",
          "parameterOrder": [
            "part"
          ],
          "flatPath": "youtube/v3/thirdPartyLinks",
          "response": {
            "$ref": "ThirdPartyLink"
          },
          "parameters": {
            "externalChannelId": {
              "description": "Channel ID to which changes should be applied, for delegation.",
              "location": "query",
              "type": "string"
            },
            "part": {
              "type": "string",
              "description": "The *part* parameter specifies the thirdPartyLink resource parts that the API request and response will include. Supported values are linkingToken, status, and snippet.",
              "location": "query",
              "repeated": true,
              "required": true
            }
          },
          "path": "youtube/v3/thirdPartyLinks"
        },
        "update": {
          "id": "youtube.thirdPartyLinks.update",
          "path": "youtube/v3/thirdPartyLinks",
          "parameterOrder": [
            "part"
          ],
          "httpMethod": "PUT",
          "request": {
            "$ref": "ThirdPartyLink"
          },
          "flatPath": "youtube/v3/thirdPartyLinks",
          "response": {
            "$ref": "ThirdPartyLink"
          },
          "description": "Updates an existing resource.",
          "parameters": {
            "part": {
              "location": "query",
              "type": "string",
              "description": "The *part* parameter specifies the thirdPartyLink resource parts that the API request and response will include. Supported values are linkingToken, status, and snippet.",
              "repeated": true,
              "required": true
            },
            "externalChannelId": {
              "location": "query",
              "type": "string",
              "description": "Channel ID to which changes should be applied, for delegation."
            }
          }
        }
      }
    },
    "liveStreams": {
      "methods": {
        "delete": {
          "parameters": {
            "id": {
              "type": "string",
              "location": "query",
              "required": true
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "location": "query",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner."
            },
            "onBehalfOfContentOwnerChannel": {
              "type": "string",
              "location": "query",
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel."
            }
          },
          "id": "youtube.liveStreams.delete",
          "httpMethod": "DELETE",
          "flatPath": "youtube/v3/liveStreams",
          "description": "Deletes an existing stream for the authenticated user.",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "path": "youtube/v3/liveStreams",
          "parameterOrder": [
            "id"
          ]
        },
        "list": {
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly"
          ],
          "path": "youtube/v3/liveStreams",
          "parameters": {
            "id": {
              "type": "string",
              "location": "query",
              "description": "Return LiveStreams with the given ids from Stubby or Apiary.",
              "repeated": true
            },
            "onBehalfOfContentOwnerChannel": {
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel.",
              "type": "string",
              "location": "query"
            },
            "mine": {
              "type": "boolean",
              "location": "query"
            },
            "maxResults": {
              "maximum": "50",
              "default": "5",
              "type": "integer",
              "format": "uint32",
              "minimum": "0",
              "description": "The *maxResults* parameter specifies the maximum number of items that should be returned in the result set.",
              "location": "query"
            },
            "part": {
              "repeated": true,
              "type": "string",
              "required": true,
              "description": "The *part* parameter specifies a comma-separated list of one or more liveStream resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, cdn, and status.",
              "location": "query"
            },
            "onBehalfOfContentOwner": {
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query",
              "type": "string"
            },
            "pageToken": {
              "type": "string",
              "description": "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.",
              "location": "query"
            }
          },
          "id": "youtube.liveStreams.list",
          "response": {
            "$ref": "LiveStreamListResponse"
          },
          "flatPath": "youtube/v3/liveStreams",
          "parameterOrder": [
            "part"
          ],
          "httpMethod": "GET",
          "description": "Retrieve the list of streams associated with the given channel. --"
        },
        "insert": {
          "parameters": {
            "part": {
              "location": "query",
              "description": "The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. The part properties that you can include in the parameter value are id, snippet, cdn, content_details, and status.",
              "type": "string",
              "repeated": true,
              "required": true
            },
            "onBehalfOfContentOwnerChannel": {
              "type": "string",
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel.",
              "location": "query"
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query"
            }
          },
          "path": "youtube/v3/liveStreams",
          "id": "youtube.liveStreams.insert",
          "request": {
            "$ref": "LiveStream"
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "description": "Inserts a new stream for the authenticated user.",
          "httpMethod": "POST",
          "response": {
            "$ref": "LiveStream"
          },
          "flatPath": "youtube/v3/liveStreams",
          "parameterOrder": [
            "part"
          ]
        },
        "update": {
          "parameters": {
            "onBehalfOfContentOwnerChannel": {
              "location": "query",
              "type": "string",
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel."
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "location": "query",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner."
            },
            "part": {
              "repeated": true,
              "required": true,
              "type": "string",
              "location": "query",
              "description": "The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. The part properties that you can include in the parameter value are id, snippet, cdn, and status. Note that this method will override the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies. If the request body does not specify a value for a mutable property, the existing value for that property will be removed."
            }
          },
          "id": "youtube.liveStreams.update",
          "path": "youtube/v3/liveStreams",
          "request": {
            "$ref": "LiveStream"
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "response": {
            "$ref": "LiveStream"
          },
          "httpMethod": "PUT",
          "flatPath": "youtube/v3/liveStreams",
          "description": "Updates an existing stream for the authenticated user.",
          "parameterOrder": [
            "part"
          ]
        }
      }
    },
    "membershipsLevels": {
      "methods": {
        "list": {
          "parameters": {
            "part": {
              "location": "query",
              "description": "The *part* parameter specifies the membershipsLevel resource parts that the API response will include. Supported values are id and snippet.",
              "repeated": true,
              "type": "string",
              "required": true
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube.channel-memberships.creator"
          ],
          "parameterOrder": [
            "part"
          ],
          "flatPath": "youtube/v3/membershipsLevels",
          "path": "youtube/v3/membershipsLevels",
          "response": {
            "$ref": "MembershipsLevelListResponse"
          },
          "id": "youtube.membershipsLevels.list",
          "description": "Retrieves a list of all pricing levels offered by a creator to the fans.",
          "httpMethod": "GET"
        }
      }
    },
    "captions": {
      "methods": {
        "download": {
          "parameters": {
            "onBehalfOf": {
              "location": "query",
              "description": "ID of the Google+ Page for the channel that the request is be on behalf of",
              "type": "string"
            },
            "id": {
              "location": "path",
              "type": "string",
              "description": "The ID of the caption track to download, required for One Platform.",
              "required": true
            },
            "tfmt": {
              "type": "string",
              "description": "Convert the captions into this format. Supported options are sbv, srt, and vtt.",
              "location": "query"
            },
            "onBehalfOfContentOwner": {
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 actual CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "type": "string",
              "location": "query"
            },
            "tlang": {
              "location": "query",
              "type": "string",
              "description": "tlang is the language code; machine translate the captions into this language."
            }
          },
          "id": "youtube.captions.download",
          "parameterOrder": [
            "id"
          ],
          "path": "youtube/v3/captions/{id}",
          "scopes": [
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "useMediaDownloadService": true,
          "httpMethod": "GET",
          "supportsMediaDownload": true,
          "flatPath": "youtube/v3/captions/{id}",
          "description": "Downloads a caption track."
        },
        "insert": {
          "response": {
            "$ref": "Caption"
          },
          "flatPath": "youtube/v3/captions",
          "request": {
            "$ref": "Caption"
          },
          "path": "youtube/v3/captions",
          "parameters": {
            "sync": {
              "description": "Extra parameter to allow automatically syncing the uploaded caption/transcript with the audio.",
              "location": "query",
              "type": "boolean"
            },
            "onBehalfOfContentOwner": {
              "location": "query",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 actual CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "type": "string"
            },
            "part": {
              "location": "query",
              "type": "string",
              "repeated": true,
              "description": "The *part* parameter specifies the caption resource parts that the API response will include. Set the parameter value to snippet.",
              "required": true
            },
            "onBehalfOf": {
              "description": "ID of the Google+ Page for the channel that the request is be on behalf of",
              "type": "string",
              "location": "query"
            }
          },
          "id": "youtube.captions.insert",
          "parameterOrder": [
            "part"
          ],
          "scopes": [
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "mediaUpload": {
            "maxSize": "104857600",
            "protocols": {
              "simple": {
                "multipart": true,
                "path": "/upload/youtube/v3/captions"
              },
              "resumable": {
                "path": "/resumable/upload/youtube/v3/captions",
                "multipart": true
              }
            },
            "accept": [
              "text/xml",
              "application/octet-stream",
              "*/*"
            ]
          },
          "supportsMediaUpload": true,
          "description": "Inserts a new resource into this collection.",
          "httpMethod": "POST"
        },
        "delete": {
          "description": "Deletes a resource.",
          "scopes": [
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "path": "youtube/v3/captions",
          "parameterOrder": [
            "id"
          ],
          "flatPath": "youtube/v3/captions",
          "id": "youtube.captions.delete",
          "httpMethod": "DELETE",
          "parameters": {
            "id": {
              "required": true,
              "type": "string",
              "location": "query"
            },
            "onBehalfOf": {
              "location": "query",
              "description": "ID of the Google+ Page for the channel that the request is be on behalf of",
              "type": "string"
            },
            "onBehalfOfContentOwner": {
              "location": "query",
              "type": "string",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 actual CMS account that the user authenticates with must be linked to the specified YouTube content owner."
            }
          }
        },
        "list": {
          "response": {
            "$ref": "CaptionListResponse"
          },
          "flatPath": "youtube/v3/captions",
          "description": "Retrieves a list of resources, possibly filtered.",
          "httpMethod": "GET",
          "scopes": [
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "path": "youtube/v3/captions",
          "parameterOrder": [
            "part",
            "videoId"
          ],
          "parameters": {
            "onBehalfOfContentOwner": {
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 actual CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query",
              "type": "string"
            },
            "id": {
              "type": "string",
              "description": "Returns the captions with the given IDs for Stubby or Apiary.",
              "repeated": true,
              "location": "query"
            },
            "onBehalfOf": {
              "description": "ID of the Google+ Page for the channel that the request is on behalf of.",
              "location": "query",
              "type": "string"
            },
            "videoId": {
              "required": true,
              "description": "Returns the captions for the specified video.",
              "location": "query",
              "type": "string"
            },
            "part": {
              "required": true,
              "repeated": true,
              "type": "string",
              "location": "query",
              "description": "The *part* parameter specifies a comma-separated list of one or more caption resource parts that the API response will include. The part names that you can include in the parameter value are id and snippet."
            }
          },
          "id": "youtube.captions.list"
        },
        "update": {
          "supportsMediaUpload": true,
          "path": "youtube/v3/captions",
          "parameters": {
            "onBehalfOf": {
              "description": "ID of the Google+ Page for the channel that the request is on behalf of.",
              "location": "query",
              "type": "string"
            },
            "sync": {
              "description": "Extra parameter to allow automatically syncing the uploaded caption/transcript with the audio.",
              "location": "query",
              "type": "boolean"
            },
            "onBehalfOfContentOwner": {
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 actual CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "type": "string",
              "location": "query"
            },
            "part": {
              "description": "The *part* parameter specifies a comma-separated list of one or more caption resource parts that the API response will include. The part names that you can include in the parameter value are id and snippet.",
              "location": "query",
              "required": true,
              "type": "string",
              "repeated": true
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "flatPath": "youtube/v3/captions",
          "parameterOrder": [
            "part"
          ],
          "response": {
            "$ref": "Caption"
          },
          "description": "Updates an existing resource.",
          "httpMethod": "PUT",
          "request": {
            "$ref": "Caption"
          },
          "mediaUpload": {
            "protocols": {
              "simple": {
                "path": "/upload/youtube/v3/captions",
                "multipart": true
              },
              "resumable": {
                "multipart": true,
                "path": "/resumable/upload/youtube/v3/captions"
              }
            },
            "maxSize": "104857600",
            "accept": [
              "text/xml",
              "application/octet-stream",
              "*/*"
            ]
          },
          "id": "youtube.captions.update"
        }
      }
    },
    "comments": {
      "methods": {
        "insert": {
          "response": {
            "$ref": "Comment"
          },
          "flatPath": "youtube/v3/comments",
          "scopes": [
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "parameters": {
            "part": {
              "location": "query",
              "type": "string",
              "repeated": true,
              "description": "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": true
            }
          },
          "request": {
            "$ref": "Comment"
          },
          "parameterOrder": [
            "part"
          ],
          "description": "Inserts a new resource into this collection.",
          "httpMethod": "POST",
          "path": "youtube/v3/comments",
          "id": "youtube.comments.insert"
        },
        "setModerationStatus": {
          "httpMethod": "POST",
          "scopes": [
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "description": "Sets the moderation status of one or more comments.",
          "parameters": {
            "id": {
              "type": "string",
              "location": "query",
              "required": true,
              "description": "Modifies the moderation status of the comments with the given IDs",
              "repeated": true
            },
            "moderationStatus": {
              "location": "query",
              "type": "string",
              "enumDescriptions": [
                "The comment is available for public display.",
                "The comment is awaiting review by a moderator.",
                "",
                "The comment is unfit for display."
              ],
              "description": "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 'likely spam'. Valid values: 'heldForReview', 'published' or 'rejected'.",
              "required": true,
              "enum": [
                "published",
                "heldForReview",
                "likelySpam",
                "rejected"
              ]
            },
            "banAuthor": {
              "location": "query",
              "type": "boolean",
              "default": "false",
              "description": "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."
            }
          },
          "path": "youtube/v3/comments/setModerationStatus",
          "id": "youtube.comments.setModerationStatus",
          "parameterOrder": [
            "id",
            "moderationStatus"
          ],
          "flatPath": "youtube/v3/comments/setModerationStatus"
        },
        "markAsSpam": {
          "path": "youtube/v3/comments/markAsSpam",
          "parameters": {
            "id": {
              "required": true,
              "repeated": true,
              "description": "Flags the comments with the given IDs as spam in the caller's opinion.",
              "location": "query",
              "type": "string"
            }
          },
          "id": "youtube.comments.markAsSpam",
          "scopes": [
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "httpMethod": "POST",
          "parameterOrder": [
            "id"
          ],
          "flatPath": "youtube/v3/comments/markAsSpam",
          "description": "Expresses the caller's opinion that one or more comments should be flagged as spam."
        },
        "update": {
          "flatPath": "youtube/v3/comments",
          "response": {
            "$ref": "Comment"
          },
          "parameterOrder": [
            "part"
          ],
          "request": {
            "$ref": "Comment"
          },
          "description": "Updates an existing resource.",
          "parameters": {
            "part": {
              "type": "string",
              "location": "query",
              "repeated": true,
              "required": true,
              "description": "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."
            }
          },
          "id": "youtube.comments.update",
          "path": "youtube/v3/comments",
          "scopes": [
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "httpMethod": "PUT"
        },
        "list": {
          "parameterOrder": [
            "part"
          ],
          "description": "Retrieves a list of resources, possibly filtered.",
          "httpMethod": "GET",
          "scopes": [
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "id": "youtube.comments.list",
          "path": "youtube/v3/comments",
          "flatPath": "youtube/v3/comments",
          "response": {
            "$ref": "CommentListResponse"
          },
          "parameters": {
            "maxResults": {
              "default": "20",
              "maximum": "100",
              "location": "query",
              "description": "The *maxResults* parameter specifies the maximum number of items that should be returned in the result set.",
              "minimum": "1",
              "type": "integer",
              "format": "uint32"
            },
            "parentId": {
              "type": "string",
              "description": "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.",
              "location": "query"
            },
            "id": {
              "type": "string",
              "location": "query",
              "description": "Returns the comments with the given IDs for One Platform.",
              "repeated": true
            },
            "part": {
              "location": "query",
              "type": "string",
              "required": true,
              "description": "The *part* parameter specifies a comma-separated list of one or more comment resource properties that the API response will include.",
              "repeated": true
            },
            "textFormat": {
              "default": "html",
              "enum": [
                "textFormatUnspecified",
                "html",
                "plainText"
              ],
              "enumDescriptions": [
                "",
                "Returns the comments in HTML format. This is the default value.",
                "Returns the comments in plain text format."
              ],
              "type": "string",
              "location": "query",
              "description": "The requested text format for the returned comments."
            },
            "pageToken": {
              "description": "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.",
              "type": "string",
              "location": "query"
            }
          }
        },
        "delete": {
          "path": "youtube/v3/comments",
          "id": "youtube.comments.delete",
          "description": "Deletes a resource.",
          "httpMethod": "DELETE",
          "parameters": {
            "id": {
              "location": "query",
              "type": "string",
              "required": true
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "flatPath": "youtube/v3/comments",
          "parameterOrder": [
            "id"
          ]
        }
      }
    },
    "videos": {
      "methods": {
        "batchGetStats": {
          "parameterOrder": [],
          "flatPath": "youtube/v3/videos:batchGetStats",
          "response": {
            "$ref": "BatchGetStatsResponse"
          },
          "description": "Retrieves a batch of VideoStat resources, possibly filtered. BatchGetStats is intentionally not atomic to provide a better user experience.",
          "parameters": {
            "onBehalfOfContentOwner": {
              "location": "query",
              "description": "Optional. **Note:** This parameter is intended exclusively for YouTube content partners. The `onBehalfOfContentOwner` parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "type": "string"
            },
            "id": {
              "repeated": true,
              "location": "query",
              "description": "Required. Return videos with the given ids. The number of IDs specified cannot exceed 50.",
              "type": "string"
            },
            "part": {
              "description": "Required. The `**part**` parameter specifies a comma-separated list of one or more `videoStat` resource properties that the API response will include. If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a `videoStat` resource, the `statistics` property contains `view_count` and `like_count`. As such, if you set `**part=snippet**`, the API response will contain all of those properties.",
              "type": "string",
              "location": "query",
              "repeated": true
            }
          },
          "id": "youtube.videos.batchGetStats",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "httpMethod": "GET",
          "path": "youtube/v3/videos:batchGetStats"
        },
        "delete": {
          "id": "youtube.videos.delete",
          "parameterOrder": [
            "id"
          ],
          "path": "youtube/v3/videos",
          "httpMethod": "DELETE",
          "parameters": {
            "id": {
              "required": true,
              "location": "query",
              "type": "string"
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 actual CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query"
            }
          },
          "description": "Deletes a resource.",
          "flatPath": "youtube/v3/videos",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ]
        },
        "list": {
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "path": "youtube/v3/videos",
          "description": "Retrieves a list of resources, possibly filtered.",
          "parameters": {
            "maxHeight": {
              "maximum": "8192",
              "location": "query",
              "minimum": "72",
              "type": "integer",
              "format": "int32"
            },
            "maxWidth": {
              "minimum": "72",
              "type": "integer",
              "format": "int32",
              "description": "Return the player with maximum height specified in",
              "maximum": "8192",
              "location": "query"
            },
            "maxResults": {
              "description": "The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. *Note:* This parameter is supported for use in conjunction with the myRating and chart parameters, but it is not supported for use in conjunction with the id parameter.",
              "minimum": "1",
              "maximum": "50",
              "location": "query",
              "format": "uint32",
              "type": "integer",
              "default": "5"
            },
            "pageToken": {
              "location": "query",
              "description": "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. *Note:* This parameter is supported for use in conjunction with the myRating and chart parameters, but it is not supported for use in conjunction with the id parameter.",
              "type": "string"
            },
            "part": {
              "repeated": true,
              "type": "string",
              "required": true,
              "location": "query",
              "description": "The *part* parameter specifies a comma-separated list of one or more video resource properties that the API response will include. If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a video resource, the snippet property contains the channelId, title, description, tags, and categoryId properties. As such, if you set *part=snippet*, the API response will contain all of those properties."
            },
            "regionCode": {
              "type": "string",
              "description": "Use a chart that is specific to the specified region",
              "location": "query"
            },
            "onBehalfOfContentOwner": {
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query",
              "type": "string"
            },
            "chart": {
              "description": "Return the videos that are in the specified chart.",
              "enum": [
                "chartUnspecified",
                "mostPopular"
              ],
              "location": "query",
              "enumDescriptions": [
                "",
                "Return the most popular videos for the specified content region and video category."
              ],
              "type": "string"
            },
            "locale": {
              "deprecated": true,
              "location": "query",
              "type": "string"
            },
            "hl": {
              "description": "Stands for \"host language\". Specifies the localization language of the metadata to be filled into snippet.localized. The field is filled with the default metadata if there is no localization in the specified language. The parameter value must be a language code included in the list returned by the i18nLanguages.list method (e.g. en_US, es_MX).",
              "location": "query",
              "type": "string"
            },
            "myRating": {
              "location": "query",
              "type": "string",
              "description": "Return videos liked/disliked by the authenticated user. Does not support RateType.RATED_TYPE_NONE.",
              "enum": [
                "none",
                "like",
                "dislike"
              ],
              "enumDescriptions": [
                "The entity has not been rated.",
                "The entity is liked.",
                "The entity is disliked."
              ]
            },
            "videoCategoryId": {
              "location": "query",
              "type": "string",
              "description": "Use chart that is specific to the specified video category",
              "default": "0"
            },
            "id": {
              "repeated": true,
              "location": "query",
              "description": "Return videos with the given ids.",
              "type": "string"
            }
          },
          "flatPath": "youtube/v3/videos",
          "response": {
            "$ref": "VideoListResponse"
          },
          "id": "youtube.videos.list",
          "httpMethod": "GET",
          "parameterOrder": [
            "part"
          ]
        },
        "update": {
          "request": {
            "$ref": "Video"
          },
          "id": "youtube.videos.update",
          "path": "youtube/v3/videos",
          "parameters": {
            "part": {
              "description": "The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. Note that this method will override the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies. For example, a video's privacy setting is contained in the status part. As such, if your request is updating a private video, and the request's part parameter value includes the status part, the video's privacy setting will be updated to whatever value the request body specifies. If the request body does not specify a value, the existing privacy setting will be removed and the video will revert to the default privacy setting. In addition, not all parts contain properties that can be set when inserting or updating a video. For example, the statistics object encapsulates statistics that YouTube calculates for a video and does not contain values that you can set or modify. If the parameter value specifies a part that does not contain mutable values, that part will still be included in the API response.",
              "type": "string",
              "location": "query",
              "required": true,
              "repeated": true
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 actual CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query"
            }
          },
          "description": "Updates an existing resource.",
          "parameterOrder": [
            "part"
          ],
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "flatPath": "youtube/v3/videos",
          "response": {
            "$ref": "Video"
          },
          "httpMethod": "PUT"
        },
        "getRating": {
          "flatPath": "youtube/v3/videos/getRating",
          "id": "youtube.videos.getRating",
          "response": {
            "$ref": "VideoGetRatingResponse"
          },
          "parameters": {
            "id": {
              "location": "query",
              "type": "string",
              "repeated": true,
              "required": true
            },
            "onBehalfOfContentOwner": {
              "location": "query",
              "type": "string",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner."
            }
          },
          "path": "youtube/v3/videos/getRating",
          "parameterOrder": [
            "id"
          ],
          "description": "Retrieves the ratings that the authorized user gave to a list of specified videos.",
          "httpMethod": "GET",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly",
            "https://www.googleapis.com/auth/youtubepartner"
          ]
        },
        "reportAbuse": {
          "description": "Report abuse for a video.",
          "id": "youtube.videos.reportAbuse",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "httpMethod": "POST",
          "parameterOrder": [],
          "path": "youtube/v3/videos/reportAbuse",
          "request": {
            "$ref": "VideoAbuseReport"
          },
          "parameters": {
            "onBehalfOfContentOwner": {
              "type": "string",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query"
            }
          },
          "flatPath": "youtube/v3/videos/reportAbuse"
        },
        "rate": {
          "parameters": {
            "id": {
              "location": "query",
              "type": "string",
              "required": true
            },
            "rating": {
              "required": true,
              "type": "string",
              "enumDescriptions": [
                "The entity has not been rated.",
                "The entity is liked.",
                "The entity is disliked."
              ],
              "location": "query",
              "enum": [
                "none",
                "like",
                "dislike"
              ]
            }
          },
          "httpMethod": "POST",
          "id": "youtube.videos.rate",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "flatPath": "youtube/v3/videos/rate",
          "description": "Adds a like or dislike rating to a video or removes a rating from a video.",
          "parameterOrder": [
            "id",
            "rating"
          ],
          "path": "youtube/v3/videos/rate"
        },
        "insert": {
          "request": {
            "$ref": "Video"
          },
          "flatPath": "youtube/v3/videos",
          "response": {
            "$ref": "Video"
          },
          "httpMethod": "POST",
          "description": "Inserts a new resource into this collection.",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.upload",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "mediaUpload": {
            "maxSize": "274877906944",
            "protocols": {
              "simple": {
                "multipart": true,
                "path": "/upload/youtube/v3/videos"
              },
              "resumable": {
                "path": "/resumable/upload/youtube/v3/videos",
                "multipart": true
              }
            },
            "accept": [
              "video/*",
              "application/octet-stream"
            ]
          },
          "parameterOrder": [
            "part"
          ],
          "id": "youtube.videos.insert",
          "parameters": {
            "stabilize": {
              "type": "boolean",
              "description": "Should stabilize be applied to the upload.",
              "location": "query"
            },
            "part": {
              "type": "string",
              "location": "query",
              "description": "The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. Note that not all parts contain properties that can be set when inserting or updating a video. For example, the statistics object encapsulates statistics that YouTube calculates for a video and does not contain values that you can set or modify. If the parameter value specifies a part that does not contain mutable values, that part will still be included in the API response.",
              "repeated": true,
              "required": true
            },
            "autoLevels": {
              "description": "Should auto-levels be applied to the upload.",
              "type": "boolean",
              "location": "query"
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "location": "query",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner."
            },
            "onBehalfOfContentOwnerChannel": {
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel.",
              "location": "query",
              "type": "string"
            },
            "notifySubscribers": {
              "location": "query",
              "description": "Notify the channel subscribers about the new video. As default, the notification is enabled.",
              "default": "true",
              "type": "boolean"
            }
          },
          "supportsMediaUpload": true,
          "path": "youtube/v3/videos"
        }
      }
    },
    "i18nRegions": {
      "methods": {
        "list": {
          "description": "Retrieves a list of resources, possibly filtered.",
          "parameterOrder": [
            "part"
          ],
          "parameters": {
            "part": {
              "description": "The *part* parameter specifies the i18nRegion resource properties that the API response will include. Set the parameter value to snippet.",
              "required": true,
              "type": "string",
              "repeated": true,
              "location": "query"
            },
            "hl": {
              "location": "query",
              "default": "en_US",
              "type": "string"
            }
          },
          "path": "youtube/v3/i18nRegions",
          "flatPath": "youtube/v3/i18nRegions",
          "response": {
            "$ref": "I18nRegionListResponse"
          },
          "id": "youtube.i18nRegions.list",
          "httpMethod": "GET",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly",
            "https://www.googleapis.com/auth/youtubepartner"
          ]
        }
      }
    },
    "commentThreads": {
      "methods": {
        "insert": {
          "parameters": {
            "part": {
              "repeated": true,
              "required": true,
              "description": "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.",
              "type": "string",
              "location": "query"
            }
          },
          "id": "youtube.commentThreads.insert",
          "path": "youtube/v3/commentThreads",
          "flatPath": "youtube/v3/commentThreads",
          "response": {
            "$ref": "CommentThread"
          },
          "description": "Inserts a new resource into this collection.",
          "httpMethod": "POST",
          "scopes": [
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "request": {
            "$ref": "CommentThread"
          },
          "parameterOrder": [
            "part"
          ]
        },
        "list": {
          "parameterOrder": [
            "part"
          ],
          "flatPath": "youtube/v3/commentThreads",
          "response": {
            "$ref": "CommentThreadListResponse"
          },
          "httpMethod": "GET",
          "scopes": [
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "path": "youtube/v3/commentThreads",
          "description": "Retrieves a list of resources, possibly filtered.",
          "parameters": {
            "channelId": {
              "description": "Returns the comment threads for all the channel comments (ie does not include comments left on videos).",
              "type": "string",
              "location": "query"
            },
            "part": {
              "location": "query",
              "description": "The *part* parameter specifies a comma-separated list of one or more commentThread resource properties that the API response will include.",
              "type": "string",
              "repeated": true,
              "required": true
            },
            "textFormat": {
              "enumDescriptions": [
                "",
                "Returns the comments in HTML format. This is the default value.",
                "Returns the comments in plain text format."
              ],
              "default": "html",
              "type": "string",
              "description": "The requested text format for the returned comments.",
              "enum": [
                "textFormatUnspecified",
                "html",
                "plainText"
              ],
              "location": "query"
            },
            "videoId": {
              "description": "Returns the comment threads of the specified video.",
              "type": "string",
              "location": "query"
            },
            "pageToken": {
              "description": "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.",
              "type": "string",
              "location": "query"
            },
            "allThreadsRelatedToChannelId": {
              "type": "string",
              "description": "Returns the comment threads of all videos of the channel and the channel comments as well.",
              "location": "query"
            },
            "maxResults": {
              "maximum": "100",
              "default": "20",
              "format": "uint32",
              "type": "integer",
              "description": "The *maxResults* parameter specifies the maximum number of items that should be returned in the result set.",
              "minimum": "1",
              "location": "query"
            },
            "moderationStatus": {
              "enum": [
                "published",
                "heldForReview",
                "likelySpam",
                "rejected"
              ],
              "description": "Limits the returned comment threads to those with the specified moderation status. Not compatible with the 'id' filter. Valid values: published, heldForReview, likelySpam.",
              "default": "published",
              "type": "string",
              "enumDescriptions": [
                "The comment is available for public display.",
                "The comment is awaiting review by a moderator.",
                "",
                "The comment is unfit for display."
              ],
              "location": "query"
            },
            "id": {
              "location": "query",
              "repeated": true,
              "description": "Returns the comment threads with the given IDs for Stubby or Apiary.",
              "type": "string"
            },
            "order": {
              "default": "time",
              "enumDescriptions": [
                "",
                "Order by time.",
                "Order by relevance."
              ],
              "enum": [
                "orderUnspecified",
                "time",
                "relevance"
              ],
              "type": "string",
              "location": "query"
            },
            "searchTerms": {
              "type": "string",
              "location": "query",
              "description": "Limits the returned comment threads to those matching the specified key words. Not compatible with the 'id' filter."
            }
          },
          "id": "youtube.commentThreads.list"
        }
      }
    },
    "videoTrainability": {
      "methods": {
        "get": {
          "id": "youtube.videoTrainability.get",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "parameters": {
            "id": {
              "location": "query",
              "type": "string",
              "description": "The ID of the video to retrieve."
            }
          },
          "response": {
            "$ref": "VideoTrainability"
          },
          "flatPath": "youtube/v3/videoTrainability",
          "parameterOrder": [],
          "path": "youtube/v3/videoTrainability",
          "httpMethod": "GET",
          "description": "Returns the trainability status of a video."
        }
      }
    },
    "liveChatMessages": {
      "methods": {
        "insert": {
          "description": "Inserts a new resource into this collection.",
          "id": "youtube.liveChatMessages.insert",
          "httpMethod": "POST",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "response": {
            "$ref": "LiveChatMessage"
          },
          "flatPath": "youtube/v3/liveChat/messages",
          "request": {
            "$ref": "LiveChatMessage"
          },
          "path": "youtube/v3/liveChat/messages",
          "parameters": {
            "part": {
              "repeated": true,
              "required": true,
              "type": "string",
              "description": "The *part* parameter serves two purposes. It identifies the properties that the write operation will set as well as the properties that the API response will include. Set the parameter value to snippet.",
              "location": "query"
            }
          },
          "parameterOrder": [
            "part"
          ]
        },
        "list": {
          "response": {
            "$ref": "LiveChatMessageListResponse"
          },
          "httpMethod": "GET",
          "flatPath": "youtube/v3/liveChat/messages",
          "description": "Retrieves a list of resources, possibly filtered.",
          "parameters": {
            "maxResults": {
              "maximum": "2000",
              "description": "The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. Not used in the streaming RPC.",
              "default": "500",
              "location": "query",
              "format": "uint32",
              "type": "integer",
              "minimum": "200"
            },
            "liveChatId": {
              "required": true,
              "type": "string",
              "location": "query",
              "description": "The id of the live chat for which comments should be returned."
            },
            "hl": {
              "description": "Specifies the localization language in which the system messages should be returned.",
              "type": "string",
              "location": "query"
            },
            "profileImageSize": {
              "maximum": "720",
              "location": "query",
              "description": "Specifies the size of the profile image that should be returned for each user.",
              "type": "integer",
              "minimum": "16",
              "format": "uint32"
            },
            "part": {
              "repeated": true,
              "required": true,
              "location": "query",
              "description": "The *part* parameter specifies the liveChatComment resource parts that the API response will include. Supported values are id, snippet, and authorDetails.",
              "type": "string"
            },
            "pageToken": {
              "type": "string",
              "description": "The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken property identify other pages that could be retrieved.",
              "location": "query"
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly"
          ],
          "path": "youtube/v3/liveChat/messages",
          "parameterOrder": [
            "liveChatId",
            "part"
          ],
          "id": "youtube.liveChatMessages.list"
        },
        "delete": {
          "id": "youtube.liveChatMessages.delete",
          "parameters": {
            "id": {
              "location": "query",
              "required": true,
              "type": "string"
            }
          },
          "httpMethod": "DELETE",
          "path": "youtube/v3/liveChat/messages",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "parameterOrder": [
            "id"
          ],
          "flatPath": "youtube/v3/liveChat/messages",
          "description": "Deletes a chat message."
        },
        "transition": {
          "path": "youtube/v3/liveChat/messages/transition",
          "httpMethod": "POST",
          "description": "Transition a durable chat event.",
          "flatPath": "youtube/v3/liveChat/messages/transition",
          "response": {
            "$ref": "LiveChatMessage"
          },
          "parameterOrder": [],
          "id": "youtube.liveChatMessages.transition",
          "parameters": {
            "id": {
              "description": "The ID that uniquely identify the chat message event to transition.",
              "location": "query",
              "type": "string"
            },
            "status": {
              "enumDescriptions": [
                "Default unknown enum value.",
                "The durable chat event is over."
              ],
              "enum": [
                "statusUnspecified",
                "closed"
              ],
              "description": "The status to which the chat event is going to transition.",
              "location": "query",
              "type": "string"
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ]
        }
      }
    },
    "activities": {
      "methods": {
        "list": {
          "flatPath": "youtube/v3/activities",
          "id": "youtube.activities.list",
          "httpMethod": "GET",
          "response": {
            "$ref": "ActivityListResponse"
          },
          "description": "Retrieves a list of resources, possibly filtered.",
          "parameterOrder": [
            "part"
          ],
          "path": "youtube/v3/activities",
          "parameters": {
            "maxResults": {
              "location": "query",
              "minimum": "0",
              "description": "The *maxResults* parameter specifies the maximum number of items that should be returned in the result set.",
              "default": "5",
              "maximum": "50",
              "format": "uint32",
              "type": "integer"
            },
            "channelId": {
              "location": "query",
              "type": "string"
            },
            "publishedBefore": {
              "type": "string",
              "format": "google-datetime",
              "location": "query"
            },
            "part": {
              "repeated": true,
              "required": true,
              "location": "query",
              "description": "The *part* parameter specifies a comma-separated list of one or more activity resource properties that the API response will include. If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in an activity resource, the snippet property contains other properties that identify the type of activity, a display title for the activity, and so forth. If you set *part=snippet*, the API response will also contain all of those nested properties.",
              "type": "string"
            },
            "publishedAfter": {
              "format": "google-datetime",
              "type": "string",
              "location": "query"
            },
            "pageToken": {
              "type": "string",
              "location": "query",
              "description": "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."
            },
            "home": {
              "deprecated": true,
              "type": "boolean",
              "location": "query"
            },
            "regionCode": {
              "type": "string",
              "location": "query"
            },
            "mine": {
              "location": "query",
              "type": "boolean"
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly"
          ]
        }
      }
    },
    "playlistItems": {
      "methods": {
        "list": {
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "parameters": {
            "playlistId": {
              "location": "query",
              "type": "string",
              "description": "Return the playlist items within the given playlist."
            },
            "videoId": {
              "type": "string",
              "description": "Return the playlist items associated with the given video ID.",
              "location": "query"
            },
            "onBehalfOfContentOwner": {
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query",
              "type": "string"
            },
            "maxResults": {
              "minimum": "0",
              "location": "query",
              "default": "5",
              "type": "integer",
              "maximum": "50",
              "description": "The *maxResults* parameter specifies the maximum number of items that should be returned in the result set.",
              "format": "uint32"
            },
            "id": {
              "location": "query",
              "repeated": true,
              "type": "string"
            },
            "pageToken": {
              "type": "string",
              "location": "query",
              "description": "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."
            },
            "part": {
              "type": "string",
              "location": "query",
              "repeated": true,
              "required": true,
              "description": "The *part* parameter specifies a comma-separated list of one or more playlistItem resource properties that the API response will include. If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a playlistItem resource, the snippet property contains numerous fields, including the title, description, position, and resourceId properties. As such, if you set *part=snippet*, the API response will contain all of those properties."
            }
          },
          "response": {
            "$ref": "PlaylistItemListResponse"
          },
          "description": "Retrieves a list of resources, possibly filtered.",
          "path": "youtube/v3/playlistItems",
          "flatPath": "youtube/v3/playlistItems",
          "parameterOrder": [
            "part"
          ],
          "id": "youtube.playlistItems.list",
          "httpMethod": "GET"
        },
        "delete": {
          "flatPath": "youtube/v3/playlistItems",
          "httpMethod": "DELETE",
          "parameters": {
            "id": {
              "required": true,
              "type": "string",
              "location": "query"
            },
            "onBehalfOfContentOwner": {
              "location": "query",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "type": "string"
            }
          },
          "path": "youtube/v3/playlistItems",
          "id": "youtube.playlistItems.delete",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "parameterOrder": [
            "id"
          ],
          "description": "Deletes a resource."
        },
        "insert": {
          "path": "youtube/v3/playlistItems",
          "httpMethod": "POST",
          "request": {
            "$ref": "PlaylistItem"
          },
          "response": {
            "$ref": "PlaylistItem"
          },
          "flatPath": "youtube/v3/playlistItems",
          "parameterOrder": [
            "part"
          ],
          "parameters": {
            "part": {
              "location": "query",
              "description": "The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.",
              "required": true,
              "type": "string",
              "repeated": true
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query"
            }
          },
          "description": "Inserts a new resource into this collection.",
          "id": "youtube.playlistItems.insert",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ]
        },
        "update": {
          "parameterOrder": [
            "part"
          ],
          "httpMethod": "PUT",
          "description": "Updates an existing resource.",
          "id": "youtube.playlistItems.update",
          "flatPath": "youtube/v3/playlistItems",
          "response": {
            "$ref": "PlaylistItem"
          },
          "parameters": {
            "onBehalfOfContentOwner": {
              "type": "string",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query"
            },
            "part": {
              "required": true,
              "description": "The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. Note that this method will override the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies. For example, a playlist item can specify a start time and end time, which identify the times portion of the video that should play when users watch the video in the playlist. If your request is updating a playlist item that sets these values, and the request's part parameter value includes the contentDetails part, the playlist item's start and end times will be updated to whatever value the request body specifies. If the request body does not specify values, the existing start and end times will be removed and replaced with the default settings.",
              "type": "string",
              "repeated": true,
              "location": "query"
            }
          },
          "path": "youtube/v3/playlistItems",
          "request": {
            "$ref": "PlaylistItem"
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ]
        }
      }
    },
    "subscriptions": {
      "methods": {
        "delete": {
          "parameterOrder": [
            "id"
          ],
          "flatPath": "youtube/v3/subscriptions",
          "description": "Deletes a resource.",
          "path": "youtube/v3/subscriptions",
          "id": "youtube.subscriptions.delete",
          "parameters": {
            "id": {
              "required": true,
              "type": "string",
              "location": "query"
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "httpMethod": "DELETE"
        },
        "list": {
          "id": "youtube.subscriptions.list",
          "description": "Retrieves a list of resources, possibly filtered.",
          "httpMethod": "GET",
          "path": "youtube/v3/subscriptions",
          "parameterOrder": [
            "part"
          ],
          "flatPath": "youtube/v3/subscriptions",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "response": {
            "$ref": "SubscriptionListResponse"
          },
          "parameters": {
            "onBehalfOfContentOwnerChannel": {
              "location": "query",
              "type": "string",
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel."
            },
            "myRecentSubscribers": {
              "location": "query",
              "type": "boolean"
            },
            "forChannelId": {
              "type": "string",
              "location": "query",
              "description": "Return the subscriptions to the subset of these channels that the authenticated user is subscribed to."
            },
            "pageToken": {
              "type": "string",
              "description": "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.",
              "location": "query"
            },
            "part": {
              "repeated": true,
              "required": true,
              "description": "The *part* parameter specifies a comma-separated list of one or more subscription resource properties that the API response will include. If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a subscription resource, the snippet property contains other properties, such as a display title for the subscription. If you set *part=snippet*, the API response will also contain all of those nested properties.",
              "location": "query",
              "type": "string"
            },
            "id": {
              "location": "query",
              "repeated": true,
              "type": "string",
              "description": "Return the subscriptions with the given IDs for Stubby or Apiary."
            },
            "onBehalfOfContentOwner": {
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "type": "string",
              "location": "query"
            },
            "order": {
              "description": "The order of the returned subscriptions",
              "enum": [
                "subscriptionOrderUnspecified",
                "relevance",
                "unread",
                "alphabetical"
              ],
              "enumDescriptions": [
                "",
                "Sort by relevance.",
                "Sort by order of activity.",
                "Sort alphabetically."
              ],
              "location": "query",
              "default": "relevance",
              "type": "string"
            },
            "mySubscribers": {
              "description": "Return the subscribers of the given channel owner.",
              "type": "boolean",
              "location": "query"
            },
            "maxResults": {
              "default": "5",
              "type": "integer",
              "location": "query",
              "maximum": "50",
              "minimum": "0",
              "description": "The *maxResults* parameter specifies the maximum number of items that should be returned in the result set.",
              "format": "uint32"
            },
            "channelId": {
              "description": "Return the subscriptions of the given channel owner.",
              "location": "query",
              "type": "string"
            },
            "mine": {
              "description": "Flag for returning the subscriptions of the authenticated user.",
              "type": "boolean",
              "location": "query"
            }
          }
        },
        "insert": {
          "parameterOrder": [
            "part"
          ],
          "id": "youtube.subscriptions.insert",
          "parameters": {
            "part": {
              "type": "string",
              "description": "The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.",
              "location": "query",
              "repeated": true,
              "required": true
            }
          },
          "request": {
            "$ref": "Subscription"
          },
          "flatPath": "youtube/v3/subscriptions",
          "response": {
            "$ref": "Subscription"
          },
          "description": "Inserts a new resource into this collection.",
          "path": "youtube/v3/subscriptions",
          "httpMethod": "POST",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ]
        }
      }
    },
    "i18nLanguages": {
      "methods": {
        "list": {
          "parameters": {
            "part": {
              "required": true,
              "description": "The *part* parameter specifies the i18nLanguage resource properties that the API response will include. Set the parameter value to snippet.",
              "repeated": true,
              "type": "string",
              "location": "query"
            },
            "hl": {
              "location": "query",
              "type": "string",
              "default": "en_US"
            }
          },
          "description": "Retrieves a list of resources, possibly filtered.",
          "response": {
            "$ref": "I18nLanguageListResponse"
          },
          "flatPath": "youtube/v3/i18nLanguages",
          "httpMethod": "GET",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "path": "youtube/v3/i18nLanguages",
          "id": "youtube.i18nLanguages.list",
          "parameterOrder": [
            "part"
          ]
        }
      }
    },
    "search": {
      "methods": {
        "list": {
          "path": "youtube/v3/search",
          "httpMethod": "GET",
          "id": "youtube.search.list",
          "description": "Retrieves a list of search resources",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "flatPath": "youtube/v3/search",
          "response": {
            "$ref": "SearchListResponse"
          },
          "parameterOrder": [
            "part"
          ],
          "parameters": {
            "regionCode": {
              "location": "query",
              "type": "string",
              "description": "Display the content as seen by viewers in this country."
            },
            "videoCaption": {
              "type": "string",
              "enumDescriptions": [
                "",
                "Do not filter results based on caption availability.",
                "Only include videos that have captions.",
                "Only include videos that do not have captions."
              ],
              "location": "query",
              "enum": [
                "videoCaptionUnspecified",
                "any",
                "closedCaption",
                "none"
              ],
              "description": "Filter on the presence of captions on the videos."
            },
            "relevanceLanguage": {
              "description": "Return results relevant to this language.",
              "type": "string",
              "location": "query"
            },
            "part": {
              "required": true,
              "repeated": true,
              "description": "The *part* parameter specifies a comma-separated list of one or more search resource properties that the API response will include. Set the parameter value to snippet.",
              "location": "query",
              "type": "string"
            },
            "forContentOwner": {
              "type": "boolean",
              "description": "Search owned by a content owner.",
              "location": "query"
            },
            "eventType": {
              "description": "Filter on the livestream status of the videos.",
              "enum": [
                "none",
                "upcoming",
                "live",
                "completed"
              ],
              "location": "query",
              "enumDescriptions": [
                "The resource does not have live broadcast content.",
                "The live broadcast is upcoming.",
                "The live broadcast is active.",
                "The live broadcast has been completed."
              ],
              "type": "string"
            },
            "safeSearch": {
              "default": "moderate",
              "location": "query",
              "enum": [
                "safeSearchSettingUnspecified",
                "none",
                "moderate",
                "strict"
              ],
              "enumDescriptions": [
                "",
                "YouTube will not filter the search result set.",
                "YouTube will filter some content from search results and, at the least, will filter content that is restricted in your locale. Based on their content, search results could be removed from search results or demoted in search results. This is the default parameter value.",
                "YouTube will try to exclude all restricted content from the search result set. Based on their content, search results could be removed from search results or demoted in search results."
              ],
              "type": "string",
              "description": "Indicates whether the search results should include restricted content as well as standard content."
            },
            "location": {
              "location": "query",
              "type": "string",
              "description": "Filter on location of the video"
            },
            "publishedAfter": {
              "location": "query",
              "format": "google-datetime",
              "type": "string",
              "description": "Filter on resources published after this date."
            },
            "channelType": {
              "enum": [
                "channelTypeUnspecified",
                "any",
                "show"
              ],
              "enumDescriptions": [
                "",
                "Return all channels.",
                "Only retrieve shows."
              ],
              "description": "Add a filter on the channel search.",
              "location": "query",
              "type": "string"
            },
            "channelId": {
              "type": "string",
              "description": "Filter on resources belonging to this channelId. (Force TAP rebuild)",
              "location": "query"
            },
            "videoDuration": {
              "type": "string",
              "location": "query",
              "enumDescriptions": [
                "",
                "Do not filter video search results based on their duration. This is the default value.",
                "Only include videos that are less than four minutes long.",
                "Only include videos that are between four and 20 minutes long (inclusive).",
                "Only include videos longer than 20 minutes."
              ],
              "enum": [
                "videoDurationUnspecified",
                "any",
                "short",
                "medium",
                "long"
              ],
              "description": "Filter on the duration of the videos."
            },
            "videoEmbeddable": {
              "enum": [
                "videoEmbeddableUnspecified",
                "any",
                "true"
              ],
              "location": "query",
              "enumDescriptions": [
                "",
                "Return all videos, embeddable or not.",
                "Only retrieve embeddable videos."
              ],
              "description": "Filter on embeddable videos.",
              "type": "string"
            },
            "locationRadius": {
              "type": "string",
              "location": "query",
              "description": "Filter on distance from the location (specified above)."
            },
            "videoCategoryId": {
              "location": "query",
              "description": "Filter on videos in a specific category.",
              "type": "string"
            },
            "videoType": {
              "enumDescriptions": [
                "",
                "Return all videos.",
                "Only retrieve movies.",
                "Only retrieve episodes of shows."
              ],
              "description": "Filter on videos of a specific type.",
              "enum": [
                "videoTypeUnspecified",
                "any",
                "movie",
                "episode"
              ],
              "type": "string",
              "location": "query"
            },
            "order": {
              "location": "query",
              "description": "Sort order of the results.",
              "type": "string",
              "enumDescriptions": [
                "",
                "Resources are sorted in reverse chronological order based on the date they were created.",
                "Resources are sorted from highest to lowest rating.",
                "Resources are sorted from highest to lowest number of views.",
                "Resources are sorted based on their relevance to the search query. This is the default value for this parameter.",
                "Resources are sorted alphabetically by title.",
                "Channels are sorted in descending order of their number of uploaded videos."
              ],
              "default": "relevance",
              "enum": [
                "searchSortUnspecified",
                "date",
                "rating",
                "viewCount",
                "relevance",
                "title",
                "videoCount"
              ]
            },
            "pageToken": {
              "type": "string",
              "description": "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.",
              "location": "query"
            },
            "topicId": {
              "type": "string",
              "description": "Restrict results to a particular topic.",
              "location": "query"
            },
            "maxResults": {
              "minimum": "0",
              "description": "The *maxResults* parameter specifies the maximum number of items that should be returned in the result set.",
              "type": "integer",
              "location": "query",
              "format": "uint32",
              "default": "5",
              "maximum": "50"
            },
            "type": {
              "type": "string",
              "description": "Restrict results to a particular set of resource types from One Platform.",
              "repeated": true,
              "location": "query"
            },
            "q": {
              "type": "string",
              "description": "Textual search terms to match.",
              "location": "query"
            },
            "videoLicense": {
              "type": "string",
              "enumDescriptions": [
                "Return all videos, regardless of which license they have, that match the query parameters.",
                "Only return videos that have the standard YouTube license.",
                "Only return videos that have a Creative Commons license. Users can reuse videos with this license in other videos that they create. Learn more."
              ],
              "location": "query",
              "enum": [
                "any",
                "youtube",
                "creativeCommon"
              ],
              "description": "Filter on the license of the videos."
            },
            "onBehalfOfContentOwner": {
              "location": "query",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "type": "string"
            },
            "forDeveloper": {
              "description": "Restrict the search to only retrieve videos uploaded using the project id of the authenticated user.",
              "location": "query",
              "type": "boolean"
            },
            "videoSyndicated": {
              "description": "Filter on syndicated videos.",
              "enumDescriptions": [
                "",
                "Return all videos, syndicated or not.",
                "Only retrieve syndicated videos."
              ],
              "enum": [
                "videoSyndicatedUnspecified",
                "any",
                "true"
              ],
              "type": "string",
              "location": "query"
            },
            "videoDimension": {
              "enumDescriptions": [
                "Include both 3D and non-3D videos in returned results. This is the default value.",
                "Restrict search results to exclude 3D videos.",
                "Restrict search results to only include 3D videos."
              ],
              "enum": [
                "any",
                "2d",
                "3d"
              ],
              "description": "Filter on 3d videos.",
              "location": "query",
              "type": "string"
            },
            "forMine": {
              "location": "query",
              "type": "boolean",
              "description": "Search for the private videos of the authenticated user."
            },
            "videoPaidProductPlacement": {
              "type": "string",
              "enum": [
                "videoPaidProductPlacementUnspecified",
                "any",
                "true"
              ],
              "enumDescriptions": [
                "",
                "Return all videos, paid product placement or not.",
                "Restrict results to only videos with paid product placement."
              ],
              "location": "query"
            },
            "videoDefinition": {
              "description": "Filter on the definition of the videos.",
              "enum": [
                "any",
                "standard",
                "high"
              ],
              "enumDescriptions": [
                "Return all videos, regardless of their resolution.",
                "Only retrieve videos in standard definition.",
                "Only retrieve HD videos."
              ],
              "location": "query",
              "type": "string"
            },
            "publishedBefore": {
              "type": "string",
              "description": "Filter on resources published before this date.",
              "location": "query",
              "format": "google-datetime"
            }
          }
        }
      }
    },
    "tests": {
      "methods": {
        "insert": {
          "id": "youtube.tests.insert",
          "scopes": [
            "https://www.googleapis.com/auth/youtube.readonly"
          ],
          "httpMethod": "POST",
          "flatPath": "youtube/v3/tests",
          "response": {
            "$ref": "TestItem"
          },
          "description": "POST method.",
          "path": "youtube/v3/tests",
          "request": {
            "$ref": "TestItem"
          },
          "parameters": {
            "externalChannelId": {
              "location": "query",
              "type": "string"
            },
            "part": {
              "repeated": true,
              "location": "query",
              "required": true,
              "type": "string"
            },
            "onBehalfOfContentOwnerChannel": {
              "type": "string",
              "location": "query"
            }
          },
          "parameterOrder": [
            "part"
          ]
        }
      }
    },
    "videoAbuseReportReasons": {
      "methods": {
        "list": {
          "parameterOrder": [
            "part"
          ],
          "parameters": {
            "part": {
              "location": "query",
              "required": true,
              "description": "The *part* parameter specifies the videoCategory resource parts that the API response will include. Supported values are id and snippet.",
              "repeated": true,
              "type": "string"
            },
            "hl": {
              "location": "query",
              "default": "en-US",
              "type": "string"
            }
          },
          "response": {
            "$ref": "VideoAbuseReportReasonListResponse"
          },
          "path": "youtube/v3/videoAbuseReportReasons",
          "flatPath": "youtube/v3/videoAbuseReportReasons",
          "httpMethod": "GET",
          "id": "youtube.videoAbuseReportReasons.list",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly"
          ],
          "description": "Retrieves a list of resources, possibly filtered."
        }
      }
    },
    "channelBanners": {
      "methods": {
        "insert": {
          "parameterOrder": [],
          "flatPath": "youtube/v3/channelBanners/insert",
          "response": {
            "$ref": "ChannelBannerResource"
          },
          "parameters": {
            "onBehalfOfContentOwner": {
              "type": "string",
              "location": "query",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 actual CMS account that the user authenticates with must be linked to the specified YouTube content owner."
            },
            "onBehalfOfContentOwnerChannel": {
              "location": "query",
              "type": "string",
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel."
            },
            "channelId": {
              "type": "string",
              "description": "Unused, channel_id is currently derived from the security context of the requestor.",
              "location": "query"
            }
          },
          "request": {
            "$ref": "ChannelBannerResource"
          },
          "path": "youtube/v3/channelBanners/insert",
          "supportsMediaUpload": true,
          "mediaUpload": {
            "protocols": {
              "resumable": {
                "multipart": true,
                "path": "/resumable/upload/youtube/v3/channelBanners/insert"
              },
              "simple": {
                "path": "/upload/youtube/v3/channelBanners/insert",
                "multipart": true
              }
            },
            "maxSize": "6291456",
            "accept": [
              "image/jpeg",
              "image/png",
              "application/octet-stream"
            ]
          },
          "description": "Inserts a new resource into this collection.",
          "httpMethod": "POST",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.upload"
          ],
          "id": "youtube.channelBanners.insert"
        }
      }
    },
    "playlists": {
      "methods": {
        "list": {
          "httpMethod": "GET",
          "id": "youtube.playlists.list",
          "flatPath": "youtube/v3/playlists",
          "response": {
            "$ref": "PlaylistListResponse"
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "description": "Retrieves a list of resources, possibly filtered.",
          "parameterOrder": [
            "part"
          ],
          "parameters": {
            "id": {
              "description": "Return the playlists with the given IDs for Stubby or Apiary.",
              "type": "string",
              "location": "query",
              "repeated": true
            },
            "part": {
              "location": "query",
              "description": "The *part* parameter specifies a comma-separated list of one or more playlist resource properties that the API response will include. If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a playlist resource, the snippet property contains properties like author, title, description, tags, and timeCreated. As such, if you set *part=snippet*, the API response will contain all of those properties.",
              "type": "string",
              "repeated": true,
              "required": true
            },
            "maxResults": {
              "format": "uint32",
              "maximum": "50",
              "type": "integer",
              "default": "5",
              "description": "The *maxResults* parameter specifies the maximum number of items that should be returned in the result set.",
              "minimum": "0",
              "location": "query"
            },
            "hl": {
              "description": "Return content in specified language",
              "type": "string",
              "location": "query"
            },
            "mine": {
              "location": "query",
              "description": "Return the playlists owned by the authenticated user.",
              "type": "boolean"
            },
            "pageToken": {
              "description": "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.",
              "type": "string",
              "location": "query"
            },
            "onBehalfOfContentOwnerChannel": {
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel.",
              "type": "string",
              "location": "query"
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query"
            },
            "channelId": {
              "location": "query",
              "description": "Return the playlists owned by the specified channel ID.",
              "type": "string"
            }
          },
          "path": "youtube/v3/playlists"
        },
        "insert": {
          "parameters": {
            "part": {
              "type": "string",
              "required": true,
              "repeated": true,
              "description": "The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.",
              "location": "query"
            },
            "onBehalfOfContentOwner": {
              "location": "query",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "type": "string"
            },
            "onBehalfOfContentOwnerChannel": {
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel.",
              "location": "query",
              "type": "string"
            }
          },
          "description": "Inserts a new resource into this collection.",
          "path": "youtube/v3/playlists",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "id": "youtube.playlists.insert",
          "flatPath": "youtube/v3/playlists",
          "parameterOrder": [
            "part"
          ],
          "response": {
            "$ref": "Playlist"
          },
          "httpMethod": "POST",
          "request": {
            "$ref": "Playlist"
          }
        },
        "update": {
          "description": "Updates an existing resource.",
          "id": "youtube.playlists.update",
          "parameterOrder": [
            "part"
          ],
          "parameters": {
            "part": {
              "location": "query",
              "type": "string",
              "repeated": true,
              "required": true,
              "description": "The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. Note that this method will override the existing values for mutable properties that are contained in any parts that the request body specifies. For example, a playlist's description is contained in the snippet part, which must be included in the request body. If the request does not specify a value for the snippet.description property, the playlist's existing description will be deleted."
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "location": "query",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner."
            }
          },
          "flatPath": "youtube/v3/playlists",
          "response": {
            "$ref": "Playlist"
          },
          "path": "youtube/v3/playlists",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "request": {
            "$ref": "Playlist"
          },
          "httpMethod": "PUT"
        },
        "delete": {
          "httpMethod": "DELETE",
          "id": "youtube.playlists.delete",
          "parameters": {
            "id": {
              "type": "string",
              "location": "query",
              "required": true
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query"
            }
          },
          "parameterOrder": [
            "id"
          ],
          "flatPath": "youtube/v3/playlists",
          "description": "Deletes a resource.",
          "path": "youtube/v3/playlists",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ]
        }
      }
    },
    "youtube": {
      "resources": {
        "v3": {
          "resources": {
            "liveChat": {
              "resources": {
                "messages": {
                  "methods": {
                    "stream": {
                      "parameterOrder": [],
                      "response": {
                        "$ref": "LiveChatMessageListResponse"
                      },
                      "flatPath": "youtube/v3/liveChat/messages/stream",
                      "id": "youtube.youtube.v3.liveChat.messages.stream",
                      "parameters": {
                        "part": {
                          "type": "string",
                          "description": "The *part* parameter specifies the liveChatComment resource parts that the API response will include. Supported values are id, snippet, and authorDetails.",
                          "repeated": true,
                          "location": "query"
                        },
                        "liveChatId": {
                          "type": "string",
                          "location": "query",
                          "description": "The id of the live chat for which comments should be returned."
                        },
                        "maxResults": {
                          "default": "500",
                          "format": "uint32",
                          "maximum": "2000",
                          "minimum": "200",
                          "description": "The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. Not used in the streaming RPC.",
                          "type": "integer",
                          "location": "query"
                        },
                        "pageToken": {
                          "location": "query",
                          "description": "The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken property identify other pages that could be retrieved.",
                          "type": "string"
                        },
                        "profileImageSize": {
                          "format": "uint32",
                          "minimum": "16",
                          "location": "query",
                          "type": "integer",
                          "description": "Specifies the size of the profile image that should be returned for each user.",
                          "maximum": "720"
                        },
                        "hl": {
                          "type": "string",
                          "description": "Specifies the localization language in which the system messages should be returned.",
                          "location": "query"
                        }
                      },
                      "path": "youtube/v3/liveChat/messages/stream",
                      "scopes": [
                        "https://www.googleapis.com/auth/youtube",
                        "https://www.googleapis.com/auth/youtube.force-ssl",
                        "https://www.googleapis.com/auth/youtube.readonly"
                      ],
                      "description": "Allows a user to load live chat through a server-streamed RPC.",
                      "httpMethod": "GET"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "videoCategories": {
      "methods": {
        "list": {
          "httpMethod": "GET",
          "description": "Retrieves a list of resources, possibly filtered.",
          "flatPath": "youtube/v3/videoCategories",
          "response": {
            "$ref": "VideoCategoryListResponse"
          },
          "id": "youtube.videoCategories.list",
          "path": "youtube/v3/videoCategories",
          "parameters": {
            "part": {
              "repeated": true,
              "description": "The *part* parameter specifies the videoCategory resource properties that the API response will include. Set the parameter value to snippet.",
              "required": true,
              "type": "string",
              "location": "query"
            },
            "hl": {
              "default": "en-US",
              "location": "query",
              "type": "string"
            },
            "regionCode": {
              "location": "query",
              "type": "string"
            },
            "id": {
              "location": "query",
              "repeated": true,
              "description": "Returns the video categories with the given IDs for Stubby or Apiary.",
              "type": "string"
            }
          },
          "parameterOrder": [
            "part"
          ],
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly",
            "https://www.googleapis.com/auth/youtubepartner"
          ]
        }
      }
    },
    "watermarks": {
      "methods": {
        "set": {
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.upload",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "path": "youtube/v3/watermarks/set",
          "mediaUpload": {
            "maxSize": "10485760",
            "accept": [
              "image/jpeg",
              "image/png",
              "application/octet-stream"
            ],
            "protocols": {
              "resumable": {
                "multipart": true,
                "path": "/resumable/upload/youtube/v3/watermarks/set"
              },
              "simple": {
                "path": "/upload/youtube/v3/watermarks/set",
                "multipart": true
              }
            }
          },
          "parameters": {
            "channelId": {
              "required": true,
              "location": "query",
              "type": "string"
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "location": "query",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner."
            }
          },
          "description": "Allows upload of watermark image and setting it for a channel.",
          "parameterOrder": [
            "channelId"
          ],
          "supportsMediaUpload": true,
          "httpMethod": "POST",
          "id": "youtube.watermarks.set",
          "request": {
            "$ref": "InvideoBranding"
          },
          "flatPath": "youtube/v3/watermarks/set"
        },
        "unset": {
          "description": "Allows removal of channel watermark.",
          "path": "youtube/v3/watermarks/unset",
          "flatPath": "youtube/v3/watermarks/unset",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "id": "youtube.watermarks.unset",
          "parameters": {
            "onBehalfOfContentOwner": {
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "type": "string",
              "location": "query"
            },
            "channelId": {
              "required": true,
              "type": "string",
              "location": "query"
            }
          },
          "parameterOrder": [
            "channelId"
          ],
          "httpMethod": "POST"
        }
      }
    },
    "liveChatBans": {
      "methods": {
        "insert": {
          "path": "youtube/v3/liveChat/bans",
          "parameters": {
            "part": {
              "description": "The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response returns. Set the parameter value to snippet.",
              "required": true,
              "repeated": true,
              "type": "string",
              "location": "query"
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "description": "Inserts a new resource into this collection.",
          "id": "youtube.liveChatBans.insert",
          "request": {
            "$ref": "LiveChatBan"
          },
          "flatPath": "youtube/v3/liveChat/bans",
          "httpMethod": "POST",
          "response": {
            "$ref": "LiveChatBan"
          },
          "parameterOrder": [
            "part"
          ]
        },
        "delete": {
          "flatPath": "youtube/v3/liveChat/bans",
          "parameters": {
            "id": {
              "required": true,
              "type": "string",
              "location": "query"
            }
          },
          "httpMethod": "DELETE",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl"
          ],
          "path": "youtube/v3/liveChat/bans",
          "parameterOrder": [
            "id"
          ],
          "description": "Deletes a chat ban.",
          "id": "youtube.liveChatBans.delete"
        }
      }
    },
    "playlistImages": {
      "methods": {
        "insert": {
          "mediaUpload": {
            "protocols": {
              "resumable": {
                "path": "/resumable/upload/youtube/v3/playlistImages",
                "multipart": true
              },
              "simple": {
                "multipart": true,
                "path": "/upload/youtube/v3/playlistImages"
              }
            },
            "maxSize": "52428800",
            "accept": [
              "image/jpeg",
              "image/png",
              "application/octet-stream"
            ]
          },
          "supportsMediaUpload": true,
          "parameterOrder": [],
          "parameters": {
            "part": {
              "description": "The *part* parameter specifies the properties that the API response will include.",
              "repeated": true,
              "location": "query",
              "type": "string"
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "location": "query",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner."
            },
            "onBehalfOfContentOwnerChannel": {
              "location": "query",
              "type": "string",
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel."
            }
          },
          "path": "youtube/v3/playlistImages",
          "flatPath": "youtube/v3/playlistImages",
          "response": {
            "$ref": "PlaylistImage"
          },
          "description": "Inserts a new resource into this collection.",
          "request": {
            "$ref": "PlaylistImage"
          },
          "httpMethod": "POST",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "id": "youtube.playlistImages.insert"
        },
        "update": {
          "parameters": {
            "part": {
              "repeated": true,
              "description": "The *part* parameter specifies the properties that the API response will include.",
              "location": "query",
              "type": "string"
            },
            "onBehalfOfContentOwner": {
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query",
              "type": "string"
            }
          },
          "mediaUpload": {
            "maxSize": "52428800",
            "protocols": {
              "simple": {
                "path": "/upload/youtube/v3/playlistImages",
                "multipart": true
              },
              "resumable": {
                "multipart": true,
                "path": "/resumable/upload/youtube/v3/playlistImages"
              }
            },
            "accept": [
              "image/jpeg",
              "image/png",
              "application/octet-stream"
            ]
          },
          "parameterOrder": [],
          "description": "Updates an existing resource.",
          "response": {
            "$ref": "PlaylistImage"
          },
          "flatPath": "youtube/v3/playlistImages",
          "httpMethod": "PUT",
          "id": "youtube.playlistImages.update",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "supportsMediaUpload": true,
          "path": "youtube/v3/playlistImages",
          "request": {
            "$ref": "PlaylistImage"
          }
        },
        "list": {
          "path": "youtube/v3/playlistImages",
          "httpMethod": "GET",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly",
            "https://www.googleapis.com/auth/youtubepartner"
          ],
          "flatPath": "youtube/v3/playlistImages",
          "response": {
            "$ref": "PlaylistImageListResponse"
          },
          "parameters": {
            "part": {
              "description": "The *part* parameter specifies a comma-separated list of one or more playlistImage resource properties that the API response will include. If the parameter identifies a property that contains child properties, the child properties will be included in the response.",
              "location": "query",
              "type": "string",
              "repeated": true
            },
            "onBehalfOfContentOwner": {
              "type": "string",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query"
            },
            "parent": {
              "type": "string",
              "description": "Return PlaylistImages for this playlist id.",
              "location": "query"
            },
            "maxResults": {
              "maximum": "50",
              "format": "uint32",
              "type": "integer",
              "default": "5",
              "minimum": "0",
              "location": "query",
              "description": "The *maxResults* parameter specifies the maximum number of items that should be returned in the result set."
            },
            "onBehalfOfContentOwnerChannel": {
              "type": "string",
              "description": "This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel.",
              "location": "query"
            },
            "pageToken": {
              "description": "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.",
              "type": "string",
              "location": "query"
            }
          },
          "id": "youtube.playlistImages.list",
          "parameterOrder": [],
          "description": "Retrieves a list of resources, possibly filtered."
        },
        "delete": {
          "parameters": {
            "onBehalfOfContentOwner": {
              "type": "string",
              "description": "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. 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 CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query"
            },
            "id": {
              "type": "string",
              "description": "Id to identify this image. This is returned from by the List method.",
              "location": "query"
            }
          },
          "parameterOrder": [],
          "httpMethod": "DELETE",
          "description": "Deletes a resource.",
          "id": "youtube.playlistImages.delete",
          "path": "youtube/v3/playlistImages",
          "flatPath": "youtube/v3/playlistImages",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtubepartner"
          ]
        }
      }
    },
    "superChatEvents": {
      "methods": {
        "list": {
          "parameterOrder": [
            "part"
          ],
          "description": "Retrieves a list of resources, possibly filtered.",
          "parameters": {
            "pageToken": {
              "location": "query",
              "type": "string",
              "description": "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."
            },
            "hl": {
              "location": "query",
              "description": "Return rendered funding amounts in specified language.",
              "type": "string"
            },
            "part": {
              "type": "string",
              "location": "query",
              "required": true,
              "description": "The *part* parameter specifies the superChatEvent resource parts that the API response will include. This parameter is currently not supported.",
              "repeated": true
            },
            "maxResults": {
              "minimum": "1",
              "description": "The *maxResults* parameter specifies the maximum number of items that should be returned in the result set.",
              "location": "query",
              "type": "integer",
              "default": "5",
              "format": "uint32",
              "maximum": "50"
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.force-ssl",
            "https://www.googleapis.com/auth/youtube.readonly"
          ],
          "response": {
            "$ref": "SuperChatEventListResponse"
          },
          "flatPath": "youtube/v3/superChatEvents",
          "httpMethod": "GET",
          "path": "youtube/v3/superChatEvents",
          "id": "youtube.superChatEvents.list"
        }
      }
    }
  },
  "title": "YouTube Data API v3",
  "ownerName": "Google",
  "kind": "discovery#restDescription",
  "rootUrl": "https://youtube.googleapis.com/",
  "fullyEncodeReservedExpansion": true,
  "servicePath": "",
  "schemas": {
    "Cuepoint": {
      "description": "Note that there may be a 5-second end-point resolution issue. For instance, if a cuepoint comes in for 22:03:27, we may stuff the cuepoint into 22:03:25 or 22:03:30, depending. This is an artifact of HLS.",
      "type": "object",
      "id": "Cuepoint",
      "properties": {
        "durationSecs": {
          "type": "integer",
          "description": "The duration of this cuepoint.",
          "format": "uint32"
        },
        "walltimeMs": {
          "description": "The wall clock time at which the cuepoint should be inserted. Only one of insertion_offset_time_ms and walltime_ms may be set at a time.",
          "format": "uint64",
          "type": "string"
        },
        "insertionOffsetTimeMs": {
          "format": "int64",
          "description": "The time when the cuepoint should be inserted by offset to the broadcast actual start time.",
          "type": "string"
        },
        "etag": {
          "type": "string"
        },
        "cueType": {
          "enumDescriptions": [
            "",
            ""
          ],
          "type": "string",
          "enum": [
            "cueTypeUnspecified",
            "cueTypeAd"
          ]
        },
        "id": {
          "description": "The identifier for cuepoint resource.",
          "type": "string"
        }
      }
    },
    "LiveChatTextMessageDetails": {
      "id": "LiveChatTextMessageDetails",
      "type": "object",
      "properties": {
        "messageText": {
          "type": "string",
          "description": "The user's message."
        }
      }
    },
    "ActivityContentDetailsRecommendation": {
      "description": "Information that identifies the recommended resource.",
      "type": "object",
      "properties": {
        "seedResourceId": {
          "description": "The `seedResourceId` object contains information about the resource that caused the recommendation.",
          "$ref": "ResourceId"
        },
        "reason": {
          "type": "string",
          "enum": [
            "reasonUnspecified",
            "videoWatched"
          ],
          "description": "The reason that the resource is recommended to the user.",
          "enumDescriptions": [
            "",
            ""
          ]
        },
        "resourceId": {
          "description": "The `resourceId` object contains information that identifies the recommended resource.",
          "$ref": "ResourceId"
        }
      },
      "id": "ActivityContentDetailsRecommendation"
    },
    "LiveChatMessageListResponse": {
      "id": "LiveChatMessageListResponse",
      "properties": {
        "eventId": {
          "deprecated": true,
          "type": "string",
          "description": "Serialized EventId of the request which produced this response."
        },
        "pageInfo": {
          "$ref": "PageInfo",
          "description": "General pagination information."
        },
        "offlineAt": {
          "description": "The date and time when the underlying stream went offline.",
          "type": "string",
          "format": "date-time"
        },
        "etag": {
          "type": "string",
          "description": "Etag of this resource."
        },
        "kind": {
          "default": "youtube#liveChatMessageListResponse",
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#liveChatMessageListResponse\"."
        },
        "items": {
          "items": {
            "$ref": "LiveChatMessage"
          },
          "type": "array"
        },
        "activePollItem": {
          "description": "Set when there is an active poll.",
          "$ref": "LiveChatMessage"
        },
        "visitorId": {
          "description": "The visitorId identifies the visitor.",
          "deprecated": true,
          "type": "string"
        },
        "pollingIntervalMillis": {
          "description": "The amount of time the client should wait before polling again.",
          "type": "integer",
          "format": "uint32"
        },
        "tokenPagination": {
          "$ref": "TokenPagination",
          "deprecated": true
        },
        "nextPageToken": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "ChannelBannerResource": {
      "id": "ChannelBannerResource",
      "properties": {
        "etag": {
          "type": "string"
        },
        "url": {
          "type": "string",
          "description": "The URL of this banner image."
        },
        "kind": {
          "default": "youtube#channelBannerResource",
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#channelBannerResource\"."
        }
      },
      "description": "A channel banner returned as the response to a channel_banner.insert call.",
      "type": "object"
    },
    "MembershipsDurationAtLevel": {
      "id": "MembershipsDurationAtLevel",
      "type": "object",
      "properties": {
        "level": {
          "type": "string",
          "description": "Pricing level ID."
        },
        "memberTotalDurationMonths": {
          "description": "The cumulative time the user has been a member for the given level in complete months (the time is rounded down to the nearest integer).",
          "type": "integer",
          "format": "int32"
        },
        "memberSince": {
          "type": "string",
          "description": "The date and time when the user became a continuous member for the given level."
        }
      }
    },
    "Comment": {
      "description": "A *comment* represents a single YouTube comment.",
      "id": "Comment",
      "type": "object",
      "properties": {
        "snippet": {
          "$ref": "CommentSnippet",
          "description": "The snippet object contains basic details about the comment."
        },
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#comment\".",
          "type": "string",
          "default": "youtube#comment"
        },
        "id": {
          "type": "string",
          "description": "The ID that YouTube uses to uniquely identify the comment."
        },
        "etag": {
          "type": "string",
          "description": "Etag of this resource."
        }
      }
    },
    "LiveStreamListResponse": {
      "id": "LiveStreamListResponse",
      "type": "object",
      "properties": {
        "items": {
          "description": "A list of live streams that match the request criteria.",
          "items": {
            "$ref": "LiveStream"
          },
          "type": "array"
        },
        "visitorId": {
          "deprecated": true,
          "type": "string",
          "description": "The visitorId identifies the visitor."
        },
        "eventId": {
          "description": "Serialized EventId of the request which produced this response.",
          "type": "string",
          "deprecated": true
        },
        "tokenPagination": {
          "$ref": "TokenPagination",
          "deprecated": true
        },
        "nextPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.",
          "type": "string"
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "prevPageToken": {
          "type": "string",
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set."
        },
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#liveStreamListResponse\".",
          "type": "string",
          "default": "youtube#liveStreamListResponse"
        },
        "pageInfo": {
          "$ref": "PageInfo"
        }
      }
    },
    "VideoRating": {
      "description": "Basic details about rating of a video.",
      "type": "object",
      "properties": {
        "videoId": {
          "description": "The ID that YouTube uses to uniquely identify the video.",
          "type": "string"
        },
        "rating": {
          "description": "Rating of a video.",
          "type": "string",
          "enum": [
            "none",
            "like",
            "dislike"
          ],
          "enumDescriptions": [
            "The entity has not been rated.",
            "The entity is liked.",
            "The entity is disliked."
          ]
        }
      },
      "id": "VideoRating"
    },
    "CdnSettings": {
      "properties": {
        "ingestionType": {
          "annotations": {
            "required": [
              "youtube.liveStreams.insert",
              "youtube.liveStreams.update"
            ]
          },
          "enum": [
            "rtmp",
            "dash",
            "webrtc",
            "hls"
          ],
          "enumDescriptions": [
            "",
            "",
            "",
            ""
          ],
          "description": " The method or protocol used to transmit the video stream.",
          "type": "string"
        },
        "resolution": {
          "type": "string",
          "enum": [
            "240p",
            "360p",
            "480p",
            "720p",
            "1080p",
            "1440p",
            "2160p",
            "variable"
          ],
          "description": "The resolution of the inbound video data.",
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
          ]
        },
        "format": {
          "description": "The format of the video stream that you are sending to Youtube. ",
          "type": "string",
          "annotations": {
            "required": [
              "youtube.liveStreams.insert",
              "youtube.liveStreams.update"
            ]
          },
          "deprecated": true
        },
        "frameRate": {
          "type": "string",
          "enum": [
            "30fps",
            "60fps",
            "variable"
          ],
          "enumDescriptions": [
            "",
            "",
            ""
          ],
          "description": "The frame rate of the inbound video data."
        },
        "ingestionInfo": {
          "description": "The ingestionInfo object contains information that YouTube provides that you need to transmit your RTMP or HTTP stream to YouTube.",
          "$ref": "IngestionInfo"
        }
      },
      "description": "Brief description of the live stream cdn settings.",
      "id": "CdnSettings",
      "type": "object"
    },
    "VideoAbuseReportReasonListResponse": {
      "properties": {
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string `\"youtube#videoAbuseReportReasonListResponse\"`.",
          "type": "string",
          "default": "youtube#videoAbuseReportReasonListResponse"
        },
        "visitorId": {
          "description": "The `visitorId` identifies the visitor.",
          "type": "string",
          "deprecated": true
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "VideoAbuseReportReason"
          },
          "description": "A list of valid abuse reasons that are used with `video.ReportAbuse`."
        },
        "eventId": {
          "description": "Serialized EventId of the request which produced this response.",
          "type": "string",
          "deprecated": true
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "VideoAbuseReportReasonListResponse"
    },
    "LanguageTag": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string"
        }
      },
      "id": "LanguageTag"
    },
    "InvideoBranding": {
      "id": "InvideoBranding",
      "description": "Describes an invideo branding.",
      "type": "object",
      "properties": {
        "targetChannelId": {
          "description": "The channel to which this branding links. If not present it defaults to the current channel.",
          "type": "string"
        },
        "timing": {
          "$ref": "InvideoTiming",
          "description": "The temporal position within the video where watermark will be displayed."
        },
        "imageBytes": {
          "format": "byte",
          "description": "The bytes the uploaded image. Only used in api to youtube communication.",
          "type": "string"
        },
        "position": {
          "description": "The spatial position within the video where the branding watermark will be displayed.",
          "$ref": "InvideoPosition",
          "deprecated": true
        },
        "imageUrl": {
          "description": "The url of the uploaded image. Only used in apiary to api communication.",
          "type": "string"
        }
      }
    },
    "ActivitySnippet": {
      "description": "Basic details about an activity, including title, description, thumbnails, activity type and group. Next ID: 12",
      "type": "object",
      "properties": {
        "publishedAt": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time that the video was uploaded."
        },
        "title": {
          "description": "The title of the resource primarily associated with the activity.",
          "type": "string"
        },
        "type": {
          "type": "string",
          "enum": [
            "typeUnspecified",
            "upload",
            "comment",
            "subscription",
            "playlistItem",
            "recommendation",
            "bulletin",
            "social",
            "channelItem",
            "promotedItem"
          ],
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
          ],
          "description": "The type of activity that the resource describes."
        },
        "description": {
          "description": "The description of the resource primarily associated with the activity. @mutable youtube.activities.insert",
          "type": "string"
        },
        "groupId": {
          "description": "The group ID associated with the activity. A group ID identifies user events that are associated with the same user and resource. For example, if a user uploads a video and watches the same video, the entries for those events would have the same group ID in the user's activity feed. In your user interface, you can avoid repetition by grouping events with the same `groupId` value.",
          "type": "string"
        },
        "channelTitle": {
          "type": "string",
          "description": "Channel title for the channel responsible for this activity"
        },
        "thumbnails": {
          "$ref": "ThumbnailDetails",
          "description": "A map of thumbnail images associated with the resource that is primarily associated with the activity. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail."
        },
        "channelId": {
          "description": "The ID that YouTube uses to uniquely identify the channel associated with the activity.",
          "type": "string"
        }
      },
      "id": "ActivitySnippet"
    },
    "ChannelToStoreLinkDetailsBillingDetails": {
      "properties": {
        "billingStatus": {
          "description": "The current billing profile status.",
          "enumDescriptions": [
            "",
            "",
            "",
            ""
          ],
          "type": "string",
          "enum": [
            "billingStatusUnspecified",
            "billingStatusPending",
            "billingStatusActive",
            "billingStatusInactive"
          ]
        }
      },
      "description": "Information specific to billing.",
      "type": "object",
      "id": "ChannelToStoreLinkDetailsBillingDetails"
    },
    "VideoContentDetailsRegionRestriction": {
      "description": "DEPRECATED Region restriction of the video.",
      "type": "object",
      "properties": {
        "blocked": {
          "items": {
            "type": "string"
          },
          "description": "A list of region codes that identify countries where the video is blocked. If this property is present and a country is not listed in its value, then the video is viewable in that country. If this property is present and contains an empty list, the video is viewable in all countries.",
          "type": "array"
        },
        "allowed": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of region codes that identify countries where the video is viewable. If this property is present and a country is not listed in its value, then the video is blocked from appearing in that country. If this property is present and contains an empty list, the video is blocked in all countries."
        }
      },
      "id": "VideoContentDetailsRegionRestriction"
    },
    "LiveChatModerator": {
      "description": "A *liveChatModerator* resource represents a moderator for a YouTube live chat. A chat moderator has the ability to ban/unban users from a chat, remove message, etc.",
      "properties": {
        "kind": {
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#liveChatModerator\".",
          "default": "youtube#liveChatModerator"
        },
        "id": {
          "description": "The ID that YouTube assigns to uniquely identify the moderator.",
          "type": "string"
        },
        "snippet": {
          "$ref": "LiveChatModeratorSnippet",
          "description": "The snippet object contains basic details about the moderator."
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        }
      },
      "id": "LiveChatModerator",
      "type": "object"
    },
    "LiveStreamConfigurationIssue": {
      "type": "object",
      "properties": {
        "reason": {
          "type": "string",
          "description": "The short-form reason for this issue."
        },
        "type": {
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
          ],
          "type": "string",
          "enum": [
            "gopSizeOver",
            "gopSizeLong",
            "gopSizeShort",
            "openGop",
            "badContainer",
            "audioBitrateHigh",
            "audioBitrateLow",
            "audioSampleRate",
            "bitrateHigh",
            "bitrateLow",
            "audioCodec",
            "videoCodec",
            "noAudioStream",
            "noVideoStream",
            "multipleVideoStreams",
            "multipleAudioStreams",
            "audioTooManyChannels",
            "interlacedVideo",
            "frameRateHigh",
            "resolutionMismatch",
            "videoCodecMismatch",
            "videoInterlaceMismatch",
            "videoProfileMismatch",
            "videoBitrateMismatch",
            "framerateMismatch",
            "gopMismatch",
            "audioSampleRateMismatch",
            "audioStereoMismatch",
            "audioCodecMismatch",
            "audioBitrateMismatch",
            "videoResolutionSuboptimal",
            "videoResolutionUnsupported",
            "videoIngestionStarved",
            "videoIngestionFasterThanRealtime"
          ],
          "description": "The kind of error happening."
        },
        "severity": {
          "enumDescriptions": [
            "",
            "",
            ""
          ],
          "description": "How severe this issue is to the stream.",
          "type": "string",
          "enum": [
            "info",
            "warning",
            "error"
          ]
        },
        "description": {
          "description": "The long-form description of the issue and how to resolve it.",
          "type": "string"
        }
      },
      "id": "LiveStreamConfigurationIssue"
    },
    "LiveChatGiftDetails": {
      "properties": {
        "language": {
          "type": "string",
          "description": "The BCP-47 language code of the gift."
        },
        "giftUrl": {
          "description": "The URL of the gift image.",
          "type": "string"
        },
        "jewelsAmount": {
          "type": "integer",
          "format": "int32",
          "description": "The value of the gift in jewels."
        },
        "comboCount": {
          "description": "The number of times the gift has been sent in a row.",
          "type": "integer",
          "format": "int32"
        },
        "hasVisualEffect": {
          "description": "Whether the gift involves a visual effect.",
          "type": "boolean"
        },
        "giftName": {
          "description": "The name of the gift.",
          "type": "string"
        },
        "giftDuration": {
          "type": "string",
          "format": "google-duration",
          "description": "The duration of the gift."
        },
        "altText": {
          "description": "The alternative text to be used for accessibility.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "LiveChatGiftDetails",
      "description": "Details about the gift event, this is only set if the type is 'giftEvent'."
    },
    "VideoAbuseReportReason": {
      "description": "A `__videoAbuseReportReason__` resource identifies a reason that a video could be reported as abusive. Video abuse report reasons are used with `video.ReportAbuse`.",
      "type": "object",
      "properties": {
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "snippet": {
          "description": "The `snippet` object contains basic details about the abuse report reason.",
          "$ref": "VideoAbuseReportReasonSnippet"
        },
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string `\"youtube#videoAbuseReportReason\"`.",
          "default": "youtube#videoAbuseReportReason",
          "type": "string"
        },
        "id": {
          "description": "The ID of this abuse report reason.",
          "type": "string"
        }
      },
      "id": "VideoAbuseReportReason"
    },
    "MemberSnippet": {
      "id": "MemberSnippet",
      "properties": {
        "memberDetails": {
          "$ref": "ChannelProfileDetails",
          "description": "Details about the member."
        },
        "creatorChannelId": {
          "description": "The id of the channel that's offering memberships.",
          "type": "string"
        },
        "membershipsDetails": {
          "$ref": "MembershipsDetails",
          "description": "Details about the user's membership."
        }
      },
      "type": "object"
    },
    "LiveStreamHealthStatus": {
      "type": "object",
      "properties": {
        "configurationIssues": {
          "items": {
            "$ref": "LiveStreamConfigurationIssue"
          },
          "type": "array",
          "description": "The configurations issues on this stream"
        },
        "lastUpdateTimeSeconds": {
          "type": "string",
          "description": "The last time this status was updated (in seconds)",
          "format": "uint64"
        },
        "status": {
          "description": "The status code of this stream",
          "type": "string",
          "enum": [
            "good",
            "ok",
            "bad",
            "noData",
            "revoked"
          ],
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            ""
          ]
        }
      },
      "id": "LiveStreamHealthStatus"
    },
    "ImageSettings": {
      "description": "Branding properties for images associated with the channel.",
      "type": "object",
      "id": "ImageSettings",
      "properties": {
        "largeBrandedBannerImageUrl": {
          "deprecated": true,
          "$ref": "LocalizedProperty",
          "description": "The URL for the 854px by 70px image that appears below the video player in the expanded video view of the video watch page."
        },
        "watchIconImageUrl": {
          "type": "string",
          "deprecated": true
        },
        "bannerExternalUrl": {
          "description": "This is generated when a ChannelBanner.Insert request has succeeded for the given channel.",
          "type": "string"
        },
        "bannerTvImageUrl": {
          "type": "string",
          "description": "Banner image. TV size extra high resolution (2120x1192).",
          "deprecated": true
        },
        "bannerImageUrl": {
          "deprecated": true,
          "type": "string",
          "description": "Banner image. Desktop size (1060x175)."
        },
        "largeBrandedBannerImageImapScript": {
          "deprecated": true,
          "$ref": "LocalizedProperty",
          "description": "The image map script for the large banner image."
        },
        "bannerTvMediumImageUrl": {
          "type": "string",
          "description": "Banner image. TV size medium resolution (1280x720).",
          "deprecated": true
        },
        "bannerTvLowImageUrl": {
          "description": "Banner image. TV size low resolution (854x480).",
          "type": "string",
          "deprecated": true
        },
        "bannerTabletExtraHdImageUrl": {
          "deprecated": true,
          "type": "string",
          "description": "Banner image. Tablet size extra high resolution (2560x424)."
        },
        "bannerMobileMediumHdImageUrl": {
          "description": "Banner image. Mobile size medium/high resolution (960x263).",
          "deprecated": true,
          "type": "string"
        },
        "trackingImageUrl": {
          "deprecated": true,
          "type": "string",
          "description": "The URL for a 1px by 1px tracking pixel that can be used to collect statistics for views of the channel or video pages."
        },
        "bannerTabletHdImageUrl": {
          "type": "string",
          "deprecated": true,
          "description": "Banner image. Tablet size high resolution (2276x377)."
        },
        "backgroundImageUrl": {
          "$ref": "LocalizedProperty",
          "description": "The URL for the background image shown on the video watch page. The image should be 1200px by 615px, with a maximum file size of 128k.",
          "deprecated": true
        },
        "bannerMobileImageUrl": {
          "description": "Banner image. Mobile size (640x175).",
          "deprecated": true,
          "type": "string"
        },
        "bannerTvHighImageUrl": {
          "deprecated": true,
          "type": "string",
          "description": "Banner image. TV size high resolution (1920x1080)."
        },
        "bannerTabletLowImageUrl": {
          "deprecated": true,
          "type": "string",
          "description": "Banner image. Tablet size low resolution (1138x188)."
        },
        "bannerTabletImageUrl": {
          "description": "Banner image. Tablet size (1707x283).",
          "type": "string",
          "deprecated": true
        },
        "smallBrandedBannerImageImapScript": {
          "deprecated": true,
          "$ref": "LocalizedProperty",
          "description": "The image map script for the small banner image."
        },
        "bannerMobileLowImageUrl": {
          "deprecated": true,
          "description": "Banner image. Mobile size low resolution (320x88).",
          "type": "string"
        },
        "smallBrandedBannerImageUrl": {
          "$ref": "LocalizedProperty",
          "deprecated": true,
          "description": "The URL for the 640px by 70px banner image that appears below the video player in the default view of the video watch page. The URL for the image that appears above the top-left corner of the video player. This is a 25-pixel-high image with a flexible width that cannot exceed 170 pixels."
        },
        "bannerMobileExtraHdImageUrl": {
          "description": "Banner image. Mobile size high resolution (1440x395).",
          "type": "string",
          "deprecated": true
        },
        "bannerMobileHdImageUrl": {
          "description": "Banner image. Mobile size high resolution (1280x360).",
          "type": "string",
          "deprecated": true
        }
      }
    },
    "ChannelSettings": {
      "description": "Branding properties for the channel view.",
      "type": "object",
      "id": "ChannelSettings",
      "properties": {
        "profileColor": {
          "type": "string",
          "description": "A prominent color that can be rendered on this channel page.",
          "deprecated": true
        },
        "title": {
          "type": "string",
          "description": "Specifies the channel title."
        },
        "showRelatedChannels": {
          "description": "Whether related channels should be proposed.",
          "deprecated": true,
          "type": "boolean"
        },
        "defaultTab": {
          "description": "Which content tab users should see when viewing the channel.",
          "type": "string",
          "deprecated": true
        },
        "showBrowseView": {
          "description": "Whether the tab to browse the videos should be displayed.",
          "type": "boolean",
          "deprecated": true
        },
        "featuredChannelsTitle": {
          "deprecated": true,
          "description": "Title for the featured channels tab.",
          "type": "string"
        },
        "defaultLanguage": {
          "type": "string"
        },
        "country": {
          "type": "string",
          "description": "The country of the channel."
        },
        "unsubscribedTrailer": {
          "description": "The trailer of the channel, for users that are not subscribers.",
          "type": "string"
        },
        "trackingAnalyticsAccountId": {
          "type": "string",
          "description": "The ID for a Google Analytics account to track and measure traffic to the channels."
        },
        "keywords": {
          "description": "Lists keywords associated with the channel, comma-separated.",
          "type": "string"
        },
        "featuredChannelsUrls": {
          "deprecated": true,
          "items": {
            "type": "string"
          },
          "description": "The list of featured channels.",
          "type": "array"
        },
        "description": {
          "description": "Specifies the channel description.",
          "type": "string"
        },
        "moderateComments": {
          "type": "boolean",
          "deprecated": true,
          "description": "Whether user-submitted comments left on the channel page need to be approved by the channel owner to be publicly visible."
        }
      }
    },
    "GeoPoint": {
      "description": "Geographical coordinates of a point, in WGS84.",
      "id": "GeoPoint",
      "type": "object",
      "properties": {
        "altitude": {
          "description": "Altitude above the reference ellipsoid, in meters.",
          "type": "number",
          "format": "double"
        },
        "longitude": {
          "format": "double",
          "description": "Longitude in degrees.",
          "type": "number"
        },
        "latitude": {
          "type": "number",
          "format": "double",
          "description": "Latitude in degrees."
        }
      }
    },
    "ChannelBrandingSettings": {
      "type": "object",
      "id": "ChannelBrandingSettings",
      "description": "Branding properties of a YouTube channel.",
      "properties": {
        "hints": {
          "type": "array",
          "items": {
            "$ref": "PropertyValue"
          },
          "deprecated": true,
          "description": "Additional experimental branding properties."
        },
        "channel": {
          "$ref": "ChannelSettings",
          "description": "Branding properties for the channel view."
        },
        "watch": {
          "$ref": "WatchSettings",
          "deprecated": true,
          "description": "Branding properties for the watch page."
        },
        "image": {
          "description": "Branding properties for branding images.",
          "$ref": "ImageSettings"
        }
      }
    },
    "AvailabilityConfigGlobalConfig": {
      "description": "Video is available in all regions except the ones specified in the excluded_region_codes list.",
      "id": "AvailabilityConfigGlobalConfig",
      "properties": {
        "interval": {
          "description": "Default time window where video is available for all non-blocked regions Not supported for upcoming / active live broadcasts. If start time is unspecified, video is already available If end time is unspecified, video is available forever Specified start and end times cannot be more than five years in the future.",
          "$ref": "Interval"
        },
        "excludedRegionCodes": {
          "description": "Optional. Regions where video is blocked",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "I18nRegion": {
      "type": "object",
      "properties": {
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#i18nRegion\".",
          "type": "string",
          "default": "youtube#i18nRegion"
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "id": {
          "type": "string",
          "description": "The ID that YouTube uses to uniquely identify the i18n region."
        },
        "snippet": {
          "$ref": "I18nRegionSnippet",
          "description": "The snippet object contains basic details about the i18n region, such as region code and human-readable name."
        }
      },
      "id": "I18nRegion",
      "description": "A *i18nRegion* resource identifies a region where YouTube is available."
    },
    "SearchResult": {
      "description": "A search result contains information about a YouTube video, channel, or playlist that matches the search parameters specified in an API request. While a search result points to a uniquely identifiable resource, like a video, it does not have its own persistent data.",
      "type": "object",
      "id": "SearchResult",
      "properties": {
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#searchResult\".",
          "type": "string",
          "default": "youtube#searchResult"
        },
        "snippet": {
          "description": "The snippet object contains basic details about a search result, such as its title or description. For example, if the search result is a video, then the title will be the video's title and the description will be the video's description.",
          "$ref": "SearchResultSnippet"
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "id": {
          "description": "The id object contains information that can be used to uniquely identify the resource that matches the search request.",
          "$ref": "ResourceId"
        }
      }
    },
    "VideoFileDetails": {
      "id": "VideoFileDetails",
      "type": "object",
      "properties": {
        "audioStreams": {
          "items": {
            "$ref": "VideoFileDetailsAudioStream"
          },
          "description": "A list of audio streams contained in the uploaded video file. Each item in the list contains detailed metadata about an audio stream.",
          "type": "array"
        },
        "videoStreams": {
          "description": "A list of video streams contained in the uploaded video file. Each item in the list contains detailed metadata about a video stream.",
          "type": "array",
          "items": {
            "$ref": "VideoFileDetailsVideoStream"
          }
        },
        "durationMs": {
          "format": "uint64",
          "description": "The length of the uploaded video in milliseconds.",
          "type": "string"
        },
        "creationTime": {
          "type": "string",
          "description": "The date and time when the uploaded video file was created. The value is specified in ISO 8601 format. Currently, the following ISO 8601 formats are supported: - Date only: YYYY-MM-DD - Naive time: YYYY-MM-DDTHH:MM:SS - Time with timezone: YYYY-MM-DDTHH:MM:SS+HH:MM "
        },
        "fileType": {
          "type": "string",
          "enum": [
            "video",
            "audio",
            "image",
            "archive",
            "document",
            "project",
            "other"
          ],
          "description": "The uploaded file's type as detected by YouTube's video processing engine. Currently, YouTube only processes video files, but this field is present whether a video file or another type of file was uploaded.",
          "enumDescriptions": [
            "Known video file (e.g., an MP4 file).",
            "Audio only file (e.g., an MP3 file).",
            "Image file (e.g., a JPEG image).",
            "Archive file (e.g., a ZIP archive).",
            "Document or text file (e.g., MS Word document).",
            "Movie project file (e.g., Microsoft Windows Movie Maker project).",
            "Other non-video file type."
          ]
        },
        "bitrateBps": {
          "format": "uint64",
          "type": "string",
          "description": "The uploaded video file's combined (video and audio) bitrate in bits per second."
        },
        "fileName": {
          "description": "The uploaded file's name. This field is present whether a video file or another type of file was uploaded.",
          "type": "string"
        },
        "container": {
          "type": "string",
          "description": "The uploaded video file's container format."
        },
        "fileSize": {
          "description": "The uploaded file's size in bytes. This field is present whether a video file or another type of file was uploaded.",
          "type": "string",
          "format": "uint64"
        }
      },
      "description": "Describes original video file properties, including technical details about audio and video streams, but also metadata information like content length, digitization time, or geotagging information."
    },
    "ChannelStatus": {
      "description": "JSON template for the status part of a channel.",
      "properties": {
        "isLinked": {
          "type": "boolean",
          "description": "If true, then the user is linked to either a YouTube username or G+ account. Otherwise, the user doesn't have a public YouTube identity."
        },
        "privacyStatus": {
          "type": "string",
          "enum": [
            "public",
            "unlisted",
            "private"
          ],
          "description": "Privacy status of the channel.",
          "enumDescriptions": [
            "",
            "",
            ""
          ]
        },
        "longUploadsStatus": {
          "description": "The long uploads status of this channel. See https://support.google.com/youtube/answer/71673 for more information.",
          "type": "string",
          "enum": [
            "longUploadsUnspecified",
            "allowed",
            "eligible",
            "disallowed"
          ],
          "enumDescriptions": [
            "",
            "",
            "",
            ""
          ]
        },
        "isChannelMonetizationEnabled": {
          "description": "Whether the channel is considered ypp monetization enabled. See go/yppornot for more details.",
          "type": "boolean"
        },
        "madeForKids": {
          "type": "boolean"
        },
        "selfDeclaredMadeForKids": {
          "type": "boolean"
        }
      },
      "id": "ChannelStatus",
      "type": "object"
    },
    "ChannelSectionListResponse": {
      "properties": {
        "etag": {
          "type": "string",
          "description": "Etag of this resource."
        },
        "items": {
          "description": "A list of ChannelSections that match the request criteria.",
          "items": {
            "$ref": "ChannelSection"
          },
          "type": "array"
        },
        "eventId": {
          "type": "string",
          "deprecated": true,
          "description": "Serialized EventId of the request which produced this response."
        },
        "visitorId": {
          "type": "string",
          "description": "The visitorId identifies the visitor.",
          "deprecated": true
        },
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#channelSectionListResponse\".",
          "default": "youtube#channelSectionListResponse",
          "type": "string"
        }
      },
      "type": "object",
      "id": "ChannelSectionListResponse"
    },
    "ChannelConversionPings": {
      "properties": {
        "pings": {
          "type": "array",
          "description": "Pings that the app shall fire (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.",
          "items": {
            "$ref": "ChannelConversionPing"
          }
        }
      },
      "id": "ChannelConversionPings",
      "type": "object",
      "description": "The conversionPings object encapsulates information about conversion pings that need to be respected by the channel."
    },
    "SubscriptionSnippet": {
      "type": "object",
      "id": "SubscriptionSnippet",
      "description": "Basic details about a subscription, including title, description and thumbnails of the subscribed item.",
      "properties": {
        "description": {
          "description": "The subscription's details.",
          "type": "string"
        },
        "publishedAt": {
          "description": "The date and time that the subscription was created.",
          "format": "date-time",
          "type": "string"
        },
        "resourceId": {
          "description": "The id object contains information about the channel that the user subscribed to.",
          "annotations": {
            "required": [
              "youtube.subscriptions.insert"
            ]
          },
          "$ref": "ResourceId"
        },
        "thumbnails": {
          "$ref": "ThumbnailDetails",
          "description": "A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail."
        },
        "channelId": {
          "description": "The ID that YouTube uses to uniquely identify the subscriber's channel.",
          "type": "string"
        },
        "title": {
          "description": "The subscription's title.",
          "type": "string"
        }
      }
    },
    "VideoPlayer": {
      "id": "VideoPlayer",
      "properties": {
        "embedHeight": {
          "type": "string",
          "format": "int64"
        },
        "embedWidth": {
          "format": "int64",
          "description": "The embed width",
          "type": "string"
        },
        "embedHtml": {
          "description": "An \u003ciframe\u003e tag that embeds a player that will play the video.",
          "type": "string"
        }
      },
      "description": "Player to be used for a video playback.",
      "type": "object"
    },
    "LiveChatMessageRetractedDetails": {
      "deprecated": true,
      "properties": {
        "retractedMessageId": {
          "type": "string"
        }
      },
      "id": "LiveChatMessageRetractedDetails",
      "type": "object"
    },
    "InvideoTiming": {
      "description": "Describes a temporal position of a visual widget inside a video.",
      "properties": {
        "type": {
          "type": "string",
          "enumDescriptions": [
            "",
            ""
          ],
          "enum": [
            "offsetFromStart",
            "offsetFromEnd"
          ],
          "description": "Describes a timing type. If the value is offsetFromStart, then the offsetMs field represents an offset from the start of the video. If the value is offsetFromEnd, then the offsetMs field represents an offset from the end of the video."
        },
        "durationMs": {
          "type": "string",
          "description": "Defines the duration in milliseconds for which the promotion should be displayed. If missing, the client should use the default.",
          "format": "uint64"
        },
        "offsetMs": {
          "format": "uint64",
          "description": "Defines the time at which the promotion will appear. Depending on the value of type the value of the offsetMs field will represent a time offset from the start or from the end of the video, expressed in milliseconds.",
          "type": "string"
        }
      },
      "id": "InvideoTiming",
      "type": "object"
    },
    "CaptionListResponse": {
      "properties": {
        "eventId": {
          "type": "string",
          "deprecated": true,
          "description": "Serialized EventId of the request which produced this response."
        },
        "kind": {
          "type": "string",
          "default": "youtube#captionListResponse",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#captionListResponse\"."
        },
        "visitorId": {
          "deprecated": true,
          "description": "The visitorId identifies the visitor.",
          "type": "string"
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "Caption"
          },
          "description": "A list of captions that match the request criteria."
        }
      },
      "id": "CaptionListResponse",
      "type": "object"
    },
    "VideoCategorySnippet": {
      "type": "object",
      "properties": {
        "channelId": {
          "description": "The YouTube channel that created the video category.",
          "type": "string",
          "default": "UCBR8-60-B28hp2BmDPdntcQ"
        },
        "assignable": {
          "type": "boolean"
        },
        "title": {
          "type": "string",
          "description": "The video category's title."
        }
      },
      "id": "VideoCategorySnippet",
      "description": "Basic details about a video category, such as its localized title."
    },
    "ActivityContentDetailsSocial": {
      "description": "Details about a social network post.",
      "type": "object",
      "id": "ActivityContentDetailsSocial",
      "properties": {
        "referenceUrl": {
          "type": "string",
          "description": "The URL of the social network post."
        },
        "author": {
          "type": "string",
          "description": "The author of the social network post."
        },
        "imageUrl": {
          "type": "string",
          "description": "An image of the post's author."
        },
        "type": {
          "description": "The name of the social network.",
          "enumDescriptions": [
            "",
            "",
            "",
            ""
          ],
          "type": "string",
          "enum": [
            "unspecified",
            "googlePlus",
            "facebook",
            "twitter"
          ]
        },
        "resourceId": {
          "description": "The `resourceId` object encapsulates information that identifies the resource associated with a social network post.",
          "$ref": "ResourceId"
        }
      }
    },
    "I18nLanguageSnippet": {
      "type": "object",
      "id": "I18nLanguageSnippet",
      "description": "Basic details about an i18n language, such as language code and human-readable name.",
      "properties": {
        "hl": {
          "description": "A short BCP-47 code that uniquely identifies a language.",
          "type": "string"
        },
        "name": {
          "description": "The human-readable name of the language in the language itself.",
          "type": "string"
        }
      }
    },
    "SubscriptionListResponse": {
      "properties": {
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "visitorId": {
          "type": "string",
          "deprecated": true,
          "description": "The visitorId identifies the visitor."
        },
        "pageInfo": {
          "$ref": "PageInfo"
        },
        "nextPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.",
          "type": "string"
        },
        "items": {
          "items": {
            "$ref": "Subscription"
          },
          "type": "array",
          "description": "A list of subscriptions that match the request criteria."
        },
        "prevPageToken": {
          "type": "string",
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set."
        },
        "kind": {
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#subscriptionListResponse\".",
          "default": "youtube#subscriptionListResponse"
        },
        "tokenPagination": {
          "deprecated": true,
          "$ref": "TokenPagination"
        },
        "eventId": {
          "type": "string",
          "description": "Serialized EventId of the request which produced this response.",
          "deprecated": true
        }
      },
      "id": "SubscriptionListResponse",
      "type": "object"
    },
    "LiveChatMembershipGiftingDetails": {
      "properties": {
        "giftMembershipsCount": {
          "description": "The number of gift memberships purchased by the user.",
          "format": "int32",
          "type": "integer"
        },
        "giftMembershipsLevelName": {
          "description": "The name of the level of the gift memberships purchased by the user. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn't filled.",
          "type": "string"
        }
      },
      "id": "LiveChatMembershipGiftingDetails",
      "type": "object"
    },
    "I18nRegionSnippet": {
      "id": "I18nRegionSnippet",
      "properties": {
        "name": {
          "type": "string",
          "description": "The human-readable name of the region."
        },
        "gl": {
          "type": "string",
          "description": "The region code as a 2-letter ISO country code."
        }
      },
      "type": "object",
      "description": "Basic details about an i18n region, such as region code and human-readable name."
    },
    "SearchResultSnippet": {
      "properties": {
        "channelId": {
          "type": "string",
          "description": "The value that YouTube uses to uniquely identify the channel that published the resource that the search result identifies."
        },
        "liveBroadcastContent": {
          "enumDescriptions": [
            "The resource does not have live broadcast content.",
            "The live broadcast is upcoming.",
            "The live broadcast is active.",
            "The live broadcast has been completed."
          ],
          "description": "It indicates if the resource (video or channel) has upcoming/active live broadcast content. Or it's \"none\" if there is not any upcoming/active live broadcasts.",
          "type": "string",
          "enum": [
            "none",
            "upcoming",
            "live",
            "completed"
          ]
        },
        "thumbnails": {
          "description": "A map of thumbnail images associated with the search result. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.",
          "$ref": "ThumbnailDetails"
        },
        "channelTitle": {
          "type": "string",
          "description": "The title of the channel that published the resource that the search result identifies."
        },
        "description": {
          "type": "string",
          "description": "A description of the search result."
        },
        "publishedAt": {
          "description": "The creation date and time of the resource that the search result identifies.",
          "type": "string",
          "format": "date-time"
        },
        "title": {
          "description": "The title of the search result.",
          "type": "string"
        }
      },
      "id": "SearchResultSnippet",
      "type": "object",
      "description": "Basic details about a search result, including title, description and thumbnails of the item referenced by the search result."
    },
    "ChannelContentOwnerDetails": {
      "type": "object",
      "description": "The contentOwnerDetails object encapsulates channel data that is relevant for YouTube Partners linked with the channel.",
      "id": "ChannelContentOwnerDetails",
      "properties": {
        "timeLinked": {
          "type": "string",
          "description": "The date and time when the channel was linked to the content owner.",
          "format": "date-time"
        },
        "contentOwner": {
          "description": "The ID of the content owner linked to the channel.",
          "type": "string"
        }
      }
    },
    "ChannelStatistics": {
      "id": "ChannelStatistics",
      "description": "Statistics about a channel: number of subscribers, number of videos in the channel, etc.",
      "properties": {
        "commentCount": {
          "type": "string",
          "description": "The number of comments for the channel.",
          "format": "uint64"
        },
        "viewCount": {
          "format": "uint64",
          "type": "string",
          "description": "The number of times the channel has been viewed."
        },
        "hiddenSubscriberCount": {
          "description": "Whether or not the number of subscribers is shown for this user.",
          "type": "boolean"
        },
        "videoCount": {
          "type": "string",
          "format": "uint64",
          "description": "The number of videos uploaded to the channel."
        },
        "subscriberCount": {
          "description": "The number of subscribers that the channel has.",
          "type": "string",
          "format": "uint64"
        }
      },
      "type": "object"
    },
    "ChannelTopicDetails": {
      "type": "object",
      "properties": {
        "topicCategories": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "A list of Wikipedia URLs that describe the channel's content."
        },
        "topicIds": {
          "deprecated": true,
          "description": "A list of Freebase topic IDs associated with the channel. You can retrieve information about each topic using the Freebase Topic API.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "id": "ChannelTopicDetails",
      "description": "Freebase topic information related to the channel."
    },
    "WatchSettings": {
      "id": "WatchSettings",
      "description": "Branding properties for the watch. All deprecated.",
      "type": "object",
      "properties": {
        "backgroundColor": {
          "description": "The text color for the video watch page's branded area.",
          "type": "string"
        },
        "featuredPlaylistId": {
          "type": "string",
          "description": "An ID that uniquely identifies a playlist that displays next to the video player."
        },
        "textColor": {
          "type": "string",
          "description": "The background color for the video watch page's branded area."
        }
      }
    },
    "ChannelLocalization": {
      "type": "object",
      "id": "ChannelLocalization",
      "properties": {
        "title": {
          "description": "The localized strings for channel's title.",
          "type": "string"
        },
        "description": {
          "description": "The localized strings for channel's description.",
          "type": "string"
        }
      },
      "description": "Channel localization setting"
    },
    "VideoSuggestionsTagSuggestion": {
      "properties": {
        "tag": {
          "type": "string",
          "description": "The keyword tag suggested for the video."
        },
        "categoryRestricts": {
          "type": "array",
          "description": "A set of video categories for which the tag is relevant. You can use this information to display appropriate tag suggestions based on the video category that the video uploader associates with the video. By default, tag suggestions are relevant for all categories if there are no restricts defined for the keyword.",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "id": "VideoSuggestionsTagSuggestion",
      "description": "A single tag suggestion with its relevance information."
    },
    "TestItem": {
      "id": "TestItem",
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "gaia": {
          "type": "string",
          "format": "int64"
        },
        "snippet": {
          "$ref": "TestItemTestItemSnippet"
        },
        "featuredPart": {
          "type": "boolean"
        },
        "etag": {
          "type": "string",
          "description": "Etag for the resource. See https://en.wikipedia.org/wiki/HTTP_ETag."
        }
      }
    },
    "VideoAgeGating": {
      "id": "VideoAgeGating",
      "type": "object",
      "properties": {
        "alcoholContent": {
          "type": "boolean",
          "description": "Indicates whether or not the video has alcoholic beverage content. Only users of legal purchasing age in a particular country, as identified by ICAP, can view the content."
        },
        "videoGameRating": {
          "description": "Video game rating, if any.",
          "type": "string",
          "enum": [
            "anyone",
            "m15Plus",
            "m16Plus",
            "m17Plus"
          ],
          "enumDescriptions": [
            "",
            "",
            "",
            ""
          ]
        },
        "restricted": {
          "type": "boolean",
          "description": "Age-restricted trailers. For redband trailers and adult-rated video-games. Only users aged 18+ can view the content. The the field is true the content is restricted to viewers aged 18+. Otherwise The field won't be present."
        }
      }
    },
    "SearchListResponse": {
      "id": "SearchListResponse",
      "properties": {
        "regionCode": {
          "type": "string"
        },
        "visitorId": {
          "type": "string",
          "description": "The visitor ID identifies the visitor."
        },
        "eventId": {
          "description": "Serialized EventId of the request which produced this response.",
          "type": "string"
        },
        "etag": {
          "type": "string",
          "description": "Etag of this resource."
        },
        "pageInfo": {
          "description": "General pagination information.",
          "$ref": "PageInfo"
        },
        "items": {
          "items": {
            "$ref": "SearchResult"
          },
          "description": "Pagination information for token pagination.",
          "type": "array"
        },
        "tokenPagination": {
          "$ref": "TokenPagination"
        },
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#searchListResponse\".",
          "default": "youtube#searchListResponse",
          "type": "string"
        },
        "nextPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.",
          "type": "string"
        },
        "prevPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "CommentThread": {
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID that YouTube uses to uniquely identify the comment thread."
        },
        "kind": {
          "type": "string",
          "default": "youtube#commentThread",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#commentThread\"."
        },
        "replies": {
          "$ref": "CommentThreadReplies",
          "description": "The replies object contains a limited number of replies (if any) to the top level comment found in the snippet."
        },
        "snippet": {
          "$ref": "CommentThreadSnippet",
          "description": "The snippet object contains basic details about the comment thread and also the top level comment."
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        }
      },
      "id": "CommentThread",
      "type": "object",
      "description": "A *comment thread* represents information that applies to a top level comment and all its replies. It can also include the top level comment itself and some of the replies."
    },
    "VideoSuggestions": {
      "properties": {
        "processingHints": {
          "description": "A list of suggestions that may improve YouTube's ability to process the video.",
          "type": "array",
          "items": {
            "enumDescriptions": [
              "The MP4 file is not streamable, this will slow down the processing. MOOV atom was not found at the beginning of the file.",
              "Probably a better quality version of the video exists. The video has wide screen aspect ratio, but is not an HD video.",
              "Uploaded video is spherical video.",
              "Uploaded video has spatial audio.",
              "Uploaded video is VR video.",
              "Uploaded video is HDR video."
            ],
            "type": "string",
            "enum": [
              "nonStreamableMov",
              "sendBestQualityVideo",
              "sphericalVideo",
              "spatialAudio",
              "vrVideo",
              "hdrVideo"
            ]
          }
        },
        "processingWarnings": {
          "type": "array",
          "items": {
            "enumDescriptions": [
              "Unrecognized file format, transcoding is likely to fail.",
              "Unrecognized video codec, transcoding is likely to fail.",
              "Unrecognized audio codec, transcoding is likely to fail.",
              "Conflicting container and stream resolutions.",
              "Edit lists are not currently supported.",
              "Video codec that is known to cause problems was used.",
              "Audio codec that is known to cause problems was used.",
              "Unsupported VR video stereo mode.",
              "Unsupported spherical video projection type.",
              "Unsupported HDR pixel format.",
              "Unspecified HDR color metadata.",
              "Problematic HDR lookup table attached."
            ],
            "type": "string",
            "enum": [
              "unknownContainer",
              "unknownVideoCodec",
              "unknownAudioCodec",
              "inconsistentResolution",
              "hasEditlist",
              "problematicVideoCodec",
              "problematicAudioCodec",
              "unsupportedVrStereoMode",
              "unsupportedSphericalProjectionType",
              "unsupportedHdrPixelFormat",
              "unsupportedHdrColorMetadata",
              "problematicHdrLookupTable"
            ]
          },
          "description": "A list of reasons why YouTube may have difficulty transcoding the uploaded video or that might result in an erroneous transcoding. These warnings are generated before YouTube actually processes the uploaded video file. In addition, they identify issues that are unlikely to cause the video processing to fail but that might cause problems such as sync issues, video artifacts, or a missing audio track."
        },
        "processingErrors": {
          "type": "array",
          "description": "A list of errors that will prevent YouTube from successfully processing the uploaded video video. These errors indicate that, regardless of the video's current processing status, eventually, that status will almost certainly be failed.",
          "items": {
            "type": "string",
            "enum": [
              "audioFile",
              "imageFile",
              "projectFile",
              "notAVideoFile",
              "docFile",
              "archiveFile",
              "unsupportedSpatialAudioLayout"
            ],
            "enumDescriptions": [
              "File contains audio only (e.g., an MP3 file).",
              "Image file (e.g., a JPEG image).",
              "Movie project file (e.g., Microsoft Windows Movie Maker project).",
              "Other non-video file.",
              "Document or text file (e.g., MS Word document).",
              "An archive file (e.g., a ZIP archive).",
              "Unsupported spatial audio layout type."
            ]
          }
        },
        "editorSuggestions": {
          "description": "A list of video editing operations that might improve the video quality or playback experience of the uploaded video.",
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "videoAutoLevels",
              "videoStabilize",
              "videoCrop",
              "audioQuietAudioSwap"
            ],
            "enumDescriptions": [
              "Picture brightness levels seem off and could be corrected.",
              "The video appears shaky and could be stabilized.",
              "Margins (mattes) detected around the picture could be cropped.",
              "The audio track appears silent and could be swapped with a better quality one."
            ]
          }
        },
        "tagSuggestions": {
          "type": "array",
          "description": "A list of keyword tags that could be added to the video's metadata to increase the likelihood that users will locate your video when searching or browsing on YouTube.",
          "items": {
            "$ref": "VideoSuggestionsTagSuggestion"
          }
        }
      },
      "description": "Specifies suggestions on how to improve video content, including encoding hints, tag suggestions, and editor suggestions.",
      "type": "object",
      "id": "VideoSuggestions"
    },
    "LiveStream": {
      "properties": {
        "id": {
          "annotations": {
            "required": [
              "youtube.liveStreams.update"
            ]
          },
          "description": "The ID that YouTube assigns to uniquely identify the stream.",
          "type": "string"
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "kind": {
          "default": "youtube#liveStream",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#liveStream\".",
          "type": "string"
        },
        "cdn": {
          "description": "The cdn object defines the live stream's content delivery network (CDN) settings. These settings provide details about the manner in which you stream your content to YouTube.",
          "$ref": "CdnSettings"
        },
        "snippet": {
          "$ref": "LiveStreamSnippet",
          "description": "The snippet object contains basic details about the stream, including its channel, title, and description."
        },
        "status": {
          "$ref": "LiveStreamStatus",
          "description": "The status object contains information about live stream's status."
        },
        "contentDetails": {
          "$ref": "LiveStreamContentDetails",
          "description": "The content_details object contains information about the stream, including the closed captions ingestion URL."
        }
      },
      "description": "A live stream describes a live ingestion point.",
      "type": "object",
      "id": "LiveStream"
    },
    "ChannelSnippet": {
      "properties": {
        "thumbnails": {
          "$ref": "ThumbnailDetails",
          "description": "A map of thumbnail images associated with the channel. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail. When displaying thumbnails in your application, make sure that your code uses the image URLs exactly as they are returned in API responses. For example, your application should not use the http domain instead of the https domain in a URL returned in an API response. Beginning in July 2018, channel thumbnail URLs will only be available in the https domain, which is how the URLs appear in API responses. After that time, you might see broken images in your application if it tries to load YouTube images from the http domain. Thumbnail images might be empty for newly created channels and might take up to one day to populate."
        },
        "title": {
          "description": "The channel's title.",
          "type": "string"
        },
        "localized": {
          "$ref": "ChannelLocalization",
          "description": "Localized title and description, read-only."
        },
        "defaultLanguage": {
          "description": "The language of the channel's default title and description.",
          "type": "string"
        },
        "country": {
          "type": "string",
          "description": "The country of the channel."
        },
        "description": {
          "description": "The description of the channel.",
          "type": "string"
        },
        "customUrl": {
          "type": "string",
          "description": "The custom url of the channel."
        },
        "publishedAt": {
          "format": "date-time",
          "description": "The date and time that the channel was created.",
          "type": "string"
        }
      },
      "type": "object",
      "description": "Basic details about a channel, including title, description and thumbnails.",
      "id": "ChannelSnippet"
    },
    "PlaylistItemSnippet": {
      "description": "Basic details about a playlist, including title, description and thumbnails. Basic details of a YouTube Playlist item provided by the author. Next ID: 15",
      "type": "object",
      "id": "PlaylistItemSnippet",
      "properties": {
        "publishedAt": {
          "format": "date-time",
          "type": "string",
          "description": "The date and time that the item was added to the playlist."
        },
        "videoOwnerChannelId": {
          "type": "string",
          "description": "Channel id for the channel this video belongs to."
        },
        "playlistId": {
          "type": "string",
          "description": "The ID that YouTube uses to uniquely identify thGe playlist that the playlist item is in.",
          "annotations": {
            "required": [
              "youtube.playlistItems.insert",
              "youtube.playlistItems.update"
            ]
          }
        },
        "title": {
          "description": "The item's title.",
          "type": "string"
        },
        "thumbnails": {
          "description": "A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.",
          "$ref": "ThumbnailDetails"
        },
        "resourceId": {
          "$ref": "ResourceId",
          "description": "The id object contains information that can be used to uniquely identify the resource that is included in the playlist as the playlist item.",
          "annotations": {
            "required": [
              "youtube.playlistItems.insert",
              "youtube.playlistItems.update"
            ]
          }
        },
        "description": {
          "description": "The item's description.",
          "type": "string"
        },
        "channelId": {
          "description": "The ID that YouTube uses to uniquely identify the user that added the item to the playlist.",
          "type": "string"
        },
        "channelTitle": {
          "description": "Channel title for the channel that the playlist item belongs to.",
          "type": "string"
        },
        "videoOwnerChannelTitle": {
          "type": "string",
          "description": "Channel title for the channel this video belongs to."
        },
        "position": {
          "format": "uint32",
          "description": "The order in which the item appears in the playlist. The value uses a zero-based index, so the first item has a position of 0, the second item has a position of 1, and so forth.",
          "type": "integer"
        }
      }
    },
    "VideoTopicDetails": {
      "properties": {
        "topicIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of Freebase topic IDs that are centrally associated with the video. These are topics that are centrally featured in the video, and it can be said that the video is mainly about each of these. You can retrieve information about each topic using the \u003c a href=\"http://wiki.freebase.com/wiki/Topic_API\"\u003eFreebase Topic API."
        },
        "topicCategories": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "A list of Wikipedia URLs that provide a high-level description of the video's content."
        },
        "relevantTopicIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Similar to topic_id, except that these topics are merely relevant to the video. These are topics that may be mentioned in, or appear in the video. You can retrieve information about each topic using Freebase Topic API."
        }
      },
      "type": "object",
      "description": "Freebase topic information related to the video.",
      "id": "VideoTopicDetails"
    },
    "LiveChatPollDetailsPollMetadataPollOption": {
      "properties": {
        "tally": {
          "format": "int64",
          "type": "string"
        },
        "optionText": {
          "type": "string"
        }
      },
      "type": "object",
      "id": "LiveChatPollDetailsPollMetadataPollOption"
    },
    "Member": {
      "properties": {
        "snippet": {
          "description": "The snippet object contains basic details about the member.",
          "$ref": "MemberSnippet"
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "kind": {
          "default": "youtube#member",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#member\".",
          "type": "string"
        }
      },
      "type": "object",
      "id": "Member",
      "description": "A *member* resource represents a member for a YouTube channel. A member provides recurring monetary support to a creator and receives special benefits."
    },
    "ChannelSection": {
      "type": "object",
      "id": "ChannelSection",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID that YouTube uses to uniquely identify the channel section."
        },
        "targeting": {
          "deprecated": true,
          "description": "The targeting object contains basic targeting settings about the channel section.",
          "$ref": "ChannelSectionTargeting"
        },
        "contentDetails": {
          "description": "The contentDetails object contains details about the channel section content, such as a list of playlists or channels featured in the section.",
          "$ref": "ChannelSectionContentDetails"
        },
        "localizations": {
          "description": "Localizations for different languages",
          "deprecated": true,
          "additionalProperties": {
            "$ref": "ChannelSectionLocalization"
          },
          "type": "object"
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#channelSection\".",
          "default": "youtube#channelSection",
          "type": "string"
        },
        "snippet": {
          "description": "The snippet object contains basic details about the channel section, such as its type, style and title.",
          "$ref": "ChannelSectionSnippet"
        }
      }
    },
    "VideoSnippet": {
      "id": "VideoSnippet",
      "description": "Basic details about a video, including title, description, uploader, thumbnails and category.",
      "properties": {
        "title": {
          "type": "string",
          "description": "The video's title. @mutable youtube.videos.insert youtube.videos.update"
        },
        "categoryId": {
          "description": "The YouTube video category associated with the video.",
          "type": "string"
        },
        "publishedAt": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time when the video was uploaded."
        },
        "tags": {
          "type": "array",
          "description": "A list of keyword tags associated with the video. Tags may contain spaces.",
          "items": {
            "type": "string"
          }
        },
        "defaultAudioLanguage": {
          "description": "The default_audio_language property specifies the language spoken in the video's default audio track.",
          "type": "string"
        },
        "thumbnails": {
          "description": "A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.",
          "$ref": "ThumbnailDetails"
        },
        "defaultLanguage": {
          "description": "The language of the videos's default snippet.",
          "type": "string"
        },
        "liveBroadcastContent": {
          "enumDescriptions": [
            "The resource does not have live broadcast content.",
            "The live broadcast is upcoming.",
            "The live broadcast is active.",
            "The live broadcast has been completed."
          ],
          "type": "string",
          "enum": [
            "none",
            "upcoming",
            "live",
            "completed"
          ],
          "description": "Indicates if the video is an upcoming/active live broadcast. Or it's \"none\" if the video is not an upcoming/active live broadcast."
        },
        "localized": {
          "description": "Localized snippet selected with the hl parameter. If no such localization exists, this field is populated with the default snippet. (Read-only)",
          "$ref": "VideoLocalization"
        },
        "channelTitle": {
          "description": "Channel title for the channel that the video belongs to.",
          "type": "string"
        },
        "description": {
          "description": "The video's description. @mutable youtube.videos.insert youtube.videos.update",
          "type": "string"
        },
        "channelId": {
          "description": "The ID that YouTube uses to uniquely identify the channel that the video was uploaded to.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "LiveChatMessage": {
      "description": "A *liveChatMessage* resource represents a chat message in a YouTube Live Chat.",
      "id": "LiveChatMessage",
      "properties": {
        "authorDetails": {
          "$ref": "LiveChatMessageAuthorDetails",
          "description": "The authorDetails object contains basic details about the user that posted this message."
        },
        "kind": {
          "default": "youtube#liveChatMessage",
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#liveChatMessage\"."
        },
        "id": {
          "description": "The ID that YouTube assigns to uniquely identify the message.",
          "type": "string"
        },
        "etag": {
          "type": "string",
          "description": "Etag of this resource."
        },
        "snippet": {
          "description": "The snippet object contains basic details about the message.",
          "$ref": "LiveChatMessageSnippet"
        }
      },
      "type": "object"
    },
    "Playlist": {
      "type": "object",
      "description": "A *playlist* resource represents a YouTube playlist. A playlist is a collection of videos that can be viewed sequentially and shared with other users. A playlist can contain up to 200 videos, and YouTube does not limit the number of playlists that each user creates. By default, playlists are publicly visible to other users, but playlists can be public or private. YouTube also uses playlists to identify special collections of videos for a channel, such as: - uploaded videos - favorite videos - positively rated (liked) videos - watch history - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods.",
      "properties": {
        "etag": {
          "type": "string",
          "description": "Etag of this resource."
        },
        "status": {
          "$ref": "PlaylistStatus",
          "description": "The status object contains status information for the playlist."
        },
        "contentDetails": {
          "description": "The contentDetails object contains information like video count.",
          "$ref": "PlaylistContentDetails"
        },
        "player": {
          "description": "The player object contains information that you would use to play the playlist in an embedded player.",
          "$ref": "PlaylistPlayer"
        },
        "id": {
          "description": "The ID that YouTube uses to uniquely identify the playlist.",
          "type": "string"
        },
        "snippet": {
          "$ref": "PlaylistSnippet",
          "description": "The snippet object contains basic details about the playlist, such as its title and description."
        },
        "localizations": {
          "description": "Localizations for different languages",
          "type": "object",
          "additionalProperties": {
            "$ref": "PlaylistLocalization"
          }
        },
        "kind": {
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#playlist\".",
          "default": "youtube#playlist"
        }
      },
      "id": "Playlist"
    },
    "PlaylistContentDetails": {
      "id": "PlaylistContentDetails",
      "type": "object",
      "properties": {
        "itemCount": {
          "format": "uint32",
          "type": "integer",
          "description": "The number of videos in the playlist."
        }
      }
    },
    "CommentSnippet": {
      "type": "object",
      "description": "Basic details about a comment, such as its author and text.",
      "properties": {
        "videoId": {
          "type": "string",
          "description": "The ID of the video the comment refers to, if any."
        },
        "publishedAt": {
          "type": "string",
          "description": "The date and time when the comment was originally published.",
          "format": "date-time"
        },
        "authorProfileImageUrl": {
          "description": "The URL for the avatar of the user who posted the comment.",
          "type": "string"
        },
        "textOriginal": {
          "description": "The comment'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's author.",
          "type": "string"
        },
        "viewerRating": {
          "description": "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.",
          "enumDescriptions": [
            "The entity has not been rated.",
            "The entity is liked.",
            "The entity is disliked."
          ],
          "type": "string",
          "enum": [
            "none",
            "like",
            "dislike"
          ]
        },
        "canRate": {
          "type": "boolean",
          "description": "Whether the current viewer can rate this comment."
        },
        "authorChannelUrl": {
          "description": "Link to the author's YouTube channel, if any.",
          "type": "string"
        },
        "imageUrl": {
          "description": "Output only. The URL of the image or animated GIF attached to the comment, if any. This property is only present when a comment contains an image or GIF. The URL is served as a signed link with a six-hour time to live (TTL) and expires six hours after retrieval.",
          "readOnly": true,
          "type": "string"
        },
        "authorDisplayName": {
          "description": "The name of the user who posted the comment.",
          "type": "string"
        },
        "channelId": {
          "description": "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 or post comment it's the video/post's channel.",
          "type": "string"
        },
        "moderationStatus": {
          "description": "The comment's moderation status. Will not be set if the comments were requested through the id filter.",
          "type": "string",
          "enum": [
            "published",
            "heldForReview",
            "likelySpam",
            "rejected"
          ],
          "enumDescriptions": [
            "The comment is available for public display.",
            "The comment is awaiting review by a moderator.",
            "",
            "The comment is unfit for display."
          ]
        },
        "likeCount": {
          "description": "The total number of likes this comment has received.",
          "format": "uint32",
          "type": "integer"
        },
        "parentId": {
          "description": "The unique id of the top-level comment, only set for replies.",
          "type": "string"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time when the comment was last updated."
        },
        "authorChannelId": {
          "$ref": "CommentSnippetAuthorChannelId"
        },
        "textDisplay": {
          "description": "The comment'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.",
          "type": "string"
        }
      },
      "id": "CommentSnippet"
    },
    "AvailabilityConfigRegionsConfigRegionInterval": {
      "type": "object",
      "properties": {
        "interval": {
          "description": "Time window where video is available for the region. Not supported for upcoming / active live broadcasts. If start time is unspecified, video is already available If end time is unspecified, video is available forever Specified start and end times cannot be more than five years in the future.",
          "$ref": "Interval"
        },
        "regionCode": {
          "type": "string",
          "description": "Required. Region where video is available"
        }
      },
      "id": "AvailabilityConfigRegionsConfigRegionInterval",
      "description": "Region and time window where video is available for the region."
    },
    "CommentThreadSnippet": {
      "properties": {
        "topLevelComment": {
          "description": "The top level comment of this thread.",
          "$ref": "Comment"
        },
        "isPublic": {
          "description": "Whether the thread (and therefore all its comments) is visible to all YouTube users.",
          "type": "boolean"
        },
        "totalReplyCount": {
          "format": "uint32",
          "type": "integer",
          "description": "The total number of replies (not including the top level comment)."
        },
        "channelId": {
          "type": "string",
          "description": "The YouTube channel the comments in the thread refer to or the channel with the video the comments refer to. If neither video_id nor post_id is set the comments refer to the channel itself."
        },
        "videoId": {
          "type": "string",
          "description": "The ID of the video the comments refer to, if any."
        },
        "canReply": {
          "description": "Whether the current viewer of the thread can reply to it. This is viewer specific - other viewers may see a different value for this field.",
          "type": "boolean"
        }
      },
      "description": "Basic details about a comment thread.",
      "id": "CommentThreadSnippet",
      "type": "object"
    },
    "Subscription": {
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID that YouTube uses to uniquely identify the subscription."
        },
        "snippet": {
          "$ref": "SubscriptionSnippet",
          "description": "The snippet object contains basic details about the subscription, including its title and the channel that the user subscribed to."
        },
        "etag": {
          "type": "string",
          "description": "Etag of this resource."
        },
        "kind": {
          "default": "youtube#subscription",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#subscription\".",
          "type": "string"
        },
        "contentDetails": {
          "$ref": "SubscriptionContentDetails",
          "description": "The contentDetails object contains basic statistics about the subscription."
        },
        "subscriberSnippet": {
          "$ref": "SubscriptionSubscriberSnippet",
          "description": "The subscriberSnippet object contains basic details about the subscriber."
        }
      },
      "type": "object",
      "id": "Subscription",
      "description": "A *subscription* resource contains information about a YouTube user subscription. A subscription notifies a user when new videos are added to a channel or when another user takes one of several actions on YouTube, such as uploading a video, rating a video, or commenting on a video."
    },
    "SubscriptionContentDetails": {
      "properties": {
        "newItemCount": {
          "type": "integer",
          "description": "The number of new items in the subscription since its content was last read.",
          "format": "uint32"
        },
        "totalItemCount": {
          "description": "The approximate number of items that the subscription points to.",
          "format": "uint32",
          "type": "integer"
        },
        "activityType": {
          "type": "string",
          "enum": [
            "subscriptionActivityTypeUnspecified",
            "all",
            "uploads"
          ],
          "description": "The type of activity this subscription is for (only uploads, everything).",
          "enumDescriptions": [
            "",
            "",
            ""
          ]
        }
      },
      "id": "SubscriptionContentDetails",
      "description": "Details about the content to witch a subscription refers.",
      "type": "object"
    },
    "CommentSnippetAuthorChannelId": {
      "description": "Contains the id of the author's YouTube channel, if any.",
      "id": "CommentSnippetAuthorChannelId",
      "type": "object",
      "properties": {
        "value": {
          "description": "The id of the author's YouTube channel.",
          "type": "string"
        }
      }
    },
    "VideoStatsSnippet": {
      "properties": {
        "publishTime": {
          "readOnly": true,
          "type": "string",
          "format": "google-datetime",
          "description": "Output only. The date and time that the video was uploaded. The property value is a [`google.protobuf.Timestamp`](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#timestamp) object."
        }
      },
      "type": "object",
      "id": "VideoStatsSnippet",
      "description": "Basic details about a video. This is a subset of the information in VideoSnippet specifically for the Videos.stats API."
    },
    "ActivityContentDetailsSubscription": {
      "properties": {
        "resourceId": {
          "$ref": "ResourceId",
          "description": "The `resourceId` object contains information that identifies the resource that the user subscribed to."
        }
      },
      "type": "object",
      "id": "ActivityContentDetailsSubscription",
      "description": "Information about a channel that a user subscribed to."
    },
    "ContentRating": {
      "description": "Ratings schemes. The country-specific ratings are mostly for movies and shows. LINT.IfChange",
      "type": "object",
      "id": "ContentRating",
      "properties": {
        "egfilmRating": {
          "description": "The video's rating in Egypt.",
          "enumDescriptions": [
            "",
            "GN",
            "18",
            "BN",
            ""
          ],
          "type": "string",
          "enum": [
            "egfilmUnspecified",
            "egfilmGn",
            "egfilm18",
            "egfilmBn",
            "egfilmUnrated"
          ]
        },
        "kmrbRating": {
          "type": "string",
          "enum": [
            "kmrbUnspecified",
            "kmrbAll",
            "kmrb12plus",
            "kmrb15plus",
            "kmrbTeenr",
            "kmrbR",
            "kmrbUnrated"
          ],
          "enumDescriptions": [
            "",
            "전체관람가",
            "12세 이상 관람가",
            "15세 이상 관람가",
            "",
            "청소년 관람불가",
            ""
          ],
          "description": "The video's Korea Media Rating Board (영상물등급위원회) rating. The KMRB rates videos in South Korea."
        },
        "ytRating": {
          "enumDescriptions": [
            "",
            ""
          ],
          "type": "string",
          "enum": [
            "ytUnspecified",
            "ytAgeRestricted"
          ],
          "description": "A rating that YouTube uses to identify age-restricted content."
        },
        "mpaaRating": {
          "enumDescriptions": [
            "",
            "G",
            "PG",
            "PG-13",
            "R",
            "NC-17",
            "! X",
            ""
          ],
          "description": "The video's Motion Picture Association of America (MPAA) rating.",
          "type": "string",
          "enum": [
            "mpaaUnspecified",
            "mpaaG",
            "mpaaPg",
            "mpaaPg13",
            "mpaaR",
            "mpaaNc17",
            "mpaaX",
            "mpaaUnrated"
          ]
        },
        "eefilmRating": {
          "description": "The video's rating in Estonia.",
          "enumDescriptions": [
            "",
            "Pere",
            "L",
            "MS-6",
            "K-6",
            "MS-12",
            "K-12",
            "K-14",
            "K-16",
            ""
          ],
          "type": "string",
          "enum": [
            "eefilmUnspecified",
            "eefilmPere",
            "eefilmL",
            "eefilmMs6",
            "eefilmK6",
            "eefilmMs12",
            "eefilmK12",
            "eefilmK14",
            "eefilmK16",
            "eefilmUnrated"
          ]
        },
        "rtcRating": {
          "enumDescriptions": [
            "",
            "AA",
            "A",
            "B",
            "B15",
            "C",
            "D",
            ""
          ],
          "description": "The video's General Directorate of Radio, Television and Cinematography (Mexico) rating.",
          "type": "string",
          "enum": [
            "rtcUnspecified",
            "rtcAa",
            "rtcA",
            "rtcB",
            "rtcB15",
            "rtcC",
            "rtcD",
            "rtcUnrated"
          ]
        },
        "cbfcRating": {
          "description": "The video's Central Board of Film Certification (CBFC - India) rating.",
          "type": "string",
          "enum": [
            "cbfcUnspecified",
            "cbfcU",
            "cbfcUA",
            "cbfcUA7plus",
            "cbfcUA13plus",
            "cbfcUA16plus",
            "cbfcA",
            "cbfcS",
            "cbfcUnrated"
          ],
          "enumDescriptions": [
            "",
            "U",
            "U/A",
            "U/A 7+",
            "U/A 13+",
            "U/A 16+",
            "A",
            "S",
            ""
          ]
        },
        "mocRating": {
          "description": "The video's Ministerio de Cultura (Colombia) rating.",
          "type": "string",
          "enum": [
            "mocUnspecified",
            "mocE",
            "mocT",
            "moc7",
            "moc12",
            "moc15",
            "moc18",
            "mocX",
            "mocBanned",
            "mocUnrated"
          ],
          "enumDescriptions": [
            "",
            "E",
            "T",
            "7",
            "12",
            "15",
            "18",
            "X",
            "Banned",
            ""
          ]
        },
        "skfilmRating": {
          "description": "The video's rating in Slovakia.",
          "type": "string",
          "enum": [
            "skfilmUnspecified",
            "skfilmG",
            "skfilmP2",
            "skfilmP5",
            "skfilmP8",
            "skfilmUnrated"
          ],
          "enumDescriptions": [
            "",
            "G",
            "P2",
            "P5",
            "P8",
            ""
          ]
        },
        "incaaRating": {
          "description": "The video's INCAA (Instituto Nacional de Cine y Artes Audiovisuales - Argentina) rating.",
          "enumDescriptions": [
            "",
            "ATP (Apta para todo publico)",
            "13 (Solo apta para mayores de 13 años)",
            "16 (Solo apta para mayores de 16 años)",
            "18 (Solo apta para mayores de 18 años)",
            "X (Solo apta para mayores de 18 años, de exhibición condicionada)",
            ""
          ],
          "type": "string",
          "enum": [
            "incaaUnspecified",
            "incaaAtp",
            "incaaSam13",
            "incaaSam16",
            "incaaSam18",
            "incaaC",
            "incaaUnrated"
          ]
        },
        "fmocRating": {
          "description": "This property has been deprecated. Use the contentDetails.contentRating.cncRating instead.",
          "enum": [
            "fmocUnspecified",
            "fmocU",
            "fmoc10",
            "fmoc12",
            "fmoc16",
            "fmoc18",
            "fmocE",
            "fmocUnrated"
          ],
          "deprecated": true,
          "type": "string",
          "enumDescriptions": [
            "",
            "U",
            "10",
            "12",
            "16",
            "18",
            "E",
            ""
          ]
        },
        "chvrsRating": {
          "type": "string",
          "enum": [
            "chvrsUnspecified",
            "chvrsG",
            "chvrsPg",
            "chvrs14a",
            "chvrs18a",
            "chvrsR",
            "chvrsE",
            "chvrsUnrated"
          ],
          "enumDescriptions": [
            "",
            "G",
            "PG",
            "14A",
            "18A",
            "R",
            "E",
            ""
          ],
          "description": "The video's Canadian Home Video Rating System (CHVRS) rating."
        },
        "smsaRating": {
          "type": "string",
          "enum": [
            "smsaUnspecified",
            "smsaA",
            "smsa7",
            "smsa11",
            "smsa15",
            "smsaUnrated"
          ],
          "enumDescriptions": [
            "",
            "All ages",
            "7",
            "11",
            "15",
            ""
          ],
          "description": "The video's rating from Statens medieråd (Sweden's National Media Council)."
        },
        "fskRating": {
          "description": "The video's Freiwillige Selbstkontrolle der Filmwirtschaft (FSK - Germany) rating.",
          "enumDescriptions": [
            "",
            "FSK 0",
            "FSK 6",
            "FSK 12",
            "FSK 16",
            "FSK 18",
            ""
          ],
          "type": "string",
          "enum": [
            "fskUnspecified",
            "fsk0",
            "fsk6",
            "fsk12",
            "fsk16",
            "fsk18",
            "fskUnrated"
          ]
        },
        "nmcRating": {
          "type": "string",
          "enum": [
            "nmcUnspecified",
            "nmcG",
            "nmcPg",
            "nmcPg13",
            "nmcPg15",
            "nmc15plus",
            "nmc18plus",
            "nmc18tc",
            "nmcUnrated"
          ],
          "enumDescriptions": [
            "",
            "G",
            "PG",
            "PG-13",
            "PG-15",
            "15+",
            "18+",
            "18TC",
            ""
          ],
          "description": "The National Media Council ratings system for United Arab Emirates."
        },
        "kijkwijzerRating": {
          "description": "The video's NICAM/Kijkwijzer rating from the Nederlands Instituut voor de Classificatie van Audiovisuele Media (Netherlands).",
          "type": "string",
          "enum": [
            "kijkwijzerUnspecified",
            "kijkwijzerAl",
            "kijkwijzer6",
            "kijkwijzer9",
            "kijkwijzer12",
            "kijkwijzer16",
            "kijkwijzer18",
            "kijkwijzerUnrated"
          ],
          "enumDescriptions": [
            "",
            "AL",
            "6",
            "9",
            "12",
            "16",
            "",
            ""
          ]
        },
        "cncRating": {
          "type": "string",
          "enum": [
            "cncUnspecified",
            "cncT",
            "cnc10",
            "cnc12",
            "cnc16",
            "cnc18",
            "cncE",
            "cncInterdiction",
            "cncUnrated"
          ],
          "enumDescriptions": [
            "",
            "T",
            "10",
            "12",
            "16",
            "18",
            "E",
            "interdiction",
            ""
          ],
          "description": "Rating system in France - Commission de classification cinematographique"
        },
        "lsfRating": {
          "type": "string",
          "enumDescriptions": [
            "",
            "SU",
            "A",
            "BO",
            "13",
            "R",
            "17",
            "D",
            "21",
            ""
          ],
          "enumDeprecated": [
            false,
            false,
            false,
            true,
            false,
            true,
            false,
            true,
            false,
            true
          ],
          "enum": [
            "lsfUnspecified",
            "lsfSu",
            "lsfA",
            "lsfBo",
            "lsf13",
            "lsfR",
            "lsf17",
            "lsfD",
            "lsf21",
            "lsfUnrated"
          ],
          "description": "The video's rating from Indonesia's Lembaga Sensor Film."
        },
        "nfrcRating": {
          "enumDescriptions": [
            "",
            "A",
            "B",
            "C",
            "D",
            "X",
            ""
          ],
          "description": "The video's rating from the Bulgarian National Film Center.",
          "type": "string",
          "enum": [
            "nfrcUnspecified",
            "nfrcA",
            "nfrcB",
            "nfrcC",
            "nfrcD",
            "nfrcX",
            "nfrcUnrated"
          ]
        },
        "cicfRating": {
          "enumDescriptions": [
            "",
            "E",
            "KT/EA",
            "KNT/ENA",
            ""
          ],
          "description": "The video's rating from the Commission de Contrôle des Films (Belgium).",
          "type": "string",
          "enum": [
            "cicfUnspecified",
            "cicfE",
            "cicfKtEa",
            "cicfKntEna",
            "cicfUnrated"
          ]
        },
        "medietilsynetRating": {
          "enumDescriptions": [
            "",
            "A",
            "6",
            "7",
            "9",
            "11",
            "12",
            "15",
            "18",
            ""
          ],
          "type": "string",
          "enum": [
            "medietilsynetUnspecified",
            "medietilsynetA",
            "medietilsynet6",
            "medietilsynet7",
            "medietilsynet9",
            "medietilsynet11",
            "medietilsynet12",
            "medietilsynet15",
            "medietilsynet18",
            "medietilsynetUnrated"
          ],
          "description": "The video's rating from Medietilsynet, the Norwegian Media Authority."
        },
        "bmukkRating": {
          "description": "The video's rating from the Austrian Board of Media Classification (Bundesministerium für Unterricht, Kunst und Kultur).",
          "enumDescriptions": [
            "",
            "Unrestricted",
            "6+",
            "8+",
            "10+",
            "12+",
            "14+",
            "16+",
            ""
          ],
          "type": "string",
          "enum": [
            "bmukkUnspecified",
            "bmukkAa",
            "bmukk6",
            "bmukk8",
            "bmukk10",
            "bmukk12",
            "bmukk14",
            "bmukk16",
            "bmukkUnrated"
          ]
        },
        "mtrcbRating": {
          "description": "The video's rating from the Movie and Television Review and Classification Board (Philippines).",
          "enumDescriptions": [
            "",
            "G",
            "PG",
            "R-13",
            "R-16",
            "R-18",
            "X",
            ""
          ],
          "type": "string",
          "enum": [
            "mtrcbUnspecified",
            "mtrcbG",
            "mtrcbPg",
            "mtrcbR13",
            "mtrcbR16",
            "mtrcbR18",
            "mtrcbX",
            "mtrcbUnrated"
          ]
        },
        "bbfcRating": {
          "enumDescriptions": [
            "",
            "U",
            "PG",
            "12A",
            "12",
            "15",
            "18",
            "R18",
            ""
          ],
          "type": "string",
          "enum": [
            "bbfcUnspecified",
            "bbfcU",
            "bbfcPg",
            "bbfc12a",
            "bbfc12",
            "bbfc15",
            "bbfc18",
            "bbfcR18",
            "bbfcUnrated"
          ],
          "description": "The video's British Board of Film Classification (BBFC) rating."
        },
        "cceRating": {
          "type": "string",
          "enum": [
            "cceUnspecified",
            "cceM4",
            "cceM6",
            "cceM12",
            "cceM16",
            "cceM18",
            "cceUnrated",
            "cceM14"
          ],
          "enumDescriptions": [
            "",
            "4",
            "6",
            "12",
            "16",
            "18",
            "",
            "14"
          ],
          "description": "The video's rating from Portugal's Comissão de Classificação de Espect´culos."
        },
        "czfilmRating": {
          "enumDescriptions": [
            "",
            "U",
            "12",
            "14",
            "18",
            ""
          ],
          "description": "The video's rating in the Czech Republic.",
          "type": "string",
          "enum": [
            "czfilmUnspecified",
            "czfilmU",
            "czfilm12",
            "czfilm14",
            "czfilm18",
            "czfilmUnrated"
          ]
        },
        "fpbRatingReasons": {
          "type": "array",
          "items": {
            "enumDescriptions": [
              "",
              "South Africa rating content descriptors.",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              ""
            ],
            "type": "string",
            "enum": [
              "fpbRatingReasonUnspecified",
              "fpbBlasphemy",
              "fpbLanguage",
              "fpbNudity",
              "fpbPrejudice",
              "fpbSex",
              "fpbViolence",
              "fpbDrugs",
              "fpbSexualViolence",
              "fpbHorror",
              "fpbCriminalTechniques",
              "fpbImitativeActsTechniques"
            ]
          },
          "description": "Reasons that explain why the video received its FPB (South Africa) rating."
        },
        "rteRating": {
          "enumDescriptions": [
            "",
            "GA",
            "CH",
            "PS",
            "MA",
            ""
          ],
          "type": "string",
          "enum": [
            "rteUnspecified",
            "rteGa",
            "rteCh",
            "rtePs",
            "rteMa",
            "rteUnrated"
          ],
          "description": "The video's rating from Ireland's Raidió Teilifís Éireann."
        },
        "ecbmctRating": {
          "description": "Rating system in Turkey - Evaluation and Classification Board of the Ministry of Culture and Tourism",
          "enumDescriptions": [
            "",
            "G",
            "7A",
            "7+",
            "13A",
            "13+",
            "15A",
            "15+",
            "18+",
            ""
          ],
          "type": "string",
          "enum": [
            "ecbmctUnspecified",
            "ecbmctG",
            "ecbmct7a",
            "ecbmct7plus",
            "ecbmct13a",
            "ecbmct13plus",
            "ecbmct15a",
            "ecbmct15plus",
            "ecbmct18plus",
            "ecbmctUnrated"
          ]
        },
        "catvRating": {
          "type": "string",
          "enum": [
            "catvUnspecified",
            "catvC",
            "catvC8",
            "catvG",
            "catvPg",
            "catv14plus",
            "catv18plus",
            "catvUnrated",
            "catvE"
          ],
          "enumDescriptions": [
            "",
            "C",
            "C8",
            "G",
            "PG",
            "14+",
            "18+",
            "",
            ""
          ],
          "description": "Rating system for Canadian TV - Canadian TV Classification System The video's rating from the Canadian Radio-Television and Telecommunications Commission (CRTC) for Canadian English-language broadcasts. For more information, see the Canadian Broadcast Standards Council website."
        },
        "ifcoRating": {
          "type": "string",
          "enum": [
            "ifcoUnspecified",
            "ifcoG",
            "ifcoPg",
            "ifco12",
            "ifco12a",
            "ifco15",
            "ifco15a",
            "ifco16",
            "ifco18",
            "ifcoUnrated"
          ],
          "description": "The video's Irish Film Classification Office (IFCO - Ireland) rating. See the IFCO website for more information.",
          "enumDescriptions": [
            "",
            "G",
            "PG",
            "12",
            "12A",
            "15",
            "15A",
            "16",
            "18",
            ""
          ]
        },
        "ilfilmRating": {
          "description": "The video's rating in Israel.",
          "enumDescriptions": [
            "",
            "AA",
            "12",
            "14",
            "16",
            "18",
            ""
          ],
          "type": "string",
          "enum": [
            "ilfilmUnspecified",
            "ilfilmAa",
            "ilfilm12",
            "ilfilm14",
            "ilfilm16",
            "ilfilm18",
            "ilfilmUnrated"
          ]
        },
        "acbRating": {
          "enumDescriptions": [
            "",
            "E",
            "Programs that have been given a P classification by the Australian Communications and Media Authority. These programs are intended for preschool children.",
            "Programs that have been given a C classification by the Australian Communications and Media Authority. These programs are intended for children (other than preschool children) who are younger than 14 years of age.",
            "G",
            "PG",
            "M",
            "MA15+",
            "R18+",
            ""
          ],
          "type": "string",
          "enum": [
            "acbUnspecified",
            "acbE",
            "acbP",
            "acbC",
            "acbG",
            "acbPg",
            "acbM",
            "acbMa15plus",
            "acbR18plus",
            "acbUnrated"
          ],
          "description": "The video's Australian Classification Board (ACB) or Australian Communications and Media Authority (ACMA) rating. ACMA ratings are used to classify children's television programming."
        },
        "oflcRating": {
          "enumDescriptions": [
            "",
            "G",
            "PG",
            "M",
            "R13",
            "R15",
            "R16",
            "R18",
            "",
            "RP13",
            "RP16",
            "RP18"
          ],
          "description": "The video's Office of Film and Literature Classification (OFLC - New Zealand) rating.",
          "type": "string",
          "enum": [
            "oflcUnspecified",
            "oflcG",
            "oflcPg",
            "oflcM",
            "oflcR13",
            "oflcR15",
            "oflcR16",
            "oflcR18",
            "oflcUnrated",
            "oflcRp13",
            "oflcRp16",
            "oflcRp18"
          ]
        },
        "chfilmRating": {
          "description": "The video's rating in Switzerland.",
          "type": "string",
          "enum": [
            "chfilmUnspecified",
            "chfilm0",
            "chfilm6",
            "chfilm12",
            "chfilm16",
            "chfilm18",
            "chfilmUnrated"
          ],
          "enumDescriptions": [
            "",
            "0",
            "6",
            "12",
            "16",
            "18",
            ""
          ]
        },
        "kfcbRating": {
          "enumDescriptions": [
            "",
            "GE",
            "PG",
            "16",
            "18",
            ""
          ],
          "description": "The video's rating from the Kenya Film Classification Board.",
          "type": "string",
          "enum": [
            "kfcbUnspecified",
            "kfcbG",
            "kfcbPg",
            "kfcb16plus",
            "kfcbR",
            "kfcbUnrated"
          ]
        },
        "mcstRating": {
          "enumDescriptions": [
            "",
            "P",
            "0",
            "C13",
            "C16",
            "16+",
            "C18",
            "MCST_G_PG",
            ""
          ],
          "type": "string",
          "enum": [
            "mcstUnspecified",
            "mcstP",
            "mcst0",
            "mcstC13",
            "mcstC16",
            "mcst16plus",
            "mcstC18",
            "mcstGPg",
            "mcstUnrated"
          ],
          "description": "The video's rating system for Vietnam - MCST"
        },
        "icaaRating": {
          "type": "string",
          "enum": [
            "icaaUnspecified",
            "icaaApta",
            "icaa7",
            "icaa12",
            "icaa13",
            "icaa16",
            "icaa18",
            "icaaX",
            "icaaUnrated"
          ],
          "enumDescriptions": [
            "",
            "APTA",
            "7",
            "12",
            "13",
            "16",
            "18",
            "X",
            ""
          ],
          "description": "The video's Instituto de la Cinematografía y de las Artes Audiovisuales (ICAA - Spain) rating."
        },
        "catvfrRating": {
          "description": "The video's rating from the Canadian Radio-Television and Telecommunications Commission (CRTC) for Canadian French-language broadcasts. For more information, see the Canadian Broadcast Standards Council website.",
          "enumDescriptions": [
            "",
            "G",
            "8+",
            "13+",
            "16+",
            "18+",
            "",
            ""
          ],
          "type": "string",
          "enum": [
            "catvfrUnspecified",
            "catvfrG",
            "catvfr8plus",
            "catvfr13plus",
            "catvfr16plus",
            "catvfr18plus",
            "catvfrUnrated",
            "catvfrE"
          ]
        },
        "cccRating": {
          "enumDescriptions": [
            "",
            "Todo espectador",
            "6+ - Inconveniente para menores de 7 años",
            "14+",
            "18+",
            "18+ - contenido excesivamente violento",
            "18+ - contenido pornográfico",
            ""
          ],
          "type": "string",
          "enum": [
            "cccUnspecified",
            "cccTe",
            "ccc6",
            "ccc14",
            "ccc18",
            "ccc18v",
            "ccc18s",
            "cccUnrated"
          ],
          "description": "The video's Consejo de Calificación Cinematográfica (Chile) rating."
        },
        "agcomRating": {
          "description": "The video's rating from Italy's Autorità per le Garanzie nelle Comunicazioni (AGCOM).",
          "type": "string",
          "enum": [
            "agcomUnspecified",
            "agcomT",
            "agcomVm14",
            "agcomVm18",
            "agcomUnrated"
          ],
          "enumDescriptions": [
            "",
            "T",
            "VM14",
            "VM18",
            ""
          ]
        },
        "mccypRating": {
          "enumDescriptions": [
            "",
            "A",
            "7",
            "11",
            "15",
            ""
          ],
          "type": "string",
          "enum": [
            "mccypUnspecified",
            "mccypA",
            "mccyp7",
            "mccyp11",
            "mccyp15",
            "mccypUnrated"
          ],
          "description": "The video's rating from the Danish Film Institute's (Det Danske Filminstitut) Media Council for Children and Young People."
        },
        "djctqRatingReasons": {
          "type": "array",
          "description": "Reasons that explain why the video received its DJCQT (Brazil) rating.",
          "items": {
            "type": "string",
            "enum": [
              "djctqRatingReasonUnspecified",
              "djctqViolence",
              "djctqExtremeViolence",
              "djctqSexualContent",
              "djctqNudity",
              "djctqSex",
              "djctqExplicitSex",
              "djctqDrugs",
              "djctqLegalDrugs",
              "djctqIllegalDrugs",
              "djctqInappropriateLanguage",
              "djctqCriminalActs",
              "djctqImpactingContent",
              "djctqFear",
              "djctqMedicalProcedures",
              "djctqSensitiveTopics",
              "djctqFantasyViolence"
            ],
            "enumDescriptions": [
              "",
              "Brazil rating content descriptors. See http://go/brazilratings section F. Violência (Violence)",
              "Violência extrema (Extreme violence)",
              "Conteúdo sexual (Sexual content)",
              "Nudez (Nudity)",
              "Sexo (Sex)",
              "Sexo Explícito (Explicit sex)",
              "Drogas (Drugs)",
              "Drogas Lícitas (Legal drugs)",
              "Drogas Ilícitas (Illegal drugs)",
              "Linguagem Imprópria (Inappropriate language)",
              "Atos Criminosos (Criminal Acts)",
              "Conteúdo Impactante (Impacting content)",
              "Temer (Fear)",
              "Procedimentos médicos (Medical Procedures)",
              "Tópicos sensíveis (Sensitive Topics)",
              "Fantasia Violência (Fantasy Violence)"
            ]
          }
        },
        "rcnofRating": {
          "description": "The video's rating from the Hungarian Nemzeti Filmiroda, the Rating Committee of the National Office of Film.",
          "type": "string",
          "enum": [
            "rcnofUnspecified",
            "rcnofI",
            "rcnofIi",
            "rcnofIii",
            "rcnofIv",
            "rcnofV",
            "rcnofVi",
            "rcnofUnrated"
          ],
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
          ]
        },
        "grfilmRating": {
          "enumDescriptions": [
            "",
            "K",
            "E",
            "K-12",
            "K-13",
            "K-15",
            "K-17",
            "K-18",
            ""
          ],
          "description": "The video's rating in Greece.",
          "type": "string",
          "enum": [
            "grfilmUnspecified",
            "grfilmK",
            "grfilmE",
            "grfilmK12",
            "grfilmK13",
            "grfilmK15",
            "grfilmK17",
            "grfilmK18",
            "grfilmUnrated"
          ]
        },
        "fcbmRating": {
          "type": "string",
          "enum": [
            "fcbmUnspecified",
            "fcbmU",
            "fcbmPg13",
            "fcbmP13",
            "fcbm18",
            "fcbm18sx",
            "fcbm18pa",
            "fcbm18sg",
            "fcbm18pl",
            "fcbmUnrated"
          ],
          "description": "The video's rating from Malaysia's Film Censorship Board.",
          "enumDescriptions": [
            "",
            "U",
            "PG13",
            "P13",
            "18",
            "18SX",
            "18PA",
            "18SG",
            "18PL",
            ""
          ]
        },
        "csaRating": {
          "enumDescriptions": [
            "",
            "T",
            "10",
            "12",
            "16",
            "18",
            "Interdiction",
            ""
          ],
          "description": "The video's rating from France's Conseil supérieur de l’audiovisuel, which rates broadcast content.",
          "type": "string",
          "enum": [
            "csaUnspecified",
            "csaT",
            "csa10",
            "csa12",
            "csa16",
            "csa18",
            "csaInterdiction",
            "csaUnrated"
          ]
        },
        "mekuRating": {
          "type": "string",
          "enum": [
            "mekuUnspecified",
            "mekuS",
            "meku7",
            "meku12",
            "meku16",
            "meku18",
            "mekuUnrated"
          ],
          "description": "The video's rating from Finland's Kansallinen Audiovisuaalinen Instituutti (National Audiovisual Institute).",
          "enumDescriptions": [
            "",
            "S",
            "7",
            "12",
            "16",
            "18",
            ""
          ]
        },
        "bfvcRating": {
          "description": "The video's rating from Thailand's Board of Film and Video Censors.",
          "type": "string",
          "enum": [
            "bfvcUnspecified",
            "bfvcG",
            "bfvcE",
            "bfvc13",
            "bfvc15",
            "bfvc18",
            "bfvc20",
            "bfvcB",
            "bfvcUnrated"
          ],
          "enumDescriptions": [
            "",
            "G",
            "E",
            "13",
            "15",
            "18",
            "20",
            "B",
            ""
          ]
        },
        "pefilmRating": {
          "description": "The video's rating in Peru.",
          "type": "string",
          "enum": [
            "pefilmUnspecified",
            "pefilmPt",
            "pefilmPg",
            "pefilm14",
            "pefilm18",
            "pefilmUnrated"
          ],
          "enumDescriptions": [
            "",
            "PT",
            "PG",
            "14",
            "18",
            ""
          ]
        },
        "smaisRating": {
          "type": "string",
          "enum": [
            "smaisUnspecified",
            "smaisL",
            "smais7",
            "smais12",
            "smais14",
            "smais16",
            "smais18",
            "smaisUnrated"
          ],
          "description": "The video's rating in Iceland.",
          "enumDescriptions": [
            "",
            "L",
            "7",
            "12",
            "14",
            "16",
            "18",
            ""
          ]
        },
        "mccaaRating": {
          "enumDescriptions": [
            "",
            "U",
            "PG",
            "12A",
            "12",
            "14 - this rating was removed from the new classification structure introduced in 2013.",
            "15",
            "16 - this rating was removed from the new classification structure introduced in 2013.",
            "18",
            ""
          ],
          "type": "string",
          "enum": [
            "mccaaUnspecified",
            "mccaaU",
            "mccaaPg",
            "mccaa12a",
            "mccaa12",
            "mccaa14",
            "mccaa15",
            "mccaa16",
            "mccaa18",
            "mccaaUnrated"
          ],
          "description": "The video's rating from Malta's Film Age-Classification Board."
        },
        "moctwRating": {
          "enumDescriptions": [
            "",
            "G",
            "P",
            "PG",
            "R",
            "",
            "R-12",
            "R-15"
          ],
          "type": "string",
          "enum": [
            "moctwUnspecified",
            "moctwG",
            "moctwP",
            "moctwPg",
            "moctwR",
            "moctwUnrated",
            "moctwR12",
            "moctwR15"
          ],
          "description": "The video's rating from Taiwan's Ministry of Culture (文化部)."
        },
        "mdaRating": {
          "enumDescriptions": [
            "",
            "G",
            "PG",
            "PG13",
            "NC16",
            "M18",
            "R21",
            ""
          ],
          "type": "string",
          "enum": [
            "mdaUnspecified",
            "mdaG",
            "mdaPg",
            "mdaPg13",
            "mdaNc16",
            "mdaM18",
            "mdaR21",
            "mdaUnrated"
          ],
          "description": "The video's rating from Singapore's Media Development Authority (MDA) and, specifically, it's Board of Film Censors (BFC)."
        },
        "tvpgRating": {
          "description": "The video's TV Parental Guidelines (TVPG) rating.",
          "enumDescriptions": [
            "",
            "TV-Y",
            "TV-Y7",
            "TV-Y7-FV",
            "TV-G",
            "TV-PG",
            "TV-14",
            "TV-MA",
            ""
          ],
          "type": "string",
          "enum": [
            "tvpgUnspecified",
            "tvpgY",
            "tvpgY7",
            "tvpgY7Fv",
            "tvpgG",
            "tvpgPg",
            "pg14",
            "tvpgMa",
            "tvpgUnrated"
          ]
        },
        "anatelRating": {
          "description": "The video's Anatel (Asociación Nacional de Televisión) rating for Chilean television.",
          "type": "string",
          "enum": [
            "anatelUnspecified",
            "anatelF",
            "anatelI",
            "anatelI7",
            "anatelI10",
            "anatelI12",
            "anatelR",
            "anatelA",
            "anatelUnrated"
          ],
          "enumDescriptions": [
            "",
            "F",
            "I",
            "I-7",
            "I-10",
            "I-12",
            "R",
            "A",
            ""
          ]
        },
        "nbcplRating": {
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            "",
            ""
          ],
          "description": "The video's rating in Poland.",
          "type": "string",
          "enum": [
            "nbcplUnspecified",
            "nbcplI",
            "nbcplIi",
            "nbcplIii",
            "nbcplIv",
            "nbcpl18plus",
            "nbcplUnrated"
          ]
        },
        "nkclvRating": {
          "type": "string",
          "enum": [
            "nkclvUnspecified",
            "nkclvU",
            "nkclv7plus",
            "nkclv12plus",
            "nkclv16plus",
            "nkclv18plus",
            "nkclvUnrated"
          ],
          "description": "The video's rating from the Nacionãlais Kino centrs (National Film Centre of Latvia).",
          "enumDescriptions": [
            "",
            "U",
            "7+",
            "12+",
            "! 16+",
            "18+",
            ""
          ]
        },
        "eirinRating": {
          "description": "The video's Eirin (映倫) rating. Eirin is the Japanese rating system.",
          "type": "string",
          "enum": [
            "eirinUnspecified",
            "eirinG",
            "eirinPg12",
            "eirinR15plus",
            "eirinR18plus",
            "eirinUnrated"
          ],
          "enumDescriptions": [
            "",
            "G",
            "PG-12",
            "R15+",
            "R18+",
            ""
          ]
        },
        "fpbRating": {
          "enumDescriptions": [
            "",
            "A",
            "PG",
            "7-9PG",
            "10-12PG",
            "13",
            "16",
            "18",
            "X18",
            "XX",
            "",
            "10"
          ],
          "type": "string",
          "enum": [
            "fpbUnspecified",
            "fpbA",
            "fpbPg",
            "fpb79Pg",
            "fpb1012Pg",
            "fpb13",
            "fpb16",
            "fpb18",
            "fpbX18",
            "fpbXx",
            "fpbUnrated",
            "fpb10"
          ],
          "description": "The video's rating from South Africa's Film and Publication Board."
        },
        "mpaatRating": {
          "description": "The rating system for trailer, DVD, and Ad in the US. See http://movielabs.com/md/ratings/v2.3/html/US_MPAAT_Ratings.html.",
          "enumDescriptions": [
            "",
            "GB",
            "RB"
          ],
          "type": "string",
          "enum": [
            "mpaatUnspecified",
            "mpaatGb",
            "mpaatRb"
          ]
        },
        "cscfRating": {
          "type": "string",
          "enum": [
            "cscfUnspecified",
            "cscfAl",
            "cscfA",
            "cscf6",
            "cscf9",
            "cscf12",
            "cscf16",
            "cscf18",
            "cscfUnrated"
          ],
          "description": "The video's rating from Luxembourg's Commission de surveillance de la classification des films (CSCF).",
          "enumDescriptions": [
            "",
            "AL",
            "A",
            "6",
            "9",
            "12",
            "16",
            "18",
            ""
          ]
        },
        "menaMpaaRating": {
          "type": "string",
          "enum": [
            "menaMpaaUnspecified",
            "menaMpaaG",
            "menaMpaaPg",
            "menaMpaaPg13",
            "menaMpaaR",
            "menaMpaaUnrated"
          ],
          "description": "The rating system for MENA countries, a clone of MPAA. It is needed to prevent titles go live w/o additional QC check, since some of them can be inappropriate for the countries at all. See b/33408548 for more details.",
          "enumDescriptions": [
            "",
            "G",
            "PG",
            "PG-13",
            "R",
            "To keep the same enum values as MPAA's items have, skip NC_17."
          ]
        },
        "nbcRating": {
          "type": "string",
          "enum": [
            "nbcUnspecified",
            "nbcG",
            "nbcPg",
            "nbc12plus",
            "nbc15plus",
            "nbc18plus",
            "nbc18plusr",
            "nbcPu",
            "nbcUnrated"
          ],
          "description": "The video's rating from the Maldives National Bureau of Classification.",
          "enumDescriptions": [
            "",
            "G",
            "PG",
            "12+",
            "15+",
            "18+",
            "18+R",
            "PU",
            ""
          ]
        },
        "djctqRating": {
          "enumDescriptions": [
            "",
            "L",
            "10",
            "12",
            "14",
            "16",
            "18",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
          ],
          "description": "The video's Departamento de Justiça, Classificação, Qualificação e Títulos (DJCQT - Brazil) rating.",
          "type": "string",
          "enum": [
            "djctqUnspecified",
            "djctqL",
            "djctq10",
            "djctq12",
            "djctq14",
            "djctq16",
            "djctq18",
            "djctqEr",
            "djctqL10",
            "djctqL12",
            "djctqL14",
            "djctqL16",
            "djctqL18",
            "djctq1012",
            "djctq1014",
            "djctq1016",
            "djctq1018",
            "djctq1214",
            "djctq1216",
            "djctq1218",
            "djctq1416",
            "djctq1418",
            "djctq1618",
            "djctqUnrated"
          ]
        },
        "russiaRating": {
          "type": "string",
          "enum": [
            "russiaUnspecified",
            "russia0",
            "russia6",
            "russia12",
            "russia16",
            "russia18",
            "russiaUnrated"
          ],
          "enumDescriptions": [
            "",
            "0+",
            "6+",
            "12+",
            "16+",
            "18+",
            ""
          ],
          "description": "The video's National Film Registry of the Russian Federation (MKRF - Russia) rating."
        },
        "mibacRating": {
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
          ],
          "description": "The video's rating from the Ministero dei Beni e delle Attività Culturali e del Turismo (Italy).",
          "type": "string",
          "enum": [
            "mibacUnspecified",
            "mibacT",
            "mibacVap",
            "mibacVm6",
            "mibacVm12",
            "mibacVm14",
            "mibacVm16",
            "mibacVm18",
            "mibacUnrated"
          ]
        },
        "resorteviolenciaRating": {
          "enumDescriptions": [
            "",
            "A",
            "B",
            "C",
            "D",
            "E",
            ""
          ],
          "description": "The video's rating in Venezuela.",
          "type": "string",
          "enum": [
            "resorteviolenciaUnspecified",
            "resorteviolenciaA",
            "resorteviolenciaB",
            "resorteviolenciaC",
            "resorteviolenciaD",
            "resorteviolenciaE",
            "resorteviolenciaUnrated"
          ]
        },
        "fcoRating": {
          "enumDescriptions": [
            "",
            "I",
            "IIA",
            "IIB",
            "II",
            "III",
            ""
          ],
          "description": "The video's rating from Hong Kong's Office for Film, Newspaper and Article Administration.",
          "type": "string",
          "enum": [
            "fcoUnspecified",
            "fcoI",
            "fcoIia",
            "fcoIib",
            "fcoIi",
            "fcoIii",
            "fcoUnrated"
          ]
        },
        "nfvcbRating": {
          "type": "string",
          "enum": [
            "nfvcbUnspecified",
            "nfvcbG",
            "nfvcbPg",
            "nfvcb12",
            "nfvcb12a",
            "nfvcb15",
            "nfvcb18",
            "nfvcbRe",
            "nfvcbUnrated"
          ],
          "description": "The video's rating from Nigeria's National Film and Video Censors Board.",
          "enumDescriptions": [
            "",
            "G",
            "PG",
            "12",
            "12A",
            "15",
            "18",
            "RE",
            ""
          ]
        },
        "cnaRating": {
          "type": "string",
          "enum": [
            "cnaUnspecified",
            "cnaAp",
            "cna12",
            "cna15",
            "cna18",
            "cna18plus",
            "cnaUnrated"
          ],
          "description": "The video's rating from Romania's CONSILIUL NATIONAL AL AUDIOVIZUALULUI (CNA).",
          "enumDescriptions": [
            "",
            "AP",
            "12",
            "15",
            "18",
            "18+",
            ""
          ]
        }
      }
    },
    "CommentListResponse": {
      "type": "object",
      "id": "CommentListResponse",
      "properties": {
        "visitorId": {
          "deprecated": true,
          "description": "The visitorId identifies the visitor.",
          "type": "string"
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "tokenPagination": {
          "deprecated": true,
          "$ref": "TokenPagination"
        },
        "nextPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.",
          "type": "string"
        },
        "eventId": {
          "deprecated": true,
          "type": "string",
          "description": "Serialized EventId of the request which produced this response."
        },
        "kind": {
          "default": "youtube#commentListResponse",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#commentListResponse\".",
          "type": "string"
        },
        "items": {
          "items": {
            "$ref": "Comment"
          },
          "type": "array",
          "description": "A list of comments that match the request criteria."
        },
        "pageInfo": {
          "description": "General pagination information.",
          "$ref": "PageInfo"
        }
      }
    },
    "VideoPaidProductPlacementDetails": {
      "properties": {
        "hasPaidProductPlacement": {
          "description": "This boolean represents whether the video contains Paid Product Placement, Studio equivalent: https://screenshot.googleplex.com/4Me79DE6AfT2ktp.png",
          "type": "boolean"
        }
      },
      "type": "object",
      "description": "Details about paid content, such as paid product placement, sponsorships or endorsement, contained in a YouTube video and a method to inform viewers of paid promotion. This data can only be retrieved by the video owner.",
      "id": "VideoPaidProductPlacementDetails"
    },
    "ChannelContentDetails": {
      "description": "Details about the content of a channel.",
      "type": "object",
      "id": "ChannelContentDetails",
      "properties": {
        "relatedPlaylists": {
          "type": "object",
          "properties": {
            "likes": {
              "type": "string",
              "description": "The ID of the playlist that contains the channel\"s liked videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list."
            },
            "favorites": {
              "deprecated": true,
              "description": "The ID of the playlist that contains the channel\"s favorite videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.",
              "type": "string"
            },
            "uploads": {
              "type": "string",
              "description": "The ID of the playlist that contains the channel\"s uploaded videos. Use the videos.insert method to upload new videos and the videos.delete method to delete previously uploaded videos."
            },
            "watchHistory": {
              "description": "The ID of the playlist that contains the channel\"s watch history. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.",
              "type": "string",
              "deprecated": true
            },
            "watchLater": {
              "description": "The ID of the playlist that contains the channel\"s watch later playlist. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.",
              "deprecated": true,
              "type": "string"
            }
          }
        }
      }
    },
    "VideoLiveStreamingDetails": {
      "id": "VideoLiveStreamingDetails",
      "type": "object",
      "properties": {
        "actualEndTime": {
          "format": "date-time",
          "type": "string",
          "description": "The time that the broadcast actually ended. This value will not be available until the broadcast is over."
        },
        "scheduledStartTime": {
          "description": "The time that the broadcast is scheduled to begin.",
          "format": "date-time",
          "type": "string"
        },
        "concurrentViewers": {
          "format": "uint64",
          "description": "The number of viewers currently watching the broadcast. The property and its value will be present if the broadcast has current viewers and the broadcast owner has not hidden the viewcount for the video. Note that YouTube stops tracking the number of concurrent viewers for a broadcast when the broadcast ends. So, this property would not identify the number of viewers watching an archived video of a live broadcast that already ended.",
          "type": "string"
        },
        "activeLiveChatId": {
          "description": "The ID of the currently active live chat attached to this video. This field is filled only if the video is a currently live broadcast that has live chat. Once the broadcast transitions to complete this field will be removed and the live chat closed down. For persistent broadcasts that live chat id will no longer be tied to this video but rather to the new video being displayed at the persistent page.",
          "type": "string"
        },
        "actualStartTime": {
          "description": "The time that the broadcast actually started. This value will not be available until the broadcast begins.",
          "type": "string",
          "format": "date-time"
        },
        "scheduledEndTime": {
          "format": "date-time",
          "description": "The time that the broadcast is scheduled to end. If the value is empty or the property is not present, then the broadcast is scheduled to continue indefinitely.",
          "type": "string"
        }
      },
      "description": "Details about the live streaming metadata."
    },
    "I18nLanguage": {
      "description": "An *i18nLanguage* resource identifies a UI language currently supported by YouTube.",
      "type": "object",
      "id": "I18nLanguage",
      "properties": {
        "etag": {
          "type": "string",
          "description": "Etag of this resource."
        },
        "id": {
          "description": "The ID that YouTube uses to uniquely identify the i18n language.",
          "type": "string"
        },
        "snippet": {
          "description": "The snippet object contains basic details about the i18n language, such as language code and human-readable name.",
          "$ref": "I18nLanguageSnippet"
        },
        "kind": {
          "type": "string",
          "default": "youtube#i18nLanguage",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#i18nLanguage\"."
        }
      }
    },
    "PlaylistListResponse": {
      "properties": {
        "visitorId": {
          "type": "string",
          "deprecated": true,
          "description": "The visitorId identifies the visitor."
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "kind": {
          "default": "youtube#playlistListResponse",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#playlistListResponse\".",
          "type": "string"
        },
        "items": {
          "items": {
            "$ref": "Playlist"
          },
          "type": "array",
          "description": "A list of playlists that match the request criteria"
        },
        "pageInfo": {
          "description": "General pagination information.",
          "$ref": "PageInfo"
        },
        "prevPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.",
          "type": "string"
        },
        "eventId": {
          "deprecated": true,
          "type": "string",
          "description": "Serialized EventId of the request which produced this response."
        },
        "tokenPagination": {
          "$ref": "TokenPagination",
          "deprecated": true
        },
        "nextPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.",
          "type": "string"
        }
      },
      "id": "PlaylistListResponse",
      "type": "object"
    },
    "SuperChatEvent": {
      "type": "object",
      "id": "SuperChatEvent",
      "description": "A `__superChatEvent__` resource represents a Super Chat purchase on a YouTube channel.",
      "properties": {
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string `\"youtube#superChatEvent\"`.",
          "type": "string",
          "default": "youtube#superChatEvent"
        },
        "id": {
          "type": "string",
          "description": "The ID that YouTube assigns to uniquely identify the Super Chat event."
        },
        "snippet": {
          "description": "The `snippet` object contains basic details about the Super Chat event.",
          "$ref": "SuperChatEventSnippet"
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        }
      }
    },
    "ChannelSectionSnippet": {
      "properties": {
        "position": {
          "format": "uint32",
          "description": "The position of the channel section in the channel.",
          "type": "integer"
        },
        "localized": {
          "$ref": "ChannelSectionLocalization",
          "deprecated": true,
          "description": "Localized title, read-only."
        },
        "channelId": {
          "description": "The ID that YouTube uses to uniquely identify the channel that published the channel section.",
          "type": "string"
        },
        "title": {
          "description": "The channel section's title for multiple_playlists and multiple_channels.",
          "type": "string"
        },
        "defaultLanguage": {
          "description": "The language of the channel section's default title and description.",
          "type": "string",
          "deprecated": true
        },
        "type": {
          "enum": [
            "channelsectionTypeUndefined",
            "singlePlaylist",
            "multiplePlaylists",
            "popularUploads",
            "recentUploads",
            "likes",
            "allPlaylists",
            "likedPlaylists",
            "recentPosts",
            "recentActivity",
            "liveEvents",
            "upcomingEvents",
            "completedEvents",
            "multipleChannels",
            "postedVideos",
            "postedPlaylists",
            "subscriptions"
          ],
          "type": "string",
          "enumDeprecated": [
            false,
            false,
            false,
            false,
            false,
            true,
            false,
            true,
            true,
            true,
            false,
            false,
            false,
            false,
            true,
            true,
            false
          ],
          "description": "The type of the channel section.",
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
          ]
        },
        "style": {
          "type": "string",
          "enumDescriptions": [
            "",
            "",
            ""
          ],
          "enum": [
            "channelsectionStyleUnspecified",
            "horizontalRow",
            "verticalList"
          ],
          "description": "The style of the channel section.",
          "deprecated": true
        }
      },
      "description": "Basic details about a channel section, including title, style and position.",
      "type": "object",
      "id": "ChannelSectionSnippet"
    },
    "ThirdPartyLinkStatus": {
      "type": "object",
      "properties": {
        "linkStatus": {
          "type": "string",
          "enumDescriptions": [
            "",
            "",
            "",
            ""
          ],
          "enum": [
            "unknown",
            "failed",
            "pending",
            "linked"
          ]
        }
      },
      "id": "ThirdPartyLinkStatus",
      "description": "The third-party link status object contains information about the status of the link."
    },
    "LiveChatPollDetailsPollMetadata": {
      "properties": {
        "options": {
          "type": "array",
          "items": {
            "$ref": "LiveChatPollDetailsPollMetadataPollOption"
          },
          "description": "The options will be returned in the order that is displayed in 1P"
        },
        "questionText": {
          "type": "string"
        }
      },
      "id": "LiveChatPollDetailsPollMetadata",
      "type": "object"
    },
    "SuperChatEventListResponse": {
      "type": "object",
      "properties": {
        "items": {
          "description": "A list of Super Chat purchases that match the request criteria.",
          "items": {
            "$ref": "SuperChatEvent"
          },
          "type": "array"
        },
        "pageInfo": {
          "$ref": "PageInfo"
        },
        "visitorId": {
          "description": "The visitorId identifies the visitor.",
          "type": "string",
          "deprecated": true
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "eventId": {
          "description": "Serialized EventId of the request which produced this response.",
          "deprecated": true,
          "type": "string"
        },
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#superChatEventListResponse\".",
          "default": "youtube#superChatEventListResponse",
          "type": "string"
        },
        "tokenPagination": {
          "$ref": "TokenPagination",
          "deprecated": true
        },
        "nextPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.",
          "type": "string"
        }
      },
      "id": "SuperChatEventListResponse"
    },
    "PlaylistImage": {
      "type": "object",
      "id": "PlaylistImage",
      "properties": {
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#playlistImages\".",
          "type": "string",
          "default": "youtube#playlistImage"
        },
        "snippet": {
          "$ref": "PlaylistImageSnippet"
        },
        "id": {
          "description": "Identifies this resource (playlist id and image type).",
          "type": "string"
        }
      }
    },
    "LiveStreamStatus": {
      "type": "object",
      "id": "LiveStreamStatus",
      "description": "Brief description of the live stream status.",
      "properties": {
        "streamStatus": {
          "type": "string",
          "enum": [
            "created",
            "ready",
            "active",
            "inactive",
            "error"
          ],
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            ""
          ]
        },
        "healthStatus": {
          "description": "The health status of the stream.",
          "$ref": "LiveStreamHealthStatus"
        }
      }
    },
    "CuepointSchedule": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "This field is semantically required. If it is set false or not set, other fields in this message will be ignored."
        },
        "scheduleStrategy": {
          "deprecated": true,
          "type": "string",
          "description": "The strategy to use when scheduling cuepoints.",
          "enumDescriptions": [
            "",
            "Strategy to schedule cuepoints at one time for all viewers.",
            "Strategy to schedule cuepoints at an increased rate to allow viewers to receive cuepoints when eligible. See go/lcr-non-concurrent-ads for more details."
          ],
          "enum": [
            "scheduleStrategyUnspecified",
            "concurrent",
            "nonConcurrent"
          ]
        },
        "pauseAdsUntil": {
          "description": "If set, automatic cuepoint insertion is paused until this timestamp (\"No Ad Zone\"). The value is specified in ISO 8601 format.",
          "type": "string"
        },
        "repeatIntervalSecs": {
          "type": "integer",
          "description": "Interval frequency in seconds that api uses to insert cuepoints automatically.",
          "deprecated": true,
          "format": "int32"
        }
      },
      "description": "Schedule to insert cuepoints into a broadcast by ads automator.",
      "id": "CuepointSchedule"
    },
    "LiveBroadcastSnippet": {
      "id": "LiveBroadcastSnippet",
      "properties": {
        "description": {
          "type": "string",
          "description": "The broadcast's description. As with the title, you can set this field by modifying the broadcast resource or by setting the description field of the corresponding video resource."
        },
        "actualEndTime": {
          "format": "date-time",
          "type": "string",
          "description": "The date and time that the broadcast actually ended. This information is only available once the broadcast's state is complete."
        },
        "isDefaultBroadcast": {
          "description": "Indicates whether this broadcast is the default broadcast. Internal only.",
          "type": "boolean"
        },
        "categoryId": {
          "type": "string",
          "description": "The YouTube video category associated with the video broadcast."
        },
        "title": {
          "description": "The broadcast's title. Note that the broadcast represents exactly one YouTube video. You can set this field by modifying the broadcast resource or by setting the title field of the corresponding video resource.",
          "type": "string",
          "annotations": {
            "required": [
              "youtube.liveBroadcasts.insert",
              "youtube.liveBroadcasts.update"
            ]
          }
        },
        "publishedAt": {
          "description": "The date and time that the broadcast was added to YouTube's live broadcast schedule.",
          "type": "string",
          "format": "date-time"
        },
        "thumbnails": {
          "description": "A map of thumbnail images associated with the broadcast. For each nested object in this object, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.",
          "$ref": "ThumbnailDetails"
        },
        "liveChatId": {
          "description": "The id of the live chat for this broadcast.",
          "type": "string"
        },
        "scheduledEndTime": {
          "description": "The date and time that the broadcast is scheduled to end.",
          "format": "date-time",
          "type": "string"
        },
        "scheduledStartTime": {
          "annotations": {
            "required": [
              "youtube.liveBroadcasts.insert",
              "youtube.liveBroadcasts.update"
            ]
          },
          "type": "string",
          "description": "The date and time that the broadcast is scheduled to start.",
          "format": "date-time"
        },
        "channelId": {
          "type": "string",
          "description": "The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast."
        },
        "actualStartTime": {
          "description": "The date and time that the broadcast actually started. This information is only available once the broadcast's state is live.",
          "type": "string",
          "format": "date-time"
        }
      },
      "description": "Basic broadcast information.",
      "type": "object"
    },
    "VideoAbuseReportReasonSnippet": {
      "description": "Basic details about a video category, such as its localized title.",
      "properties": {
        "label": {
          "type": "string",
          "description": "The localized label belonging to this abuse report reason."
        },
        "secondaryReasons": {
          "items": {
            "$ref": "VideoAbuseReportSecondaryReason"
          },
          "description": "The secondary reasons associated with this reason, if any are available. (There might be 0 or more.)",
          "type": "array"
        }
      },
      "type": "object",
      "id": "VideoAbuseReportReasonSnippet"
    },
    "MembershipsDuration": {
      "id": "MembershipsDuration",
      "properties": {
        "memberSince": {
          "type": "string",
          "description": "The date and time when the user became a continuous member across all levels."
        },
        "memberTotalDurationMonths": {
          "format": "int32",
          "type": "integer",
          "description": "The cumulative time the user has been a member across all levels in complete months (the time is rounded down to the nearest integer)."
        }
      },
      "type": "object"
    },
    "BrandPartner": {
      "type": "object",
      "id": "BrandPartner",
      "description": "Details about the brand partner linked to the video for Creator Initiated Linking (CIL). Next ID: 6",
      "properties": {
        "channelHandle": {
          "type": "string",
          "description": "Required. Channel handle, must begin with \"@\""
        },
        "channelId": {
          "description": "Required. External Channel ID, must begin with \"UC\"",
          "type": "string"
        }
      }
    },
    "VideoCategory": {
      "properties": {
        "etag": {
          "type": "string",
          "description": "Etag of this resource."
        },
        "snippet": {
          "description": "The snippet object contains basic details about the video category, including its title.",
          "$ref": "VideoCategorySnippet"
        },
        "id": {
          "description": "The ID that YouTube uses to uniquely identify the video category.",
          "type": "string"
        },
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#videoCategory\".",
          "default": "youtube#videoCategory",
          "type": "string"
        }
      },
      "type": "object",
      "id": "VideoCategory",
      "description": "A *videoCategory* resource identifies a category that has been or could be associated with uploaded videos."
    },
    "VideoProcessingDetailsProcessingProgress": {
      "description": "Video processing progress and completion time estimate.",
      "properties": {
        "partsTotal": {
          "description": "An estimate of the total number of parts that need to be processed for the video. The number may be updated with more precise estimates while YouTube processes the video.",
          "format": "uint64",
          "type": "string"
        },
        "partsProcessed": {
          "type": "string",
          "description": "The number of parts of the video that YouTube has already processed. You can estimate the percentage of the video that YouTube has already processed by calculating: 100 * parts_processed / parts_total Note that since the estimated number of parts could increase without a corresponding increase in the number of parts that have already been processed, it is possible that the calculated progress could periodically decrease while YouTube processes a video.",
          "format": "uint64"
        },
        "timeLeftMs": {
          "type": "string",
          "description": "An estimate of the amount of time, in millseconds, that YouTube needs to finish processing the video.",
          "format": "uint64"
        }
      },
      "type": "object",
      "id": "VideoProcessingDetailsProcessingProgress"
    },
    "ThumbnailDetails": {
      "type": "object",
      "description": "Internal representation of thumbnails for a YouTube resource.",
      "properties": {
        "default": {
          "description": "The default image for this resource.",
          "$ref": "Thumbnail"
        },
        "high": {
          "description": "The high quality image for this resource.",
          "$ref": "Thumbnail"
        },
        "uhd": {
          "$ref": "Thumbnail",
          "description": "The ultra-high resolution (4K) quality image for this resource."
        },
        "standard": {
          "description": "The standard quality image for this resource.",
          "$ref": "Thumbnail"
        },
        "medium": {
          "$ref": "Thumbnail",
          "description": "The medium quality image for this resource."
        },
        "maxres": {
          "description": "The maximum resolution quality image for this resource.",
          "$ref": "Thumbnail"
        },
        "qhd": {
          "$ref": "Thumbnail",
          "description": "The quad high definition (1440p / 2K) quality image for this resource."
        },
        "fhd": {
          "description": "The full high definition (1080p) quality image for this resource.",
          "$ref": "Thumbnail"
        }
      },
      "id": "ThumbnailDetails"
    },
    "LiveChatMessageDeletedDetails": {
      "id": "LiveChatMessageDeletedDetails",
      "deprecated": true,
      "properties": {
        "deletedMessageId": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "PlaylistImageSnippet": {
      "id": "PlaylistImageSnippet",
      "description": "A *playlistImage* resource identifies another resource, such as a image, that is associated with a playlist. In addition, the playlistImage resource contains details about the included resource that pertain specifically to how that resource is used in that playlist. YouTube uses playlists to identify special collections of videos for a channel, such as: - uploaded videos - favorite videos - positively rated (liked) videos - watch history To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistImages.list method to retrieve image data for any of those playlists. You can also add or remove images from those lists by calling the playlistImages.insert and playlistImages.delete methods.",
      "type": "object",
      "properties": {
        "width": {
          "format": "int32",
          "type": "integer",
          "description": "The image width."
        },
        "type": {
          "type": "string",
          "enum": [
            "hero"
          ],
          "description": "The image type.",
          "enumDescriptions": [
            "The main image that will be used for this playlist."
          ]
        },
        "playlistId": {
          "description": "The Playlist ID of the playlist this image is associated with.",
          "type": "string"
        },
        "height": {
          "description": "The image height.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "VideoStatsContentDetails": {
      "properties": {
        "duration": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. The length of the video. The property value is a [`google.protobuf.Duration`](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration) object.",
          "format": "google-duration"
        }
      },
      "id": "VideoStatsContentDetails",
      "description": "Details about the content of a YouTube Video. This is a subset of the information in VideoContentDetails specifically for the Videos.stats API.",
      "type": "object"
    },
    "PlaylistItemListResponse": {
      "type": "object",
      "id": "PlaylistItemListResponse",
      "properties": {
        "visitorId": {
          "description": "The visitorId identifies the visitor.",
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "PlaylistItem"
          },
          "description": "A list of playlist items that match the request criteria."
        },
        "etag": {
          "type": "string"
        },
        "nextPageToken": {
          "type": "string",
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set."
        },
        "pageInfo": {
          "description": "General pagination information.",
          "$ref": "PageInfo"
        },
        "tokenPagination": {
          "$ref": "TokenPagination"
        },
        "eventId": {
          "description": "Serialized EventId of the request which produced this response.",
          "type": "string"
        },
        "kind": {
          "default": "youtube#playlistItemListResponse",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#playlistItemListResponse\".",
          "type": "string"
        },
        "prevPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.",
          "type": "string"
        }
      }
    },
    "MembershipsDetails": {
      "type": "object",
      "properties": {
        "membershipsDurationAtLevels": {
          "description": "Data about memberships duration on particular pricing levels.",
          "items": {
            "$ref": "MembershipsDurationAtLevel"
          },
          "type": "array"
        },
        "highestAccessibleLevelDisplayName": {
          "type": "string",
          "description": "Display name for the highest level that the user has access to at the moment."
        },
        "membershipsDuration": {
          "$ref": "MembershipsDuration",
          "description": "Data about memberships duration without taking into consideration pricing levels."
        },
        "highestAccessibleLevel": {
          "type": "string",
          "description": "Id of the highest level that the user has access to at the moment."
        },
        "accessibleLevels": {
          "type": "array",
          "description": "Ids of all levels that the user has access to. This includes the currently active level and all other levels that are included because of a higher purchase.",
          "items": {
            "type": "string"
          }
        }
      },
      "id": "MembershipsDetails"
    },
    "LiveChatPollDetails": {
      "properties": {
        "metadata": {
          "$ref": "LiveChatPollDetailsPollMetadata"
        },
        "status": {
          "type": "string",
          "enum": [
            "unknown",
            "active",
            "closed"
          ],
          "enumDescriptions": [
            "",
            "",
            ""
          ]
        }
      },
      "type": "object",
      "id": "LiveChatPollDetails"
    },
    "ThirdPartyLinkSnippet": {
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "linkUnspecified",
            "channelToStoreLink",
            "channelToAffiliateProgramLink"
          ],
          "description": "Type of the link named after the entities that are being linked.",
          "enumDescriptions": [
            "",
            "A link that is connecting (or about to connect) a channel with a store on a merchandising platform in order to enable retail commerce capabilities for that channel on YouTube.",
            "A link that is connecting (or about to connect) a channel with an affiliate program of a partner to enable that channel to earn commissions from that partner through affiliate links."
          ]
        },
        "channelToStoreLink": {
          "description": "Information specific to a link between a channel and a store on a merchandising platform.",
          "$ref": "ChannelToStoreLinkDetails"
        },
        "channelToAffiliateProgramLink": {
          "description": "Information specific to a link between a channel and an affiliate program of a partner.",
          "$ref": "ChannelToAffiliateProgramLinkDetails"
        }
      },
      "description": "Basic information about a third party account link, including its type and type-specific information.",
      "type": "object",
      "id": "ThirdPartyLinkSnippet"
    },
    "ChannelListResponse": {
      "id": "ChannelListResponse",
      "properties": {
        "nextPageToken": {
          "type": "string",
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "Channel"
          }
        },
        "tokenPagination": {
          "deprecated": true,
          "$ref": "TokenPagination"
        },
        "prevPageToken": {
          "type": "string",
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set."
        },
        "pageInfo": {
          "description": "General pagination information.",
          "$ref": "PageInfo"
        },
        "visitorId": {
          "description": "The visitorId identifies the visitor.",
          "type": "string",
          "deprecated": true
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "kind": {
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#channelListResponse\".",
          "default": "youtube#channelListResponse"
        },
        "eventId": {
          "description": "Serialized EventId of the request which produced this response.",
          "type": "string",
          "deprecated": true
        }
      },
      "type": "object"
    },
    "ChannelSectionLocalization": {
      "id": "ChannelSectionLocalization",
      "type": "object",
      "description": "ChannelSection localization setting",
      "properties": {
        "title": {
          "description": "The localized strings for channel section's title.",
          "type": "string",
          "deprecated": true
        }
      }
    },
    "Channel": {
      "type": "object",
      "id": "Channel",
      "description": "A *channel* resource contains information about a YouTube channel.",
      "properties": {
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "snippet": {
          "description": "The snippet object contains basic details about the channel, such as its title, description, and thumbnail images.",
          "$ref": "ChannelSnippet"
        },
        "kind": {
          "default": "youtube#channel",
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#channel\"."
        },
        "contentOwnerDetails": {
          "description": "The contentOwnerDetails object encapsulates channel data that is relevant for YouTube Partners linked with the channel.",
          "$ref": "ChannelContentOwnerDetails"
        },
        "id": {
          "description": "The ID that YouTube uses to uniquely identify the channel.",
          "type": "string"
        },
        "auditDetails": {
          "$ref": "ChannelAuditDetails",
          "description": "The auditionDetails object encapsulates channel data that is relevant for YouTube Partners during the audition process."
        },
        "localizations": {
          "additionalProperties": {
            "$ref": "ChannelLocalization"
          },
          "type": "object",
          "description": "Localizations for different languages"
        },
        "topicDetails": {
          "$ref": "ChannelTopicDetails",
          "description": "The topicDetails object encapsulates information about Freebase topics associated with the channel."
        },
        "status": {
          "description": "The status object encapsulates information about the privacy status of the channel.",
          "$ref": "ChannelStatus"
        },
        "conversionPings": {
          "deprecated": true,
          "$ref": "ChannelConversionPings",
          "description": "The conversionPings object encapsulates information about conversion pings that need to be respected by the channel."
        },
        "contentDetails": {
          "description": "The contentDetails object encapsulates information about the channel's content.",
          "$ref": "ChannelContentDetails"
        },
        "statistics": {
          "description": "The statistics object encapsulates statistics for the channel.",
          "$ref": "ChannelStatistics"
        },
        "brandingSettings": {
          "description": "The brandingSettings object encapsulates information about the branding of the channel.",
          "$ref": "ChannelBrandingSettings"
        }
      }
    },
    "Video": {
      "id": "Video",
      "type": "object",
      "description": "A *video* resource represents a YouTube video.",
      "properties": {
        "recordingDetails": {
          "$ref": "VideoRecordingDetails",
          "description": "The recordingDetails object encapsulates information about the location, date and address where the video was recorded."
        },
        "snippet": {
          "description": "The snippet object contains basic details about the video, such as its title, description, and category.",
          "$ref": "VideoSnippet"
        },
        "monetizationDetails": {
          "$ref": "VideoMonetizationDetails",
          "description": "The monetizationDetails object encapsulates information about the monetization status of the video."
        },
        "contentDetails": {
          "description": "The contentDetails object contains information about the video content, including the length of the video and its aspect ratio.",
          "$ref": "VideoContentDetails"
        },
        "fileDetails": {
          "description": "The fileDetails object encapsulates information about the video file that was uploaded to YouTube, including the file's resolution, duration, audio and video codecs, stream bitrates, and more. This data can only be retrieved by the video owner.",
          "$ref": "VideoFileDetails"
        },
        "suggestions": {
          "$ref": "VideoSuggestions",
          "description": "The suggestions object encapsulates suggestions that identify opportunities to improve the video quality or the metadata for the uploaded video. This data can only be retrieved by the video owner."
        },
        "player": {
          "$ref": "VideoPlayer",
          "description": "The player object contains information that you would use to play the video in an embedded player."
        },
        "status": {
          "description": "The status object contains information about the video's uploading, processing, and privacy statuses.",
          "$ref": "VideoStatus"
        },
        "statistics": {
          "description": "The statistics object contains statistics about the video.",
          "$ref": "VideoStatistics"
        },
        "processingDetails": {
          "$ref": "VideoProcessingDetails",
          "description": "The processingDetails object encapsulates information about YouTube's progress in processing the uploaded video file. The properties in the object identify the current processing status and an estimate of the time remaining until YouTube finishes processing the video. This part also indicates whether different types of data or content, such as file details or thumbnail images, are available for the video. The processingProgress object is designed to be polled so that the video uploaded can track the progress that YouTube has made in processing the uploaded video file. This data can only be retrieved by the video owner."
        },
        "ageGating": {
          "description": "Age restriction details related to a video. This data can only be retrieved by the video owner.",
          "$ref": "VideoAgeGating"
        },
        "brandPartner": {
          "$ref": "BrandPartner"
        },
        "projectDetails": {
          "description": "The projectDetails object contains information about the project specific video metadata. b/157517979: This part was never populated after it was added. However, it sees non-zero traffic because there is generated client code in the wild that refers to it [1]. We keep this field and do NOT remove it because otherwise V3 would return an error when this part gets requested [2]. [1] https://developers.google.com/resources/api-libraries/documentation/youtube/v3/csharp/latest/classGoogle_1_1Apis_1_1YouTube_1_1v3_1_1Data_1_1VideoProjectDetails.html [2] http://google3/video/youtube/src/python/servers/data_api/common.py?l=1565-1569&rcl=344141677",
          "deprecated": true,
          "$ref": "VideoProjectDetails"
        },
        "etag": {
          "type": "string",
          "description": "Etag of this resource."
        },
        "topicDetails": {
          "$ref": "VideoTopicDetails",
          "description": "The topicDetails object encapsulates information about Freebase topics associated with the video."
        },
        "id": {
          "annotations": {
            "required": [
              "youtube.videos.update"
            ]
          },
          "description": "The ID that YouTube uses to uniquely identify the video.",
          "type": "string"
        },
        "liveStreamingDetails": {
          "$ref": "VideoLiveStreamingDetails",
          "description": "The liveStreamingDetails object contains metadata about a live video broadcast. The object will only be present in a video resource if the video is an upcoming, live, or completed live broadcast."
        },
        "paidProductPlacementDetails": {
          "$ref": "VideoPaidProductPlacementDetails"
        },
        "localizations": {
          "type": "object",
          "additionalProperties": {
            "$ref": "VideoLocalization"
          },
          "description": "The localizations object contains localized versions of the basic details about the video, such as its title and description."
        },
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#video\".",
          "default": "youtube#video",
          "type": "string"
        }
      }
    },
    "VideoMonetizationDetails": {
      "type": "object",
      "description": "Details about monetization of a YouTube Video.",
      "id": "VideoMonetizationDetails",
      "properties": {
        "access": {
          "$ref": "AccessPolicy",
          "description": "The value of access indicates whether the video can be monetized or not."
        }
      }
    },
    "LiveChatGiftMembershipReceivedDetails": {
      "type": "object",
      "id": "LiveChatGiftMembershipReceivedDetails",
      "properties": {
        "gifterChannelId": {
          "type": "string",
          "description": "The ID of the user that made the membership gifting purchase. This matches the `snippet.authorChannelId` of the associated membership gifting message."
        },
        "associatedMembershipGiftingMessageId": {
          "type": "string",
          "description": "The ID of the membership gifting message that is related to this gift membership. This ID will always refer to a message whose type is 'membershipGiftingEvent'."
        },
        "memberLevelName": {
          "type": "string",
          "description": "The name of the Level at which the viewer is a member. This matches the `snippet.membershipGiftingDetails.giftMembershipsLevelName` of the associated membership gifting message. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn't filled."
        }
      }
    },
    "LiveChatSuperStickerDetails": {
      "id": "LiveChatSuperStickerDetails",
      "type": "object",
      "properties": {
        "tier": {
          "description": "The tier in which the amount belongs. Lower amounts belong to lower tiers. The lowest tier is 1.",
          "format": "uint32",
          "type": "integer"
        },
        "superStickerMetadata": {
          "$ref": "SuperStickerMetadata",
          "description": "Information about the Super Sticker."
        },
        "currency": {
          "description": "The currency in which the purchase was made.",
          "type": "string"
        },
        "amountDisplayString": {
          "type": "string",
          "description": "A rendered string that displays the fund amount and currency to the user."
        },
        "amountMicros": {
          "description": "The amount purchased by the user, in micros (1,750,000 micros = 1.75).",
          "format": "uint64",
          "type": "string"
        }
      }
    },
    "AbuseType": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      },
      "id": "AbuseType"
    },
    "MembershipsLevelSnippet": {
      "id": "MembershipsLevelSnippet",
      "properties": {
        "creatorChannelId": {
          "description": "The id of the channel that's offering channel memberships.",
          "type": "string"
        },
        "levelDetails": {
          "$ref": "LevelDetails",
          "description": "Details about the pricing level."
        }
      },
      "type": "object"
    },
    "LiveChatMessageSnippet": {
      "properties": {
        "textMessageDetails": {
          "$ref": "LiveChatTextMessageDetails",
          "description": "Details about the text message, this is only set if the type is 'textMessageEvent'."
        },
        "authorChannelId": {
          "type": "string",
          "description": "The ID of the user that authored this message, this field is not always filled. textMessageEvent - the user that wrote the message fanFundingEvent - the user that funded the broadcast newSponsorEvent - the user that just became a sponsor memberMilestoneChatEvent - the member that sent the message membershipGiftingEvent - the user that made the purchase giftMembershipReceivedEvent - the user that received the gift membership messageDeletedEvent - the moderator that took the action. Unused. messageRetractedEvent - the author that retracted their message. Unused. userBannedEvent - the moderator that took the action superChatEvent - the user that made the purchase superStickerEvent - the user that made the purchase pollEvent - the user that created the poll"
        },
        "newSponsorDetails": {
          "$ref": "LiveChatNewSponsorDetails",
          "description": "Details about the New Member Announcement event, this is only set if the type is 'newSponsorEvent'. Please note that \"member\" is the new term for \"sponsor\"."
        },
        "type": {
          "enum": [
            "invalidType",
            "textMessageEvent",
            "tombstone",
            "fanFundingEvent",
            "chatEndedEvent",
            "sponsorOnlyModeStartedEvent",
            "sponsorOnlyModeEndedEvent",
            "newSponsorEvent",
            "memberMilestoneChatEvent",
            "membershipGiftingEvent",
            "giftMembershipReceivedEvent",
            "messageDeletedEvent",
            "messageRetractedEvent",
            "userBannedEvent",
            "superChatEvent",
            "superStickerEvent",
            "pollEvent",
            "giftEvent"
          ],
          "enumDeprecated": [
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            false,
            true,
            true,
            false,
            false,
            false,
            false,
            false
          ],
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "A virtual gift sent by a viewer to support a creator."
          ],
          "type": "string",
          "description": "The type of message, this will always be present, it determines the contents of the message as well as which fields will be present."
        },
        "messageRetractedDetails": {
          "$ref": "LiveChatMessageRetractedDetails",
          "deprecated": true
        },
        "userBannedDetails": {
          "$ref": "LiveChatUserBannedMessageDetails"
        },
        "liveChatId": {
          "type": "string"
        },
        "pollDetails": {
          "$ref": "LiveChatPollDetails",
          "description": "Details about the poll event, this is only set if the type is 'pollEvent'."
        },
        "hasDisplayContent": {
          "description": "Whether the message has display content that should be displayed to users.",
          "type": "boolean"
        },
        "superStickerDetails": {
          "description": "Details about the Super Sticker event, this is only set if the type is 'superStickerEvent'.",
          "$ref": "LiveChatSuperStickerDetails"
        },
        "memberMilestoneChatDetails": {
          "description": "Details about the Member Milestone Chat event, this is only set if the type is 'memberMilestoneChatEvent'.",
          "$ref": "LiveChatMemberMilestoneChatDetails"
        },
        "displayMessage": {
          "description": "Contains a string that can be displayed to the user. If this field is not present the message is silent, at the moment only messages of type TOMBSTONE and CHAT_ENDED_EVENT are silent.",
          "type": "string"
        },
        "membershipGiftingDetails": {
          "$ref": "LiveChatMembershipGiftingDetails",
          "description": "Details about the Membership Gifting event, this is only set if the type is 'membershipGiftingEvent'."
        },
        "publishedAt": {
          "format": "date-time",
          "description": "The date and time when the message was orignally published.",
          "type": "string"
        },
        "fanFundingEventDetails": {
          "description": "Details about the funding event, this is only set if the type is 'fanFundingEvent'.",
          "$ref": "LiveChatFanFundingEventDetails",
          "deprecated": true
        },
        "messageDeletedDetails": {
          "$ref": "LiveChatMessageDeletedDetails",
          "deprecated": true
        },
        "giftMembershipReceivedDetails": {
          "$ref": "LiveChatGiftMembershipReceivedDetails",
          "description": "Details about the Gift Membership Received event, this is only set if the type is 'giftMembershipReceivedEvent'."
        },
        "superChatDetails": {
          "$ref": "LiveChatSuperChatDetails",
          "description": "Details about the Super Chat event, this is only set if the type is 'superChatEvent'."
        },
        "giftDetails": {
          "$ref": "LiveChatGiftDetails",
          "description": "Details about the gift event, this is only set if the type is 'giftEvent'."
        }
      },
      "id": "LiveChatMessageSnippet",
      "type": "object",
      "description": "Next ID: 35"
    },
    "VideoStatus": {
      "description": "Basic details about a video category, such as its localized title. Next Id: 20",
      "id": "VideoStatus",
      "type": "object",
      "properties": {
        "embeddable": {
          "type": "boolean",
          "description": "This value indicates if the video can be embedded on another website. @mutable youtube.videos.insert youtube.videos.update"
        },
        "uploadStatus": {
          "enumDescriptions": [
            "Video has been uploaded but not processed yet.",
            "Video has been successfully processed.",
            "Processing has failed. See FailureReason.",
            "Video has been rejected. See RejectionReason.",
            "Video has been deleted."
          ],
          "type": "string",
          "enum": [
            "uploaded",
            "processed",
            "failed",
            "rejected",
            "deleted"
          ],
          "description": "The status of the uploaded video."
        },
        "containsSyntheticMedia": {
          "type": "boolean",
          "description": "Indicates if the video contains altered or synthetic media."
        },
        "publicStatsViewable": {
          "description": "This value indicates if the extended video statistics on the watch page can be viewed by everyone. Note that the view count, likes, etc will still be visible if this is disabled. @mutable youtube.videos.insert youtube.videos.update",
          "type": "boolean"
        },
        "privacyStatus": {
          "enumDescriptions": [
            "",
            "",
            ""
          ],
          "description": "The video's privacy status.",
          "type": "string",
          "enum": [
            "public",
            "unlisted",
            "private"
          ]
        },
        "selfDeclaredMadeForKids": {
          "type": "boolean"
        },
        "publishAt": {
          "description": "The date and time when the video is scheduled to publish. It can be set only if the privacy status of the video is private..",
          "type": "string",
          "format": "date-time"
        },
        "rejectionReason": {
          "enumDescriptions": [
            "Copyright infringement.",
            "Inappropriate video content.",
            "Duplicate upload in the same channel.",
            "Terms of use violation.",
            "Uploader account was suspended.",
            "Video duration was too long.",
            "Blocked by content owner.",
            "Uploader closed his/her account.",
            "Trademark infringement.",
            "An unspecified legal reason."
          ],
          "description": "This value explains why YouTube rejected an uploaded video. This property is only present if the uploadStatus property indicates that the upload was rejected.",
          "type": "string",
          "enum": [
            "copyright",
            "inappropriate",
            "duplicate",
            "termsOfUse",
            "uploaderAccountSuspended",
            "length",
            "claim",
            "uploaderAccountClosed",
            "trademark",
            "legal"
          ]
        },
        "madeForKids": {
          "type": "boolean"
        },
        "failureReason": {
          "description": "This value explains why a video failed to upload. This property is only present if the uploadStatus property indicates that the upload failed.",
          "enumDescriptions": [
            "Unable to convert video content.",
            "Invalid file format.",
            "Empty file.",
            "File was too small.",
            "Unsupported codec.",
            "Upload wasn't finished."
          ],
          "type": "string",
          "enum": [
            "conversion",
            "invalidFile",
            "emptyFile",
            "tooSmall",
            "codec",
            "uploadAborted"
          ]
        },
        "license": {
          "enumDescriptions": [
            "Standard YouTube license.",
            "Creative Commons license."
          ],
          "type": "string",
          "enum": [
            "youtube",
            "creativeCommon"
          ],
          "description": "The video's license. @mutable youtube.videos.insert youtube.videos.update"
        }
      }
    },
    "ActivityListResponse": {
      "id": "ActivityListResponse",
      "type": "object",
      "properties": {
        "items": {
          "items": {
            "$ref": "Activity"
          },
          "type": "array"
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "kind": {
          "default": "youtube#activityListResponse",
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#activityListResponse\"."
        },
        "pageInfo": {
          "$ref": "PageInfo",
          "description": "General pagination information."
        },
        "prevPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.",
          "type": "string"
        },
        "visitorId": {
          "description": "The visitorId identifies the visitor.",
          "type": "string",
          "deprecated": true
        },
        "eventId": {
          "deprecated": true,
          "type": "string",
          "description": "Serialized EventId of the request which produced this response."
        },
        "nextPageToken": {
          "type": "string",
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set."
        },
        "tokenPagination": {
          "deprecated": true,
          "$ref": "TokenPagination"
        }
      }
    },
    "PlaylistItem": {
      "type": "object",
      "id": "PlaylistItem",
      "description": "A *playlistItem* resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist. YouTube uses playlists to identify special collections of videos for a channel, such as: - uploaded videos - favorite videos - positively rated (liked) videos - watch history - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel.",
      "properties": {
        "status": {
          "$ref": "PlaylistItemStatus",
          "description": "The status object contains information about the playlist item's privacy status."
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "snippet": {
          "description": "The snippet object contains basic details about the playlist item, such as its title and position in the playlist.",
          "$ref": "PlaylistItemSnippet"
        },
        "id": {
          "description": "The ID that YouTube uses to uniquely identify the playlist item.",
          "type": "string"
        },
        "kind": {
          "type": "string",
          "default": "youtube#playlistItem",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#playlistItem\"."
        },
        "contentDetails": {
          "$ref": "PlaylistItemContentDetails",
          "description": "The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video."
        }
      }
    },
    "PlaylistStatus": {
      "id": "PlaylistStatus",
      "type": "object",
      "properties": {
        "privacyStatus": {
          "enumDescriptions": [
            "",
            "",
            ""
          ],
          "type": "string",
          "enum": [
            "public",
            "unlisted",
            "private"
          ],
          "description": "The playlist's privacy status."
        },
        "podcastStatus": {
          "enumDescriptions": [
            "",
            ""
          ],
          "description": "The playlist's podcast status.",
          "type": "string",
          "enum": [
            "enabled",
            "disabled"
          ]
        }
      }
    },
    "Thumbnail": {
      "id": "Thumbnail",
      "properties": {
        "url": {
          "description": "The thumbnail image's URL.",
          "type": "string"
        },
        "width": {
          "type": "integer",
          "format": "uint32",
          "description": "(Optional) Width of the thumbnail image."
        },
        "height": {
          "type": "integer",
          "format": "uint32",
          "description": "(Optional) Height of the thumbnail image."
        }
      },
      "description": "A thumbnail is an image representing a YouTube resource.",
      "type": "object"
    },
    "LiveChatBan": {
      "type": "object",
      "properties": {
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "snippet": {
          "description": "The `snippet` object contains basic details about the ban.",
          "$ref": "LiveChatBanSnippet"
        },
        "kind": {
          "default": "youtube#liveChatBan",
          "description": "Identifies what kind of resource this is. Value: the fixed string `\"youtube#liveChatBan\"`.",
          "type": "string"
        },
        "id": {
          "type": "string",
          "description": "The ID that YouTube assigns to uniquely identify the ban."
        }
      },
      "description": "A `__liveChatBan__` resource represents a ban for a YouTube live chat.",
      "id": "LiveChatBan"
    },
    "LiveChatUserBannedMessageDetails": {
      "id": "LiveChatUserBannedMessageDetails",
      "type": "object",
      "properties": {
        "bannedUserDetails": {
          "description": "The details of the user that was banned.",
          "$ref": "ChannelProfileDetails"
        },
        "banType": {
          "type": "string",
          "enum": [
            "permanent",
            "temporary"
          ],
          "description": "The type of ban.",
          "enumDescriptions": [
            "",
            ""
          ]
        },
        "banDurationSeconds": {
          "description": "The duration of the ban. This property is only present if the banType is temporary.",
          "format": "uint64",
          "type": "string"
        }
      }
    },
    "ActivityContentDetailsComment": {
      "description": "Information about a resource that received a comment.",
      "properties": {
        "resourceId": {
          "description": "The `resourceId` object contains information that identifies the resource associated with the comment.",
          "$ref": "ResourceId"
        }
      },
      "id": "ActivityContentDetailsComment",
      "type": "object"
    },
    "LiveChatMessageAuthorDetails": {
      "id": "LiveChatMessageAuthorDetails",
      "properties": {
        "profileImageUrl": {
          "description": "The channels's avatar URL.",
          "type": "string"
        },
        "isChatSponsor": {
          "description": "Whether the author is a sponsor of the live chat.",
          "type": "boolean"
        },
        "displayName": {
          "type": "string",
          "description": "The channel's display name."
        },
        "isChatModerator": {
          "description": "Whether the author is a moderator of the live chat.",
          "type": "boolean"
        },
        "isChatOwner": {
          "description": "Whether the author is the owner of the live chat.",
          "type": "boolean"
        },
        "channelUrl": {
          "type": "string",
          "description": "The channel's URL."
        },
        "channelId": {
          "type": "string",
          "description": "The YouTube channel ID."
        },
        "isVerified": {
          "type": "boolean",
          "description": "Whether the author's identity has been verified by YouTube."
        }
      },
      "type": "object"
    },
    "ActivityContentDetailsPromotedItem": {
      "type": "object",
      "description": "Details about a resource which is being promoted.",
      "properties": {
        "ctaType": {
          "description": "The type of call-to-action, a message to the user indicating action that can be taken.",
          "type": "string",
          "enum": [
            "ctaTypeUnspecified",
            "visitAdvertiserSite"
          ],
          "enumDescriptions": [
            "",
            ""
          ]
        },
        "descriptionText": {
          "type": "string",
          "description": "The text description to accompany the promoted item."
        },
        "clickTrackingUrl": {
          "type": "string",
          "description": "The URL the client should ping to indicate that the user clicked through on this promoted item."
        },
        "customCtaButtonText": {
          "type": "string",
          "description": "The custom call-to-action button text. If specified, it will override the default button text for the cta_type."
        },
        "destinationUrl": {
          "description": "The URL the client should direct the user to, if the user chooses to visit the advertiser's website.",
          "type": "string"
        },
        "forecastingUrl": {
          "type": "array",
          "description": "The list of forecasting URLs. The client should ping all of these URLs when a promoted item is not available, to indicate that a promoted item could have been shown.",
          "items": {
            "type": "string"
          }
        },
        "adTag": {
          "description": "The URL the client should fetch to request a promoted item.",
          "type": "string"
        },
        "impressionUrl": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of impression URLs. The client should ping all of these URLs to indicate that the user was shown this promoted item."
        },
        "creativeViewUrl": {
          "type": "string",
          "description": "The URL the client should ping to indicate that the user was shown this promoted item."
        },
        "videoId": {
          "description": "The ID that YouTube uses to uniquely identify the promoted video.",
          "type": "string"
        }
      },
      "id": "ActivityContentDetailsPromotedItem"
    },
    "VideoGetRatingResponse": {
      "id": "VideoGetRatingResponse",
      "type": "object",
      "properties": {
        "items": {
          "items": {
            "$ref": "VideoRating"
          },
          "description": "A list of ratings that match the request criteria.",
          "type": "array"
        },
        "kind": {
          "type": "string",
          "default": "youtube#videoGetRatingResponse",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#videoGetRatingResponse\"."
        },
        "visitorId": {
          "deprecated": true,
          "description": "The visitorId identifies the visitor.",
          "type": "string"
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "eventId": {
          "deprecated": true,
          "type": "string",
          "description": "Serialized EventId of the request which produced this response."
        }
      }
    },
    "I18nLanguageListResponse": {
      "type": "object",
      "id": "I18nLanguageListResponse",
      "properties": {
        "items": {
          "items": {
            "$ref": "I18nLanguage"
          },
          "description": "A list of supported i18n languages. In this map, the i18n language ID is the map key, and its value is the corresponding i18nLanguage resource.",
          "type": "array"
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "visitorId": {
          "description": "The visitorId identifies the visitor.",
          "type": "string"
        },
        "eventId": {
          "type": "string",
          "description": "Serialized EventId of the request which produced this response."
        },
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#i18nLanguageListResponse\".",
          "default": "youtube#i18nLanguageListResponse",
          "type": "string"
        }
      }
    },
    "ThirdPartyLinkListResponse": {
      "type": "object",
      "properties": {
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#thirdPartyLinkListResponse\".",
          "default": "youtube#thirdPartyLinkListResponse",
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "ThirdPartyLink"
          }
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        }
      },
      "id": "ThirdPartyLinkListResponse"
    },
    "ChannelConversionPing": {
      "properties": {
        "context": {
          "type": "string",
          "enum": [
            "subscribe",
            "unsubscribe",
            "cview"
          ],
          "enumDescriptions": [
            "",
            "",
            ""
          ],
          "description": "Defines the context of the ping."
        },
        "conversionUrl": {
          "description": "The url (without the schema) that the player shall send the ping to. It's at caller's descretion to decide which schema to use (http vs https) Example of a returned url: //googleads.g.doubleclick.net/pagead/ viewthroughconversion/962985656/?data=path%3DtHe_path%3Btype%3D cview%3Butuid%3DGISQtTNGYqaYl4sKxoVvKA&labe=default The caller must append biscotti authentication (ms param in case of mobile, for example) to this ping.",
          "type": "string"
        }
      },
      "description": "Pings that the app shall fire (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.",
      "id": "ChannelConversionPing",
      "type": "object"
    },
    "PropertyValue": {
      "id": "PropertyValue",
      "type": "object",
      "properties": {
        "value": {
          "description": "The property's value.",
          "type": "string"
        },
        "property": {
          "type": "string",
          "description": "A property."
        }
      },
      "description": "A pair Property / Value."
    },
    "AvailabilityConfig": {
      "type": "object",
      "description": "Common proto for Live and VOD geo-restrictions",
      "id": "AvailabilityConfig",
      "properties": {
        "globalConfig": {
          "description": "Video is available in all regions except the ones specified in the config.",
          "$ref": "AvailabilityConfigGlobalConfig"
        },
        "regionsConfig": {
          "$ref": "AvailabilityConfigRegionsConfig",
          "description": "Video is available in the specified regions only."
        }
      }
    },
    "LiveStreamSnippet": {
      "id": "LiveStreamSnippet",
      "type": "object",
      "properties": {
        "channelId": {
          "description": "The ID that YouTube uses to uniquely identify the channel that is transmitting the stream.",
          "type": "string"
        },
        "isDefaultStream": {
          "type": "boolean"
        },
        "description": {
          "description": "The stream's description. The value cannot be longer than 10000 characters.",
          "type": "string"
        },
        "publishedAt": {
          "format": "date-time",
          "type": "string",
          "description": "The date and time that the stream was created."
        },
        "title": {
          "type": "string",
          "annotations": {
            "required": [
              "youtube.liveStreams.insert",
              "youtube.liveStreams.update"
            ]
          },
          "description": "The stream's title. The value must be between 1 and 128 characters long."
        }
      }
    },
    "CommentThreadListResponse": {
      "id": "CommentThreadListResponse",
      "properties": {
        "nextPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.",
          "type": "string"
        },
        "pageInfo": {
          "description": "General pagination information.",
          "$ref": "PageInfo"
        },
        "kind": {
          "default": "youtube#commentThreadListResponse",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#commentThreadListResponse\".",
          "type": "string"
        },
        "eventId": {
          "deprecated": true,
          "description": "Serialized EventId of the request which produced this response.",
          "type": "string"
        },
        "visitorId": {
          "type": "string",
          "description": "The visitorId identifies the visitor.",
          "deprecated": true
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "tokenPagination": {
          "deprecated": true,
          "$ref": "TokenPagination"
        },
        "items": {
          "items": {
            "$ref": "CommentThread"
          },
          "description": "A list of comment threads that match the request criteria.",
          "type": "array"
        }
      },
      "type": "object"
    },
    "VideoTrainability": {
      "type": "object",
      "id": "VideoTrainability",
      "description": "Specifies who is allowed to train on the video.",
      "properties": {
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "videoId": {
          "type": "string",
          "description": "The ID of the video."
        },
        "permitted": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Specifies who is allowed to train on the video. Valid values are: - a single string \"all\" - a single string \"none\" - a list of allowed parties"
        },
        "kind": {
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#videoTrainability\".",
          "default": "youtube#videoTrainability"
        }
      }
    },
    "LiveBroadcast": {
      "description": "A *liveBroadcast* resource represents an event that will be streamed, via live video, on YouTube.",
      "id": "LiveBroadcast",
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "annotations": {
            "required": [
              "youtube.liveBroadcasts.update"
            ]
          },
          "description": "The ID that YouTube assigns to uniquely identify the broadcast."
        },
        "contentDetails": {
          "description": "The contentDetails object contains information about the event's video content, such as whether the content can be shown in an embedded video player or if it will be archived and therefore available for viewing after the event has concluded.",
          "$ref": "LiveBroadcastContentDetails"
        },
        "statistics": {
          "description": "The statistics object contains info about the event's current stats. These include concurrent viewers and total chat count. Statistics can change (in either direction) during the lifetime of an event. Statistics are only returned while the event is live.",
          "$ref": "LiveBroadcastStatistics"
        },
        "etag": {
          "type": "string",
          "description": "Etag of this resource."
        },
        "status": {
          "description": "The status object contains information about the event's status.",
          "$ref": "LiveBroadcastStatus"
        },
        "monetizationDetails": {
          "$ref": "LiveBroadcastMonetizationDetails",
          "description": "The monetizationDetails object contains information about the event's monetization details."
        },
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#liveBroadcast\".",
          "default": "youtube#liveBroadcast",
          "type": "string"
        },
        "snippet": {
          "description": "The snippet object contains basic details about the event, including its title, description, start time, and end time.",
          "$ref": "LiveBroadcastSnippet"
        }
      }
    },
    "LiveChatModeratorSnippet": {
      "type": "object",
      "properties": {
        "liveChatId": {
          "description": "The ID of the live chat this moderator can act on.",
          "type": "string"
        },
        "moderatorDetails": {
          "description": "Details about the moderator.",
          "$ref": "ChannelProfileDetails"
        }
      },
      "id": "LiveChatModeratorSnippet"
    },
    "ChannelToStoreLinkDetailsMerchantAffiliateProgramDetails": {
      "description": "Information specific to merchant affiliate program.",
      "id": "ChannelToStoreLinkDetailsMerchantAffiliateProgramDetails",
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "merchantAffiliateProgramStatusUnspecified",
            "merchantAffiliateProgramStatusEligible",
            "merchantAffiliateProgramStatusActive",
            "merchantAffiliateProgramStatusPaused"
          ],
          "enumDescriptions": [
            "Unspecified status.",
            "Merchant is eligible for the merchant affiliate program.",
            "Merchant affiliate program is active.",
            "Merchant affiliate program is paused."
          ],
          "description": "The current merchant affiliate program status."
        }
      }
    },
    "VideoRecordingDetails": {
      "properties": {
        "recordingDate": {
          "type": "string",
          "description": "The date and time when the video was recorded.",
          "format": "date-time"
        },
        "location": {
          "description": "The geolocation information associated with the video.",
          "$ref": "GeoPoint"
        },
        "locationDescription": {
          "description": "The text description of the location where the video was recorded.",
          "type": "string"
        }
      },
      "type": "object",
      "description": "Recording information associated with the video.",
      "id": "VideoRecordingDetails"
    },
    "LiveStreamContentDetails": {
      "description": "Detailed settings of a stream.",
      "type": "object",
      "properties": {
        "isReusable": {
          "type": "boolean",
          "description": "Indicates whether the stream is reusable, which means that it can be bound to multiple broadcasts. It is common for broadcasters to reuse the same stream for many different broadcasts if those broadcasts occur at different times. If you set this value to false, then the stream will not be reusable, which means that it can only be bound to one broadcast. Non-reusable streams differ from reusable streams in the following ways: - A non-reusable stream can only be bound to one broadcast. - A non-reusable stream might be deleted by an automated process after the broadcast ends. - The liveStreams.list method does not list non-reusable streams if you call the method and set the mine parameter to true. The only way to use that method to retrieve the resource for a non-reusable stream is to use the id parameter to identify the stream. "
        },
        "closedCaptionsIngestionUrl": {
          "description": "The ingestion URL where the closed captions of this stream are sent.",
          "type": "string"
        }
      },
      "id": "LiveStreamContentDetails"
    },
    "Caption": {
      "type": "object",
      "properties": {
        "etag": {
          "type": "string",
          "description": "Etag of this resource."
        },
        "id": {
          "annotations": {
            "required": [
              "youtube.captions.update"
            ]
          },
          "type": "string",
          "description": "The ID that YouTube uses to uniquely identify the caption track."
        },
        "snippet": {
          "$ref": "CaptionSnippet",
          "description": "The snippet object contains basic details about the caption."
        },
        "kind": {
          "default": "youtube#caption",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#caption\".",
          "type": "string"
        }
      },
      "id": "Caption",
      "description": "A *caption* resource represents a YouTube caption track. A caption track is associated with exactly one YouTube video."
    },
    "VideoAbuseReport": {
      "properties": {
        "videoId": {
          "description": "The ID that YouTube uses to uniquely identify the video.",
          "type": "string"
        },
        "comments": {
          "type": "string",
          "description": "Additional comments regarding the abuse report."
        },
        "secondaryReasonId": {
          "description": "The specific, or secondary, reason that this content is abusive (if available). The value is an abuse report reason ID that is a valid secondary reason for the primary reason.",
          "type": "string"
        },
        "reasonId": {
          "type": "string",
          "description": "The high-level, or primary, reason that the content is abusive. The value is an abuse report reason ID."
        },
        "language": {
          "type": "string",
          "description": "The language that the content was viewed in."
        }
      },
      "id": "VideoAbuseReport",
      "type": "object"
    },
    "PlaylistItemContentDetails": {
      "id": "PlaylistItemContentDetails",
      "properties": {
        "endAt": {
          "description": "The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.",
          "type": "string",
          "deprecated": true
        },
        "videoPublishedAt": {
          "format": "date-time",
          "description": "The date and time that the video was published to YouTube.",
          "type": "string"
        },
        "note": {
          "description": "A user-generated note for this item.",
          "type": "string"
        },
        "videoId": {
          "description": "The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.",
          "type": "string"
        },
        "startAt": {
          "deprecated": true,
          "description": "The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "ActivityContentDetailsChannelItem": {
      "properties": {
        "resourceId": {
          "description": "The `resourceId` object contains information that identifies the resource that was added to the channel.",
          "$ref": "ResourceId"
        }
      },
      "type": "object",
      "id": "ActivityContentDetailsChannelItem",
      "description": "Details about a resource which was added to a channel."
    },
    "LiveBroadcastStatistics": {
      "properties": {
        "concurrentViewers": {
          "format": "uint64",
          "description": "The number of viewers currently watching the broadcast. The property and its value will be present if the broadcast has current viewers and the broadcast owner has not hidden the viewcount for the video. Note that YouTube stops tracking the number of concurrent viewers for a broadcast when the broadcast ends. So, this property would not identify the number of viewers watching an archived video of a live broadcast that already ended.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "LiveBroadcastStatistics",
      "description": "Statistics about the live broadcast. These represent a snapshot of the values at the time of the request. Statistics are only returned for live broadcasts."
    },
    "ActivityContentDetailsBulletin": {
      "type": "object",
      "id": "ActivityContentDetailsBulletin",
      "description": "Details about a channel bulletin post.",
      "properties": {
        "resourceId": {
          "$ref": "ResourceId",
          "description": "The `resourceId` object contains information that identifies the resource associated with a bulletin post. @mutable youtube.activities.insert"
        }
      }
    },
    "VideoContentDetails": {
      "id": "VideoContentDetails",
      "description": "Details about the content of a YouTube Video.",
      "type": "object",
      "properties": {
        "countryRestriction": {
          "description": "The countryRestriction object contains information about the countries where a video is (or is not) viewable.",
          "$ref": "AccessPolicy"
        },
        "regionRestriction": {
          "$ref": "VideoContentDetailsRegionRestriction",
          "deprecated": true,
          "description": "The regionRestriction object contains information about the countries where a video is (or is not) viewable. The object will contain either the contentDetails.regionRestriction.allowed property or the contentDetails.regionRestriction.blocked property."
        },
        "licensedContent": {
          "description": "The value of is_license_content indicates whether the video is licensed content.",
          "type": "boolean"
        },
        "caption": {
          "type": "string",
          "enum": [
            "true",
            "false"
          ],
          "enumDescriptions": [
            "",
            ""
          ],
          "description": "The value of captions indicates whether the video has captions or not."
        },
        "contentRating": {
          "description": "Specifies the ratings that the video received under various rating schemes.",
          "$ref": "ContentRating"
        },
        "dimension": {
          "description": "The value of dimension indicates whether the video is available in 3D or in 2D.",
          "type": "string"
        },
        "hasCustomThumbnail": {
          "type": "boolean",
          "description": "Indicates whether the video uploader has provided a custom thumbnail image for the video. This property is only visible to the video uploader."
        },
        "duration": {
          "type": "string",
          "description": "The length of the video. The tag value is an ISO 8601 duration in the format PT#M#S, in which the letters PT indicate that the value specifies a period of time, and the letters M and S refer to length in minutes and seconds, respectively. The # characters preceding the M and S letters are both integers that specify the number of minutes (or seconds) of the video. For example, a value of PT15M51S indicates that the video is 15 minutes and 51 seconds long."
        },
        "projection": {
          "type": "string",
          "enum": [
            "rectangular",
            "360"
          ],
          "description": "Specifies the projection format of the video.",
          "enumDescriptions": [
            "",
            ""
          ]
        },
        "definition": {
          "type": "string",
          "enum": [
            "sd",
            "hd"
          ],
          "description": "The value of definition indicates whether the video is available in high definition or only in standard definition.",
          "enumDescriptions": [
            "sd",
            "hd"
          ]
        }
      }
    },
    "LiveChatModeratorListResponse": {
      "id": "LiveChatModeratorListResponse",
      "properties": {
        "items": {
          "type": "array",
          "description": "A list of moderators that match the request criteria.",
          "items": {
            "$ref": "LiveChatModerator"
          }
        },
        "kind": {
          "type": "string",
          "default": "youtube#liveChatModeratorListResponse",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#liveChatModeratorListResponse\"."
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "nextPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.",
          "type": "string"
        },
        "eventId": {
          "type": "string",
          "description": "Serialized EventId of the request which produced this response.",
          "deprecated": true
        },
        "pageInfo": {
          "$ref": "PageInfo",
          "description": "General pagination information."
        },
        "tokenPagination": {
          "deprecated": true,
          "$ref": "TokenPagination"
        },
        "visitorId": {
          "type": "string",
          "deprecated": true,
          "description": "The visitorId identifies the visitor."
        },
        "prevPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "VideoLocalization": {
      "description": "Localized versions of certain video properties (e.g. title).",
      "id": "VideoLocalization",
      "properties": {
        "title": {
          "description": "Localized version of the video's title.",
          "type": "string"
        },
        "description": {
          "type": "string",
          "description": "Localized version of the video's description."
        }
      },
      "type": "object"
    },
    "LiveBroadcastStatus": {
      "id": "LiveBroadcastStatus",
      "description": "Live broadcast state.",
      "properties": {
        "madeForKids": {
          "description": "Whether the broadcast is made for kids or not, decided by YouTube instead of the creator. This field is read only.",
          "type": "boolean"
        },
        "liveBroadcastPriority": {
          "type": "string",
          "enum": [
            "liveBroadcastPriorityUnspecified",
            "low",
            "normal",
            "high"
          ],
          "description": "Priority of the live broadcast event (internal state).",
          "enumDescriptions": [
            "",
            "Low priority broadcast: for low view count HoAs or other low priority broadcasts.",
            "Normal priority broadcast: for regular HoAs and broadcasts.",
            "High priority broadcast: for high profile HoAs, like PixelCorp ones."
          ]
        },
        "lifeCycleStatus": {
          "type": "string",
          "enum": [
            "lifeCycleStatusUnspecified",
            "created",
            "ready",
            "testing",
            "live",
            "complete",
            "revoked",
            "testStarting",
            "liveStarting"
          ],
          "description": "The broadcast's status. The status can be updated using the API's liveBroadcasts.transition method.",
          "enumDescriptions": [
            "No value or the value is unknown.",
            "Incomplete settings, but otherwise valid",
            "Complete settings",
            "Visible only to partner, may need special UI treatment",
            "Viper is recording; this means the \"clock\" is running",
            "The broadcast is finished.",
            "This broadcast was removed by admin action",
            "Transition into TESTING has been requested",
            "Transition into LIVE has been requested"
          ]
        },
        "selfDeclaredMadeForKids": {
          "type": "boolean",
          "description": "This field will be set to True if the creator declares the broadcast to be kids only: go/live-cw-work."
        },
        "recordingStatus": {
          "type": "string",
          "enum": [
            "liveBroadcastRecordingStatusUnspecified",
            "notRecording",
            "recording",
            "recorded"
          ],
          "enumDescriptions": [
            "No value or the value is unknown.",
            "The recording has not yet been started.",
            "The recording is currently on.",
            "The recording is completed, and cannot be started again."
          ],
          "description": "The broadcast's recording status."
        },
        "privacyStatus": {
          "enumDescriptions": [
            "",
            "",
            ""
          ],
          "annotations": {
            "required": [
              "youtube.liveBroadcasts.insert",
              "youtube.liveBroadcasts.update"
            ]
          },
          "enum": [
            "public",
            "unlisted",
            "private"
          ],
          "type": "string",
          "description": "The broadcast's privacy status. Note that the broadcast represents exactly one YouTube video, so the privacy settings are identical to those supported for videos. In addition, you can set this field by modifying the broadcast resource or by setting the privacyStatus field of the corresponding video resource."
        }
      },
      "type": "object"
    },
    "LiveChatFanFundingEventDetails": {
      "type": "object",
      "id": "LiveChatFanFundingEventDetails",
      "properties": {
        "currency": {
          "type": "string",
          "description": "The currency in which the fund was made."
        },
        "amountMicros": {
          "type": "string",
          "description": "The amount of the fund.",
          "format": "uint64"
        },
        "amountDisplayString": {
          "description": "A rendered string that displays the fund amount and currency to the user.",
          "type": "string"
        },
        "userComment": {
          "description": "The comment added by the user to this fan funding event.",
          "type": "string"
        }
      }
    },
    "PlaylistImageListResponse": {
      "type": "object",
      "id": "PlaylistImageListResponse",
      "properties": {
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#playlistImageListResponse\".",
          "type": "string",
          "default": "youtube#playlistImageListResponse"
        },
        "nextPageToken": {
          "type": "string",
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set."
        },
        "pageInfo": {
          "description": "General pagination information.",
          "$ref": "PageInfo"
        },
        "prevPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.",
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "PlaylistImage"
          }
        }
      }
    },
    "VideoProcessingDetails": {
      "id": "VideoProcessingDetails",
      "type": "object",
      "properties": {
        "processingStatus": {
          "type": "string",
          "enum": [
            "processing",
            "succeeded",
            "failed",
            "terminated"
          ],
          "enumDescriptions": [
            "",
            "",
            "",
            ""
          ],
          "description": "The video's processing status. This value indicates whether YouTube was able to process the video or if the video is still being processed."
        },
        "processingProgress": {
          "description": "The processingProgress object contains information about the progress YouTube has made in processing the video. The values are really only relevant if the video's processing status is processing.",
          "$ref": "VideoProcessingDetailsProcessingProgress"
        },
        "processingFailureReason": {
          "type": "string",
          "enum": [
            "uploadFailed",
            "transcodeFailed",
            "streamingFailed",
            "other"
          ],
          "enumDescriptions": [
            "",
            "",
            "",
            ""
          ],
          "description": "The reason that YouTube failed to process the video. This property will only have a value if the processingStatus property's value is failed."
        },
        "editorSuggestionsAvailability": {
          "type": "string",
          "description": "This value indicates whether video editing suggestions, which might improve video quality or the playback experience, are available for the video. You can retrieve these suggestions by requesting the suggestions part in your videos.list() request."
        },
        "processingIssuesAvailability": {
          "type": "string",
          "description": "This value indicates whether the video processing engine has generated suggestions that might improve YouTube's ability to process the the video, warnings that explain video processing problems, or errors that cause video processing problems. You can retrieve these suggestions by requesting the suggestions part in your videos.list() request."
        },
        "thumbnailsAvailability": {
          "description": "This value indicates whether thumbnail images have been generated for the video.",
          "type": "string"
        },
        "fileDetailsAvailability": {
          "description": "This value indicates whether file details are available for the uploaded video. You can retrieve a video's file details by requesting the fileDetails part in your videos.list() request.",
          "type": "string"
        },
        "tagSuggestionsAvailability": {
          "type": "string",
          "description": "This value indicates whether keyword (tag) suggestions are available for the video. Tags can be added to a video's metadata to make it easier for other users to find the video. You can retrieve these suggestions by requesting the suggestions part in your videos.list() request."
        }
      },
      "description": "Describes processing status and progress and availability of some other Video resource parts."
    },
    "AccessPolicy": {
      "properties": {
        "allowed": {
          "description": "The value of allowed indicates whether the access to the policy is allowed or denied by default.",
          "type": "boolean"
        },
        "exception": {
          "items": {
            "type": "string"
          },
          "description": "A list of region codes that identify countries where the default policy do not apply.",
          "type": "array"
        }
      },
      "description": "Rights management policy for YouTube resources.",
      "type": "object",
      "id": "AccessPolicy"
    },
    "PlaylistPlayer": {
      "properties": {
        "embedHtml": {
          "description": "An \u003ciframe\u003e tag that embeds a player that will play the playlist.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "PlaylistPlayer"
    },
    "CommentThreadReplies": {
      "description": "Comments written in (direct or indirect) reply to the top level comment.",
      "type": "object",
      "id": "CommentThreadReplies",
      "properties": {
        "comments": {
          "type": "array",
          "description": "A limited number of replies. Unless the number of replies returned equals total_reply_count in the snippet the returned replies are only a subset of the total number of replies.",
          "items": {
            "$ref": "Comment"
          }
        }
      }
    },
    "ChannelProfileDetails": {
      "properties": {
        "channelUrl": {
          "description": "The channel's URL.",
          "type": "string"
        },
        "profileImageUrl": {
          "type": "string",
          "description": "The channels's avatar URL."
        },
        "channelId": {
          "type": "string",
          "description": "The YouTube channel ID."
        },
        "displayName": {
          "type": "string",
          "description": "The channel's display name."
        }
      },
      "type": "object",
      "id": "ChannelProfileDetails"
    },
    "VideoCategoryListResponse": {
      "id": "VideoCategoryListResponse",
      "properties": {
        "pageInfo": {
          "$ref": "PageInfo",
          "description": "General pagination information."
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "prevPageToken": {
          "type": "string",
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set."
        },
        "items": {
          "description": "A list of video categories that can be associated with YouTube videos. In this map, the video category ID is the map key, and its value is the corresponding videoCategory resource.",
          "items": {
            "$ref": "VideoCategory"
          },
          "type": "array"
        },
        "nextPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.",
          "type": "string"
        },
        "kind": {
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#videoCategoryListResponse\".",
          "default": "youtube#videoCategoryListResponse"
        },
        "eventId": {
          "description": "Serialized EventId of the request which produced this response.",
          "deprecated": true,
          "type": "string"
        },
        "tokenPagination": {
          "deprecated": true,
          "$ref": "TokenPagination"
        },
        "visitorId": {
          "deprecated": true,
          "type": "string",
          "description": "The visitorId identifies the visitor."
        }
      },
      "type": "object"
    },
    "InvideoPosition": {
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "corner"
          ],
          "enumDescriptions": [
            ""
          ],
          "description": "Defines the position type."
        },
        "cornerPosition": {
          "description": "Describes in which corner of the video the visual widget will appear.",
          "enum": [
            "topLeft",
            "topRight",
            "bottomLeft",
            "bottomRight"
          ],
          "enumDeprecated": [
            true,
            false,
            true,
            true
          ],
          "enumDescriptions": [
            "",
            "",
            "",
            ""
          ],
          "type": "string"
        }
      },
      "description": "Describes the spatial position of a visual widget inside a video. It is a union of various position types, out of which only will be set one.",
      "id": "InvideoPosition",
      "type": "object"
    },
    "ActivityContentDetails": {
      "id": "ActivityContentDetails",
      "description": "Details about the content of an activity: the video that was shared, the channel that was subscribed to, etc.",
      "type": "object",
      "properties": {
        "upload": {
          "description": "The `upload` object contains information about the uploaded video. This property is only present if the `snippet.type` is `upload`.",
          "$ref": "ActivityContentDetailsUpload"
        },
        "social": {
          "description": "The `social` object contains details about a social network post. This property is only present if the `snippet.type` is `social`.",
          "$ref": "ActivityContentDetailsSocial"
        },
        "subscription": {
          "description": "The `subscription` object contains information about a channel that a user subscribed to. This property is only present if the `snippet.type` is `subscription`.",
          "$ref": "ActivityContentDetailsSubscription"
        },
        "channelItem": {
          "description": "The `channelItem` object contains details about a resource which was added to a channel. This property is only present if the `snippet.type` is `channelItem`.",
          "$ref": "ActivityContentDetailsChannelItem"
        },
        "recommendation": {
          "$ref": "ActivityContentDetailsRecommendation",
          "description": "The `recommendation` object contains information about a recommended resource. This property is only present if the `snippet.type` is `recommendation`."
        },
        "comment": {
          "description": "The `comment` object contains information about a resource that received a comment. This property is only present if the `snippet.type` is `comment`.",
          "$ref": "ActivityContentDetailsComment"
        },
        "bulletin": {
          "$ref": "ActivityContentDetailsBulletin",
          "description": "The `bulletin` object contains details about a channel bulletin post. This object is only present if the `snippet.type` is `bulletin`."
        },
        "playlistItem": {
          "$ref": "ActivityContentDetailsPlaylistItem",
          "description": "The `playlistItem` object contains information about a new playlist item. This property is only present if the `snippet.type` is `playlistItem`."
        },
        "promotedItem": {
          "description": "The `promotedItem` object contains details about a resource which is being promoted. This property is only present if the `snippet.type` is `promotedItem`.",
          "$ref": "ActivityContentDetailsPromotedItem"
        }
      }
    },
    "VideoProjectDetails": {
      "description": "DEPRECATED. b/157517979: This part was never populated after it was added. However, it sees non-zero traffic because there is generated client code in the wild that refers to it [1]. We keep this field and do NOT remove it because otherwise V3 would return an error when this part gets requested [2]. [1] https://developers.google.com/resources/api-libraries/documentation/youtube/v3/csharp/latest/classGoogle_1_1Apis_1_1YouTube_1_1v3_1_1Data_1_1VideoProjectDetails.html [2] http://google3/video/youtube/src/python/servers/data_api/common.py?l=1565-1569&rcl=344141677",
      "id": "VideoProjectDetails",
      "type": "object",
      "properties": {}
    },
    "ActivityContentDetailsUpload": {
      "description": "Information about the uploaded video.",
      "type": "object",
      "properties": {
        "videoId": {
          "description": "The ID that YouTube uses to uniquely identify the uploaded video.",
          "type": "string"
        }
      },
      "id": "ActivityContentDetailsUpload"
    },
    "PlaylistLocalization": {
      "id": "PlaylistLocalization",
      "description": "Playlist localization setting",
      "properties": {
        "description": {
          "type": "string",
          "description": "The localized strings for playlist's description."
        },
        "title": {
          "type": "string",
          "description": "The localized strings for playlist's title."
        }
      },
      "type": "object"
    },
    "LiveChatSuperChatDetails": {
      "type": "object",
      "id": "LiveChatSuperChatDetails",
      "properties": {
        "amountDisplayString": {
          "description": "A rendered string that displays the fund amount and currency to the user.",
          "type": "string"
        },
        "userComment": {
          "type": "string",
          "description": "The comment added by the user to this Super Chat event."
        },
        "currency": {
          "description": "The currency in which the purchase was made.",
          "type": "string"
        },
        "tier": {
          "format": "uint32",
          "description": "The tier in which the amount belongs. Lower amounts belong to lower tiers. The lowest tier is 1.",
          "type": "integer"
        },
        "amountMicros": {
          "format": "uint64",
          "description": "The amount purchased by the user, in micros (1,750,000 micros = 1.75).",
          "type": "string"
        }
      }
    },
    "PageInfo": {
      "id": "PageInfo",
      "description": "Paging details for lists of resources, including total number of items available and number of resources returned in a single page.",
      "type": "object",
      "properties": {
        "totalResults": {
          "type": "integer",
          "description": "The total number of results in the result set.",
          "format": "int32"
        },
        "resultsPerPage": {
          "description": "The number of results included in the API response.",
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "LevelDetails": {
      "id": "LevelDetails",
      "type": "object",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The name that should be used when referring to this level."
        }
      }
    },
    "PlaylistSnippet": {
      "properties": {
        "title": {
          "description": "The playlist's title.",
          "annotations": {
            "required": [
              "youtube.playlists.insert",
              "youtube.playlists.update"
            ]
          },
          "type": "string"
        },
        "channelTitle": {
          "type": "string",
          "description": "The channel title of the channel that the video belongs to."
        },
        "tags": {
          "deprecated": true,
          "description": "Keyword tags associated with the playlist.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "publishedAt": {
          "description": "The date and time that the playlist was created.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "type": "string",
          "description": "The playlist's description."
        },
        "defaultLanguage": {
          "type": "string",
          "description": "The language of the playlist's default title and description."
        },
        "localized": {
          "description": "Localized title and description, read-only.",
          "$ref": "PlaylistLocalization"
        },
        "thumbnails": {
          "description": "A map of thumbnail images associated with the playlist. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.",
          "$ref": "ThumbnailDetails"
        },
        "channelId": {
          "type": "string",
          "description": "The ID that YouTube uses to uniquely identify the channel that published the playlist."
        },
        "thumbnailVideoId": {
          "description": "Note: if the playlist has a custom thumbnail, this field will not be populated. The video id selected by the user that will be used as the thumbnail of this playlist. This field defaults to the first publicly viewable video in the playlist, if: 1. The user has never selected a video to be the thumbnail of the playlist. 2. The user selects a video to be the thumbnail, and then removes that video from the playlist. 3. The user selects a non-owned video to be the thumbnail, but that video becomes private, or gets deleted.",
          "type": "string"
        }
      },
      "type": "object",
      "description": "Basic details about a playlist, including title, description and thumbnails.",
      "id": "PlaylistSnippet"
    },
    "TokenPagination": {
      "id": "TokenPagination",
      "properties": {},
      "description": "Stub token pagination template to suppress results.",
      "type": "object"
    },
    "LiveBroadcastListResponse": {
      "id": "LiveBroadcastListResponse",
      "type": "object",
      "properties": {
        "tokenPagination": {
          "deprecated": true,
          "$ref": "TokenPagination"
        },
        "etag": {
          "type": "string",
          "description": "Etag of this resource."
        },
        "kind": {
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#liveBroadcastListResponse\".",
          "default": "youtube#liveBroadcastListResponse"
        },
        "visitorId": {
          "type": "string",
          "description": "The visitorId identifies the visitor.",
          "deprecated": true
        },
        "pageInfo": {
          "description": "General pagination information.",
          "$ref": "PageInfo"
        },
        "items": {
          "description": "A list of broadcasts that match the request criteria.",
          "type": "array",
          "items": {
            "$ref": "LiveBroadcast"
          }
        },
        "eventId": {
          "deprecated": true,
          "type": "string",
          "description": "Serialized EventId of the request which produced this response."
        },
        "nextPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.",
          "type": "string"
        },
        "prevPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.",
          "type": "string"
        }
      }
    },
    "ChannelSectionContentDetails": {
      "type": "object",
      "description": "Details about a channelsection, including playlists and channels.",
      "properties": {
        "playlists": {
          "description": "The playlist ids for type single_playlist and multiple_playlists. For singlePlaylist, only one playlistId is allowed.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "channels": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "The channel ids for type multiple_channels."
        }
      },
      "id": "ChannelSectionContentDetails"
    },
    "ActivityContentDetailsPlaylistItem": {
      "properties": {
        "playlistId": {
          "description": "The value that YouTube uses to uniquely identify the playlist.",
          "type": "string"
        },
        "resourceId": {
          "description": "The `resourceId` object contains information about the resource that was added to the playlist.",
          "$ref": "ResourceId"
        },
        "playlistItemId": {
          "description": "ID of the item within the playlist.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "ActivityContentDetailsPlaylistItem",
      "description": "Information about a new playlist item."
    },
    "VideoFileDetailsAudioStream": {
      "properties": {
        "channelCount": {
          "type": "integer",
          "description": "The number of audio channels that the stream contains.",
          "format": "uint32"
        },
        "codec": {
          "description": "The audio codec that the stream uses.",
          "type": "string"
        },
        "vendor": {
          "description": "A value that uniquely identifies a video vendor. Typically, the value is a four-letter vendor code.",
          "type": "string"
        },
        "bitrateBps": {
          "format": "uint64",
          "type": "string",
          "description": "The audio stream's bitrate, in bits per second."
        }
      },
      "type": "object",
      "id": "VideoFileDetailsAudioStream",
      "description": "Information about an audio stream."
    },
    "VideoListResponse": {
      "properties": {
        "nextPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.",
          "type": "string"
        },
        "visitorId": {
          "deprecated": true,
          "type": "string",
          "description": "The visitorId identifies the visitor."
        },
        "eventId": {
          "deprecated": true,
          "type": "string",
          "description": "Serialized EventId of the request which produced this response."
        },
        "prevPageToken": {
          "type": "string",
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set."
        },
        "pageInfo": {
          "description": "General pagination information.",
          "$ref": "PageInfo"
        },
        "items": {
          "items": {
            "$ref": "Video"
          },
          "type": "array"
        },
        "etag": {
          "type": "string",
          "description": "Etag of this resource."
        },
        "kind": {
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#videoListResponse\".",
          "default": "youtube#videoListResponse"
        },
        "tokenPagination": {
          "$ref": "TokenPagination",
          "deprecated": true
        }
      },
      "type": "object",
      "id": "VideoListResponse"
    },
    "LocalizedString": {
      "properties": {
        "language": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "id": "LocalizedString",
      "type": "object"
    },
    "ChannelToAffiliateProgramLinkDetails": {
      "properties": {
        "programStatus": {
          "type": "string",
          "enum": [
            "affiliateProgramStatusUnspecified",
            "active",
            "inactive"
          ],
          "description": "Required. Affiliate program status.",
          "enumDescriptions": [
            "Unspecified status.",
            "Channel is active in the affiliate program.",
            "Channel is inactive in the affiliate program."
          ]
        },
        "merchantId": {
          "type": "string",
          "description": "Required. Google Merchant Center ID of the partner.",
          "format": "uint64"
        },
        "statusUpdateTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "Optional. Timestamp when the affiliate program status was last updated."
        },
        "statusUpdateReason": {
          "type": "string",
          "description": "Optional. Reason for the last update of the affiliate program status."
        }
      },
      "id": "ChannelToAffiliateProgramLinkDetails",
      "type": "object",
      "description": "Information specific to a creator in an affiliate program linked to a YouTube channel."
    },
    "SuperStickerMetadata": {
      "type": "object",
      "id": "SuperStickerMetadata",
      "properties": {
        "altTextLanguage": {
          "description": "Specifies the localization language in which the alt text is returned.",
          "type": "string"
        },
        "altText": {
          "description": "Internationalized alt text that describes the sticker image and any animation associated with it.",
          "type": "string"
        },
        "stickerId": {
          "type": "string",
          "description": "Unique identifier of the Super Sticker. This is a shorter form of the alt_text that includes pack name and a recognizable characteristic of the sticker."
        }
      }
    },
    "LiveBroadcastContentDetails": {
      "id": "LiveBroadcastContentDetails",
      "properties": {
        "recordFromStart": {
          "description": "Automatically start recording after the event goes live. The default value for this property is true. *Important:* You must also set the enableDvr property's value to true if you want the playback to be available immediately after the broadcast ends. If you set this property's value to true but do not also set the enableDvr property to true, there may be a delay of around one day before the archived video will be available for playback.",
          "type": "boolean"
        },
        "monitorStream": {
          "$ref": "MonitorStreamInfo",
          "description": "The monitorStream object contains information about the monitor stream, which the broadcaster can use to review the event content before the broadcast stream is shown publicly."
        },
        "enableDvr": {
          "description": "This setting determines whether viewers can access DVR controls while watching the video. DVR controls enable the viewer to control the video playback experience by pausing, rewinding, or fast forwarding content. The default value for this property is true. *Important:* You must set the value to true and also set the enableArchive property's value to true if you want to make playback available immediately after the broadcast ends.",
          "type": "boolean"
        },
        "startWithSlate": {
          "type": "boolean",
          "description": "This setting indicates whether the broadcast should automatically begin with an in-stream slate when you update the broadcast's status to live. After updating the status, you then need to send a liveCuepoints.insert request that sets the cuepoint's eventState to end to remove the in-stream slate and make your broadcast stream visible to viewers.",
          "deprecated": true
        },
        "enableContentEncryption": {
          "type": "boolean",
          "description": "This setting indicates whether YouTube should enable content encryption for the broadcast."
        },
        "boundStreamLastUpdateTimeMs": {
          "type": "string",
          "description": "The date and time that the live stream referenced by boundStreamId was last updated.",
          "format": "date-time"
        },
        "boundStreamId": {
          "type": "string",
          "description": "This value uniquely identifies the live stream bound to the broadcast."
        },
        "availabilityConfig": {
          "$ref": "AvailabilityConfig",
          "description": "Optional. The broadcast's availability config. Used to set specific region availability or block specific regions It is optional - if not set, it is not enforced."
        },
        "enableClosedCaptions": {
          "type": "boolean",
          "deprecated": true,
          "description": "This setting indicates whether HTTP POST closed captioning is enabled for this broadcast. The ingestion URL of the closed captions is returned through the liveStreams API. This is mutually exclusive with using the closed_captions_type property, and is equivalent to setting closed_captions_type to CLOSED_CAPTIONS_HTTP_POST."
        },
        "closedCaptionsType": {
          "enumDescriptions": [
            "",
            "",
            "",
            ""
          ],
          "type": "string",
          "enum": [
            "closedCaptionsTypeUnspecified",
            "closedCaptionsDisabled",
            "closedCaptionsHttpPost",
            "closedCaptionsEmbedded"
          ]
        },
        "latencyPreference": {
          "type": "string",
          "enum": [
            "latencyPreferenceUnspecified",
            "normal",
            "low",
            "ultraLow"
          ],
          "enumDescriptions": [
            "",
            "Best for: highest quality viewer playbacks and higher resolutions.",
            "Best for: near real-time interaction, with minimal playback buffering.",
            "Best for: real-time interaction Does not support: Closed captions, 1440p, and 4k resolutions"
          ],
          "description": "If both this and enable_low_latency are set, they must match. LATENCY_NORMAL should match enable_low_latency=false LATENCY_LOW should match enable_low_latency=true LATENCY_ULTRA_LOW should have enable_low_latency omitted."
        },
        "stereoLayout": {
          "enumDescriptions": [
            "",
            "",
            "",
            ""
          ],
          "type": "string",
          "enum": [
            "stereoLayoutUnspecified",
            "mono",
            "leftRight",
            "topBottom"
          ],
          "description": "The 3D stereo layout of this broadcast. This defaults to mono."
        },
        "enableEmbed": {
          "description": "This setting indicates whether the broadcast video can be played in an embedded player. If you choose to archive the video (using the enableArchive property), this setting will also apply to the archived video.",
          "type": "boolean"
        },
        "mesh": {
          "format": "byte",
          "description": "The mesh for projecting the video if projection is mesh. The mesh value must be a UTF-8 string containing the base-64 encoding of 3D mesh data that follows the Spherical Video V2 RFC specification for an mshp box, excluding the box size and type but including the following four reserved zero bytes for the version and flags.",
          "type": "string"
        },
        "projection": {
          "type": "string",
          "enum": [
            "projectionUnspecified",
            "rectangular",
            "360",
            "mesh"
          ],
          "enumDescriptions": [
            "",
            "",
            "",
            ""
          ],
          "description": "The projection format of this broadcast. This defaults to rectangular."
        },
        "enableAutoStop": {
          "type": "boolean",
          "description": "This setting indicates whether auto stop is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events."
        },
        "enableLowLatency": {
          "description": "Indicates whether this broadcast has low latency enabled.",
          "type": "boolean",
          "deprecated": true
        },
        "enableAutoStart": {
          "description": "This setting indicates whether auto start is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events.",
          "type": "boolean"
        }
      },
      "type": "object",
      "description": "Detailed settings of a broadcast."
    },
    "LiveChatBanSnippet": {
      "properties": {
        "banDurationSeconds": {
          "format": "uint64",
          "type": "string",
          "description": "The duration of a ban, only filled if the ban has type TEMPORARY."
        },
        "liveChatId": {
          "type": "string",
          "description": "The chat this ban is pertinent to."
        },
        "type": {
          "type": "string",
          "enum": [
            "liveChatBanTypeUnspecified",
            "permanent",
            "temporary"
          ],
          "enumDescriptions": [
            "An invalid ban type.",
            "A permanent ban.",
            "A temporary ban."
          ],
          "description": "The type of ban."
        },
        "bannedUserDetails": {
          "$ref": "ChannelProfileDetails"
        }
      },
      "id": "LiveChatBanSnippet",
      "type": "object"
    },
    "MemberListResponse": {
      "id": "MemberListResponse",
      "properties": {
        "kind": {
          "default": "youtube#memberListResponse",
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#memberListResponse\"."
        },
        "visitorId": {
          "deprecated": true,
          "type": "string",
          "description": "The visitorId identifies the visitor."
        },
        "pageInfo": {
          "$ref": "PageInfo"
        },
        "items": {
          "description": "A list of members that match the request criteria.",
          "type": "array",
          "items": {
            "$ref": "Member"
          }
        },
        "nextPageToken": {
          "description": "The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.",
          "type": "string"
        },
        "eventId": {
          "type": "string",
          "description": "Serialized EventId of the request which produced this response.",
          "deprecated": true
        },
        "tokenPagination": {
          "deprecated": true,
          "$ref": "TokenPagination"
        },
        "etag": {
          "type": "string",
          "description": "Etag of this resource."
        }
      },
      "type": "object"
    },
    "SubscriptionSubscriberSnippet": {
      "type": "object",
      "description": "Basic details about a subscription's subscriber including title, description, channel ID and thumbnails.",
      "id": "SubscriptionSubscriberSnippet",
      "properties": {
        "description": {
          "type": "string",
          "description": "The description of the subscriber."
        },
        "channelId": {
          "description": "The channel ID of the subscriber.",
          "type": "string"
        },
        "thumbnails": {
          "description": "Thumbnails for this subscriber.",
          "$ref": "ThumbnailDetails"
        },
        "title": {
          "type": "string",
          "description": "The title of the subscriber."
        }
      }
    },
    "MembershipsLevelListResponse": {
      "type": "object",
      "properties": {
        "eventId": {
          "deprecated": true,
          "description": "Serialized EventId of the request which produced this response.",
          "type": "string"
        },
        "kind": {
          "default": "youtube#membershipsLevelListResponse",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#membershipsLevelListResponse\".",
          "type": "string"
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "visitorId": {
          "type": "string",
          "description": "The visitorId identifies the visitor.",
          "deprecated": true
        },
        "items": {
          "items": {
            "$ref": "MembershipsLevel"
          },
          "type": "array",
          "description": "A list of pricing levels offered by a creator to the fans."
        }
      },
      "id": "MembershipsLevelListResponse"
    },
    "ChannelAuditDetails": {
      "id": "ChannelAuditDetails",
      "type": "object",
      "properties": {
        "contentIdClaimsGoodStanding": {
          "description": "Whether or not the channel has any unresolved claims.",
          "type": "boolean"
        },
        "communityGuidelinesGoodStanding": {
          "type": "boolean",
          "description": "Whether or not the channel respects the community guidelines."
        },
        "copyrightStrikesGoodStanding": {
          "type": "boolean",
          "description": "Whether or not the channel has any copyright strikes."
        }
      },
      "description": "The auditDetails object encapsulates channel data that is relevant for YouTube Partners during the audit process."
    },
    "LiveChatNewSponsorDetails": {
      "id": "LiveChatNewSponsorDetails",
      "type": "object",
      "properties": {
        "isUpgrade": {
          "description": "If the viewer just had upgraded from a lower level. For viewers that were not members at the time of purchase, this field is false.",
          "type": "boolean"
        },
        "memberLevelName": {
          "type": "string",
          "description": "The name of the Level that the viewer just had joined. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn't filled."
        }
      }
    },
    "LocalizedProperty": {
      "type": "object",
      "properties": {
        "defaultLanguage": {
          "description": "The language of the default property.",
          "$ref": "LanguageTag"
        },
        "default": {
          "type": "string"
        },
        "localized": {
          "type": "array",
          "items": {
            "$ref": "LocalizedString"
          }
        }
      },
      "id": "LocalizedProperty"
    },
    "RelatedEntity": {
      "id": "RelatedEntity",
      "type": "object",
      "properties": {
        "entity": {
          "$ref": "Entity"
        }
      }
    },
    "ThirdPartyLink": {
      "id": "ThirdPartyLink",
      "properties": {
        "linkingToken": {
          "description": "The linking_token identifies a YouTube account and channel with which the third party account is linked.",
          "type": "string"
        },
        "etag": {
          "description": "Etag of this resource",
          "type": "string"
        },
        "status": {
          "$ref": "ThirdPartyLinkStatus",
          "description": "The status object contains information about the status of the link."
        },
        "snippet": {
          "$ref": "ThirdPartyLinkSnippet",
          "description": "The snippet object contains basic details about the third- party account link."
        },
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#thirdPartyLink\".",
          "default": "youtube#thirdPartyLink",
          "type": "string"
        }
      },
      "type": "object",
      "description": "A *third party account link* resource represents a link between a YouTube account or a channel and an account on a third-party service."
    },
    "ChannelSectionTargeting": {
      "id": "ChannelSectionTargeting",
      "type": "object",
      "properties": {
        "languages": {
          "deprecated": true,
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "The language the channel section is targeting."
        },
        "regions": {
          "items": {
            "type": "string"
          },
          "description": "The region the channel section is targeting.",
          "type": "array",
          "deprecated": true
        },
        "countries": {
          "description": "The country the channel section is targeting.",
          "type": "array",
          "items": {
            "type": "string"
          },
          "deprecated": true
        }
      },
      "description": "ChannelSection targeting setting."
    },
    "AbuseReport": {
      "properties": {
        "relatedEntities": {
          "items": {
            "$ref": "RelatedEntity"
          },
          "type": "array"
        },
        "abuseTypes": {
          "items": {
            "$ref": "AbuseType"
          },
          "type": "array"
        },
        "subject": {
          "$ref": "Entity"
        },
        "description": {
          "type": "string"
        }
      },
      "type": "object",
      "id": "AbuseReport"
    },
    "BatchGetStatsResponse": {
      "description": "Response for the Videos.stats API. Returns VideoStat information about a batch of videos. VideoStat contains a subset of the information in Video that is relevant to statistics and content details. BatchGetStats is intentionally not atomic to provide a better user experience. BatchGetStatsResponse returns a summary to help users understand the outcome of the operation.",
      "id": "BatchGetStatsResponse",
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "description": "The videos' stats information.",
          "items": {
            "$ref": "VideoStat"
          }
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "kind": {
          "default": "youtube#batchGetStatsResponse",
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#batchGetStatsResponse\"."
        }
      }
    },
    "IngestionInfo": {
      "id": "IngestionInfo",
      "type": "object",
      "description": "Describes information necessary for ingesting an RTMP, HTTP, or SRT stream.",
      "properties": {
        "ingestionAddress": {
          "description": "The primary ingestion URL that you should use to stream video to YouTube. You must stream video to this URL. Depending on which application or tool you use to encode your video stream, you may need to enter the stream URL and stream name separately or you may need to concatenate them in the following format: *STREAM_URL/STREAM_NAME* ",
          "type": "string"
        },
        "rtmpsBackupIngestionAddress": {
          "description": "This ingestion url may be used instead of backupIngestionAddress in order to stream via RTMPS. Not applicable to non-RTMP streams.",
          "type": "string"
        },
        "backupIngestionAddress": {
          "type": "string",
          "description": "The backup ingestion URL that you should use to stream video to YouTube. You have the option of simultaneously streaming the content that you are sending to the ingestionAddress to this URL."
        },
        "rtmpsIngestionAddress": {
          "description": "This ingestion url may be used instead of ingestionAddress in order to stream via RTMPS. Not applicable to non-RTMP streams.",
          "type": "string"
        },
        "streamName": {
          "description": "The stream name that YouTube assigns to the video stream.",
          "type": "string"
        }
      }
    },
    "MonitorStreamInfo": {
      "type": "object",
      "description": "Settings and Info of the monitor stream",
      "properties": {
        "broadcastStreamDelayMs": {
          "annotations": {
            "required": [
              "youtube.liveBroadcasts.update"
            ]
          },
          "description": "If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay.",
          "type": "integer",
          "format": "uint32"
        },
        "enableMonitorStream": {
          "annotations": {
            "required": [
              "youtube.liveBroadcasts.update"
            ]
          },
          "description": "This value determines whether the monitor stream is enabled for the broadcast. If the monitor stream is enabled, then YouTube will broadcast the event content on a special stream intended only for the broadcaster's consumption. The broadcaster can use the stream to review the event content and also to identify the optimal times to insert cuepoints. You need to set this value to true if you intend to have a broadcast delay for your event. *Note:* This property cannot be updated once the broadcast is in the testing or live state.",
          "type": "boolean"
        },
        "embedHtml": {
          "type": "string",
          "description": "HTML code that embeds a player that plays the monitor stream."
        }
      },
      "id": "MonitorStreamInfo"
    },
    "CaptionSnippet": {
      "properties": {
        "isLarge": {
          "description": "Indicates whether the caption track uses large text for the vision-impaired. The default value is false.",
          "type": "boolean"
        },
        "videoId": {
          "type": "string",
          "description": "The ID that YouTube uses to uniquely identify the video associated with the caption track. @mutable youtube.captions.insert",
          "annotations": {
            "required": [
              "youtube.captions.insert"
            ]
          }
        },
        "status": {
          "description": "The caption track's status.",
          "enumDescriptions": [
            "",
            "",
            ""
          ],
          "type": "string",
          "enum": [
            "serving",
            "syncing",
            "failed"
          ]
        },
        "lastUpdated": {
          "description": "The date and time when the caption track was last updated.",
          "type": "string",
          "format": "date-time"
        },
        "failureReason": {
          "enumDescriptions": [
            "",
            "",
            ""
          ],
          "description": "The reason that YouTube failed to process the caption track. This property is only present if the state property's value is failed.",
          "type": "string",
          "enum": [
            "unknownFormat",
            "unsupportedFormat",
            "processingFailed"
          ]
        },
        "isDraft": {
          "type": "boolean",
          "description": "Indicates whether the caption track is a draft. If the value is true, then the track is not publicly visible. The default value is false. @mutable youtube.captions.insert youtube.captions.update"
        },
        "isEasyReader": {
          "type": "boolean",
          "description": "Indicates whether caption track is formatted for \"easy reader,\" meaning it is at a third-grade level for language learners. The default value is false."
        },
        "trackKind": {
          "enumDescriptions": [
            "",
            "",
            ""
          ],
          "type": "string",
          "enum": [
            "standard",
            "ASR",
            "forced"
          ],
          "description": "The caption track's type."
        },
        "isAutoSynced": {
          "description": "Indicates whether YouTube synchronized the caption track to the audio track in the video. The value will be true if a sync was explicitly requested when the caption track was uploaded. For example, when calling the captions.insert or captions.update methods, you can set the sync parameter to true to instruct YouTube to sync the uploaded track to the video. If the value is false, YouTube uses the time codes in the uploaded caption track to determine when to display captions.",
          "type": "boolean"
        },
        "name": {
          "annotations": {
            "required": [
              "youtube.captions.insert"
            ]
          },
          "description": "The name of the caption track. The name is intended to be visible to the user as an option during playback.",
          "type": "string"
        },
        "isCC": {
          "type": "boolean",
          "description": "Indicates whether the track contains closed captions for the deaf and hard of hearing. The default value is false."
        },
        "language": {
          "type": "string",
          "description": "The language of the caption track. The property value is a BCP-47 language tag.",
          "annotations": {
            "required": [
              "youtube.captions.insert"
            ]
          }
        },
        "audioTrackType": {
          "description": "The type of audio track associated with the caption track.",
          "enumDescriptions": [
            "",
            "",
            "",
            ""
          ],
          "type": "string",
          "enum": [
            "unknown",
            "primary",
            "commentary",
            "descriptive"
          ]
        }
      },
      "id": "CaptionSnippet",
      "description": "Basic details about a caption track, such as its language and name.",
      "type": "object"
    },
    "Activity": {
      "description": "An `activity` resource contains information about an action that a particular channel, or user, has taken on YouTube. The actions reported in activity feeds include sharing a video, uploading a video, and so forth. Each `activity` resource identifies the type of action, the channel associated with the action, and the resource(s) associated with the action, such as the video that was rated or uploaded.",
      "id": "Activity",
      "properties": {
        "snippet": {
          "description": "The `snippet` object contains basic details about the activity, including the activity's type and group ID.",
          "$ref": "ActivitySnippet"
        },
        "kind": {
          "description": "Identifies what kind of resource this is. Value: The fixed string `\"youtube#activity\"`.",
          "type": "string",
          "default": "youtube#activity"
        },
        "etag": {
          "description": "Etag of this resource",
          "type": "string"
        },
        "contentDetails": {
          "$ref": "ActivityContentDetails",
          "description": "The `contentDetails` object contains information about the content associated with the activity. For example, if the `snippet.type` value is `videoRated`, then the `contentDetails` object's content identifies the rated video."
        },
        "id": {
          "description": "The ID that YouTube uses to uniquely identify the activity.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "Entity": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "typeId": {
          "type": "string"
        }
      },
      "id": "Entity"
    },
    "SuperChatEventSnippet": {
      "properties": {
        "commentText": {
          "description": "The text contents of the comment left by the user.",
          "type": "string"
        },
        "amountMicros": {
          "type": "string",
          "format": "uint64",
          "description": "The purchase amount, in micros of the purchase currency. e.g., 1 is represented as 1000000."
        },
        "displayString": {
          "type": "string",
          "description": "A rendered string that displays the purchase amount and currency (e.g., \"$1.00\"). The string is rendered for the given language."
        },
        "messageType": {
          "type": "integer",
          "description": "The tier for the paid message, which is based on the amount of money spent to purchase the message.",
          "format": "uint32"
        },
        "channelId": {
          "type": "string",
          "description": "Channel id where the event occurred."
        },
        "currency": {
          "description": "The currency in which the purchase was made. ISO 4217.",
          "type": "string"
        },
        "isSuperStickerEvent": {
          "type": "boolean",
          "description": "True if this event is a Super Sticker event."
        },
        "createdAt": {
          "type": "string",
          "description": "The date and time when the event occurred.",
          "format": "date-time"
        },
        "superStickerMetadata": {
          "description": "If this event is a Super Sticker event, this field will contain metadata about the Super Sticker.",
          "$ref": "SuperStickerMetadata"
        },
        "supporterDetails": {
          "$ref": "ChannelProfileDetails",
          "description": "Details about the supporter."
        }
      },
      "id": "SuperChatEventSnippet",
      "type": "object"
    },
    "ThumbnailSetResponse": {
      "id": "ThumbnailSetResponse",
      "type": "object",
      "properties": {
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "items": {
          "items": {
            "$ref": "ThumbnailDetails"
          },
          "type": "array",
          "description": "A list of thumbnails."
        },
        "eventId": {
          "description": "Serialized EventId of the request which produced this response.",
          "type": "string",
          "deprecated": true
        },
        "visitorId": {
          "deprecated": true,
          "description": "The visitorId identifies the visitor.",
          "type": "string"
        },
        "kind": {
          "type": "string",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#thumbnailSetResponse\".",
          "default": "youtube#thumbnailSetResponse"
        }
      }
    },
    "AvailabilityConfigRegionsConfig": {
      "properties": {
        "regionIntervals": {
          "type": "array",
          "items": {
            "$ref": "AvailabilityConfigRegionsConfigRegionInterval"
          },
          "description": "Required. List of regions and time windows where video is available. If a region is specified multiple times, the union of all intervals is used."
        }
      },
      "type": "object",
      "id": "AvailabilityConfigRegionsConfig",
      "description": "Video is available in the specified regions only."
    },
    "LiveBroadcastMonetizationDetails": {
      "id": "LiveBroadcastMonetizationDetails",
      "type": "object",
      "properties": {
        "cuepointSchedule": {
          "$ref": "CuepointSchedule"
        }
      },
      "description": "Monetization settings of a broadcast."
    },
    "TestItemTestItemSnippet": {
      "id": "TestItemTestItemSnippet",
      "properties": {},
      "type": "object"
    },
    "ChannelToStoreLinkDetails": {
      "type": "object",
      "id": "ChannelToStoreLinkDetails",
      "properties": {
        "billingDetails": {
          "description": "Information specific to billing (read-only).",
          "$ref": "ChannelToStoreLinkDetailsBillingDetails"
        },
        "storeName": {
          "description": "Name of the store.",
          "type": "string"
        },
        "merchantAffiliateProgramDetails": {
          "$ref": "ChannelToStoreLinkDetailsMerchantAffiliateProgramDetails",
          "description": "Information specific to merchant affiliate program (read-only)."
        },
        "storeUrl": {
          "type": "string",
          "description": "Landing page of the store."
        },
        "merchantId": {
          "type": "string",
          "description": "Google Merchant Center id of the store.",
          "format": "uint64"
        }
      },
      "description": "Information specific to a store on a merchandising platform linked to a YouTube channel."
    },
    "I18nRegionListResponse": {
      "type": "object",
      "properties": {
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        },
        "eventId": {
          "deprecated": true,
          "type": "string",
          "description": "Serialized EventId of the request which produced this response."
        },
        "items": {
          "description": "A list of regions where YouTube is available. In this map, the i18n region ID is the map key, and its value is the corresponding i18nRegion resource.",
          "type": "array",
          "items": {
            "$ref": "I18nRegion"
          }
        },
        "visitorId": {
          "description": "The visitorId identifies the visitor.",
          "type": "string",
          "deprecated": true
        },
        "kind": {
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#i18nRegionListResponse\".",
          "default": "youtube#i18nRegionListResponse",
          "type": "string"
        }
      },
      "id": "I18nRegionListResponse"
    },
    "VideoStat": {
      "description": "A *VideoStat* resource represents a YouTube video's stats.",
      "id": "VideoStat",
      "type": "object",
      "properties": {
        "contentDetails": {
          "$ref": "VideoStatsContentDetails",
          "readOnly": true,
          "description": "Output only. The VideoStatsContentDetails object contains information about the video content, including the length of the video."
        },
        "kind": {
          "readOnly": true,
          "description": "Output only. Identifies what kind of resource this is. Value: the fixed string \"youtube#videoStats\".",
          "type": "string"
        },
        "id": {
          "description": "Output only. The ID that YouTube uses to uniquely identify the video.",
          "type": "string",
          "readOnly": true
        },
        "snippet": {
          "description": "Output only. The VideoStatsSnippet object contains basic details about the video, such publish time.",
          "$ref": "VideoStatsSnippet",
          "readOnly": true
        },
        "statistics": {
          "description": "Output only. The VideoStatsStatistics object contains statistics about the video.",
          "$ref": "VideoStatsStatistics",
          "readOnly": true
        },
        "etag": {
          "type": "string",
          "description": "Output only. Etag of this resource.",
          "readOnly": true
        }
      }
    },
    "ResourceId": {
      "id": "ResourceId",
      "type": "object",
      "properties": {
        "kind": {
          "description": "The type of the API resource.",
          "type": "string"
        },
        "channelId": {
          "description": "The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.",
          "type": "string"
        },
        "playlistId": {
          "description": "The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.",
          "type": "string"
        },
        "videoId": {
          "type": "string",
          "description": "The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video."
        }
      },
      "description": "A resource id is a generic reference that points to another YouTube resource."
    },
    "LiveChatMemberMilestoneChatDetails": {
      "type": "object",
      "id": "LiveChatMemberMilestoneChatDetails",
      "properties": {
        "userComment": {
          "type": "string",
          "description": "The comment added by the member to this Member Milestone Chat. This field is empty for messages without a comment from the member."
        },
        "memberLevelName": {
          "type": "string",
          "description": "The name of the Level at which the viever is a member. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn't filled."
        },
        "memberMonth": {
          "description": "The total amount of months (rounded up) the viewer has been a member that granted them this Member Milestone Chat. This is the same number of months as is being displayed to YouTube users.",
          "type": "integer",
          "format": "uint32"
        }
      }
    },
    "VideoStatsStatistics": {
      "description": "Statistics about the video, such as the number of times the video was viewed or liked.",
      "properties": {
        "likeCount": {
          "description": "Output only. The number of users who have indicated that they liked the video by giving it a positive rating.",
          "readOnly": true,
          "type": "string",
          "format": "int64"
        },
        "commentCount": {
          "description": "Output only. The number of comments for the video.",
          "type": "string",
          "readOnly": true,
          "format": "int64"
        },
        "viewCount": {
          "format": "int64",
          "readOnly": true,
          "type": "string",
          "description": "Output only. The number of times the video has been viewed."
        }
      },
      "type": "object",
      "id": "VideoStatsStatistics"
    },
    "MembershipsLevel": {
      "description": "A *membershipsLevel* resource represents an offer made by YouTube creators for their fans. Users can become members of the channel by joining one of the available levels. They will provide recurring monetary support and receives special benefits.",
      "id": "MembershipsLevel",
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "default": "youtube#membershipsLevel",
          "description": "Identifies what kind of resource this is. Value: the fixed string \"youtube#membershipsLevelListResponse\"."
        },
        "snippet": {
          "$ref": "MembershipsLevelSnippet",
          "description": "The snippet object contains basic details about the level."
        },
        "id": {
          "type": "string",
          "description": "The ID that YouTube assigns to uniquely identify the memberships level."
        },
        "etag": {
          "description": "Etag of this resource.",
          "type": "string"
        }
      }
    },
    "VideoAbuseReportSecondaryReason": {
      "id": "VideoAbuseReportSecondaryReason",
      "properties": {
        "label": {
          "description": "The localized label for this abuse report secondary reason.",
          "type": "string"
        },
        "id": {
          "type": "string",
          "description": "The ID of this abuse report secondary reason."
        }
      },
      "type": "object"
    },
    "PlaylistItemStatus": {
      "properties": {
        "privacyStatus": {
          "type": "string",
          "enum": [
            "public",
            "unlisted",
            "private"
          ],
          "enumDescriptions": [
            "",
            "",
            ""
          ],
          "description": "This resource's privacy status."
        }
      },
      "description": "Information about the playlist item's privacy status.",
      "type": "object",
      "id": "PlaylistItemStatus"
    },
    "VideoStatistics": {
      "properties": {
        "likeCount": {
          "format": "uint64",
          "type": "string",
          "description": "The number of users who have indicated that they liked the video by giving it a positive rating."
        },
        "dislikeCount": {
          "format": "uint64",
          "description": "The number of users who have indicated that they disliked the video by giving it a negative rating.",
          "type": "string"
        },
        "viewCount": {
          "type": "string",
          "format": "uint64",
          "description": "The number of times the video has been viewed."
        },
        "favoriteCount": {
          "type": "string",
          "deprecated": true,
          "description": "The number of users who currently have the video marked as a favorite video.",
          "format": "uint64"
        },
        "commentCount": {
          "description": "The number of comments for the video.",
          "type": "string",
          "format": "uint64"
        }
      },
      "id": "VideoStatistics",
      "description": "Statistics about the video, such as the number of times the video was viewed or liked.",
      "type": "object"
    },
    "VideoFileDetailsVideoStream": {
      "type": "object",
      "id": "VideoFileDetailsVideoStream",
      "description": "Information about a video stream.",
      "properties": {
        "frameRateFps": {
          "type": "number",
          "format": "double",
          "description": "The video stream's frame rate, in frames per second."
        },
        "widthPixels": {
          "description": "The encoded video content's width in pixels. You can calculate the video's encoding aspect ratio as width_pixels / height_pixels.",
          "format": "uint32",
          "type": "integer"
        },
        "codec": {
          "description": "The video codec that the stream uses.",
          "type": "string"
        },
        "vendor": {
          "description": "A value that uniquely identifies a video vendor. Typically, the value is a four-letter vendor code.",
          "type": "string"
        },
        "bitrateBps": {
          "type": "string",
          "description": "The video stream's bitrate, in bits per second.",
          "format": "uint64"
        },
        "aspectRatio": {
          "description": "The video content's display aspect ratio, which specifies the aspect ratio in which the video should be displayed.",
          "format": "double",
          "type": "number"
        },
        "heightPixels": {
          "format": "uint32",
          "type": "integer",
          "description": "The encoded video content's height in pixels."
        },
        "rotation": {
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            ""
          ],
          "type": "string",
          "enum": [
            "none",
            "clockwise",
            "upsideDown",
            "counterClockwise",
            "other"
          ],
          "description": "The amount that YouTube needs to rotate the original source content to properly display the video."
        }
      }
    },
    "Interval": {
      "description": "Represents a time interval, encoded as a Timestamp start (inclusive) and a Timestamp end (exclusive). The start must be less than or equal to the end. When the start equals the end, the interval is empty (matches no time). When both start and end are unspecified, the interval matches any time.",
      "id": "Interval",
      "type": "object",
      "properties": {
        "endTime": {
          "description": "Optional. Exclusive end of the interval. If specified, a Timestamp matching this interval will have to be before the end.",
          "type": "string",
          "format": "google-datetime"
        },
        "startTime": {
          "description": "Optional. Inclusive start of the interval. If specified, a Timestamp matching this interval will have to be the same or after the start.",
          "type": "string",
          "format": "google-datetime"
        }
      }
    }
  },
  "description": "The YouTube Data API v3 is an API that provides access to YouTube data, such as videos, playlists, and channels.",
  "baseUrl": "https://youtube.googleapis.com/"
}
