/* tslint:disable */
/* eslint-disable */
/**
 * Jellyfin API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 10.8.9
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { exists, mapValues } from '../runtime';
import type { NameValuePair } from './NameValuePair';
import {
    NameValuePairFromJSON,
    NameValuePairFromJSONTyped,
    NameValuePairToJSON,
} from './NameValuePair';

/**
 * 
 * @export
 * @interface AddListingProviderRequest
 */
export interface AddListingProviderRequest {
    /**
     * 
     * @type {string}
     * @memberof AddListingProviderRequest
     */
    id?: string | null;
    /**
     * 
     * @type {string}
     * @memberof AddListingProviderRequest
     */
    type?: string | null;
    /**
     * 
     * @type {string}
     * @memberof AddListingProviderRequest
     */
    username?: string | null;
    /**
     * 
     * @type {string}
     * @memberof AddListingProviderRequest
     */
    password?: string | null;
    /**
     * 
     * @type {string}
     * @memberof AddListingProviderRequest
     */
    listingsId?: string | null;
    /**
     * 
     * @type {string}
     * @memberof AddListingProviderRequest
     */
    zipCode?: string | null;
    /**
     * 
     * @type {string}
     * @memberof AddListingProviderRequest
     */
    country?: string | null;
    /**
     * 
     * @type {string}
     * @memberof AddListingProviderRequest
     */
    path?: string | null;
    /**
     * 
     * @type {Array<string>}
     * @memberof AddListingProviderRequest
     */
    enabledTuners?: Array<string> | null;
    /**
     * 
     * @type {boolean}
     * @memberof AddListingProviderRequest
     */
    enableAllTuners?: boolean;
    /**
     * 
     * @type {Array<string>}
     * @memberof AddListingProviderRequest
     */
    newsCategories?: Array<string> | null;
    /**
     * 
     * @type {Array<string>}
     * @memberof AddListingProviderRequest
     */
    sportsCategories?: Array<string> | null;
    /**
     * 
     * @type {Array<string>}
     * @memberof AddListingProviderRequest
     */
    kidsCategories?: Array<string> | null;
    /**
     * 
     * @type {Array<string>}
     * @memberof AddListingProviderRequest
     */
    movieCategories?: Array<string> | null;
    /**
     * 
     * @type {Array<NameValuePair>}
     * @memberof AddListingProviderRequest
     */
    channelMappings?: Array<NameValuePair> | null;
    /**
     * 
     * @type {string}
     * @memberof AddListingProviderRequest
     */
    moviePrefix?: string | null;
    /**
     * 
     * @type {string}
     * @memberof AddListingProviderRequest
     */
    preferredLanguage?: string | null;
    /**
     * 
     * @type {string}
     * @memberof AddListingProviderRequest
     */
    userAgent?: string | null;
}

/**
 * Check if a given object implements the AddListingProviderRequest interface.
 */
export function instanceOfAddListingProviderRequest(value: object): boolean {
    let isInstance = true;

    return isInstance;
}

export function AddListingProviderRequestFromJSON(json: any): AddListingProviderRequest {
    return AddListingProviderRequestFromJSONTyped(json, false);
}

export function AddListingProviderRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): AddListingProviderRequest {
    if ((json === undefined) || (json === null)) {
        return json;
    }
    return {
        
        'id': !exists(json, 'Id') ? undefined : json['Id'],
        'type': !exists(json, 'Type') ? undefined : json['Type'],
        'username': !exists(json, 'Username') ? undefined : json['Username'],
        'password': !exists(json, 'Password') ? undefined : json['Password'],
        'listingsId': !exists(json, 'ListingsId') ? undefined : json['ListingsId'],
        'zipCode': !exists(json, 'ZipCode') ? undefined : json['ZipCode'],
        'country': !exists(json, 'Country') ? undefined : json['Country'],
        'path': !exists(json, 'Path') ? undefined : json['Path'],
        'enabledTuners': !exists(json, 'EnabledTuners') ? undefined : json['EnabledTuners'],
        'enableAllTuners': !exists(json, 'EnableAllTuners') ? undefined : json['EnableAllTuners'],
        'newsCategories': !exists(json, 'NewsCategories') ? undefined : json['NewsCategories'],
        'sportsCategories': !exists(json, 'SportsCategories') ? undefined : json['SportsCategories'],
        'kidsCategories': !exists(json, 'KidsCategories') ? undefined : json['KidsCategories'],
        'movieCategories': !exists(json, 'MovieCategories') ? undefined : json['MovieCategories'],
        'channelMappings': !exists(json, 'ChannelMappings') ? undefined : (json['ChannelMappings'] === null ? null : (json['ChannelMappings'] as Array<any>).map(NameValuePairFromJSON)),
        'moviePrefix': !exists(json, 'MoviePrefix') ? undefined : json['MoviePrefix'],
        'preferredLanguage': !exists(json, 'PreferredLanguage') ? undefined : json['PreferredLanguage'],
        'userAgent': !exists(json, 'UserAgent') ? undefined : json['UserAgent'],
    };
}

export function AddListingProviderRequestToJSON(value?: AddListingProviderRequest | null): any {
    if (value === undefined) {
        return undefined;
    }
    if (value === null) {
        return null;
    }
    return {
        
        'Id': value.id,
        'Type': value.type,
        'Username': value.username,
        'Password': value.password,
        'ListingsId': value.listingsId,
        'ZipCode': value.zipCode,
        'Country': value.country,
        'Path': value.path,
        'EnabledTuners': value.enabledTuners,
        'EnableAllTuners': value.enableAllTuners,
        'NewsCategories': value.newsCategories,
        'SportsCategories': value.sportsCategories,
        'KidsCategories': value.kidsCategories,
        'MovieCategories': value.movieCategories,
        'ChannelMappings': value.channelMappings === undefined ? undefined : (value.channelMappings === null ? null : (value.channelMappings as Array<any>).map(NameValuePairToJSON)),
        'MoviePrefix': value.moviePrefix,
        'PreferredLanguage': value.preferredLanguage,
        'UserAgent': value.userAgent,
    };
}

