# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

require 'date'
require 'google/apis/core/base_service'
require 'google/apis/core/json_representation'
require 'google/apis/core/hashable'
require 'google/apis/errors'

module Google
  module Apis
    module YoutubePartnerV1
      
      # 
      class AdBreak
        include Google::Apis::Core::Hashable
      
        # The time of the ad break specified as the number of seconds after the start of
        # the video when the break occurs.
        # Corresponds to the JSON property `midrollSeconds`
        # @return [Fixnum]
        attr_accessor :midroll_seconds
      
        # The point at which the break occurs during the video playback.
        # Corresponds to the JSON property `position`
        # @return [String]
        attr_accessor :position
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @midroll_seconds = args[:midroll_seconds] if args.key?(:midroll_seconds)
          @position = args[:position] if args.key?(:position)
        end
      end
      
      # 
      class Asset
        include Google::Apis::Core::Hashable
      
        # A list of asset IDs that can be used to refer to the asset. The list contains
        # values if the asset represents multiple constituent assets that have been
        # merged. In that case, any of the asset IDs originally assigned to the
        # constituent assets could be used to update the master, or synthesized, asset.
        # Corresponds to the JSON property `aliasId`
        # @return [Array<String>]
        attr_accessor :alias_id
      
        # An ID that YouTube assigns and uses to uniquely identify the asset.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # The type of the API resource. For asset resources, the value is youtubePartner#
        # asset.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # A list of asset labels on the asset.
        # Corresponds to the JSON property `label`
        # @return [Array<String>]
        attr_accessor :label
      
        # The matchPolicy object contains information about the asset's match policy,
        # which YouTube applies to user-uploaded videos that match the asset.
        # Corresponds to the JSON property `matchPolicy`
        # @return [Google::Apis::YoutubePartnerV1::AssetMatchPolicy]
        attr_accessor :match_policy
      
        # 
        # Corresponds to the JSON property `matchPolicyEffective`
        # @return [Google::Apis::YoutubePartnerV1::AssetMatchPolicy]
        attr_accessor :match_policy_effective
      
        # 
        # Corresponds to the JSON property `matchPolicyMine`
        # @return [Google::Apis::YoutubePartnerV1::AssetMatchPolicy]
        attr_accessor :match_policy_mine
      
        # The metadata object contains information that identifies and describes the
        # asset. This information could be used to search for the asset or to eliminate
        # duplication within YouTube's database.
        # Corresponds to the JSON property `metadata`
        # @return [Google::Apis::YoutubePartnerV1::Metadata]
        attr_accessor :metadata
      
        # 
        # Corresponds to the JSON property `metadataEffective`
        # @return [Google::Apis::YoutubePartnerV1::Metadata]
        attr_accessor :metadata_effective
      
        # 
        # Corresponds to the JSON property `metadataMine`
        # @return [Google::Apis::YoutubePartnerV1::Metadata]
        attr_accessor :metadata_mine
      
        # The ownership object identifies an asset's owners and provides additional
        # details about their ownership, such as the territories where they own the
        # asset.
        # Corresponds to the JSON property `ownership`
        # @return [Google::Apis::YoutubePartnerV1::RightsOwnership]
        attr_accessor :ownership
      
        # The ownershipConflicts object contains information about the asset's ownership
        # conflicts.
        # Corresponds to the JSON property `ownershipConflicts`
        # @return [Google::Apis::YoutubePartnerV1::OwnershipConflicts]
        attr_accessor :ownership_conflicts
      
        # 
        # Corresponds to the JSON property `ownershipEffective`
        # @return [Google::Apis::YoutubePartnerV1::RightsOwnership]
        attr_accessor :ownership_effective
      
        # 
        # Corresponds to the JSON property `ownershipMine`
        # @return [Google::Apis::YoutubePartnerV1::RightsOwnership]
        attr_accessor :ownership_mine
      
        # The asset's status.
        # Corresponds to the JSON property `status`
        # @return [String]
        attr_accessor :status
      
        # The date and time the asset was created. The value is specified in RFC 3339 (
        # YYYY-MM-DDThh:mm:ss.000Z) format.
        # Corresponds to the JSON property `timeCreated`
        # @return [String]
        attr_accessor :time_created
      
        # The asset's type. This value determines the metadata fields that you can set
        # for the asset. In addition, certain API functions may only be supported for
        # specific types of assets. For example, composition assets may have more
        # complex ownership data than other types of assets.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @alias_id = args[:alias_id] if args.key?(:alias_id)
          @id = args[:id] if args.key?(:id)
          @kind = args[:kind] if args.key?(:kind)
          @label = args[:label] if args.key?(:label)
          @match_policy = args[:match_policy] if args.key?(:match_policy)
          @match_policy_effective = args[:match_policy_effective] if args.key?(:match_policy_effective)
          @match_policy_mine = args[:match_policy_mine] if args.key?(:match_policy_mine)
          @metadata = args[:metadata] if args.key?(:metadata)
          @metadata_effective = args[:metadata_effective] if args.key?(:metadata_effective)
          @metadata_mine = args[:metadata_mine] if args.key?(:metadata_mine)
          @ownership = args[:ownership] if args.key?(:ownership)
          @ownership_conflicts = args[:ownership_conflicts] if args.key?(:ownership_conflicts)
          @ownership_effective = args[:ownership_effective] if args.key?(:ownership_effective)
          @ownership_mine = args[:ownership_mine] if args.key?(:ownership_mine)
          @status = args[:status] if args.key?(:status)
          @time_created = args[:time_created] if args.key?(:time_created)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # 
      class AssetLabel
        include Google::Apis::Core::Hashable
      
        # The type of the API resource. For assetLabel resources, this value is
        # youtubePartner#assetLabel.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # Name of the asset label.
        # Corresponds to the JSON property `labelName`
        # @return [String]
        attr_accessor :label_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @kind = args[:kind] if args.key?(:kind)
          @label_name = args[:label_name] if args.key?(:label_name)
        end
      end
      
      # 
      class AssetLabelListResponse
        include Google::Apis::Core::Hashable
      
        # A list of assetLabel resources that match the request criteria.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::YoutubePartnerV1::AssetLabel>]
        attr_accessor :items
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # assetLabelList.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @kind = args[:kind] if args.key?(:kind)
        end
      end
      
      # 
      class AssetListResponse
        include Google::Apis::Core::Hashable
      
        # A list of asset resources that match the request criteria.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::YoutubePartnerV1::Asset>]
        attr_accessor :items
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # assetList.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @kind = args[:kind] if args.key?(:kind)
        end
      end
      
      # 
      class AssetMatchPolicy
        include Google::Apis::Core::Hashable
      
        # The type of the API resource. Value: youtubePartner#assetMatchPolicy.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # A value that uniquely identifies the Policy resource that YouTube applies to
        # user-uploaded videos that match the asset.
        # Corresponds to the JSON property `policyId`
        # @return [String]
        attr_accessor :policy_id
      
        # A list of rules that collectively define the policy that the content owner
        # wants to apply to user-uploaded videos that match the asset. Each rule
        # specifies the action that YouTube should take and may optionally specify the
        # conditions under which that action is enforced.
        # Corresponds to the JSON property `rules`
        # @return [Array<Google::Apis::YoutubePartnerV1::PolicyRule>]
        attr_accessor :rules
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @kind = args[:kind] if args.key?(:kind)
          @policy_id = args[:policy_id] if args.key?(:policy_id)
          @rules = args[:rules] if args.key?(:rules)
        end
      end
      
      # 
      class AssetRelationship
        include Google::Apis::Core::Hashable
      
        # The ID of the child (contained) asset.
        # Corresponds to the JSON property `childAssetId`
        # @return [String]
        attr_accessor :child_asset_id
      
        # A value that YouTube assigns and uses to uniquely identify the asset
        # relationship.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # The type of the API resource. For this resource, the value is youtubePartner#
        # assetRelationship.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The ID of the parent (containing) asset.
        # Corresponds to the JSON property `parentAssetId`
        # @return [String]
        attr_accessor :parent_asset_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @child_asset_id = args[:child_asset_id] if args.key?(:child_asset_id)
          @id = args[:id] if args.key?(:id)
          @kind = args[:kind] if args.key?(:kind)
          @parent_asset_id = args[:parent_asset_id] if args.key?(:parent_asset_id)
        end
      end
      
      # 
      class AssetRelationshipListResponse
        include Google::Apis::Core::Hashable
      
        # A list of assetRelationship resources that match the request criteria.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::YoutubePartnerV1::AssetRelationship>]
        attr_accessor :items
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # assetRelationshipList.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The token that can be used as the value of the pageToken parameter to retrieve
        # the next page of results.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The pageInfo object encapsulates paging information for the result set.
        # Corresponds to the JSON property `pageInfo`
        # @return [Google::Apis::YoutubePartnerV1::PageInfo]
        attr_accessor :page_info
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @kind = args[:kind] if args.key?(:kind)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @page_info = args[:page_info] if args.key?(:page_info)
        end
      end
      
      # 
      class AssetSearchResponse
        include Google::Apis::Core::Hashable
      
        # A list of asset resources that match the request criteria.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::YoutubePartnerV1::AssetSnippet>]
        attr_accessor :items
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # assetSnippetList.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The token that can be used as the value of the pageToken parameter to retrieve
        # the next page of results.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The pageInfo object encapsulates paging information for the result set.
        # Corresponds to the JSON property `pageInfo`
        # @return [Google::Apis::YoutubePartnerV1::PageInfo]
        attr_accessor :page_info
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @kind = args[:kind] if args.key?(:kind)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @page_info = args[:page_info] if args.key?(:page_info)
        end
      end
      
      # 
      class AssetShare
        include Google::Apis::Core::Hashable
      
        # The type of the API resource. For this resource, the value is youtubePartner#
        # assetShare.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # A value that YouTube assigns and uses to uniquely identify the asset share.
        # Corresponds to the JSON property `shareId`
        # @return [String]
        attr_accessor :share_id
      
        # A value that YouTube assigns and uses to uniquely identify the asset view.
        # Corresponds to the JSON property `viewId`
        # @return [String]
        attr_accessor :view_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @kind = args[:kind] if args.key?(:kind)
          @share_id = args[:share_id] if args.key?(:share_id)
          @view_id = args[:view_id] if args.key?(:view_id)
        end
      end
      
      # 
      class AssetShareListResponse
        include Google::Apis::Core::Hashable
      
        # An assetShare resource that matches the request criteria.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::YoutubePartnerV1::AssetShare>]
        attr_accessor :items
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # assetShareList.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The token that can be used as the value of the pageToken parameter to retrieve
        # the next page of results.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The pageInfo object encapsulates paging information for the result set.
        # Corresponds to the JSON property `pageInfo`
        # @return [Google::Apis::YoutubePartnerV1::PageInfo]
        attr_accessor :page_info
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @kind = args[:kind] if args.key?(:kind)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @page_info = args[:page_info] if args.key?(:page_info)
        end
      end
      
      # 
      class AssetSnippet
        include Google::Apis::Core::Hashable
      
        # Custom ID assigned by the content owner to this asset.
        # Corresponds to the JSON property `customId`
        # @return [String]
        attr_accessor :custom_id
      
        # An ID that YouTube assigns and uses to uniquely identify the asset.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # The ISRC (International Standard Recording Code) for this asset.
        # Corresponds to the JSON property `isrc`
        # @return [String]
        attr_accessor :isrc
      
        # The ISWC (International Standard Musical Work Code) for this asset.
        # Corresponds to the JSON property `iswc`
        # @return [String]
        attr_accessor :iswc
      
        # The type of the API resource. For this operation, the value is youtubePartner#
        # assetSnippet.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The date and time the asset was created. The value is specified in RFC 3339 (
        # YYYY-MM-DDThh:mm:ss.000Z) format.
        # Corresponds to the JSON property `timeCreated`
        # @return [String]
        attr_accessor :time_created
      
        # Title of this asset.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        # The asset's type. This value determines which metadata fields might be
        # included in the metadata object.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @custom_id = args[:custom_id] if args.key?(:custom_id)
          @id = args[:id] if args.key?(:id)
          @isrc = args[:isrc] if args.key?(:isrc)
          @iswc = args[:iswc] if args.key?(:iswc)
          @kind = args[:kind] if args.key?(:kind)
          @time_created = args[:time_created] if args.key?(:time_created)
          @title = args[:title] if args.key?(:title)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # Information to read/write to blobstore2.
      class Blobstore2Info
        include Google::Apis::Core::Hashable
      
        # The blob generation id.
        # Corresponds to the JSON property `blobGeneration`
        # @return [Fixnum]
        attr_accessor :blob_generation
      
        # The blob id, e.g., /blobstore/prod/playground/scotty
        # Corresponds to the JSON property `blobId`
        # @return [String]
        attr_accessor :blob_id
      
        # Read handle passed from Bigstore -> Scotty for a GCS download. This is a
        # signed, serialized blobstore2.ReadHandle proto which must never be set outside
        # of Bigstore, and is not applicable to non-GCS media downloads.
        # Corresponds to the JSON property `downloadReadHandle`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :download_read_handle
      
        # The blob read token. Needed to read blobs that have not been replicated. Might
        # not be available until the final call.
        # Corresponds to the JSON property `readToken`
        # @return [String]
        attr_accessor :read_token
      
        # Metadata passed from Blobstore -> Scotty for a new GCS upload. This is a
        # signed, serialized blobstore2.BlobMetadataContainer proto which must never be
        # consumed outside of Bigstore, and is not applicable to non-GCS media uploads.
        # Corresponds to the JSON property `uploadMetadataContainer`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :upload_metadata_container
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @blob_generation = args[:blob_generation] if args.key?(:blob_generation)
          @blob_id = args[:blob_id] if args.key?(:blob_id)
          @download_read_handle = args[:download_read_handle] if args.key?(:download_read_handle)
          @read_token = args[:read_token] if args.key?(:read_token)
          @upload_metadata_container = args[:upload_metadata_container] if args.key?(:upload_metadata_container)
        end
      end
      
      # 
      class Campaign
        include Google::Apis::Core::Hashable
      
        # The campaignData object contains details like the campaign's start and end
        # dates, target and source.
        # Corresponds to the JSON property `campaignData`
        # @return [Google::Apis::YoutubePartnerV1::CampaignData]
        attr_accessor :campaign_data
      
        # The unique ID that YouTube uses to identify the campaign.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # The type of the API resource. For campaign resources, this value is
        # youtubePartner#campaign.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The status of the campaign.
        # Corresponds to the JSON property `status`
        # @return [String]
        attr_accessor :status
      
        # The time the campaign was created.
        # Corresponds to the JSON property `timeCreated`
        # @return [String]
        attr_accessor :time_created
      
        # The time the campaign was last modified.
        # Corresponds to the JSON property `timeLastModified`
        # @return [String]
        attr_accessor :time_last_modified
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @campaign_data = args[:campaign_data] if args.key?(:campaign_data)
          @id = args[:id] if args.key?(:id)
          @kind = args[:kind] if args.key?(:kind)
          @status = args[:status] if args.key?(:status)
          @time_created = args[:time_created] if args.key?(:time_created)
          @time_last_modified = args[:time_last_modified] if args.key?(:time_last_modified)
        end
      end
      
      # 
      class CampaignData
        include Google::Apis::Core::Hashable
      
        # The campaignSource object contains information about the assets for which the
        # campaign will generate links.
        # Corresponds to the JSON property `campaignSource`
        # @return [Google::Apis::YoutubePartnerV1::CampaignSource]
        attr_accessor :campaign_source
      
        # The time at which the campaign should expire. Do not specify a value if the
        # campaign has no expiration time.
        # Corresponds to the JSON property `expireTime`
        # @return [String]
        attr_accessor :expire_time
      
        # The user-given name of the campaign.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # A list of videos or channels that will be linked to from claimed videos that
        # are included in the campaign.
        # Corresponds to the JSON property `promotedContent`
        # @return [Array<Google::Apis::YoutubePartnerV1::PromotedContent>]
        attr_accessor :promoted_content
      
        # The time at which the campaign should start. Do not specify a value if the
        # campaign should start immediately.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @campaign_source = args[:campaign_source] if args.key?(:campaign_source)
          @expire_time = args[:expire_time] if args.key?(:expire_time)
          @name = args[:name] if args.key?(:name)
          @promoted_content = args[:promoted_content] if args.key?(:promoted_content)
          @start_time = args[:start_time] if args.key?(:start_time)
        end
      end
      
      # 
      class CampaignList
        include Google::Apis::Core::Hashable
      
        # A list of campaigns.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::YoutubePartnerV1::Campaign>]
        attr_accessor :items
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # campaignList.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @kind = args[:kind] if args.key?(:kind)
        end
      end
      
      # 
      class CampaignSource
        include Google::Apis::Core::Hashable
      
        # The type of the campaign source.
        # Corresponds to the JSON property `sourceType`
        # @return [String]
        attr_accessor :source_type
      
        # A list of values of the campaign source.
        # Corresponds to the JSON property `sourceValue`
        # @return [Array<String>]
        attr_accessor :source_value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @source_type = args[:source_type] if args.key?(:source_type)
          @source_value = args[:source_value] if args.key?(:source_value)
        end
      end
      
      # 
      class CampaignTargetLink
        include Google::Apis::Core::Hashable
      
        # The channel ID or video ID of the link target.
        # Corresponds to the JSON property `targetId`
        # @return [String]
        attr_accessor :target_id
      
        # Indicates whether the link target is a channel or video.
        # Corresponds to the JSON property `targetType`
        # @return [String]
        attr_accessor :target_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @target_id = args[:target_id] if args.key?(:target_id)
          @target_type = args[:target_type] if args.key?(:target_type)
        end
      end
      
      # 
      class Claim
        include Google::Apis::Core::Hashable
      
        # The applied policy for the viewing owner on the claim. This might not be the
        # same as the final claim policy on the video as it does not consider other
        # partners' policy of the same claim.
        # Corresponds to the JSON property `appliedPolicy`
        # @return [Google::Apis::YoutubePartnerV1::Policy]
        attr_accessor :applied_policy
      
        # The unique YouTube asset ID that identifies the asset associated with the
        # claim.
        # Corresponds to the JSON property `assetId`
        # @return [String]
        attr_accessor :asset_id
      
        # Indicates whether or not the claimed video should be blocked anywhere it is
        # not explicitly owned.
        # Corresponds to the JSON property `blockOutsideOwnership`
        # @return [Boolean]
        attr_accessor :block_outside_ownership
        alias_method :block_outside_ownership?, :block_outside_ownership
      
        # This value indicates whether the claim covers the audio, video, or audiovisual
        # portion of the claimed content.
        # Corresponds to the JSON property `contentType`
        # @return [String]
        attr_accessor :content_type
      
        # The ID that YouTube assigns and uses to uniquely identify the claim.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # Indicates whether or not the claim is a partner uploaded claim.
        # Corresponds to the JSON property `isPartnerUploaded`
        # @return [Boolean]
        attr_accessor :is_partner_uploaded
        alias_method :is_partner_uploaded?, :is_partner_uploaded
      
        # The type of the API resource. For claim resources, this value is
        # youtubePartner#claim.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # If this claim was auto-generated based on a provided reference, this section
        # will provide details of the match that generated the claim.
        # Corresponds to the JSON property `matchInfo`
        # @return [Google::Apis::YoutubePartnerV1::MatchInfo]
        attr_accessor :match_info
      
        # 
        # Corresponds to the JSON property `origin`
        # @return [Google::Apis::YoutubePartnerV1::Origin]
        attr_accessor :origin
      
        # The policy provided by the viewing owner on the claim.
        # Corresponds to the JSON property `policy`
        # @return [Google::Apis::YoutubePartnerV1::Policy]
        attr_accessor :policy
      
        # The claim's status. When updating a claim, you can update its status from
        # active to inactive to effectively release the claim, but the API does not
        # support other updates to a claim's status.
        # Corresponds to the JSON property `status`
        # @return [String]
        attr_accessor :status
      
        # The time the claim was created.
        # Corresponds to the JSON property `timeCreated`
        # @return [String]
        attr_accessor :time_created
      
        # UGC type of the claim (standard, premium, song).
        # Corresponds to the JSON property `ugcType`
        # @return [String]
        attr_accessor :ugc_type
      
        # The unique YouTube video ID that identifies the video associated with the
        # claim.
        # Corresponds to the JSON property `videoId`
        # @return [String]
        attr_accessor :video_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @applied_policy = args[:applied_policy] if args.key?(:applied_policy)
          @asset_id = args[:asset_id] if args.key?(:asset_id)
          @block_outside_ownership = args[:block_outside_ownership] if args.key?(:block_outside_ownership)
          @content_type = args[:content_type] if args.key?(:content_type)
          @id = args[:id] if args.key?(:id)
          @is_partner_uploaded = args[:is_partner_uploaded] if args.key?(:is_partner_uploaded)
          @kind = args[:kind] if args.key?(:kind)
          @match_info = args[:match_info] if args.key?(:match_info)
          @origin = args[:origin] if args.key?(:origin)
          @policy = args[:policy] if args.key?(:policy)
          @status = args[:status] if args.key?(:status)
          @time_created = args[:time_created] if args.key?(:time_created)
          @ugc_type = args[:ugc_type] if args.key?(:ugc_type)
          @video_id = args[:video_id] if args.key?(:video_id)
        end
      end
      
      # 
      class ClaimEvent
        include Google::Apis::Core::Hashable
      
        # The type of the API resource. For claimEvent resources, this value is
        # youtubePartner#claimEvent.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # Reason of the event.
        # Corresponds to the JSON property `reason`
        # @return [String]
        attr_accessor :reason
      
        # Data related to source of the event.
        # Corresponds to the JSON property `source`
        # @return [Google::Apis::YoutubePartnerV1::Source]
        attr_accessor :source
      
        # The time when the event occurred.
        # Corresponds to the JSON property `time`
        # @return [String]
        attr_accessor :time
      
        # Type of the event.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        # Details of event's type.
        # Corresponds to the JSON property `typeDetails`
        # @return [Google::Apis::YoutubePartnerV1::TypeDetails]
        attr_accessor :type_details
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @kind = args[:kind] if args.key?(:kind)
          @reason = args[:reason] if args.key?(:reason)
          @source = args[:source] if args.key?(:source)
          @time = args[:time] if args.key?(:time)
          @type = args[:type] if args.key?(:type)
          @type_details = args[:type_details] if args.key?(:type_details)
        end
      end
      
      # 
      class ClaimHistory
        include Google::Apis::Core::Hashable
      
        # A list of claim history events.
        # Corresponds to the JSON property `event`
        # @return [Array<Google::Apis::YoutubePartnerV1::ClaimEvent>]
        attr_accessor :event
      
        # The ID that YouTube assigns and uses to uniquely identify the claim.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # The type of the API resource. For claimHistory resources, this value is
        # youtubePartner#claimHistory.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The external channel id of claimed video's uploader.
        # Corresponds to the JSON property `uploaderChannelId`
        # @return [String]
        attr_accessor :uploader_channel_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @event = args[:event] if args.key?(:event)
          @id = args[:id] if args.key?(:id)
          @kind = args[:kind] if args.key?(:kind)
          @uploader_channel_id = args[:uploader_channel_id] if args.key?(:uploader_channel_id)
        end
      end
      
      # 
      class ClaimListResponse
        include Google::Apis::Core::Hashable
      
        # A list of claims that match the request criteria.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::YoutubePartnerV1::Claim>]
        attr_accessor :items
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # claimList.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The token that can be used as the value of the pageToken parameter to retrieve
        # the next page in the result set.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The pageInfo object encapsulates paging information for the result set.
        # Corresponds to the JSON property `pageInfo`
        # @return [Google::Apis::YoutubePartnerV1::PageInfo]
        attr_accessor :page_info
      
        # The token that can be used as the value of the pageToken parameter to retrieve
        # the previous page in the result set.
        # Corresponds to the JSON property `previousPageToken`
        # @return [String]
        attr_accessor :previous_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @kind = args[:kind] if args.key?(:kind)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @page_info = args[:page_info] if args.key?(:page_info)
          @previous_page_token = args[:previous_page_token] if args.key?(:previous_page_token)
        end
      end
      
      # 
      class ClaimSearchResponse
        include Google::Apis::Core::Hashable
      
        # A list of claims that match the request criteria.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::YoutubePartnerV1::ClaimSnippet>]
        attr_accessor :items
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # claimSnippetList.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The token that can be used as the value of the pageToken parameter to retrieve
        # the next page in the result set.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The pageInfo object encapsulates paging information for the result set.
        # Corresponds to the JSON property `pageInfo`
        # @return [Google::Apis::YoutubePartnerV1::PageInfo]
        attr_accessor :page_info
      
        # The token that can be used as the value of the pageToken parameter to retrieve
        # the previous page in the result set.
        # Corresponds to the JSON property `previousPageToken`
        # @return [String]
        attr_accessor :previous_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @kind = args[:kind] if args.key?(:kind)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @page_info = args[:page_info] if args.key?(:page_info)
          @previous_page_token = args[:previous_page_token] if args.key?(:previous_page_token)
        end
      end
      
      # 
      class ClaimSnippet
        include Google::Apis::Core::Hashable
      
        # The unique YouTube asset ID that identifies the asset associated with the
        # claim.
        # Corresponds to the JSON property `assetId`
        # @return [String]
        attr_accessor :asset_id
      
        # This value indicates whether the claim covers the audio, video, or audiovisual
        # portion of the claimed content.
        # Corresponds to the JSON property `contentType`
        # @return [String]
        attr_accessor :content_type
      
        # The ID that YouTube assigns and uses to uniquely identify the claim.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # Indicates whether or not the claim is a partner uploaded claim.
        # Corresponds to the JSON property `isPartnerUploaded`
        # @return [Boolean]
        attr_accessor :is_partner_uploaded
        alias_method :is_partner_uploaded?, :is_partner_uploaded
      
        # The type of the API resource. For this operation, the value is youtubePartner#
        # claimSnippet.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # 
        # Corresponds to the JSON property `origin`
        # @return [Google::Apis::YoutubePartnerV1::YoutubePartnerApiProtoFrontendV1Origin]
        attr_accessor :origin
      
        # The claim's status.
        # Corresponds to the JSON property `status`
        # @return [String]
        attr_accessor :status
      
        # Indicates that this is a third party claim.
        # Corresponds to the JSON property `thirdPartyClaim`
        # @return [Boolean]
        attr_accessor :third_party_claim
        alias_method :third_party_claim?, :third_party_claim
      
        # The time the claim was created.
        # Corresponds to the JSON property `timeCreated`
        # @return [String]
        attr_accessor :time_created
      
        # The time the claim status and/or status detail was last modified.
        # Corresponds to the JSON property `timeStatusLastModified`
        # @return [String]
        attr_accessor :time_status_last_modified
      
        # The unique YouTube video ID that identifies the video associated with the
        # claim.
        # Corresponds to the JSON property `videoId`
        # @return [String]
        attr_accessor :video_id
      
        # The title of the claimed video.
        # Corresponds to the JSON property `videoTitle`
        # @return [String]
        attr_accessor :video_title
      
        # Number of views for the claimed video.
        # Corresponds to the JSON property `videoViews`
        # @return [Fixnum]
        attr_accessor :video_views
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @asset_id = args[:asset_id] if args.key?(:asset_id)
          @content_type = args[:content_type] if args.key?(:content_type)
          @id = args[:id] if args.key?(:id)
          @is_partner_uploaded = args[:is_partner_uploaded] if args.key?(:is_partner_uploaded)
          @kind = args[:kind] if args.key?(:kind)
          @origin = args[:origin] if args.key?(:origin)
          @status = args[:status] if args.key?(:status)
          @third_party_claim = args[:third_party_claim] if args.key?(:third_party_claim)
          @time_created = args[:time_created] if args.key?(:time_created)
          @time_status_last_modified = args[:time_status_last_modified] if args.key?(:time_status_last_modified)
          @video_id = args[:video_id] if args.key?(:video_id)
          @video_title = args[:video_title] if args.key?(:video_title)
          @video_views = args[:video_views] if args.key?(:video_views)
        end
      end
      
      # A sequence of media data references representing composite data. Introduced to
      # support Bigstore composite objects. For details, visit http://go/bigstore-
      # composites.
      class CompositeMedia
        include Google::Apis::Core::Hashable
      
        # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be
        # the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating
        # v1, use blobstore2_info instead. For now, any v2 blob will also be represented
        # in this field as v1 BlobRef.
        # Corresponds to the JSON property `blobRef`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :blob_ref
      
        # Information to read/write to blobstore2.
        # Corresponds to the JSON property `blobstore2Info`
        # @return [Google::Apis::YoutubePartnerV1::Blobstore2Info]
        attr_accessor :blobstore2_info
      
        # A binary data reference for a media download. Serves as a technology-agnostic
        # binary reference in some Google infrastructure. This value is a serialized
        # storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get
        # around the fact that the cosmo proto (as well as others it includes) doesn't
        # support JavaScript. This prevents us from including the actual type of this
        # field.
        # Corresponds to the JSON property `cosmoBinaryReference`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :cosmo_binary_reference
      
        # crc32.c hash for the payload.
        # Corresponds to the JSON property `crc32cHash`
        # @return [Fixnum]
        attr_accessor :crc32c_hash
      
        # Media data, set if reference_type is INLINE
        # Corresponds to the JSON property `inline`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :inline
      
        # Size of the data, in bytes
        # Corresponds to the JSON property `length`
        # @return [Fixnum]
        attr_accessor :length
      
        # MD5 hash for the payload.
        # Corresponds to the JSON property `md5Hash`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :md5_hash
      
        # This is a copy of the tech.blob.ObjectId proto, which could not be used
        # directly here due to transitive closure issues with JavaScript support; see
        # http://b/8801763.
        # Corresponds to the JSON property `objectId`
        # @return [Google::Apis::YoutubePartnerV1::ObjectIdProp]
        attr_accessor :object_id_prop
      
        # Path to the data, set if reference_type is PATH
        # Corresponds to the JSON property `path`
        # @return [String]
        attr_accessor :path
      
        # Describes what the field reference contains.
        # Corresponds to the JSON property `referenceType`
        # @return [String]
        attr_accessor :reference_type
      
        # SHA-1 hash for the payload.
        # Corresponds to the JSON property `sha1Hash`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :sha1_hash
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @blob_ref = args[:blob_ref] if args.key?(:blob_ref)
          @blobstore2_info = args[:blobstore2_info] if args.key?(:blobstore2_info)
          @cosmo_binary_reference = args[:cosmo_binary_reference] if args.key?(:cosmo_binary_reference)
          @crc32c_hash = args[:crc32c_hash] if args.key?(:crc32c_hash)
          @inline = args[:inline] if args.key?(:inline)
          @length = args[:length] if args.key?(:length)
          @md5_hash = args[:md5_hash] if args.key?(:md5_hash)
          @object_id_prop = args[:object_id_prop] if args.key?(:object_id_prop)
          @path = args[:path] if args.key?(:path)
          @reference_type = args[:reference_type] if args.key?(:reference_type)
          @sha1_hash = args[:sha1_hash] if args.key?(:sha1_hash)
        end
      end
      
      # 
      class Conditions
        include Google::Apis::Core::Hashable
      
        # This match condition specifies whether the user- or partner-uploaded content
        # needs to match the audio, video or audiovisual content of a reference file for
        # the rule to apply.
        # Corresponds to the JSON property `contentMatchType`
        # @return [Array<String>]
        attr_accessor :content_match_type
      
        # This match condition specifies an amount of time that the user- or partner-
        # uploaded content needs to match a reference file for the rule to apply.
        # Corresponds to the JSON property `matchDuration`
        # @return [Array<Google::Apis::YoutubePartnerV1::IntervalCondition>]
        attr_accessor :match_duration
      
        # This match condition specifies a percentage of the user- or partner-uploaded
        # content that needs to match a reference file for the rule to apply.
        # Corresponds to the JSON property `matchPercent`
        # @return [Array<Google::Apis::YoutubePartnerV1::IntervalCondition>]
        attr_accessor :match_percent
      
        # This match condition indicates that the reference must be a certain duration
        # for the rule to apply.
        # Corresponds to the JSON property `referenceDuration`
        # @return [Array<Google::Apis::YoutubePartnerV1::IntervalCondition>]
        attr_accessor :reference_duration
      
        # This match condition indicates that the specified percentage of a reference
        # file must match the user- or partner-uploaded content for the rule to apply.
        # Corresponds to the JSON property `referencePercent`
        # @return [Array<Google::Apis::YoutubePartnerV1::IntervalCondition>]
        attr_accessor :reference_percent
      
        # This watch condition specifies where users are (or or not) allowed to watch (
        # or listen to) an asset. YouTube determines whether the condition is satisfied
        # based on the user's location.
        # Corresponds to the JSON property `requiredTerritories`
        # @return [Google::Apis::YoutubePartnerV1::TerritoryCondition]
        attr_accessor :required_territories
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content_match_type = args[:content_match_type] if args.key?(:content_match_type)
          @match_duration = args[:match_duration] if args.key?(:match_duration)
          @match_percent = args[:match_percent] if args.key?(:match_percent)
          @reference_duration = args[:reference_duration] if args.key?(:reference_duration)
          @reference_percent = args[:reference_percent] if args.key?(:reference_percent)
          @required_territories = args[:required_territories] if args.key?(:required_territories)
        end
      end
      
      # 
      class ConflictingOwnership
        include Google::Apis::Core::Hashable
      
        # The ID of the conflicting asset's owner.
        # Corresponds to the JSON property `owner`
        # @return [String]
        attr_accessor :owner
      
        # The percentage of the asset that the owner controls or administers.
        # Corresponds to the JSON property `ratio`
        # @return [Float]
        attr_accessor :ratio
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @owner = args[:owner] if args.key?(:owner)
          @ratio = args[:ratio] if args.key?(:ratio)
        end
      end
      
      # 
      class ContentOwner
        include Google::Apis::Core::Hashable
      
        # The email address visible to other partners for use in managing asset
        # ownership conflicts.
        # Corresponds to the JSON property `conflictNotificationEmail`
        # @return [String]
        attr_accessor :conflict_notification_email
      
        # The content owner's display name.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # The email address(es) to which YouTube sends claim dispute notifications and
        # possible claim notifications.
        # Corresponds to the JSON property `disputeNotificationEmails`
        # @return [Array<String>]
        attr_accessor :dispute_notification_emails
      
        # The email address(es) to which YouTube sends fingerprint reports.
        # Corresponds to the JSON property `fingerprintReportNotificationEmails`
        # @return [Array<String>]
        attr_accessor :fingerprint_report_notification_emails
      
        # A unique ID that YouTube uses to identify the content owner.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # The type of the API resource. For content owner resources, the value is
        # youtubePartner#contentOwner.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The email address(es) to which YouTube sends CMS account details and report
        # notifications.
        # Corresponds to the JSON property `primaryNotificationEmails`
        # @return [Array<String>]
        attr_accessor :primary_notification_emails
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conflict_notification_email = args[:conflict_notification_email] if args.key?(:conflict_notification_email)
          @display_name = args[:display_name] if args.key?(:display_name)
          @dispute_notification_emails = args[:dispute_notification_emails] if args.key?(:dispute_notification_emails)
          @fingerprint_report_notification_emails = args[:fingerprint_report_notification_emails] if args.key?(:fingerprint_report_notification_emails)
          @id = args[:id] if args.key?(:id)
          @kind = args[:kind] if args.key?(:kind)
          @primary_notification_emails = args[:primary_notification_emails] if args.key?(:primary_notification_emails)
        end
      end
      
      # 
      class ContentOwnerListResponse
        include Google::Apis::Core::Hashable
      
        # A list of content owners that match the request criteria.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::YoutubePartnerV1::ContentOwner>]
        attr_accessor :items
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # contentOwnerList.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @kind = args[:kind] if args.key?(:kind)
        end
      end
      
      # Detailed Content-Type information from Scotty. The Content-Type of the media
      # will typically be filled in by the header or Scotty's best_guess, but this
      # extended information provides the backend with more information so that it can
      # make a better decision if needed. This is only used on media upload requests
      # from Scotty.
      class ContentTypeInfo
        include Google::Apis::Core::Hashable
      
        # Scotty's best guess of what the content type of the file is.
        # Corresponds to the JSON property `bestGuess`
        # @return [String]
        attr_accessor :best_guess
      
        # The content type of the file derived by looking at specific bytes (i.e. "magic
        # bytes") of the actual file.
        # Corresponds to the JSON property `fromBytes`
        # @return [String]
        attr_accessor :from_bytes
      
        # The content type of the file derived from the file extension of the original
        # file name used by the client.
        # Corresponds to the JSON property `fromFileName`
        # @return [String]
        attr_accessor :from_file_name
      
        # The content type of the file as specified in the request headers, multipart
        # headers, or RUPIO start request.
        # Corresponds to the JSON property `fromHeader`
        # @return [String]
        attr_accessor :from_header
      
        # The content type of the file derived from the file extension of the URL path.
        # The URL path is assumed to represent a file name (which is typically only true
        # for agents that are providing a REST API).
        # Corresponds to the JSON property `fromUrlPath`
        # @return [String]
        attr_accessor :from_url_path
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @best_guess = args[:best_guess] if args.key?(:best_guess)
          @from_bytes = args[:from_bytes] if args.key?(:from_bytes)
          @from_file_name = args[:from_file_name] if args.key?(:from_file_name)
          @from_header = args[:from_header] if args.key?(:from_header)
          @from_url_path = args[:from_url_path] if args.key?(:from_url_path)
        end
      end
      
      # 
      class CountriesRestriction
        include Google::Apis::Core::Hashable
      
        # A list of ad formats that can be used in the specified countries.
        # Corresponds to the JSON property `adFormats`
        # @return [Array<String>]
        attr_accessor :ad_formats
      
        # A list of ISO 3166-1 alpha-2 country codes that identify the countries where
        # ads are enabled.
        # Corresponds to the JSON property `territories`
        # @return [Array<String>]
        attr_accessor :territories
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @ad_formats = args[:ad_formats] if args.key?(:ad_formats)
          @territories = args[:territories] if args.key?(:territories)
        end
      end
      
      # 
      class CuepointSettings
        include Google::Apis::Core::Hashable
      
        # The cuepoint's type. See the Getting started guide for an explanation of the
        # different types of cuepoints. Also see the Life of a broadcast document for
        # best practices about inserting cuepoints during your broadcast.
        # Corresponds to the JSON property `cueType`
        # @return [String]
        attr_accessor :cue_type
      
        # The cuepoint's duration, in seconds. This value must be specified if the
        # cueType is ad and is ignored otherwise.
        # Corresponds to the JSON property `durationSecs`
        # @return [Fixnum]
        attr_accessor :duration_secs
      
        # This value specifies a point in time in the video when viewers should see an
        # ad or in-stream slate. The property value identifies a time offset, in
        # milliseconds, from the beginning of the monitor stream. Though measured in
        # milliseconds, the value is actually an approximation, and YouTube will insert
        # the cuepoint as closely as possible to that time. You should not specify a
        # value for this parameter if your broadcast does not have a monitor stream.
        # This property's default value is 0, which indicates that the cuepoint should
        # be inserted as soon as possible. If your broadcast stream is not delayed, then
        # 0 is also the only valid value. However, if your broadcast stream is delayed,
        # then the property value can specify the time when the cuepoint should be
        # inserted. See the Getting started guide for more details. *Note:* If your
        # broadcast had a testing phase, the offset is measured from the time that the
        # testing phase began.
        # Corresponds to the JSON property `offsetTimeMs`
        # @return [Fixnum]
        attr_accessor :offset_time_ms
      
        # This value specifies the wall clock time at which the cuepoint should be
        # inserted. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sssZ) format.
        # Corresponds to the JSON property `walltime`
        # @return [String]
        attr_accessor :walltime
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @cue_type = args[:cue_type] if args.key?(:cue_type)
          @duration_secs = args[:duration_secs] if args.key?(:duration_secs)
          @offset_time_ms = args[:offset_time_ms] if args.key?(:offset_time_ms)
          @walltime = args[:walltime] if args.key?(:walltime)
        end
      end
      
      # 
      class Date
        include Google::Apis::Core::Hashable
      
        # The date's day. The value should be an integer between 1 and 31. Note that
        # some day-month combinations are not valid.
        # Corresponds to the JSON property `day`
        # @return [Fixnum]
        attr_accessor :day
      
        # The date's month. The value should be an integer between 1 and 12.
        # Corresponds to the JSON property `month`
        # @return [Fixnum]
        attr_accessor :month
      
        # The date's year in the Gregorian Calendar. Assumed to be A.D.
        # Corresponds to the JSON property `year`
        # @return [Fixnum]
        attr_accessor :year
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @day = args[:day] if args.key?(:day)
          @month = args[:month] if args.key?(:month)
          @year = args[:year] if args.key?(:year)
        end
      end
      
      # Backend response for a Diff get checksums response. For details on the Scotty
      # Diff protocol, visit http://go/scotty-diff-protocol.
      class DiffChecksumsResponse
        include Google::Apis::Core::Hashable
      
        # A sequence of media data references representing composite data. Introduced to
        # support Bigstore composite objects. For details, visit http://go/bigstore-
        # composites.
        # Corresponds to the JSON property `checksumsLocation`
        # @return [Google::Apis::YoutubePartnerV1::CompositeMedia]
        attr_accessor :checksums_location
      
        # The chunk size of checksums. Must be a multiple of 256KB.
        # Corresponds to the JSON property `chunkSizeBytes`
        # @return [Fixnum]
        attr_accessor :chunk_size_bytes
      
        # A sequence of media data references representing composite data. Introduced to
        # support Bigstore composite objects. For details, visit http://go/bigstore-
        # composites.
        # Corresponds to the JSON property `objectLocation`
        # @return [Google::Apis::YoutubePartnerV1::CompositeMedia]
        attr_accessor :object_location
      
        # The total size of the server object.
        # Corresponds to the JSON property `objectSizeBytes`
        # @return [Fixnum]
        attr_accessor :object_size_bytes
      
        # The object version of the object the checksums are being returned for.
        # Corresponds to the JSON property `objectVersion`
        # @return [String]
        attr_accessor :object_version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @checksums_location = args[:checksums_location] if args.key?(:checksums_location)
          @chunk_size_bytes = args[:chunk_size_bytes] if args.key?(:chunk_size_bytes)
          @object_location = args[:object_location] if args.key?(:object_location)
          @object_size_bytes = args[:object_size_bytes] if args.key?(:object_size_bytes)
          @object_version = args[:object_version] if args.key?(:object_version)
        end
      end
      
      # Backend response for a Diff download response. For details on the Scotty Diff
      # protocol, visit http://go/scotty-diff-protocol.
      class DiffDownloadResponse
        include Google::Apis::Core::Hashable
      
        # A sequence of media data references representing composite data. Introduced to
        # support Bigstore composite objects. For details, visit http://go/bigstore-
        # composites.
        # Corresponds to the JSON property `objectLocation`
        # @return [Google::Apis::YoutubePartnerV1::CompositeMedia]
        attr_accessor :object_location
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @object_location = args[:object_location] if args.key?(:object_location)
        end
      end
      
      # A Diff upload request. For details on the Scotty Diff protocol, visit http://
      # go/scotty-diff-protocol.
      class DiffUploadRequest
        include Google::Apis::Core::Hashable
      
        # A sequence of media data references representing composite data. Introduced to
        # support Bigstore composite objects. For details, visit http://go/bigstore-
        # composites.
        # Corresponds to the JSON property `checksumsInfo`
        # @return [Google::Apis::YoutubePartnerV1::CompositeMedia]
        attr_accessor :checksums_info
      
        # A sequence of media data references representing composite data. Introduced to
        # support Bigstore composite objects. For details, visit http://go/bigstore-
        # composites.
        # Corresponds to the JSON property `objectInfo`
        # @return [Google::Apis::YoutubePartnerV1::CompositeMedia]
        attr_accessor :object_info
      
        # The object version of the object that is the base version the incoming diff
        # script will be applied to. This field will always be filled in.
        # Corresponds to the JSON property `objectVersion`
        # @return [String]
        attr_accessor :object_version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @checksums_info = args[:checksums_info] if args.key?(:checksums_info)
          @object_info = args[:object_info] if args.key?(:object_info)
          @object_version = args[:object_version] if args.key?(:object_version)
        end
      end
      
      # Backend response for a Diff upload request. For details on the Scotty Diff
      # protocol, visit http://go/scotty-diff-protocol.
      class DiffUploadResponse
        include Google::Apis::Core::Hashable
      
        # The object version of the object at the server. Must be included in the end
        # notification response. The version in the end notification response must
        # correspond to the new version of the object that is now stored at the server,
        # after the upload.
        # Corresponds to the JSON property `objectVersion`
        # @return [String]
        attr_accessor :object_version
      
        # A sequence of media data references representing composite data. Introduced to
        # support Bigstore composite objects. For details, visit http://go/bigstore-
        # composites.
        # Corresponds to the JSON property `originalObject`
        # @return [Google::Apis::YoutubePartnerV1::CompositeMedia]
        attr_accessor :original_object
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @object_version = args[:object_version] if args.key?(:object_version)
          @original_object = args[:original_object] if args.key?(:original_object)
        end
      end
      
      # Backend response for a Diff get version response. For details on the Scotty
      # Diff protocol, visit http://go/scotty-diff-protocol.
      class DiffVersionResponse
        include Google::Apis::Core::Hashable
      
        # The total size of the server object.
        # Corresponds to the JSON property `objectSizeBytes`
        # @return [Fixnum]
        attr_accessor :object_size_bytes
      
        # The version of the object stored at the server.
        # Corresponds to the JSON property `objectVersion`
        # @return [String]
        attr_accessor :object_version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @object_size_bytes = args[:object_size_bytes] if args.key?(:object_size_bytes)
          @object_version = args[:object_version] if args.key?(:object_version)
        end
      end
      
      # Parameters specific to media downloads.
      class DownloadParameters
        include Google::Apis::Core::Hashable
      
        # A boolean to be returned in the response to Scotty. Allows/disallows gzip
        # encoding of the payload content when the server thinks it's advantageous (
        # hence, does not guarantee compression) which allows Scotty to GZip the
        # response to the client.
        # Corresponds to the JSON property `allowGzipCompression`
        # @return [Boolean]
        attr_accessor :allow_gzip_compression
        alias_method :allow_gzip_compression?, :allow_gzip_compression
      
        # Determining whether or not Apiary should skip the inclusion of any Content-
        # Range header on its response to Scotty.
        # Corresponds to the JSON property `ignoreRange`
        # @return [Boolean]
        attr_accessor :ignore_range
        alias_method :ignore_range?, :ignore_range
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allow_gzip_compression = args[:allow_gzip_compression] if args.key?(:allow_gzip_compression)
          @ignore_range = args[:ignore_range] if args.key?(:ignore_range)
        end
      end
      
      # A generic empty message that you can re-use to avoid defining duplicated empty
      # messages in your APIs. A typical example is to use it as the request or the
      # response type of an API method. For instance: service Foo ` rpc Bar(google.
      # protobuf.Empty) returns (google.protobuf.Empty); ` The JSON representation for
      # `Empty` is empty JSON object ````.
      class Empty
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # 
      class ExcludedInterval
        include Google::Apis::Core::Hashable
      
        # The end (inclusive) time in seconds of the time window. The value can be any
        # value greater than low. If high is greater than the length of the reference,
        # the interval between low and the end of the reference will be excluded. Every
        # interval must specify a value for this field.
        # Corresponds to the JSON property `high`
        # @return [Float]
        attr_accessor :high
      
        # The start (inclusive) time in seconds of the time window. The value can be any
        # value between 0 and high. Every interval must specify a value for this field.
        # Corresponds to the JSON property `low`
        # @return [Float]
        attr_accessor :low
      
        # The source of the request to exclude the interval from Content ID matching.
        # Corresponds to the JSON property `origin`
        # @return [String]
        attr_accessor :origin
      
        # The date and time that the exclusion was created. The value is specified in
        # RFC 3339 (YYYY-MM-DDThh:mm:ss.000Z) format.
        # Corresponds to the JSON property `timeCreated`
        # @return [String]
        attr_accessor :time_created
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @high = args[:high] if args.key?(:high)
          @low = args[:low] if args.key?(:low)
          @origin = args[:origin] if args.key?(:origin)
          @time_created = args[:time_created] if args.key?(:time_created)
        end
      end
      
      # 
      class IntervalCondition
        include Google::Apis::Core::Hashable
      
        # The maximum (inclusive) allowed value for the condition to be satisfied. The
        # default value is ∞.
        # Corresponds to the JSON property `high`
        # @return [Float]
        attr_accessor :high
      
        # The minimum (inclusive) allowed value for the condition to be satisfied. The
        # default value is -∞.
        # Corresponds to the JSON property `low`
        # @return [Float]
        attr_accessor :low
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @high = args[:high] if args.key?(:high)
          @low = args[:low] if args.key?(:low)
        end
      end
      
      # 
      class LiveCuepoint
        include Google::Apis::Core::Hashable
      
        # The ID that YouTube assigns to uniquely identify the broadcast into which the
        # cuepoint is being inserted.
        # Corresponds to the JSON property `broadcastId`
        # @return [String]
        attr_accessor :broadcast_id
      
        # A value that YouTube assigns to uniquely identify the cuepoint.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # The type of the API resource. For liveCuepoint resources, the value is
        # youtubePartner#liveCuepoint.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The *settings* object defines the cuepoint's settings.
        # Corresponds to the JSON property `settings`
        # @return [Google::Apis::YoutubePartnerV1::CuepointSettings]
        attr_accessor :settings
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @broadcast_id = args[:broadcast_id] if args.key?(:broadcast_id)
          @id = args[:id] if args.key?(:id)
          @kind = args[:kind] if args.key?(:kind)
          @settings = args[:settings] if args.key?(:settings)
        end
      end
      
      # 
      class LongestMatch
        include Google::Apis::Core::Hashable
      
        # The duration of the longest match between the reference and the user video.
        # Corresponds to the JSON property `durationSecs`
        # @return [Fixnum]
        attr_accessor :duration_secs
      
        # The offset in seconds into the reference at which the longest match began.
        # Corresponds to the JSON property `referenceOffset`
        # @return [Fixnum]
        attr_accessor :reference_offset
      
        # The offset in seconds into the user video at which the longest match began.
        # Corresponds to the JSON property `userVideoOffset`
        # @return [Fixnum]
        attr_accessor :user_video_offset
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @duration_secs = args[:duration_secs] if args.key?(:duration_secs)
          @reference_offset = args[:reference_offset] if args.key?(:reference_offset)
          @user_video_offset = args[:user_video_offset] if args.key?(:user_video_offset)
        end
      end
      
      # 
      class MatchInfo
        include Google::Apis::Core::Hashable
      
        # Details of the longest match between the reference and the user video.
        # Corresponds to the JSON property `longestMatch`
        # @return [Google::Apis::YoutubePartnerV1::LongestMatch]
        attr_accessor :longest_match
      
        # Details about each match segment. Each item in the list contains information
        # about one match segment associated with the claim. It is possible to have
        # multiple match segments. For example, if the audio and video content of an
        # uploaded video match that of a reference video, there would be two match
        # segments. One segment would describe the audio match and the other would
        # describe the video match.
        # Corresponds to the JSON property `matchSegments`
        # @return [Array<Google::Apis::YoutubePartnerV1::MatchSegment>]
        attr_accessor :match_segments
      
        # The reference ID that generated this match.
        # Corresponds to the JSON property `referenceId`
        # @return [String]
        attr_accessor :reference_id
      
        # Details of the total amount of reference and user video content which matched
        # each other. Note these two values may differ if either the reference or the
        # user video contains a loop.
        # Corresponds to the JSON property `totalMatch`
        # @return [Google::Apis::YoutubePartnerV1::TotalMatch]
        attr_accessor :total_match
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @longest_match = args[:longest_match] if args.key?(:longest_match)
          @match_segments = args[:match_segments] if args.key?(:match_segments)
          @reference_id = args[:reference_id] if args.key?(:reference_id)
          @total_match = args[:total_match] if args.key?(:total_match)
        end
      end
      
      # 
      class MatchSegment
        include Google::Apis::Core::Hashable
      
        # Identifies the manner in which the claimed video matches the reference video.
        # Corresponds to the JSON property `channel`
        # @return [String]
        attr_accessor :channel
      
        # On insert operation of manual claims, the manual_segment object contains
        # information about the specific portion of the video that is claimed to be
        # matching.
        # Corresponds to the JSON property `manual_segment`
        # @return [Google::Apis::YoutubePartnerV1::Segment2]
        attr_accessor :manual_segment
      
        # The reference_segment object contains information about the matched portion of
        # the reference content.
        # Corresponds to the JSON property `reference_segment`
        # @return [Google::Apis::YoutubePartnerV1::Segment]
        attr_accessor :reference_segment
      
        # The video_segment object contains information about the matched portion of the
        # claimed video.
        # Corresponds to the JSON property `video_segment`
        # @return [Google::Apis::YoutubePartnerV1::Segment]
        attr_accessor :video_segment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @channel = args[:channel] if args.key?(:channel)
          @manual_segment = args[:manual_segment] if args.key?(:manual_segment)
          @reference_segment = args[:reference_segment] if args.key?(:reference_segment)
          @video_segment = args[:video_segment] if args.key?(:video_segment)
        end
      end
      
      # A reference to data stored on the filesystem, on GFS or in blobstore.
      class Media
        include Google::Apis::Core::Hashable
      
        # Deprecated, use one of explicit hash type fields instead. Algorithm used for
        # calculating the hash. As of 2011/01/21, "MD5" is the only possible value for
        # this field. New values may be added at any time.
        # Corresponds to the JSON property `algorithm`
        # @return [String]
        attr_accessor :algorithm
      
        # Use object_id instead.
        # Corresponds to the JSON property `bigstoreObjectRef`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :bigstore_object_ref
      
        # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be
        # the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating
        # v1, use blobstore2_info instead. For now, any v2 blob will also be represented
        # in this field as v1 BlobRef.
        # Corresponds to the JSON property `blobRef`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :blob_ref
      
        # Information to read/write to blobstore2.
        # Corresponds to the JSON property `blobstore2Info`
        # @return [Google::Apis::YoutubePartnerV1::Blobstore2Info]
        attr_accessor :blobstore2_info
      
        # A composite media composed of one or more media objects, set if reference_type
        # is COMPOSITE_MEDIA. The media length field must be set to the sum of the
        # lengths of all composite media objects. Note: All composite media must have
        # length specified.
        # Corresponds to the JSON property `compositeMedia`
        # @return [Array<Google::Apis::YoutubePartnerV1::CompositeMedia>]
        attr_accessor :composite_media
      
        # MIME type of the data
        # Corresponds to the JSON property `contentType`
        # @return [String]
        attr_accessor :content_type
      
        # Detailed Content-Type information from Scotty. The Content-Type of the media
        # will typically be filled in by the header or Scotty's best_guess, but this
        # extended information provides the backend with more information so that it can
        # make a better decision if needed. This is only used on media upload requests
        # from Scotty.
        # Corresponds to the JSON property `contentTypeInfo`
        # @return [Google::Apis::YoutubePartnerV1::ContentTypeInfo]
        attr_accessor :content_type_info
      
        # A binary data reference for a media download. Serves as a technology-agnostic
        # binary reference in some Google infrastructure. This value is a serialized
        # storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get
        # around the fact that the cosmo proto (as well as others it includes) doesn't
        # support JavaScript. This prevents us from including the actual type of this
        # field.
        # Corresponds to the JSON property `cosmoBinaryReference`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :cosmo_binary_reference
      
        # For Scotty Uploads: Scotty-provided hashes for uploads For Scotty Downloads: (
        # WARNING: DO NOT USE WITHOUT PERMISSION FROM THE SCOTTY TEAM.) A Hash provided
        # by the agent to be used to verify the data being downloaded. Currently only
        # supported for inline payloads. Further, only crc32c_hash is currently
        # supported.
        # Corresponds to the JSON property `crc32cHash`
        # @return [Fixnum]
        attr_accessor :crc32c_hash
      
        # Backend response for a Diff get checksums response. For details on the Scotty
        # Diff protocol, visit http://go/scotty-diff-protocol.
        # Corresponds to the JSON property `diffChecksumsResponse`
        # @return [Google::Apis::YoutubePartnerV1::DiffChecksumsResponse]
        attr_accessor :diff_checksums_response
      
        # Backend response for a Diff download response. For details on the Scotty Diff
        # protocol, visit http://go/scotty-diff-protocol.
        # Corresponds to the JSON property `diffDownloadResponse`
        # @return [Google::Apis::YoutubePartnerV1::DiffDownloadResponse]
        attr_accessor :diff_download_response
      
        # A Diff upload request. For details on the Scotty Diff protocol, visit http://
        # go/scotty-diff-protocol.
        # Corresponds to the JSON property `diffUploadRequest`
        # @return [Google::Apis::YoutubePartnerV1::DiffUploadRequest]
        attr_accessor :diff_upload_request
      
        # Backend response for a Diff upload request. For details on the Scotty Diff
        # protocol, visit http://go/scotty-diff-protocol.
        # Corresponds to the JSON property `diffUploadResponse`
        # @return [Google::Apis::YoutubePartnerV1::DiffUploadResponse]
        attr_accessor :diff_upload_response
      
        # Backend response for a Diff get version response. For details on the Scotty
        # Diff protocol, visit http://go/scotty-diff-protocol.
        # Corresponds to the JSON property `diffVersionResponse`
        # @return [Google::Apis::YoutubePartnerV1::DiffVersionResponse]
        attr_accessor :diff_version_response
      
        # Parameters specific to media downloads.
        # Corresponds to the JSON property `downloadParameters`
        # @return [Google::Apis::YoutubePartnerV1::DownloadParameters]
        attr_accessor :download_parameters
      
        # Original file name
        # Corresponds to the JSON property `filename`
        # @return [String]
        attr_accessor :filename
      
        # Deprecated, use one of explicit hash type fields instead. These two hash
        # related fields will only be populated on Scotty based media uploads and will
        # contain the content of the hash group in the NotificationRequest: http://cs/#
        # google3/uploader/service/proto/upload_listener.proto&q=class:Hash Hex encoded
        # hash value of the uploaded media.
        # Corresponds to the JSON property `hash`
        # @return [String]
        attr_accessor :hash_prop
      
        # For Scotty uploads only. If a user sends a hash code and the backend has
        # requested that Scotty verify the upload against the client hash, Scotty will
        # perform the check on behalf of the backend and will reject it if the hashes
        # don't match. This is set to true if Scotty performed this verification.
        # Corresponds to the JSON property `hashVerified`
        # @return [Boolean]
        attr_accessor :hash_verified
        alias_method :hash_verified?, :hash_verified
      
        # Media data, set if reference_type is INLINE
        # Corresponds to the JSON property `inline`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :inline
      
        # |is_potential_retry| is set false only when Scotty is certain that it has not
        # sent the request before. When a client resumes an upload, this field must be
        # set true in agent calls, because Scotty cannot be certain that it has never
        # sent the request before due to potential failure in the session state
        # persistence.
        # Corresponds to the JSON property `isPotentialRetry`
        # @return [Boolean]
        attr_accessor :is_potential_retry
        alias_method :is_potential_retry?, :is_potential_retry
      
        # Size of the data, in bytes
        # Corresponds to the JSON property `length`
        # @return [Fixnum]
        attr_accessor :length
      
        # Scotty-provided MD5 hash for an upload.
        # Corresponds to the JSON property `md5Hash`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :md5_hash
      
        # Media id to forward to the operation GetMedia. Can be set if reference_type is
        # GET_MEDIA.
        # Corresponds to the JSON property `mediaId`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :media_id
      
        # This is a copy of the tech.blob.ObjectId proto, which could not be used
        # directly here due to transitive closure issues with JavaScript support; see
        # http://b/8801763.
        # Corresponds to the JSON property `objectId`
        # @return [Google::Apis::YoutubePartnerV1::ObjectIdProp]
        attr_accessor :object_id_prop
      
        # Path to the data, set if reference_type is PATH
        # Corresponds to the JSON property `path`
        # @return [String]
        attr_accessor :path
      
        # Describes what the field reference contains.
        # Corresponds to the JSON property `referenceType`
        # @return [String]
        attr_accessor :reference_type
      
        # Scotty-provided SHA1 hash for an upload.
        # Corresponds to the JSON property `sha1Hash`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :sha1_hash
      
        # Scotty-provided SHA256 hash for an upload.
        # Corresponds to the JSON property `sha256Hash`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :sha256_hash
      
        # Time at which the media data was last updated, in milliseconds since UNIX
        # epoch
        # Corresponds to the JSON property `timestamp`
        # @return [Fixnum]
        attr_accessor :timestamp
      
        # A unique fingerprint/version id for the media data
        # Corresponds to the JSON property `token`
        # @return [String]
        attr_accessor :token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @algorithm = args[:algorithm] if args.key?(:algorithm)
          @bigstore_object_ref = args[:bigstore_object_ref] if args.key?(:bigstore_object_ref)
          @blob_ref = args[:blob_ref] if args.key?(:blob_ref)
          @blobstore2_info = args[:blobstore2_info] if args.key?(:blobstore2_info)
          @composite_media = args[:composite_media] if args.key?(:composite_media)
          @content_type = args[:content_type] if args.key?(:content_type)
          @content_type_info = args[:content_type_info] if args.key?(:content_type_info)
          @cosmo_binary_reference = args[:cosmo_binary_reference] if args.key?(:cosmo_binary_reference)
          @crc32c_hash = args[:crc32c_hash] if args.key?(:crc32c_hash)
          @diff_checksums_response = args[:diff_checksums_response] if args.key?(:diff_checksums_response)
          @diff_download_response = args[:diff_download_response] if args.key?(:diff_download_response)
          @diff_upload_request = args[:diff_upload_request] if args.key?(:diff_upload_request)
          @diff_upload_response = args[:diff_upload_response] if args.key?(:diff_upload_response)
          @diff_version_response = args[:diff_version_response] if args.key?(:diff_version_response)
          @download_parameters = args[:download_parameters] if args.key?(:download_parameters)
          @filename = args[:filename] if args.key?(:filename)
          @hash_prop = args[:hash_prop] if args.key?(:hash_prop)
          @hash_verified = args[:hash_verified] if args.key?(:hash_verified)
          @inline = args[:inline] if args.key?(:inline)
          @is_potential_retry = args[:is_potential_retry] if args.key?(:is_potential_retry)
          @length = args[:length] if args.key?(:length)
          @md5_hash = args[:md5_hash] if args.key?(:md5_hash)
          @media_id = args[:media_id] if args.key?(:media_id)
          @object_id_prop = args[:object_id_prop] if args.key?(:object_id_prop)
          @path = args[:path] if args.key?(:path)
          @reference_type = args[:reference_type] if args.key?(:reference_type)
          @sha1_hash = args[:sha1_hash] if args.key?(:sha1_hash)
          @sha256_hash = args[:sha256_hash] if args.key?(:sha256_hash)
          @timestamp = args[:timestamp] if args.key?(:timestamp)
          @token = args[:token] if args.key?(:token)
        end
      end
      
      # Extra information added to operations that support Scotty media requests.
      class MediaRequestInfo
        include Google::Apis::Core::Hashable
      
        # The number of current bytes uploaded or downloaded.
        # Corresponds to the JSON property `currentBytes`
        # @return [Fixnum]
        attr_accessor :current_bytes
      
        # Data to be copied to backend requests. Custom data is returned to Scotty in
        # the agent_state field, which Scotty will then provide in subsequent upload
        # notifications.
        # Corresponds to the JSON property `customData`
        # @return [String]
        attr_accessor :custom_data
      
        # Set if the http request info is diff encoded. The value of this field is the
        # version number of the base revision. This is corresponding to Apiary's
        # mediaDiffObjectVersion (//depot/google3/java/com/google/api/server/media/
        # variable/DiffObjectVersionVariable.java). See go/esf-scotty-diff-upload for
        # more information.
        # Corresponds to the JSON property `diffObjectVersion`
        # @return [String]
        attr_accessor :diff_object_version
      
        # The type of notification received from Scotty.
        # Corresponds to the JSON property `notificationType`
        # @return [String]
        attr_accessor :notification_type
      
        # The Scotty request ID.
        # Corresponds to the JSON property `requestId`
        # @return [String]
        attr_accessor :request_id
      
        # The total size of the file.
        # Corresponds to the JSON property `totalBytes`
        # @return [Fixnum]
        attr_accessor :total_bytes
      
        # Whether the total bytes field contains an estimated data.
        # Corresponds to the JSON property `totalBytesIsEstimated`
        # @return [Boolean]
        attr_accessor :total_bytes_is_estimated
        alias_method :total_bytes_is_estimated?, :total_bytes_is_estimated
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @current_bytes = args[:current_bytes] if args.key?(:current_bytes)
          @custom_data = args[:custom_data] if args.key?(:custom_data)
          @diff_object_version = args[:diff_object_version] if args.key?(:diff_object_version)
          @notification_type = args[:notification_type] if args.key?(:notification_type)
          @request_id = args[:request_id] if args.key?(:request_id)
          @total_bytes = args[:total_bytes] if args.key?(:total_bytes)
          @total_bytes_is_estimated = args[:total_bytes_is_estimated] if args.key?(:total_bytes_is_estimated)
        end
      end
      
      # This message is for backends to pass their scotty media specific fields to ESF.
      # Backend will include this in their response message to ESF. Example:
      # ExportFile is an rpc defined for upload using scotty from ESF. rpc ExportFile(
      # ExportFileRequest) returns (ExportFileResponse) Message ExportFileResponse
      # will include apiserving.MediaResponseInfo to tell ESF about data like
      # dynamic_dropzone it needs to pass to Scotty. message ExportFileResponse `
      # optional gdata.Media blob = 1; optional apiserving.MediaResponseInfo
      # media_response_info = 2 `
      class MediaResponseInfo
        include Google::Apis::Core::Hashable
      
        # Data to copy from backend response to the next backend requests. Custom data
        # is returned to Scotty in the agent_state field, which Scotty will then provide
        # in subsequent upload notifications.
        # Corresponds to the JSON property `customData`
        # @return [String]
        attr_accessor :custom_data
      
        # Specifies any transformation to be applied to data before persisting it or
        # retrieving from storage. E.g., encryption options for blobstore2. This should
        # be of the form uploader_service.DataStorageTransform.
        # Corresponds to the JSON property `dataStorageTransform`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :data_storage_transform
      
        # Specifies the Scotty Drop Target to use for uploads. If present in a media
        # response, Scotty does not upload to a standard drop zone. Instead, Scotty
        # saves the upload directly to the location specified in this drop target.
        # Unlike drop zones, the drop target is the final storage location for an upload.
        # So, the agent does not need to clone the blob at the end of the upload. The
        # agent is responsible for garbage collecting any orphaned blobs that may occur
        # due to aborted uploads. For more information, see the drop target design doc
        # here: http://goto/ScottyDropTarget This field will be preferred to
        # dynamicDropzone. If provided, the identified field in the response must be of
        # the type uploader.agent.DropTarget.
        # Corresponds to the JSON property `dynamicDropTarget`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :dynamic_drop_target
      
        # Specifies the Scotty dropzone to use for uploads.
        # Corresponds to the JSON property `dynamicDropzone`
        # @return [String]
        attr_accessor :dynamic_dropzone
      
        # A reference to data stored on the filesystem, on GFS or in blobstore.
        # Corresponds to the JSON property `mediaForDiff`
        # @return [Google::Apis::YoutubePartnerV1::Media]
        attr_accessor :media_for_diff
      
        # Request class to use for all Blobstore operations for this request.
        # Corresponds to the JSON property `requestClass`
        # @return [String]
        attr_accessor :request_class
      
        # Requester ID passed along to be recorded in the Scotty logs
        # Corresponds to the JSON property `scottyAgentUserId`
        # @return [Fixnum]
        attr_accessor :scotty_agent_user_id
      
        # Customer-specific data to be recorded in the Scotty logs type is
        # logs_proto_scotty.CustomerLog
        # Corresponds to the JSON property `scottyCustomerLog`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :scotty_customer_log
      
        # Specifies the TrafficClass that Scotty should use for any RPCs to fetch the
        # response bytes. Will override the traffic class GTOS of the incoming http
        # request. This is a temporary field to facilitate whitelisting and
        # experimentation by the bigstore agent only. For instance, this does not apply
        # to RTMP reads. WARNING: DO NOT USE WITHOUT PERMISSION FROM THE SCOTTY TEAM.
        # Corresponds to the JSON property `trafficClassField`
        # @return [String]
        attr_accessor :traffic_class_field
      
        # Tells Scotty to verify hashes on the agent's behalf by parsing out the X-Goog-
        # Hash header.
        # Corresponds to the JSON property `verifyHashFromHeader`
        # @return [Boolean]
        attr_accessor :verify_hash_from_header
        alias_method :verify_hash_from_header?, :verify_hash_from_header
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @custom_data = args[:custom_data] if args.key?(:custom_data)
          @data_storage_transform = args[:data_storage_transform] if args.key?(:data_storage_transform)
          @dynamic_drop_target = args[:dynamic_drop_target] if args.key?(:dynamic_drop_target)
          @dynamic_dropzone = args[:dynamic_dropzone] if args.key?(:dynamic_dropzone)
          @media_for_diff = args[:media_for_diff] if args.key?(:media_for_diff)
          @request_class = args[:request_class] if args.key?(:request_class)
          @scotty_agent_user_id = args[:scotty_agent_user_id] if args.key?(:scotty_agent_user_id)
          @scotty_customer_log = args[:scotty_customer_log] if args.key?(:scotty_customer_log)
          @traffic_class_field = args[:traffic_class_field] if args.key?(:traffic_class_field)
          @verify_hash_from_header = args[:verify_hash_from_header] if args.key?(:verify_hash_from_header)
        end
      end
      
      # 
      class Metadata
        include Google::Apis::Core::Hashable
      
        # A list that identifies actors associated with the asset. You can specify up to
        # 50 actors for an asset.
        # Corresponds to the JSON property `actor`
        # @return [Array<String>]
        attr_accessor :actor
      
        # The album on which a sound recording asset is included. This field is only
        # valid for sound recording assets and has a maximum length of 255 bytes.
        # Corresponds to the JSON property `album`
        # @return [String]
        attr_accessor :album
      
        # The artist associated with a music video or sound recording asset. This field
        # is only valid for music video and sound recording assets. It is required for
        # sound recordings included in the AudioSwap program.
        # Corresponds to the JSON property `artist`
        # @return [Array<String>]
        attr_accessor :artist
      
        # Identifies the network or channel that originally broadcast a show or a season
        # of a show. This field should only be included for an asset if the broadcaster
        # associated with the asset is different from the partner uploading the asset to
        # YouTube. Note that a show may have multiple broadcasters; for example, a show
        # may switch networks between seasons.
        # Corresponds to the JSON property `broadcaster`
        # @return [Array<String>]
        attr_accessor :broadcaster
      
        # Category of this asset.
        # Corresponds to the JSON property `category`
        # @return [String]
        attr_accessor :category
      
        # The type of video content that the asset represents. This field is only valid
        # for movie and episode assets, and is required for the following types of those
        # assets: - Episode assets that are linked to a show - Movie assets that appear
        # in YouTube's Movies category
        # Corresponds to the JSON property `contentType`
        # @return [String]
        attr_accessor :content_type
      
        # The date copyright for this asset was established. *
        # Corresponds to the JSON property `copyrightDate`
        # @return [Google::Apis::YoutubePartnerV1::Date]
        attr_accessor :copyright_date
      
        # A unique value that you, the metadata provider, use to identify an asset. The
        # value could be a unique ID that you created for the asset or a standard
        # identifier, such as an ISRC. The value has a maximum length of 64 bytes and
        # may contain alphanumeric characters, hyphens (-), underscores (_), periods ( .)
        # , "at" symbols (@), or forward slashes (/).
        # Corresponds to the JSON property `customId`
        # @return [String]
        attr_accessor :custom_id
      
        # A description of the asset. The description may be displayed on YouTube or in
        # CMS. This field has a maximum length of 5,000 bytes.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # A list that identifies directors associated with the asset. You can specify up
        # to 50 directors for an asset.
        # Corresponds to the JSON property `director`
        # @return [Array<String>]
        attr_accessor :director
      
        # The Entertainment Identifier Registry (EIDR) assigned to an asset. This value
        # is only used for episode and movie assets and is optional in both cases. The
        # value contains a standard prefix for EIDR registry, followed by a forward
        # slash, a 20-character hexadecimal string, and an alphanumeric (0-9A-Z) check
        # character.
        # Corresponds to the JSON property `eidr`
        # @return [String]
        attr_accessor :eidr
      
        # The last year that a television show aired. This value is only used for show
        # assets, for which it is optional. Do not specify a value if new show episodes
        # are still being created.
        # Corresponds to the JSON property `endYear`
        # @return [Fixnum]
        attr_accessor :end_year
      
        # The episode number associated with an episode asset. This field is required
        # for and only used for episode assets that are linked to show assets. It has a
        # maximum length of 5 bytes.
        # Corresponds to the JSON property `episodeNumber`
        # @return [String]
        attr_accessor :episode_number
      
        # This value indicates that the episodes associated with a particular show asset
        # or a particular season asset are untitled. An untitled show (or season) has
        # episodes which are identified by their episode number or date. If this field
        # is set to true, then YouTube will optimize the title displayed for associated
        # episodes.
        # Corresponds to the JSON property `episodesAreUntitled`
        # @return [Boolean]
        attr_accessor :episodes_are_untitled
        alias_method :episodes_are_untitled?, :episodes_are_untitled
      
        # This field specifies a genre that can be used to categorize an asset. Assets
        # may be categorized in more than one genre, and YouTube uses different sets of
        # genres to categorize different types of assets. For example, Soaps might be a
        # valid genre for a show but not for a movie or sound recording. - Show assets -
        # Movie assets that appear in YouTube's Movies category - Sound recordings
        # included in the AudioSwap program
        # Corresponds to the JSON property `genre`
        # @return [Array<String>]
        attr_accessor :genre
      
        # The GRID (Global Release Identifier) of a music video or sound recording. This
        # field's value must contain exactly 18 alphanumeric characters.
        # Corresponds to the JSON property `grid`
        # @return [String]
        attr_accessor :grid
      
        # The six-character Harry Fox Agency (HFA) song code issued to uniquely identify
        # a composition. This value is only valid for composition assets.
        # Corresponds to the JSON property `hfa`
        # @return [String]
        attr_accessor :hfa
      
        # An official URL associated with the asset. This field has a maximum length of
        # 1536 bytes. Please do not submit a 1537-byte URL. Your efforts would be futile.
        # Corresponds to the JSON property `infoUrl`
        # @return [String]
        attr_accessor :info_url
      
        # The ISAN (International Standard Audiovisual Number) for the asset. This value
        # is only used for episode and movie assets and is optional in both cases. The
        # value contains 26 characters, which includes the 24 hexadecimal characters of
        # the ISAN as well as two check characters, in the following format: - The first
        # 16 characters in the tag value contain hexadecimal characters specifying the '
        # root' and 'episode' components of the ISAN. - The seventeenth character is a
        # check character (a letter from A-Z). - Characters 18 to 25 are the remaining
        # eight characters of the ISAN, which specify the 'version' component of the
        # ISAN. - The twenty-sixth character is another check character (A-Z).
        # Corresponds to the JSON property `isan`
        # @return [String]
        attr_accessor :isan
      
        # The ISRC (International Standard Recording Code) of a music video or sound
        # recording asset. This field's value must contain exactly 12 alphanumeric
        # characters.
        # Corresponds to the JSON property `isrc`
        # @return [String]
        attr_accessor :isrc
      
        # The ISWC (International Standard Musical Work Code) for a composition asset.
        # The field's value must contain exactly 11 characters in the format of a letter
        # (T) followed by 10 digits.
        # Corresponds to the JSON property `iswc`
        # @return [String]
        attr_accessor :iswc
      
        # A list of up to 100 keywords associated with a show asset. This field is
        # required for and also only used for show assets.
        # Corresponds to the JSON property `keyword`
        # @return [Array<String>]
        attr_accessor :keyword
      
        # The record label that released a sound recording asset. This field is only
        # valid for sound recording assets and has a maximum length of 255 bytes.
        # Corresponds to the JSON property `label`
        # @return [String]
        attr_accessor :label
      
        # Additional information that does not map directly to one of the other metadata
        # fields. This field has a maximum length of 255 bytes.
        # Corresponds to the JSON property `notes`
        # @return [String]
        attr_accessor :notes
      
        # The method by which people first had the opportunity to see a video asset.
        # This value is only used for episode and movie assets. It is required for the
        # assets listed below and otherwise optional: - Episode assets that are linked
        # to a show - Movie assets that appear in YouTube's Movies category
        # Corresponds to the JSON property `originalReleaseMedium`
        # @return [String]
        attr_accessor :original_release_medium
      
        # A list that identifies producers of the asset. You can specify up to 50
        # producers for an asset.
        # Corresponds to the JSON property `producer`
        # @return [Array<String>]
        attr_accessor :producer
      
        # A list of ratings that an asset received. The rating must be valid under the
        # specified rating system.
        # Corresponds to the JSON property `ratings`
        # @return [Array<Google::Apis::YoutubePartnerV1::Rating>]
        attr_accessor :ratings
      
        # The date that an asset was publicly released. For season assets, this value
        # specifies the first date that the season aired. Dates prior to the year 1902
        # are not supported. This value is valid for episode, season, movie, music video,
        # and sound recording assets. It is required for the assets listed below and
        # otherwise optional: - Episode assets that are linked to a show - Movie assets
        # that appear in YouTube's Movies category
        # Corresponds to the JSON property `releaseDate`
        # @return [Google::Apis::YoutubePartnerV1::Date]
        attr_accessor :release_date
      
        # The season number that identifies a season asset, or the season number that is
        # associated with an episode asset. This field has a maximum length of 5 bytes.
        # Corresponds to the JSON property `seasonNumber`
        # @return [String]
        attr_accessor :season_number
      
        # The customId of the show asset that a season or episode asset is associated
        # with. It is required for season and episode assets that appear in the Shows
        # category on YouTube, and it is not valid for other types of assets. This field
        # has a maximum length of 64 bytes and may contain alphanumeric characters,
        # hyphens (-), underscores (_), periods (.), "at" symbols (@), or forward
        # slashes (/).
        # Corresponds to the JSON property `showCustomId`
        # @return [String]
        attr_accessor :show_custom_id
      
        # The name of the show that an episode asset is associated with. *Note:* This
        # tag is only used for and valid for episodes that are not associated with show
        # assets and enables those assets to still display a show title in the asset
        # metadata section of CMS. This field has a maximum length of 120 bytes.
        # Corresponds to the JSON property `showTitle`
        # @return [String]
        attr_accessor :show_title
      
        # The video's primary spoken language. The value can be any ISO 639-1 two-letter
        # language code. This value is only used for episode and movie assets and is not
        # valid for other types of assets.
        # Corresponds to the JSON property `spokenLanguage`
        # @return [String]
        attr_accessor :spoken_language
      
        # The first year that a television show aired. This value is required for and
        # also only used for show assets.
        # Corresponds to the JSON property `startYear`
        # @return [Fixnum]
        attr_accessor :start_year
      
        # A list of languages for which the video has either a separate caption track or
        # burnt-in captions that are part of the video. Each value in the list should be
        # an ISO 639-1 two-letter language code. This value is only used for episode and
        # movie assets and is not valid for other types of assets.
        # Corresponds to the JSON property `subtitledLanguage`
        # @return [Array<String>]
        attr_accessor :subtitled_language
      
        # The asset's title or name. The value has a maximum length of 255 bytes. This
        # value is required for the assets listed below and optional for all other
        # assets: - Show assets - Episode assets that are linked to a show - Movie
        # assets that appear in YouTube's Movies category - Sound recordings included in
        # the AudioSwap program
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        # TMS (Tribune Media Systems) ID for the asset.
        # Corresponds to the JSON property `tmsId`
        # @return [String]
        attr_accessor :tms_id
      
        # Specifies the total number of full-length episodes in the season. This value
        # is used only for season assets.
        # Corresponds to the JSON property `totalEpisodesExpected`
        # @return [Fixnum]
        attr_accessor :total_episodes_expected
      
        # The UPC (Universal Product Code) associated with the asset.
        # Corresponds to the JSON property `upc`
        # @return [String]
        attr_accessor :upc
      
        # A list that identifies writers associated with the asset. You can specify up
        # to 50 writers for an asset.
        # Corresponds to the JSON property `writer`
        # @return [Array<String>]
        attr_accessor :writer
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @actor = args[:actor] if args.key?(:actor)
          @album = args[:album] if args.key?(:album)
          @artist = args[:artist] if args.key?(:artist)
          @broadcaster = args[:broadcaster] if args.key?(:broadcaster)
          @category = args[:category] if args.key?(:category)
          @content_type = args[:content_type] if args.key?(:content_type)
          @copyright_date = args[:copyright_date] if args.key?(:copyright_date)
          @custom_id = args[:custom_id] if args.key?(:custom_id)
          @description = args[:description] if args.key?(:description)
          @director = args[:director] if args.key?(:director)
          @eidr = args[:eidr] if args.key?(:eidr)
          @end_year = args[:end_year] if args.key?(:end_year)
          @episode_number = args[:episode_number] if args.key?(:episode_number)
          @episodes_are_untitled = args[:episodes_are_untitled] if args.key?(:episodes_are_untitled)
          @genre = args[:genre] if args.key?(:genre)
          @grid = args[:grid] if args.key?(:grid)
          @hfa = args[:hfa] if args.key?(:hfa)
          @info_url = args[:info_url] if args.key?(:info_url)
          @isan = args[:isan] if args.key?(:isan)
          @isrc = args[:isrc] if args.key?(:isrc)
          @iswc = args[:iswc] if args.key?(:iswc)
          @keyword = args[:keyword] if args.key?(:keyword)
          @label = args[:label] if args.key?(:label)
          @notes = args[:notes] if args.key?(:notes)
          @original_release_medium = args[:original_release_medium] if args.key?(:original_release_medium)
          @producer = args[:producer] if args.key?(:producer)
          @ratings = args[:ratings] if args.key?(:ratings)
          @release_date = args[:release_date] if args.key?(:release_date)
          @season_number = args[:season_number] if args.key?(:season_number)
          @show_custom_id = args[:show_custom_id] if args.key?(:show_custom_id)
          @show_title = args[:show_title] if args.key?(:show_title)
          @spoken_language = args[:spoken_language] if args.key?(:spoken_language)
          @start_year = args[:start_year] if args.key?(:start_year)
          @subtitled_language = args[:subtitled_language] if args.key?(:subtitled_language)
          @title = args[:title] if args.key?(:title)
          @tms_id = args[:tms_id] if args.key?(:tms_id)
          @total_episodes_expected = args[:total_episodes_expected] if args.key?(:total_episodes_expected)
          @upc = args[:upc] if args.key?(:upc)
          @writer = args[:writer] if args.key?(:writer)
        end
      end
      
      # 
      class MetadataHistory
        include Google::Apis::Core::Hashable
      
        # The type of the API resource. For metadata history resources, the value is
        # youtubePartner#metadataHistory.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The metadata object contains the metadata provided by the specified source (
        # origination) at the specified time (timeProvided).
        # Corresponds to the JSON property `metadata`
        # @return [Google::Apis::YoutubePartnerV1::Metadata]
        attr_accessor :metadata
      
        # The origination object contains information that describes the metadata source.
        # Corresponds to the JSON property `origination`
        # @return [Google::Apis::YoutubePartnerV1::Origination]
        attr_accessor :origination
      
        # The time the metadata was provided.
        # Corresponds to the JSON property `timeProvided`
        # @return [String]
        attr_accessor :time_provided
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @kind = args[:kind] if args.key?(:kind)
          @metadata = args[:metadata] if args.key?(:metadata)
          @origination = args[:origination] if args.key?(:origination)
          @time_provided = args[:time_provided] if args.key?(:time_provided)
        end
      end
      
      # 
      class MetadataHistoryListResponse
        include Google::Apis::Core::Hashable
      
        # A list of metadata history (youtubePartner#metadataHistory) resources that
        # match the request criteria.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::YoutubePartnerV1::MetadataHistory>]
        attr_accessor :items
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # metadataHistoryList.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @kind = args[:kind] if args.key?(:kind)
        end
      end
      
      # This is a copy of the tech.blob.ObjectId proto, which could not be used
      # directly here due to transitive closure issues with JavaScript support; see
      # http://b/8801763.
      class ObjectIdProp
        include Google::Apis::Core::Hashable
      
        # The name of the bucket to which this object belongs.
        # Corresponds to the JSON property `bucketName`
        # @return [String]
        attr_accessor :bucket_name
      
        # Generation of the object. Generations are monotonically increasing across
        # writes, allowing them to be be compared to determine which generation is newer.
        # If this is omitted in a request, then you are requesting the live object. See
        # http://go/bigstore-versions
        # Corresponds to the JSON property `generation`
        # @return [Fixnum]
        attr_accessor :generation
      
        # The name of the object.
        # Corresponds to the JSON property `objectName`
        # @return [String]
        attr_accessor :object_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bucket_name = args[:bucket_name] if args.key?(:bucket_name)
          @generation = args[:generation] if args.key?(:generation)
          @object_name = args[:object_name] if args.key?(:object_name)
        end
      end
      
      # 
      class Origin
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `source`
        # @return [String]
        attr_accessor :source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @source = args[:source] if args.key?(:source)
        end
      end
      
      # 
      class Origination
        include Google::Apis::Core::Hashable
      
        # The content owner who provided the metadata or ownership information.
        # Corresponds to the JSON property `owner`
        # @return [String]
        attr_accessor :owner
      
        # The mechanism by which the piece of metadata, ownership or relationship
        # information was provided.
        # Corresponds to the JSON property `source`
        # @return [String]
        attr_accessor :source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @owner = args[:owner] if args.key?(:owner)
          @source = args[:source] if args.key?(:source)
        end
      end
      
      # 
      class OwnershipConflicts
        include Google::Apis::Core::Hashable
      
        # A list that identifies ownership conflicts of an asset and the territories
        # where conflicting ownership is inserted.
        # Corresponds to the JSON property `general`
        # @return [Array<Google::Apis::YoutubePartnerV1::TerritoryConflicts>]
        attr_accessor :general
      
        # The type of the API resource. For ownershipConflicts resources, the value is
        # youtubePartner#ownershipConflicts.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # A list that identifies ownership conflicts of the mechanical rights for a
        # composition asset and the territories where conflicting ownership is inserted.
        # Corresponds to the JSON property `mechanical`
        # @return [Array<Google::Apis::YoutubePartnerV1::TerritoryConflicts>]
        attr_accessor :mechanical
      
        # A list that identifies ownership conflicts of the performance rights for a
        # composition asset and the territories where conflicting ownership is inserted.
        # Corresponds to the JSON property `performance`
        # @return [Array<Google::Apis::YoutubePartnerV1::TerritoryConflicts>]
        attr_accessor :performance
      
        # A list that identifies ownership conflicts of the synchronization rights for a
        # composition asset and the territories where conflicting ownership is inserted.
        # Corresponds to the JSON property `synchronization`
        # @return [Array<Google::Apis::YoutubePartnerV1::TerritoryConflicts>]
        attr_accessor :synchronization
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @general = args[:general] if args.key?(:general)
          @kind = args[:kind] if args.key?(:kind)
          @mechanical = args[:mechanical] if args.key?(:mechanical)
          @performance = args[:performance] if args.key?(:performance)
          @synchronization = args[:synchronization] if args.key?(:synchronization)
        end
      end
      
      # 
      class OwnershipHistoryListResponse
        include Google::Apis::Core::Hashable
      
        # A list of ownership history (youtubePartner#ownershipHistory) resources that
        # match the request criteria.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::YoutubePartnerV1::RightsOwnershipHistory>]
        attr_accessor :items
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # ownershipHistoryList.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @kind = args[:kind] if args.key?(:kind)
        end
      end
      
      # 
      class Package
        include Google::Apis::Core::Hashable
      
        # The package's metadata file contents.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # The list of customer IDs.
        # Corresponds to the JSON property `customIds`
        # @return [Array<String>]
        attr_accessor :custom_ids
      
        # An ID that YouTube assigns and uses to uniquely identify the package.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # The type of the API resource. For package resources, this value is
        # youtubePartner#package.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The desired locale of the error messages as defined in BCP 47 (http: //tools.
        # ietf.org/html/bcp47). For example, "en-US" or "de". If not // specified we
        # will return the error messages in English ("en").
        # Corresponds to the JSON property `locale`
        # @return [String]
        attr_accessor :locale
      
        # The package name.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The package status.
        # Corresponds to the JSON property `status`
        # @return [String]
        attr_accessor :status
      
        # The package status reports.
        # Corresponds to the JSON property `statusReports`
        # @return [Array<Google::Apis::YoutubePartnerV1::StatusReport>]
        attr_accessor :status_reports
      
        # The package creation time. The value is specified in RFC 3339 ( YYYY-MM-DDThh:
        # mm:ss.000Z) format.
        # Corresponds to the JSON property `timeCreated`
        # @return [String]
        attr_accessor :time_created
      
        # The package type.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        # The uploader name.
        # Corresponds to the JSON property `uploaderName`
        # @return [String]
        attr_accessor :uploader_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @custom_ids = args[:custom_ids] if args.key?(:custom_ids)
          @id = args[:id] if args.key?(:id)
          @kind = args[:kind] if args.key?(:kind)
          @locale = args[:locale] if args.key?(:locale)
          @name = args[:name] if args.key?(:name)
          @status = args[:status] if args.key?(:status)
          @status_reports = args[:status_reports] if args.key?(:status_reports)
          @time_created = args[:time_created] if args.key?(:time_created)
          @type = args[:type] if args.key?(:type)
          @uploader_name = args[:uploader_name] if args.key?(:uploader_name)
        end
      end
      
      # 
      class PackageInsertResponse
        include Google::Apis::Core::Hashable
      
        # The list of errors and/or warnings.
        # Corresponds to the JSON property `errors`
        # @return [Array<Google::Apis::YoutubePartnerV1::ValidateError>]
        attr_accessor :errors
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # packageInsert.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The package resource.
        # Corresponds to the JSON property `resource`
        # @return [Google::Apis::YoutubePartnerV1::Package]
        attr_accessor :resource
      
        # The package insert status. Indicates whether the insert operation completed
        # successfully or identifies the general cause of failure. For most cases where
        # the insert operation failed, the errors are described in the API response's
        # errors object. However, if the operation failed because the package contained
        # non-metadata files, the errors object is not included in the response.
        # Corresponds to the JSON property `status`
        # @return [String]
        attr_accessor :status
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @errors = args[:errors] if args.key?(:errors)
          @kind = args[:kind] if args.key?(:kind)
          @resource = args[:resource] if args.key?(:resource)
          @status = args[:status] if args.key?(:status)
        end
      end
      
      # 
      class PageInfo
        include Google::Apis::Core::Hashable
      
        # The number of results included in the API response.
        # Corresponds to the JSON property `resultsPerPage`
        # @return [Fixnum]
        attr_accessor :results_per_page
      
        # The index of the first item in the API response.
        # Corresponds to the JSON property `startIndex`
        # @return [Fixnum]
        attr_accessor :start_index
      
        # The total number of results in the result set.
        # Corresponds to the JSON property `totalResults`
        # @return [Fixnum]
        attr_accessor :total_results
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @results_per_page = args[:results_per_page] if args.key?(:results_per_page)
          @start_index = args[:start_index] if args.key?(:start_index)
          @total_results = args[:total_results] if args.key?(:total_results)
        end
      end
      
      # 
      class Policy
        include Google::Apis::Core::Hashable
      
        # The policy's description.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # A value that YouTube assigns and uses to uniquely identify the policy.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # Identifies this as a policy. Value: "youtubePartner#policy"
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The policy's name.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # A list of rules that specify the action that YouTube should take and may
        # optionally specify the conditions under which that action is enforced.
        # Corresponds to the JSON property `rules`
        # @return [Array<Google::Apis::YoutubePartnerV1::PolicyRule>]
        attr_accessor :rules
      
        # The time the policy was updated.
        # Corresponds to the JSON property `timeUpdated`
        # @return [String]
        attr_accessor :time_updated
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @id = args[:id] if args.key?(:id)
          @kind = args[:kind] if args.key?(:kind)
          @name = args[:name] if args.key?(:name)
          @rules = args[:rules] if args.key?(:rules)
          @time_updated = args[:time_updated] if args.key?(:time_updated)
        end
      end
      
      # 
      class PolicyList
        include Google::Apis::Core::Hashable
      
        # A list of saved policies.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::YoutubePartnerV1::Policy>]
        attr_accessor :items
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # policyList.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @kind = args[:kind] if args.key?(:kind)
        end
      end
      
      # 
      class PolicyRule
        include Google::Apis::Core::Hashable
      
        # The policy that YouTube should enforce if the rule's conditions are all valid
        # for an asset or for an attempt to view that asset on YouTube.
        # Corresponds to the JSON property `action`
        # @return [String]
        attr_accessor :action
      
        # A set of conditions that must be met for the rule's action (and subactions) to
        # be enforced. For a rule to be valid, all of its conditions must be met.
        # Corresponds to the JSON property `conditions`
        # @return [Google::Apis::YoutubePartnerV1::Conditions]
        attr_accessor :conditions
      
        # A list of additional actions that YouTube should take if the conditions in the
        # rule are met.
        # Corresponds to the JSON property `subaction`
        # @return [Array<String>]
        attr_accessor :subaction
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @action = args[:action] if args.key?(:action)
          @conditions = args[:conditions] if args.key?(:conditions)
          @subaction = args[:subaction] if args.key?(:subaction)
        end
      end
      
      # 
      class PromotedContent
        include Google::Apis::Core::Hashable
      
        # A list of link targets that will be used to generate the annotation link that
        # appears on videos included in the campaign. If more than one link is specified,
        # the link that is displayed to viewers will be randomly selected from the list.
        # Corresponds to the JSON property `link`
        # @return [Array<Google::Apis::YoutubePartnerV1::CampaignTargetLink>]
        attr_accessor :link
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @link = args[:link] if args.key?(:link)
        end
      end
      
      # 
      class Rating
        include Google::Apis::Core::Hashable
      
        # The rating that the asset received.
        # Corresponds to the JSON property `rating`
        # @return [String]
        attr_accessor :rating
      
        # The rating system associated with the rating.
        # Corresponds to the JSON property `ratingSystem`
        # @return [String]
        attr_accessor :rating_system
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rating = args[:rating] if args.key?(:rating)
          @rating_system = args[:rating_system] if args.key?(:rating_system)
        end
      end
      
      # 
      class Reference
        include Google::Apis::Core::Hashable
      
        # The ID that uniquely identifies the asset that the reference is associated
        # with.
        # Corresponds to the JSON property `assetId`
        # @return [String]
        attr_accessor :asset_id
      
        # Set this field's value to true to indicate that the reference content should
        # be included in YouTube's AudioSwap program.
        # Corresponds to the JSON property `audioswapEnabled`
        # @return [Boolean]
        attr_accessor :audioswap_enabled
        alias_method :audioswap_enabled?, :audioswap_enabled
      
        # This field is present if the reference was created by associating an asset
        # with an existing YouTube video that was uploaded to a YouTube channel linked
        # to your CMS account. In that case, this field contains the ID of the claim
        # representing the resulting association between the asset and the video.
        # Corresponds to the JSON property `claimId`
        # @return [String]
        attr_accessor :claim_id
      
        # The type of content that the reference represents.
        # Corresponds to the JSON property `contentType`
        # @return [String]
        attr_accessor :content_type
      
        # The ID that uniquely identifies the reference that this reference duplicates.
        # This field is only present if the reference's status is inactive with reason
        # REASON_DUPLICATE_FOR_OWNERS.
        # Corresponds to the JSON property `duplicateLeader`
        # @return [String]
        attr_accessor :duplicate_leader
      
        # The list of time intervals from this reference that will be ignored during the
        # match process.
        # Corresponds to the JSON property `excludedIntervals`
        # @return [Array<Google::Apis::YoutubePartnerV1::ExcludedInterval>]
        attr_accessor :excluded_intervals
      
        # When uploading a reference, set this value to true to indicate that the
        # reference is a pre-generated fingerprint.
        # Corresponds to the JSON property `fpDirect`
        # @return [Boolean]
        attr_accessor :fp_direct
        alias_method :fp_direct?, :fp_direct
      
        # A reference to data stored on the filesystem, on GFS or in blobstore.
        # Corresponds to the JSON property `gdataMedia`
        # @return [Google::Apis::YoutubePartnerV1::Media]
        attr_accessor :gdata_media
      
        # The MD5 hashcode of the reference content. Deprecated! This is no longer
        # populated.
        # Corresponds to the JSON property `hashCode`
        # @return [String]
        attr_accessor :hash_code
      
        # A value that YouTube assigns and uses to uniquely identify a reference.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # Set this value to true to indicate that the reference should not be used to
        # generate claims. This field is only used on AudioSwap references.
        # Corresponds to the JSON property `ignoreFpMatch`
        # @return [Boolean]
        attr_accessor :ignore_fp_match
        alias_method :ignore_fp_match?, :ignore_fp_match
      
        # The type of the API resource. For reference resources, the value is
        # youtubePartner#reference.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The length of the reference in seconds.
        # Corresponds to the JSON property `length`
        # @return [Float]
        attr_accessor :length
      
        # Extra information added to operations that support Scotty media requests.
        # Corresponds to the JSON property `mediaRequestInfo`
        # @return [Google::Apis::YoutubePartnerV1::MediaRequestInfo]
        attr_accessor :media_request_info
      
        # This message is for backends to pass their scotty media specific fields to ESF.
        # Backend will include this in their response message to ESF. Example:
        # ExportFile is an rpc defined for upload using scotty from ESF. rpc ExportFile(
        # ExportFileRequest) returns (ExportFileResponse) Message ExportFileResponse
        # will include apiserving.MediaResponseInfo to tell ESF about data like
        # dynamic_dropzone it needs to pass to Scotty. message ExportFileResponse `
        # optional gdata.Media blob = 1; optional apiserving.MediaResponseInfo
        # media_response_info = 2 `
        # Corresponds to the JSON property `mediaResponseInfo`
        # @return [Google::Apis::YoutubePartnerV1::MediaResponseInfo]
        attr_accessor :media_response_info
      
        # The origination object contains information that describes the reference
        # source.
        # Corresponds to the JSON property `origination`
        # @return [Google::Apis::YoutubePartnerV1::Origination]
        attr_accessor :origination
      
        # The reference's status.
        # Corresponds to the JSON property `status`
        # @return [String]
        attr_accessor :status
      
        # An explanation of how a reference entered its current state. This value is
        # only present if the reference's status is either inactive or deleted.
        # Corresponds to the JSON property `statusReason`
        # @return [String]
        attr_accessor :status_reason
      
        # Set this value to true to indicate that YouTube should prioritize Content ID
        # processing for a video file. YouTube processes urgent video files before other
        # files that are not marked as urgent. This setting is primarily used for videos
        # of live events or other videos that require time-sensitive processing. The
        # sooner YouTube completes Content ID processing for a video, the sooner YouTube
        # can match user-uploaded videos to that video. Note that marking all of your
        # files as urgent could delay processing for those files.
        # Corresponds to the JSON property `urgent`
        # @return [Boolean]
        attr_accessor :urgent
        alias_method :urgent?, :urgent
      
        # This field is present if the reference was created by associating an asset
        # with an existing YouTube video that was uploaded to a YouTube channel linked
        # to your CMS account. In that case, this field contains the ID of the source
        # video.
        # Corresponds to the JSON property `videoId`
        # @return [String]
        attr_accessor :video_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @asset_id = args[:asset_id] if args.key?(:asset_id)
          @audioswap_enabled = args[:audioswap_enabled] if args.key?(:audioswap_enabled)
          @claim_id = args[:claim_id] if args.key?(:claim_id)
          @content_type = args[:content_type] if args.key?(:content_type)
          @duplicate_leader = args[:duplicate_leader] if args.key?(:duplicate_leader)
          @excluded_intervals = args[:excluded_intervals] if args.key?(:excluded_intervals)
          @fp_direct = args[:fp_direct] if args.key?(:fp_direct)
          @gdata_media = args[:gdata_media] if args.key?(:gdata_media)
          @hash_code = args[:hash_code] if args.key?(:hash_code)
          @id = args[:id] if args.key?(:id)
          @ignore_fp_match = args[:ignore_fp_match] if args.key?(:ignore_fp_match)
          @kind = args[:kind] if args.key?(:kind)
          @length = args[:length] if args.key?(:length)
          @media_request_info = args[:media_request_info] if args.key?(:media_request_info)
          @media_response_info = args[:media_response_info] if args.key?(:media_response_info)
          @origination = args[:origination] if args.key?(:origination)
          @status = args[:status] if args.key?(:status)
          @status_reason = args[:status_reason] if args.key?(:status_reason)
          @urgent = args[:urgent] if args.key?(:urgent)
          @video_id = args[:video_id] if args.key?(:video_id)
        end
      end
      
      # 
      class ReferenceConflict
        include Google::Apis::Core::Hashable
      
        # An id of a conflicting reference.
        # Corresponds to the JSON property `conflictingReferenceId`
        # @return [String]
        attr_accessor :conflicting_reference_id
      
        # Conflict review expiry time.
        # Corresponds to the JSON property `expiryTime`
        # @return [String]
        attr_accessor :expiry_time
      
        # A value that YouTube assigns and uses to uniquely identify a reference
        # conflict.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # The type of the API resource. For referenceConflict resources, the value is
        # youtubePartner#referenceConflict.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The list of matches between conflicting and original references at the time of
        # conflict creation.
        # Corresponds to the JSON property `matches`
        # @return [Array<Google::Apis::YoutubePartnerV1::ReferenceConflictMatch>]
        attr_accessor :matches
      
        # An id of an original reference.
        # Corresponds to the JSON property `originalReferenceId`
        # @return [String]
        attr_accessor :original_reference_id
      
        # The referenceConflict's status.
        # Corresponds to the JSON property `status`
        # @return [String]
        attr_accessor :status
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conflicting_reference_id = args[:conflicting_reference_id] if args.key?(:conflicting_reference_id)
          @expiry_time = args[:expiry_time] if args.key?(:expiry_time)
          @id = args[:id] if args.key?(:id)
          @kind = args[:kind] if args.key?(:kind)
          @matches = args[:matches] if args.key?(:matches)
          @original_reference_id = args[:original_reference_id] if args.key?(:original_reference_id)
          @status = args[:status] if args.key?(:status)
        end
      end
      
      # 
      class ReferenceConflictListResponse
        include Google::Apis::Core::Hashable
      
        # A list of reference conflicts that match the request criteria.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::YoutubePartnerV1::ReferenceConflict>]
        attr_accessor :items
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # referenceConflictList.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The token that can be used as the value of the pageToken parameter to retrieve
        # the next page in the result set.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The pageInfo object encapsulates paging information for the result set.
        # Corresponds to the JSON property `pageInfo`
        # @return [Google::Apis::YoutubePartnerV1::PageInfo]
        attr_accessor :page_info
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @kind = args[:kind] if args.key?(:kind)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @page_info = args[:page_info] if args.key?(:page_info)
        end
      end
      
      # 
      class ReferenceConflictMatch
        include Google::Apis::Core::Hashable
      
        # Conflicting reference offset in milliseconds.
        # Corresponds to the JSON property `conflicting_reference_offset_ms`
        # @return [Fixnum]
        attr_accessor :conflicting_reference_offset_ms
      
        # Match length in milliseconds.
        # Corresponds to the JSON property `length_ms`
        # @return [Fixnum]
        attr_accessor :length_ms
      
        # Original reference offset in milliseconds.
        # Corresponds to the JSON property `original_reference_offset_ms`
        # @return [Fixnum]
        attr_accessor :original_reference_offset_ms
      
        # The referenceConflictMatch's type.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conflicting_reference_offset_ms = args[:conflicting_reference_offset_ms] if args.key?(:conflicting_reference_offset_ms)
          @length_ms = args[:length_ms] if args.key?(:length_ms)
          @original_reference_offset_ms = args[:original_reference_offset_ms] if args.key?(:original_reference_offset_ms)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # 
      class ReferenceListResponse
        include Google::Apis::Core::Hashable
      
        # A list of references that match the request criteria.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::YoutubePartnerV1::Reference>]
        attr_accessor :items
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # referenceList.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The token that can be used as the value of the pageToken parameter to retrieve
        # the next page in the result set.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The pageInfo object encapsulates paging information for the result set.
        # Corresponds to the JSON property `pageInfo`
        # @return [Google::Apis::YoutubePartnerV1::PageInfo]
        attr_accessor :page_info
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @kind = args[:kind] if args.key?(:kind)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @page_info = args[:page_info] if args.key?(:page_info)
        end
      end
      
      # 
      class RightsOwnership
        include Google::Apis::Core::Hashable
      
        # A list that identifies the owners of an asset and the territories where each
        # owner has ownership. General asset ownership is used for all types of assets
        # and is the only type of ownership data that can be provided for assets that
        # are not compositions. *Note:* You cannot specify general ownership rights and
        # also specify either mechanical, performance, or synchronization rights.
        # Corresponds to the JSON property `general`
        # @return [Array<Google::Apis::YoutubePartnerV1::TerritoryOwners>]
        attr_accessor :general
      
        # The type of the API resource. For rightsOwnership resources, the value is
        # youtubePartner#rightsOwnership.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # A list that identifies owners of the mechanical rights for a composition asset.
        # Corresponds to the JSON property `mechanical`
        # @return [Array<Google::Apis::YoutubePartnerV1::TerritoryOwners>]
        attr_accessor :mechanical
      
        # A list that identifies owners of the performance rights for a composition
        # asset.
        # Corresponds to the JSON property `performance`
        # @return [Array<Google::Apis::YoutubePartnerV1::TerritoryOwners>]
        attr_accessor :performance
      
        # A list that identifies owners of the synchronization rights for a composition
        # asset.
        # Corresponds to the JSON property `synchronization`
        # @return [Array<Google::Apis::YoutubePartnerV1::TerritoryOwners>]
        attr_accessor :synchronization
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @general = args[:general] if args.key?(:general)
          @kind = args[:kind] if args.key?(:kind)
          @mechanical = args[:mechanical] if args.key?(:mechanical)
          @performance = args[:performance] if args.key?(:performance)
          @synchronization = args[:synchronization] if args.key?(:synchronization)
        end
      end
      
      # 
      class RightsOwnershipHistory
        include Google::Apis::Core::Hashable
      
        # The type of the API resource. For ownership history resources, the value is
        # youtubePartner#rightsOwnershipHistory.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The origination object contains information that describes the metadata source.
        # Corresponds to the JSON property `origination`
        # @return [Google::Apis::YoutubePartnerV1::Origination]
        attr_accessor :origination
      
        # The ownership object contains the ownership data provided by the specified
        # source (origination) at the specified time (timeProvided).
        # Corresponds to the JSON property `ownership`
        # @return [Google::Apis::YoutubePartnerV1::RightsOwnership]
        attr_accessor :ownership
      
        # The time that the ownership data was provided.
        # Corresponds to the JSON property `timeProvided`
        # @return [String]
        attr_accessor :time_provided
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @kind = args[:kind] if args.key?(:kind)
          @origination = args[:origination] if args.key?(:origination)
          @ownership = args[:ownership] if args.key?(:ownership)
          @time_provided = args[:time_provided] if args.key?(:time_provided)
        end
      end
      
      # 
      class Segment
        include Google::Apis::Core::Hashable
      
        # The duration of the segment in milliseconds.
        # Corresponds to the JSON property `duration`
        # @return [Fixnum]
        attr_accessor :duration
      
        # The type of the API resource. For segment resources, the value is
        # youtubePartner#segment.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The start time of the segment, measured in milliseconds from the beginning.
        # Corresponds to the JSON property `start`
        # @return [Fixnum]
        attr_accessor :start
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @duration = args[:duration] if args.key?(:duration)
          @kind = args[:kind] if args.key?(:kind)
          @start = args[:start] if args.key?(:start)
        end
      end
      
      # 
      class Segment2
        include Google::Apis::Core::Hashable
      
        # The finish time of the segment, measured in milliseconds from the beginning.
        # Corresponds to the JSON property `finish`
        # @return [String]
        attr_accessor :finish
      
        # The type of the API resource. For segment resources, the value is
        # youtubePartner#segment.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The start time of the segment, measured in milliseconds from the beginning.
        # Corresponds to the JSON property `start`
        # @return [String]
        attr_accessor :start
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @finish = args[:finish] if args.key?(:finish)
          @kind = args[:kind] if args.key?(:kind)
          @start = args[:start] if args.key?(:start)
        end
      end
      
      # 
      class Source
        include Google::Apis::Core::Hashable
      
        # Id of content owner that initiated the event.
        # Corresponds to the JSON property `contentOwnerId`
        # @return [String]
        attr_accessor :content_owner_id
      
        # Type of the event source.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        # Email of user who initiated the event.
        # Corresponds to the JSON property `userEmail`
        # @return [String]
        attr_accessor :user_email
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content_owner_id = args[:content_owner_id] if args.key?(:content_owner_id)
          @type = args[:type] if args.key?(:type)
          @user_email = args[:user_email] if args.key?(:user_email)
        end
      end
      
      # 
      class SpreadsheetTemplate
        include Google::Apis::Core::Hashable
      
        # The type of the API resource. For spreadsheet template resources, the value is
        # youtubePartner#spreadsheetTemplate.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The template status.
        # Corresponds to the JSON property `status`
        # @return [String]
        attr_accessor :status
      
        # The template content.
        # Corresponds to the JSON property `templateContent`
        # @return [String]
        attr_accessor :template_content
      
        # The template name.
        # Corresponds to the JSON property `templateName`
        # @return [String]
        attr_accessor :template_name
      
        # The template type.
        # Corresponds to the JSON property `templateType`
        # @return [String]
        attr_accessor :template_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @kind = args[:kind] if args.key?(:kind)
          @status = args[:status] if args.key?(:status)
          @template_content = args[:template_content] if args.key?(:template_content)
          @template_name = args[:template_name] if args.key?(:template_name)
          @template_type = args[:template_type] if args.key?(:template_type)
        end
      end
      
      # 
      class SpreadsheetTemplateListResponse
        include Google::Apis::Core::Hashable
      
        # A list of spreadsheet templates (youtubePartner#spreadsheetTemplate) resources
        # that match the request criteria.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::YoutubePartnerV1::SpreadsheetTemplate>]
        attr_accessor :items
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # spreadsheetTemplateList.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The status of the API response.
        # Corresponds to the JSON property `status`
        # @return [String]
        attr_accessor :status
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @kind = args[:kind] if args.key?(:kind)
          @status = args[:status] if args.key?(:status)
        end
      end
      
      # 
      class StatusReport
        include Google::Apis::Core::Hashable
      
        # The content of the report message. Used only in Hybrid.
        # Corresponds to the JSON property `statusContent`
        # @return [String]
        attr_accessor :status_content
      
        # Status file name. Used only in Hybrid.
        # Corresponds to the JSON property `statusFileName`
        # @return [String]
        attr_accessor :status_file_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @status_content = args[:status_content] if args.key?(:status_content)
          @status_file_name = args[:status_file_name] if args.key?(:status_file_name)
        end
      end
      
      # 
      class TerritoryCondition
        include Google::Apis::Core::Hashable
      
        # A list of territories. Each territory is an ISO 3166 two-letter country code..
        # Corresponds to the JSON property `territories`
        # @return [Array<String>]
        attr_accessor :territories
      
        # This field indicates whether the associated policy rule is or is not valid in
        # the specified territories.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @territories = args[:territories] if args.key?(:territories)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # 
      class TerritoryConflicts
        include Google::Apis::Core::Hashable
      
        # A list of conflicting ownerships.
        # Corresponds to the JSON property `conflictingOwnership`
        # @return [Array<Google::Apis::YoutubePartnerV1::ConflictingOwnership>]
        attr_accessor :conflicting_ownership
      
        # A territories where the ownership conflict is present. Territory is an ISO
        # 3166 two-letter country code..
        # Corresponds to the JSON property `territory`
        # @return [String]
        attr_accessor :territory
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @conflicting_ownership = args[:conflicting_ownership] if args.key?(:conflicting_ownership)
          @territory = args[:territory] if args.key?(:territory)
        end
      end
      
      # 
      class TerritoryOwners
        include Google::Apis::Core::Hashable
      
        # The name of the asset's owner or rights administrator.
        # Corresponds to the JSON property `owner`
        # @return [String]
        attr_accessor :owner
      
        # The name of the asset's publisher. This field is only used for composition
        # assets, and it is used when the asset owner is not known to have a formal
        # relationship established with YouTube.
        # Corresponds to the JSON property `publisher`
        # @return [String]
        attr_accessor :publisher
      
        # The percentage of the asset that the owner controls or administers. For
        # composition assets, the value can be any value between 0 and 100 inclusive.
        # For all other assets, the only valid values are 100, which indicates that the
        # owner completely owns the asset in the specified territories, and 0, which
        # indicates that you are removing ownership of the asset in the specified
        # territories.
        # Corresponds to the JSON property `ratio`
        # @return [Float]
        attr_accessor :ratio
      
        # A list of territories where the owner owns (or does not own) the asset. Each
        # territory is an ISO 3166 two-letter country code..
        # Corresponds to the JSON property `territories`
        # @return [Array<String>]
        attr_accessor :territories
      
        # This field indicates whether the ownership data applies or does not apply in
        # the specified territories.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @owner = args[:owner] if args.key?(:owner)
          @publisher = args[:publisher] if args.key?(:publisher)
          @ratio = args[:ratio] if args.key?(:ratio)
          @territories = args[:territories] if args.key?(:territories)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # 
      class TotalMatch
        include Google::Apis::Core::Hashable
      
        # The total amount of content in the reference which matched the user video in
        # seconds.
        # Corresponds to the JSON property `referenceDurationSecs`
        # @return [Fixnum]
        attr_accessor :reference_duration_secs
      
        # The total amount of content in the user video which matched the reference in
        # seconds.
        # Corresponds to the JSON property `userVideoDurationSecs`
        # @return [Fixnum]
        attr_accessor :user_video_duration_secs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @reference_duration_secs = args[:reference_duration_secs] if args.key?(:reference_duration_secs)
          @user_video_duration_secs = args[:user_video_duration_secs] if args.key?(:user_video_duration_secs)
        end
      end
      
      # 
      class TypeDetails
        include Google::Apis::Core::Hashable
      
        # Appeal explanations for dispute_appeal event.
        # Corresponds to the JSON property `appealExplanation`
        # @return [String]
        attr_accessor :appeal_explanation
      
        # Dispute notes for dispute_create events.
        # Corresponds to the JSON property `disputeNotes`
        # @return [String]
        attr_accessor :dispute_notes
      
        # Dispute reason for dispute_create and dispute_appeal events.
        # Corresponds to the JSON property `disputeReason`
        # @return [String]
        attr_accessor :dispute_reason
      
        # Status that was a result of update for claim_update event.
        # Corresponds to the JSON property `updateStatus`
        # @return [String]
        attr_accessor :update_status
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @appeal_explanation = args[:appeal_explanation] if args.key?(:appeal_explanation)
          @dispute_notes = args[:dispute_notes] if args.key?(:dispute_notes)
          @dispute_reason = args[:dispute_reason] if args.key?(:dispute_reason)
          @update_status = args[:update_status] if args.key?(:update_status)
        end
      end
      
      # 
      class Uploader
        include Google::Apis::Core::Hashable
      
        # The type of the API resource. For uploader resources, the value is
        # youtubePartner#uploader.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The uploader name.
        # Corresponds to the JSON property `uploaderName`
        # @return [String]
        attr_accessor :uploader_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @kind = args[:kind] if args.key?(:kind)
          @uploader_name = args[:uploader_name] if args.key?(:uploader_name)
        end
      end
      
      # 
      class UploaderListResponse
        include Google::Apis::Core::Hashable
      
        # A list of uploader (youtubePartner#uploader) resources that match the request
        # criteria.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::YoutubePartnerV1::Uploader>]
        attr_accessor :items
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # uploaderList.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @kind = args[:kind] if args.key?(:kind)
        end
      end
      
      # 
      class ValidateAsyncRequest
        include Google::Apis::Core::Hashable
      
        # The metadata file contents.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # The type of the API resource. For this operation, the value is youtubePartner#
        # validateAsyncRequest.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The uploader name.
        # Corresponds to the JSON property `uploaderName`
        # @return [String]
        attr_accessor :uploader_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @kind = args[:kind] if args.key?(:kind)
          @uploader_name = args[:uploader_name] if args.key?(:uploader_name)
        end
      end
      
      # 
      class ValidateAsyncResponse
        include Google::Apis::Core::Hashable
      
        # The type of the API resource. For this operation, the value is youtubePartner#
        # validateAsyncResponse.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The validation status.
        # Corresponds to the JSON property `status`
        # @return [String]
        attr_accessor :status
      
        # The validation ID.
        # Corresponds to the JSON property `validationId`
        # @return [String]
        attr_accessor :validation_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @kind = args[:kind] if args.key?(:kind)
          @status = args[:status] if args.key?(:status)
          @validation_id = args[:validation_id] if args.key?(:validation_id)
        end
      end
      
      # 
      class ValidateError
        include Google::Apis::Core::Hashable
      
        # The column name where the error occurred.
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        # The column number where the error occurred (1-based).
        # Corresponds to the JSON property `columnNumber`
        # @return [Fixnum]
        attr_accessor :column_number
      
        # The line number where the error occurred (1-based).
        # Corresponds to the JSON property `lineNumber`
        # @return [Fixnum]
        attr_accessor :line_number
      
        # The error message.
        # Corresponds to the JSON property `message`
        # @return [String]
        attr_accessor :message
      
        # The code for the error message (if one exists).
        # Corresponds to the JSON property `messageCode`
        # @return [Fixnum]
        attr_accessor :message_code
      
        # The error severity.
        # Corresponds to the JSON property `severity`
        # @return [String]
        attr_accessor :severity
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
          @column_number = args[:column_number] if args.key?(:column_number)
          @line_number = args[:line_number] if args.key?(:line_number)
          @message = args[:message] if args.key?(:message)
          @message_code = args[:message_code] if args.key?(:message_code)
          @severity = args[:severity] if args.key?(:severity)
        end
      end
      
      # 
      class ValidateRequest
        include Google::Apis::Core::Hashable
      
        # The metadata file contents.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # The type of the API resource. For this operation, the value is youtubePartner#
        # validateRequest.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The desired locale of the error messages as defined in BCP 47 (http: //tools.
        # ietf.org/html/bcp47). For example, "en-US" or "de". If not // specified we
        # will return the error messages in English ("en").
        # Corresponds to the JSON property `locale`
        # @return [String]
        attr_accessor :locale
      
        # The uploader name.
        # Corresponds to the JSON property `uploaderName`
        # @return [String]
        attr_accessor :uploader_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @kind = args[:kind] if args.key?(:kind)
          @locale = args[:locale] if args.key?(:locale)
          @uploader_name = args[:uploader_name] if args.key?(:uploader_name)
        end
      end
      
      # 
      class ValidateResponse
        include Google::Apis::Core::Hashable
      
        # The list of errors and/or warnings.
        # Corresponds to the JSON property `errors`
        # @return [Array<Google::Apis::YoutubePartnerV1::ValidateError>]
        attr_accessor :errors
      
        # The type of the API resource. For this operation, the value is youtubePartner#
        # validateResponse.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The validation status.
        # Corresponds to the JSON property `status`
        # @return [String]
        attr_accessor :status
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @errors = args[:errors] if args.key?(:errors)
          @kind = args[:kind] if args.key?(:kind)
          @status = args[:status] if args.key?(:status)
        end
      end
      
      # 
      class ValidateStatusRequest
        include Google::Apis::Core::Hashable
      
        # The type of the API resource. For this operation, the value is youtubePartner#
        # validateStatusRequest.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The desired locale of the error messages as defined in BCP 47 (http: //tools.
        # ietf.org/html/bcp47). For example, "en-US" or "de". If not // specified we
        # will return the error messages in English ("en").
        # Corresponds to the JSON property `locale`
        # @return [String]
        attr_accessor :locale
      
        # The validation ID.
        # Corresponds to the JSON property `validationId`
        # @return [String]
        attr_accessor :validation_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @kind = args[:kind] if args.key?(:kind)
          @locale = args[:locale] if args.key?(:locale)
          @validation_id = args[:validation_id] if args.key?(:validation_id)
        end
      end
      
      # 
      class ValidateStatusResponse
        include Google::Apis::Core::Hashable
      
        # The list of errors and/or warnings.
        # Corresponds to the JSON property `errors`
        # @return [Array<Google::Apis::YoutubePartnerV1::ValidateError>]
        attr_accessor :errors
      
        # If this is a metadata-only package.
        # Corresponds to the JSON property `isMetadataOnly`
        # @return [Boolean]
        attr_accessor :is_metadata_only
        alias_method :is_metadata_only?, :is_metadata_only
      
        # The type of the API resource. For this operation, the value is youtubePartner#
        # validateStatusResponse.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The validation status.
        # Corresponds to the JSON property `status`
        # @return [String]
        attr_accessor :status
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @errors = args[:errors] if args.key?(:errors)
          @is_metadata_only = args[:is_metadata_only] if args.key?(:is_metadata_only)
          @kind = args[:kind] if args.key?(:kind)
          @status = args[:status] if args.key?(:status)
        end
      end
      
      # 
      class VideoAdvertisingOption
        include Google::Apis::Core::Hashable
      
        # A list of times when YouTube can show an in-stream advertisement during
        # playback of the video.
        # Corresponds to the JSON property `adBreaks`
        # @return [Array<Google::Apis::YoutubePartnerV1::AdBreak>]
        attr_accessor :ad_breaks
      
        # A list of ad formats that the video is allowed to show.
        # Corresponds to the JSON property `adFormats`
        # @return [Array<String>]
        attr_accessor :ad_formats
      
        # Enables this video for automatically generated midroll breaks.
        # Corresponds to the JSON property `autoGeneratedBreaks`
        # @return [Boolean]
        attr_accessor :auto_generated_breaks
        alias_method :auto_generated_breaks?, :auto_generated_breaks
      
        # The point at which the break occurs during the video playback.
        # Corresponds to the JSON property `breakPosition`
        # @return [Array<String>]
        attr_accessor :break_position
      
        # The ID that YouTube uses to uniquely identify the video associated with the
        # advertising settings.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # The type of the API resource. For this resource, the value is youtubePartner#
        # videoAdvertisingOption.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # A value that uniquely identifies the video to the third-party ad server.
        # Corresponds to the JSON property `tpAdServerVideoId`
        # @return [String]
        attr_accessor :tp_ad_server_video_id
      
        # The base URL for a third-party ad server from which YouTube can retrieve in-
        # stream ads for the video.
        # Corresponds to the JSON property `tpTargetingUrl`
        # @return [String]
        attr_accessor :tp_targeting_url
      
        # A parameter string to append to the end of the request to the third-party ad
        # server.
        # Corresponds to the JSON property `tpUrlParameters`
        # @return [String]
        attr_accessor :tp_url_parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @ad_breaks = args[:ad_breaks] if args.key?(:ad_breaks)
          @ad_formats = args[:ad_formats] if args.key?(:ad_formats)
          @auto_generated_breaks = args[:auto_generated_breaks] if args.key?(:auto_generated_breaks)
          @break_position = args[:break_position] if args.key?(:break_position)
          @id = args[:id] if args.key?(:id)
          @kind = args[:kind] if args.key?(:kind)
          @tp_ad_server_video_id = args[:tp_ad_server_video_id] if args.key?(:tp_ad_server_video_id)
          @tp_targeting_url = args[:tp_targeting_url] if args.key?(:tp_targeting_url)
          @tp_url_parameters = args[:tp_url_parameters] if args.key?(:tp_url_parameters)
        end
      end
      
      # 
      class VideoAdvertisingOptionGetEnabledAdsResponse
        include Google::Apis::Core::Hashable
      
        # A list of ad breaks that occur in a claimed YouTube video.
        # Corresponds to the JSON property `adBreaks`
        # @return [Array<Google::Apis::YoutubePartnerV1::AdBreak>]
        attr_accessor :ad_breaks
      
        # This field indicates whether YouTube can show ads when the video is played in
        # an embedded player.
        # Corresponds to the JSON property `adsOnEmbeds`
        # @return [Boolean]
        attr_accessor :ads_on_embeds
        alias_method :ads_on_embeds?, :ads_on_embeds
      
        # A list that identifies the countries where ads can run and the types of ads
        # allowed in those countries.
        # Corresponds to the JSON property `countriesRestriction`
        # @return [Array<Google::Apis::YoutubePartnerV1::CountriesRestriction>]
        attr_accessor :countries_restriction
      
        # The ID that YouTube uses to uniquely identify the claimed video.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # The type of the API resource. For this resource, the value is youtubePartner#
        # videoAdvertisingOptionGetEnabledAds.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @ad_breaks = args[:ad_breaks] if args.key?(:ad_breaks)
          @ads_on_embeds = args[:ads_on_embeds] if args.key?(:ads_on_embeds)
          @countries_restriction = args[:countries_restriction] if args.key?(:countries_restriction)
          @id = args[:id] if args.key?(:id)
          @kind = args[:kind] if args.key?(:kind)
        end
      end
      
      # 
      class Whitelist
        include Google::Apis::Core::Hashable
      
        # The YouTube channel ID that uniquely identifies the whitelisted channel.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # The type of the API resource. For whitelist resources, this value is
        # youtubePartner#whitelist.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # Title of the whitelisted YouTube channel.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @id = args[:id] if args.key?(:id)
          @kind = args[:kind] if args.key?(:kind)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # 
      class WhitelistListResponse
        include Google::Apis::Core::Hashable
      
        # A list of whitelist resources that match the request criteria.
        # Corresponds to the JSON property `items`
        # @return [Array<Google::Apis::YoutubePartnerV1::Whitelist>]
        attr_accessor :items
      
        # The type of the API response. For this operation, the value is youtubePartner#
        # whitelistList.
        # Corresponds to the JSON property `kind`
        # @return [String]
        attr_accessor :kind
      
        # The token that can be used as the value of the pageToken parameter to retrieve
        # the next page of results.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The pageInfo object encapsulates paging information for the result set.
        # Corresponds to the JSON property `pageInfo`
        # @return [Google::Apis::YoutubePartnerV1::PageInfo]
        attr_accessor :page_info
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @items = args[:items] if args.key?(:items)
          @kind = args[:kind] if args.key?(:kind)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @page_info = args[:page_info] if args.key?(:page_info)
        end
      end
      
      # 
      class YoutubePartnerApiProtoFrontendV1Origin
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `source`
        # @return [String]
        attr_accessor :source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @source = args[:source] if args.key?(:source)
        end
      end
    end
  end
end
