context: // ===================================================================================================
  //                           _  __     _ _
  //                          | |/ /__ _| | |_ _  _ _ _ __ _
  //                          | ' </ _` | |  _| || | '_/ _` |
  //                          |_|\_\__,_|_|\__|\_,_|_| \__,_|
  //
  // This file is part of the Kaltura Collaborative Media Suite which allows users
  // to do with audio, video, and animation what Wiki platforms allow them to do with
  // text.
  //
  // Copyright (C) 2006-2022  Kaltura Inc.
  //
  // This program is free software: you can redistribute it and/or modify
  // it under the terms of the GNU Affero General Public License as
  // published by the Free Software Foundation, either version 3 of the
  // License, or (at your option) any later version.
  //
  // This program is distributed in the hope that it will be useful,
  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  // GNU Affero General Public License for more details.
  //
  // You should have received a copy of the GNU Affero General Public License
  // along with this program.  If not, see <http://www.gnu.org/licenses/>.
  //
  // @ignore
  // ===================================================================================================
  using System;
  using System.Xml;
  using System.Collections.Generic;
  using Kaltura.Enums;
  using Kaltura.Request;
  using Newtonsoft.Json;
  using Newtonsoft.Json.Linq;
  
  namespace Kaltura.Types
  {
  	public class YouTubeDistributionJobProviderData : ConfigurableDistributionJobProviderData
  	{
  		#region Constants
  		public const string VIDEO_ASSET_FILE_PATH = "videoAssetFilePath";
  		public const string THUMB_ASSET_FILE_PATH = "thumbAssetFilePath";
  		public const string THUMB_ASSET_ID = "thumbAssetId";
  		public const string CAPTION_ASSET_IDS = "captionAssetIds";
  		public const string SFTP_DIRECTORY = "sftpDirectory";
  		public const string SFTP_METADATA_FILENAME = "sftpMetadataFilename";
  		public const string CURRENT_PLAYLISTS = "currentPlaylists";
  		public const string NEW_PLAYLISTS = "newPlaylists";
  		public const string SUBMIT_XML = "submitXml";
  		public const string UPDATE_XML = "updateXml";
  		public const string DELETE_XML = "deleteXml";
  		public const string GOOGLE_CLIENT_ID = "googleClientId";
  		public const string GOOGLE_CLIENT_SECRET = "googleClientSecret";
  		public const string GOOGLE_TOKEN_DATA = "googleTokenData";
  		public const string CAPTIONS_CSV_MAP = "captionsCsvMap";
  		public const string SUBMIT_CSV_MAP = "submitCsvMap";
  		public const string UPDATE_CSV_MAP = "updateCsvMap";
  		public const string DELETE_VIDEO_IDS = "deleteVideoIds";
  		#endregion
  
  		#region Private Fields
  		private string _VideoAssetFilePath = null;
  		private string _ThumbAssetFilePath = null;
  		private string _ThumbAssetId = null;
  		private string _CaptionAssetIds = null;
  		private string _SftpDirectory = null;
  		private string _SftpMetadataFilename = null;
  		private string _CurrentPlaylists = null;
  		private string _NewPlaylists = null;
  		private string _SubmitXml = null;
  		private string _UpdateXml = null;
  		private string _DeleteXml = null;
  		private string _GoogleClientId = null;
  		private string _GoogleClientSecret = null;
  		private string _GoogleTokenData = null;
  		private string _CaptionsCsvMap = null;
  		private string _SubmitCsvMap = null;
  		private string _UpdateCsvMap = null;
  		private string _DeleteVideoIds = null;
  		#endregion
  
  		#region Properties
  		/// <summary>
  		/// Use VideoAssetFilePathAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string VideoAssetFilePath
  		{
  			get { return _VideoAssetFilePath; }
  			set 
  			{ 
  				_VideoAssetFilePath = value;
  				OnPropertyChanged("VideoAssetFilePath");
  			}
  		}
  		/// <summary>
  		/// Use ThumbAssetFilePathAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string ThumbAssetFilePath
  		{
  			get { return _ThumbAssetFilePath; }
  			set 
  			{ 
  				_ThumbAssetFilePath = value;
  				OnPropertyChanged("ThumbAssetFilePath");
  			}
  		}
  		/// <summary>
  		/// Use ThumbAssetIdAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string ThumbAssetId
  		{
  			get { return _ThumbAssetId; }
  			set 
  			{ 
  				_ThumbAssetId = value;
  				OnPropertyChanged("ThumbAssetId");
  			}
  		}
  		/// <summary>
  		/// Use CaptionAssetIdsAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string CaptionAssetIds
  		{
  			get { return _CaptionAssetIds; }
  			set 
  			{ 
  				_CaptionAssetIds = value;
  				OnPropertyChanged("CaptionAssetIds");
  			}
  		}
  		/// <summary>
  		/// Use SftpDirectoryAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string SftpDirectory
  		{
  			get { return _SftpDirectory; }
  			set 
  			{ 
  				_SftpDirectory = value;
  				OnPropertyChanged("SftpDirectory");
  			}
  		}
  		/// <summary>
  		/// Use SftpMetadataFilenameAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string SftpMetadataFilename
  		{
  			get { return _SftpMetadataFilename; }
  			set 
  			{ 
  				_SftpMetadataFilename = value;
  				OnPropertyChanged("SftpMetadataFilename");
  			}
  		}
  		/// <summary>
  		/// Use CurrentPlaylistsAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string CurrentPlaylists
  		{
  			get { return _CurrentPlaylists; }
  			set 
  			{ 
  				_CurrentPlaylists = value;
  				OnPropertyChanged("CurrentPlaylists");
  			}
  		}
  		/// <summary>
  		/// Use NewPlaylistsAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string NewPlaylists
  		{
  			get { return _NewPlaylists; }
  			set 
  			{ 
  				_NewPlaylists = value;
  				OnPropertyChanged("NewPlaylists");
  			}
  		}
  		/// <summary>
  		/// Use SubmitXmlAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string SubmitXml
  		{
  			get { return _SubmitXml; }
  			set 
  			{ 
  				_SubmitXml = value;
  				OnPropertyChanged("SubmitXml");
  			}
  		}
  		/// <summary>
  		/// Use UpdateXmlAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string UpdateXml
  		{
  			get { return _UpdateXml; }
  			set 
  			{ 
  				_UpdateXml = value;
  				OnPropertyChanged("UpdateXml");
  			}
  		}
  		/// <summary>
  		/// Use DeleteXmlAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string DeleteXml
  		{
  			get { return _DeleteXml; }
  			set 
  			{ 
  				_DeleteXml = value;
  				OnPropertyChanged("DeleteXml");
  			}
  		}
  		/// <summary>
  		/// Use GoogleClientIdAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string GoogleClientId
  		{
  			get { return _GoogleClientId; }
  			set 
  			{ 
  				_GoogleClientId = value;
  				OnPropertyChanged("GoogleClientId");
  			}
  		}
  		/// <summary>
  		/// Use GoogleClientSecretAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string GoogleClientSecret
  		{
  			get { return _GoogleClientSecret; }
  			set 
  			{ 
  				_GoogleClientSecret = value;
  				OnPropertyChanged("GoogleClientSecret");
  			}
  		}
  		/// <summary>
  		/// Use GoogleTokenDataAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string GoogleTokenData
  		{
  			get { return _GoogleTokenData; }
  			set 
  			{ 
  				_GoogleTokenData = value;
  				OnPropertyChanged("GoogleTokenData");
  			}
  		}
  		/// <summary>
  		/// Use CaptionsCsvMapAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string CaptionsCsvMap
  		{
  			get { return _CaptionsCsvMap; }
  			set 
  			{ 
  				_CaptionsCsvMap = value;
  				OnPropertyChanged("CaptionsCsvMap");
  			}
  		}
  		/// <summary>
  		/// Use SubmitCsvMapAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string SubmitCsvMap
  		{
  			get { return _SubmitCsvMap; }
  			set 
  			{ 
  				_SubmitCsvMap = value;
  				OnPropertyChanged("SubmitCsvMap");
  			}
  		}
  		/// <summary>
  		/// Use UpdateCsvMapAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string UpdateCsvMap
  		{
  			get { return _UpdateCsvMap; }
  			set 
  			{ 
  				_UpdateCsvMap = value;
  				OnPropertyChanged("UpdateCsvMap");
  			}
  		}
  		/// <summary>
  		/// Use DeleteVideoIdsAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string DeleteVideoIds
  		{
  			get { return _DeleteVideoIds; }
  			set 
  			{ 
  				_DeleteVideoIds = value;
  				OnPropertyChanged("DeleteVideoIds");
  			}
  		}
  		#endregion
  
  		#region CTor
  		public YouTubeDistributionJobProviderData()
  		{
  		}
  
  		public YouTubeDistributionJobProviderData(JToken node) : base(node)
  		{
  			if(node["videoAssetFilePath"] != null)
  			{
  				this._VideoAssetFilePath = node["videoAssetFilePath"].Value<string>();
  			}
  			if(node["thumbAssetFilePath"] != null)
  			{
  				this._ThumbAssetFilePath = node["thumbAssetFilePath"].Value<string>();
  			}
  			if(node["thumbAssetId"] != null)
  			{
  				this._ThumbAssetId = node["thumbAssetId"].Value<string>();
  			}
  			if(node["captionAssetIds"] != null)
  			{
  				this._CaptionAssetIds = node["captionAssetIds"].Value<string>();
  			}
  			if(node["sftpDirectory"] != null)
  			{
  				this._SftpDirectory = node["sftpDirectory"].Value<string>();
  			}
  			if(node["sftpMetadataFilename"] != null)
  			{
  				this._SftpMetadataFilename = node["sftpMetadataFilename"].Value<string>();
  			}
  			if(node["currentPlaylists"] != null)
  			{
  				this._CurrentPlaylists = node["currentPlaylists"].Value<string>();
  			}
  			if(node["newPlaylists"] != null)
  			{
  				this._NewPlaylists = node["newPlaylists"].Value<string>();
  			}
  			if(node["submitXml"] != null)
  			{
  				this._SubmitXml = node["submitXml"].Value<string>();
  			}
  			if(node["updateXml"] != null)
  			{
  				this._UpdateXml = node["updateXml"].Value<string>();
  			}
  			if(node["deleteXml"] != null)
  			{
  				this._DeleteXml = node["deleteXml"].Value<string>();
  			}
  			if(node["googleClientId"] != null)
  			{
  				this._GoogleClientId = node["googleClientId"].Value<string>();
  			}
  			if(node["googleClientSecret"] != null)
  			{
  				this._GoogleClientSecret = node["googleClientSecret"].Value<string>();
  			}
  			if(node["googleTokenData"] != null)
  			{
  				this._GoogleTokenData = node["googleTokenData"].Value<string>();
  			}
  			if(node["captionsCsvMap"] != null)
  			{
  				this._CaptionsCsvMap = node["captionsCsvMap"].Value<string>();
  			}
  			if(node["submitCsvMap"] != null)
  			{
  
gt: 				this._SubmitCsvMap = node["submitCsvMap"].Value<string>();