# Copyright 2015 Google Inc.
#
# 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 PlaymoviespartnerV1
      
      # An Avail describes the Availability Window of a specific Edit in a given
      # country, which means the period Google is allowed to sell or rent the Edit.
      # Avails are exposed in EMA format Version 1.6b (available at
      # http://www.movielabs.com/md/avails/)
      # Studios can see the Avails for the Titles they own.
      # Post-production houses cannot see any Avails.
      class Avail
        include Google::Apis::Core::Hashable
      
        # Other identifier referring to the Edit, as defined by partner.
        # Example: "GOOGLER_2006"
        # Corresponds to the JSON property `altId`
        # @return [String]
        attr_accessor :alt_id
      
        # ID internally generated by Google to uniquely identify an Avail.
        # Not part of EMA Specs.
        # Corresponds to the JSON property `availId`
        # @return [String]
        attr_accessor :avail_id
      
        # Communicating an exempt category as defined by FCC regulations.
        # It is not required for non-US Avails.
        # Example: "1"
        # Corresponds to the JSON property `captionExemption`
        # @return [String]
        attr_accessor :caption_exemption
      
        # Communicating if caption file will be delivered.
        # Corresponds to the JSON property `captionIncluded`
        # @return [Boolean]
        attr_accessor :caption_included
        alias_method :caption_included?, :caption_included
      
        # Title Identifier. This should be the Title Level EIDR.
        # Example: "10.5240/1489-49A2-3956-4B2D-FE16-5".
        # Corresponds to the JSON property `contentId`
        # @return [String]
        attr_accessor :content_id
      
        # The name of the studio that owns the Edit referred in the Avail.
        # This is the equivalent of `studio_name` in other resources, but it follows
        # the EMA nomenclature.
        # Example: "Google Films".
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Manifestation Identifier. This should be the Manifestation
        # Level EIDR.
        # Example: "10.2340/1489-49A2-3956-4B2D-FE16-7"
        # Corresponds to the JSON property `encodeId`
        # @return [String]
        attr_accessor :encode_id
      
        # End of term in YYYY-MM-DD format in the timezone of the country
        # of the Avail.
        # "Open" if no end date is available.
        # Example: "2019-02-17"
        # Corresponds to the JSON property `end`
        # @return [String]
        attr_accessor :end
      
        # Other identifier referring to the episode, as defined by partner.
        # Only available on TV avails.
        # Example: "rs_googlers_s1_3".
        # Corresponds to the JSON property `episodeAltId`
        # @return [String]
        attr_accessor :episode_alt_id
      
        # The number assigned to the episode within a season.
        # Only available on TV Avails.
        # Example: "3".
        # Corresponds to the JSON property `episodeNumber`
        # @return [String]
        attr_accessor :episode_number
      
        # OPTIONAL.TV Only. Title used by involved parties to refer to this episode.
        # Only available on TV Avails.
        # Example: "Coding at Google".
        # Corresponds to the JSON property `episodeTitleInternalAlias`
        # @return [String]
        attr_accessor :episode_title_internal_alias
      
        # Indicates the format profile covered by the transaction.
        # Corresponds to the JSON property `formatProfile`
        # @return [String]
        attr_accessor :format_profile
      
        # Type of transaction.
        # Corresponds to the JSON property `licenseType`
        # @return [String]
        attr_accessor :license_type
      
        # Name of the post-production houses that manage the Avail.
        # Not part of EMA Specs.
        # Corresponds to the JSON property `pphNames`
        # @return [Array<String>]
        attr_accessor :pph_names
      
        # Type of pricing that should be applied to this Avail
        # based on how the partner classify them.
        # Example: "Tier", "WSP", "SRP", or "Category".
        # Corresponds to the JSON property `priceType`
        # @return [String]
        attr_accessor :price_type
      
        # Value to be applied to the pricing type.
        # Example: "4" or "2.99"
        # Corresponds to the JSON property `priceValue`
        # @return [String]
        attr_accessor :price_value
      
        # Edit Identifier. This should be the Edit Level EIDR.
        # Example: "10.2340/1489-49A2-3956-4B2D-FE16-6"
        # Corresponds to the JSON property `productId`
        # @return [String]
        attr_accessor :product_id
      
        # Value representing the rating reason.
        # Rating reasons should be formatted as per
        # [EMA ratings spec](http://www.movielabs.com/md/ratings/)
        # and comma-separated for inclusion of multiple reasons.
        # Example: "L, S, V"
        # Corresponds to the JSON property `ratingReason`
        # @return [String]
        attr_accessor :rating_reason
      
        # Rating system applied to the version of title within territory
        # of Avail.
        # Rating systems should be formatted as per
        # [EMA ratings spec](http://www.movielabs.com/md/ratings/)
        # Example: "MPAA"
        # Corresponds to the JSON property `ratingSystem`
        # @return [String]
        attr_accessor :rating_system
      
        # Value representing the rating.
        # Ratings should be formatted as per http://www.movielabs.com/md/ratings/
        # Example: "PG"
        # Corresponds to the JSON property `ratingValue`
        # @return [String]
        attr_accessor :rating_value
      
        # Release date of the Title in earliest released territory.
        # Typically it is just the year, but it is free-form as per EMA spec.
        # Examples: "1979", "Oct 2014"
        # Corresponds to the JSON property `releaseDate`
        # @return [String]
        attr_accessor :release_date
      
        # Other identifier referring to the season, as defined by partner.
        # Only available on TV avails.
        # Example: "rs_googlers_s1".
        # Corresponds to the JSON property `seasonAltId`
        # @return [String]
        attr_accessor :season_alt_id
      
        # The number assigned to the season within a series.
        # Only available on TV Avails.
        # Example: "1".
        # Corresponds to the JSON property `seasonNumber`
        # @return [String]
        attr_accessor :season_number
      
        # Title used by involved parties to refer to this season.
        # Only available on TV Avails.
        # Example: "Googlers, The".
        # Corresponds to the JSON property `seasonTitleInternalAlias`
        # @return [String]
        attr_accessor :season_title_internal_alias
      
        # Other identifier referring to the series, as defined by partner.
        # Only available on TV avails.
        # Example: "rs_googlers".
        # Corresponds to the JSON property `seriesAltId`
        # @return [String]
        attr_accessor :series_alt_id
      
        # Title used by involved parties to refer to this series.
        # Only available on TV Avails.
        # Example: "Googlers, The".
        # Corresponds to the JSON property `seriesTitleInternalAlias`
        # @return [String]
        attr_accessor :series_title_internal_alias
      
        # Start of term in YYYY-MM-DD format in the timezone of the
        # country of the Avail.
        # Example: "2013-05-14".
        # Corresponds to the JSON property `start`
        # @return [String]
        attr_accessor :start
      
        # Spoken language of the intended audience.
        # Language shall be encoded in accordance with RFC 5646.
        # Example: "fr".
        # Corresponds to the JSON property `storeLanguage`
        # @return [String]
        attr_accessor :store_language
      
        # First date an Edit could be publically announced as becoming
        # available at a specific future date in territory of Avail.
        # *Not* the Avail start date or pre-order start date.
        # Format is YYYY-MM-DD.
        # Only available for pre-orders.
        # Example: "2012-12-10"
        # Corresponds to the JSON property `suppressionLiftDate`
        # @return [String]
        attr_accessor :suppression_lift_date
      
        # ISO 3166-1 alpha-2 country code for the country or territory
        # of this Avail.
        # For Avails, we use Territory in lieu of Country to comply with
        # EMA specifications.
        # But please note that Territory and Country identify the same thing.
        # Example: "US".
        # Corresponds to the JSON property `territory`
        # @return [String]
        attr_accessor :territory
      
        # Title used by involved parties to refer to this content.
        # Example: "Googlers, The".
        # Only available on Movie Avails.
        # Corresponds to the JSON property `titleInternalAlias`
        # @return [String]
        attr_accessor :title_internal_alias
      
        # Google-generated ID identifying the video linked to this Avail, once
        # delivered.
        # Not part of EMA Specs.
        # Example: 'gtry456_xc'
        # Corresponds to the JSON property `videoId`
        # @return [String]
        attr_accessor :video_id
      
        # Work type as enumerated in EMA.
        # Corresponds to the JSON property `workType`
        # @return [String]
        attr_accessor :work_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @alt_id = args[:alt_id] if args.key?(:alt_id)
          @avail_id = args[:avail_id] if args.key?(:avail_id)
          @caption_exemption = args[:caption_exemption] if args.key?(:caption_exemption)
          @caption_included = args[:caption_included] if args.key?(:caption_included)
          @content_id = args[:content_id] if args.key?(:content_id)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encode_id = args[:encode_id] if args.key?(:encode_id)
          @end = args[:end] if args.key?(:end)
          @episode_alt_id = args[:episode_alt_id] if args.key?(:episode_alt_id)
          @episode_number = args[:episode_number] if args.key?(:episode_number)
          @episode_title_internal_alias = args[:episode_title_internal_alias] if args.key?(:episode_title_internal_alias)
          @format_profile = args[:format_profile] if args.key?(:format_profile)
          @license_type = args[:license_type] if args.key?(:license_type)
          @pph_names = args[:pph_names] if args.key?(:pph_names)
          @price_type = args[:price_type] if args.key?(:price_type)
          @price_value = args[:price_value] if args.key?(:price_value)
          @product_id = args[:product_id] if args.key?(:product_id)
          @rating_reason = args[:rating_reason] if args.key?(:rating_reason)
          @rating_system = args[:rating_system] if args.key?(:rating_system)
          @rating_value = args[:rating_value] if args.key?(:rating_value)
          @release_date = args[:release_date] if args.key?(:release_date)
          @season_alt_id = args[:season_alt_id] if args.key?(:season_alt_id)
          @season_number = args[:season_number] if args.key?(:season_number)
          @season_title_internal_alias = args[:season_title_internal_alias] if args.key?(:season_title_internal_alias)
          @series_alt_id = args[:series_alt_id] if args.key?(:series_alt_id)
          @series_title_internal_alias = args[:series_title_internal_alias] if args.key?(:series_title_internal_alias)
          @start = args[:start] if args.key?(:start)
          @store_language = args[:store_language] if args.key?(:store_language)
          @suppression_lift_date = args[:suppression_lift_date] if args.key?(:suppression_lift_date)
          @territory = args[:territory] if args.key?(:territory)
          @title_internal_alias = args[:title_internal_alias] if args.key?(:title_internal_alias)
          @video_id = args[:video_id] if args.key?(:video_id)
          @work_type = args[:work_type] if args.key?(:work_type)
        end
      end
      
      # Response to the 'ListAvails' method.
      class ListAvailsResponse
        include Google::Apis::Core::Hashable
      
        # List of Avails that match the request criteria.
        # Corresponds to the JSON property `avails`
        # @return [Array<Google::Apis::PlaymoviespartnerV1::Avail>]
        attr_accessor :avails
      
        # See _List methods rules_ for info about this field.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # See _List methods rules_ for more information about this field.
        # Corresponds to the JSON property `totalSize`
        # @return [Fixnum]
        attr_accessor :total_size
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @avails = args[:avails] if args.key?(:avails)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @total_size = args[:total_size] if args.key?(:total_size)
        end
      end
      
      # Response to the 'ListOrders' method.
      class ListOrdersResponse
        include Google::Apis::Core::Hashable
      
        # See _List methods rules_ for info about this field.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # List of Orders that match the request criteria.
        # Corresponds to the JSON property `orders`
        # @return [Array<Google::Apis::PlaymoviespartnerV1::Order>]
        attr_accessor :orders
      
        # See _List methods rules_ for more information about this field.
        # Corresponds to the JSON property `totalSize`
        # @return [Fixnum]
        attr_accessor :total_size
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @orders = args[:orders] if args.key?(:orders)
          @total_size = args[:total_size] if args.key?(:total_size)
        end
      end
      
      # Response to the 'ListStoreInfos' method.
      class ListStoreInfosResponse
        include Google::Apis::Core::Hashable
      
        # See 'List methods rules' for info about this field.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # List of StoreInfos that match the request criteria.
        # Corresponds to the JSON property `storeInfos`
        # @return [Array<Google::Apis::PlaymoviespartnerV1::StoreInfo>]
        attr_accessor :store_infos
      
        # See _List methods rules_ for more information about this field.
        # Corresponds to the JSON property `totalSize`
        # @return [Fixnum]
        attr_accessor :total_size
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @store_infos = args[:store_infos] if args.key?(:store_infos)
          @total_size = args[:total_size] if args.key?(:total_size)
        end
      end
      
      # An Order tracks the fulfillment of an Edit when delivered using the
      # legacy, non-component-based delivery.
      # Each Order is uniquely identified by an `order_id`, which is generated
      # by Google.
      # Externally, Orders can also be identified by partners using its `custom_id`
      # (when provided).
      class Order
        include Google::Apis::Core::Hashable
      
        # Timestamp when the Order was approved.
        # Corresponds to the JSON property `approvedTime`
        # @return [String]
        attr_accessor :approved_time
      
        # YouTube Channel ID that should be used to fulfill the Order.
        # Example: "UCRG64darCZhb".
        # Corresponds to the JSON property `channelId`
        # @return [String]
        attr_accessor :channel_id
      
        # YouTube Channel Name that should be used to fulfill the Order.
        # Example: "Google_channel".
        # Corresponds to the JSON property `channelName`
        # @return [String]
        attr_accessor :channel_name
      
        # Countries where the Order is available,
        # using the "ISO 3166-1 alpha-2" format (example: "US").
        # Corresponds to the JSON property `countries`
        # @return [Array<String>]
        attr_accessor :countries
      
        # ID that can be used to externally identify an Order.
        # This ID is provided by partners when submitting the Avails.
        # Example: 'GOOGLER_2006'
        # Corresponds to the JSON property `customId`
        # @return [String]
        attr_accessor :custom_id
      
        # Timestamp of the earliest start date of the Avails
        # linked to this Order.
        # Corresponds to the JSON property `earliestAvailStartTime`
        # @return [String]
        attr_accessor :earliest_avail_start_time
      
        # Default Episode name,
        # usually in the language of the country of origin.
        # Only available for TV Edits
        # Example: "Googlers, The - Pilot".
        # Corresponds to the JSON property `episodeName`
        # @return [String]
        attr_accessor :episode_name
      
        # Legacy Order priority, as defined by Google.
        # Example: 'P0'
        # Corresponds to the JSON property `legacyPriority`
        # @return [String]
        attr_accessor :legacy_priority
      
        # Default Edit name,
        # usually in the language of the country of origin.
        # Example: "Googlers, The".
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # A simpler representation of the priority.
        # Corresponds to the JSON property `normalizedPriority`
        # @return [String]
        attr_accessor :normalized_priority
      
        # ID internally generated by Google to uniquely identify an Order.
        # Example: 'abcde12_x'
        # Corresponds to the JSON property `orderId`
        # @return [String]
        attr_accessor :order_id
      
        # Timestamp when the Order was created.
        # Corresponds to the JSON property `orderedTime`
        # @return [String]
        attr_accessor :ordered_time
      
        # Name of the post-production house that manages the Edit ordered.
        # Corresponds to the JSON property `pphName`
        # @return [String]
        attr_accessor :pph_name
      
        # Order priority, as defined by Google.
        # The higher the value, the higher the priority.
        # Example: 90
        # Corresponds to the JSON property `priority`
        # @return [Float]
        attr_accessor :priority
      
        # Timestamp when the Order was fulfilled.
        # Corresponds to the JSON property `receivedTime`
        # @return [String]
        attr_accessor :received_time
      
        # Field explaining why an Order has been rejected.
        # Example: "Trailer audio is 2ch mono, please re-deliver in stereo".
        # Corresponds to the JSON property `rejectionNote`
        # @return [String]
        attr_accessor :rejection_note
      
        # Default Season name,
        # usually in the language of the country of origin.
        # Only available for TV Edits
        # Example: "Googlers, The - A Brave New World".
        # Corresponds to the JSON property `seasonName`
        # @return [String]
        attr_accessor :season_name
      
        # Default Show name,
        # usually in the language of the country of origin.
        # Only available for TV Edits
        # Example: "Googlers, The".
        # Corresponds to the JSON property `showName`
        # @return [String]
        attr_accessor :show_name
      
        # High-level status of the order.
        # Corresponds to the JSON property `status`
        # @return [String]
        attr_accessor :status
      
        # Detailed status of the order
        # Corresponds to the JSON property `statusDetail`
        # @return [String]
        attr_accessor :status_detail
      
        # Name of the studio that owns the Edit ordered.
        # Corresponds to the JSON property `studioName`
        # @return [String]
        attr_accessor :studio_name
      
        # Type of the Edit linked to the Order.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        # Google-generated ID identifying the video linked to this Order, once
        # delivered.
        # Example: 'gtry456_xc'.
        # 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)
          @approved_time = args[:approved_time] if args.key?(:approved_time)
          @channel_id = args[:channel_id] if args.key?(:channel_id)
          @channel_name = args[:channel_name] if args.key?(:channel_name)
          @countries = args[:countries] if args.key?(:countries)
          @custom_id = args[:custom_id] if args.key?(:custom_id)
          @earliest_avail_start_time = args[:earliest_avail_start_time] if args.key?(:earliest_avail_start_time)
          @episode_name = args[:episode_name] if args.key?(:episode_name)
          @legacy_priority = args[:legacy_priority] if args.key?(:legacy_priority)
          @name = args[:name] if args.key?(:name)
          @normalized_priority = args[:normalized_priority] if args.key?(:normalized_priority)
          @order_id = args[:order_id] if args.key?(:order_id)
          @ordered_time = args[:ordered_time] if args.key?(:ordered_time)
          @pph_name = args[:pph_name] if args.key?(:pph_name)
          @priority = args[:priority] if args.key?(:priority)
          @received_time = args[:received_time] if args.key?(:received_time)
          @rejection_note = args[:rejection_note] if args.key?(:rejection_note)
          @season_name = args[:season_name] if args.key?(:season_name)
          @show_name = args[:show_name] if args.key?(:show_name)
          @status = args[:status] if args.key?(:status)
          @status_detail = args[:status_detail] if args.key?(:status_detail)
          @studio_name = args[:studio_name] if args.key?(:studio_name)
          @type = args[:type] if args.key?(:type)
          @video_id = args[:video_id] if args.key?(:video_id)
        end
      end
      
      # Information about a playable sequence (video) associated with an Edit
      # and available at the Google Play Store.
      # Internally, each StoreInfo is uniquely identified by a `video_id`
      # and `country`.
      # Externally, Title-level EIDR or Edit-level EIDR, if provided,
      # can also be used to identify a specific title or edit in a country.
      class StoreInfo
        include Google::Apis::Core::Hashable
      
        # Audio tracks available for this Edit.
        # Corresponds to the JSON property `audioTracks`
        # @return [Array<String>]
        attr_accessor :audio_tracks
      
        # Country where Edit is available in ISO 3166-1 alpha-2 country
        # code.
        # Example: "US".
        # Corresponds to the JSON property `country`
        # @return [String]
        attr_accessor :country
      
        # Edit-level EIDR ID.
        # Example: "10.5240/1489-49A2-3956-4B2D-FE16-6".
        # Corresponds to the JSON property `editLevelEidr`
        # @return [String]
        attr_accessor :edit_level_eidr
      
        # The number assigned to the episode within a season.
        # Only available on TV Edits.
        # Example: "1".
        # Corresponds to the JSON property `episodeNumber`
        # @return [String]
        attr_accessor :episode_number
      
        # Whether the Edit has a 5.1 channel audio track.
        # Corresponds to the JSON property `hasAudio51`
        # @return [Boolean]
        attr_accessor :has_audio51
        alias_method :has_audio51?, :has_audio51
      
        # Whether the Edit has a EST offer.
        # Corresponds to the JSON property `hasEstOffer`
        # @return [Boolean]
        attr_accessor :has_est_offer
        alias_method :has_est_offer?, :has_est_offer
      
        # Whether the Edit has a HD offer.
        # Corresponds to the JSON property `hasHdOffer`
        # @return [Boolean]
        attr_accessor :has_hd_offer
        alias_method :has_hd_offer?, :has_hd_offer
      
        # Whether the Edit has info cards.
        # Corresponds to the JSON property `hasInfoCards`
        # @return [Boolean]
        attr_accessor :has_info_cards
        alias_method :has_info_cards?, :has_info_cards
      
        # Whether the Edit has a SD offer.
        # Corresponds to the JSON property `hasSdOffer`
        # @return [Boolean]
        attr_accessor :has_sd_offer
        alias_method :has_sd_offer?, :has_sd_offer
      
        # Whether the Edit has a VOD offer.
        # Corresponds to the JSON property `hasVodOffer`
        # @return [Boolean]
        attr_accessor :has_vod_offer
        alias_method :has_vod_offer?, :has_vod_offer
      
        # Timestamp when the Edit went live on the Store.
        # Corresponds to the JSON property `liveTime`
        # @return [String]
        attr_accessor :live_time
      
        # Knowledge Graph ID associated to this Edit, if available.
        # This ID links the Edit to its knowledge entity, externally accessible
        # at http://freebase.com.
        # In the absense of Title EIDR or Edit EIDR, this ID helps link together
        # multiple Edits across countries.
        # Example: '/m/0ffx29'
        # Corresponds to the JSON property `mid`
        # @return [String]
        attr_accessor :mid
      
        # Default Edit name, usually in the language of the country of
        # origin.
        # Example: "Googlers, The".
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Name of the post-production houses that manage the Edit.
        # Corresponds to the JSON property `pphNames`
        # @return [Array<String>]
        attr_accessor :pph_names
      
        # Google-generated ID identifying the season linked to the Edit.
        # Only available for TV Edits.
        # Example: 'ster23ex'
        # Corresponds to the JSON property `seasonId`
        # @return [String]
        attr_accessor :season_id
      
        # Default Season name, usually in the language of the country of
        # origin.
        # Only available for TV Edits
        # Example: "Googlers, The - A Brave New World".
        # Corresponds to the JSON property `seasonName`
        # @return [String]
        attr_accessor :season_name
      
        # The number assigned to the season within a show.
        # Only available on TV Edits.
        # Example: "1".
        # Corresponds to the JSON property `seasonNumber`
        # @return [String]
        attr_accessor :season_number
      
        # Google-generated ID identifying the show linked to the Edit.
        # Only available for TV Edits.
        # Example: 'et2hsue_x'
        # Corresponds to the JSON property `showId`
        # @return [String]
        attr_accessor :show_id
      
        # Default Show name, usually in the language of the country of
        # origin.
        # Only available for TV Edits
        # Example: "Googlers, The".
        # Corresponds to the JSON property `showName`
        # @return [String]
        attr_accessor :show_name
      
        # Name of the studio that owns the Edit ordered.
        # Corresponds to the JSON property `studioName`
        # @return [String]
        attr_accessor :studio_name
      
        # Subtitles available for this Edit.
        # Corresponds to the JSON property `subtitles`
        # @return [Array<String>]
        attr_accessor :subtitles
      
        # Title-level EIDR ID.
        # Example: "10.5240/1489-49A2-3956-4B2D-FE16-5".
        # Corresponds to the JSON property `titleLevelEidr`
        # @return [String]
        attr_accessor :title_level_eidr
      
        # Google-generated ID identifying the trailer linked to the Edit.
        # Example: 'bhd_4e_cx'
        # Corresponds to the JSON property `trailerId`
        # @return [String]
        attr_accessor :trailer_id
      
        # Edit type, like Movie, Episode or Season.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        # Google-generated ID identifying the video linked to the Edit.
        # Example: 'gtry456_xc'
        # 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)
          @audio_tracks = args[:audio_tracks] if args.key?(:audio_tracks)
          @country = args[:country] if args.key?(:country)
          @edit_level_eidr = args[:edit_level_eidr] if args.key?(:edit_level_eidr)
          @episode_number = args[:episode_number] if args.key?(:episode_number)
          @has_audio51 = args[:has_audio51] if args.key?(:has_audio51)
          @has_est_offer = args[:has_est_offer] if args.key?(:has_est_offer)
          @has_hd_offer = args[:has_hd_offer] if args.key?(:has_hd_offer)
          @has_info_cards = args[:has_info_cards] if args.key?(:has_info_cards)
          @has_sd_offer = args[:has_sd_offer] if args.key?(:has_sd_offer)
          @has_vod_offer = args[:has_vod_offer] if args.key?(:has_vod_offer)
          @live_time = args[:live_time] if args.key?(:live_time)
          @mid = args[:mid] if args.key?(:mid)
          @name = args[:name] if args.key?(:name)
          @pph_names = args[:pph_names] if args.key?(:pph_names)
          @season_id = args[:season_id] if args.key?(:season_id)
          @season_name = args[:season_name] if args.key?(:season_name)
          @season_number = args[:season_number] if args.key?(:season_number)
          @show_id = args[:show_id] if args.key?(:show_id)
          @show_name = args[:show_name] if args.key?(:show_name)
          @studio_name = args[:studio_name] if args.key?(:studio_name)
          @subtitles = args[:subtitles] if args.key?(:subtitles)
          @title_level_eidr = args[:title_level_eidr] if args.key?(:title_level_eidr)
          @trailer_id = args[:trailer_id] if args.key?(:trailer_id)
          @type = args[:type] if args.key?(:type)
          @video_id = args[:video_id] if args.key?(:video_id)
        end
      end
    end
  end
end
