/*
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 *
 * Code generated by Microsoft (R) AutoRest Code Generator.
 * Changes may cause incorrect behavior and will be lost if the code is
 * regenerated.
 */

'use strict';

const models = require('./index');

/**
 * Description of a NotificationHub PNS Credentials.
 *
 * @extends models['Resource']
 */
class PnsCredentialsResource extends models['Resource'] {
  /**
   * Create a PnsCredentialsResource.
   * @member {object} [apnsCredential] The ApnsCredential of the created
   * NotificationHub
   * @member {string} [apnsCredential.apnsCertificate] The APNS certificate.
   * @member {string} [apnsCredential.certificateKey] The certificate key.
   * @member {string} [apnsCredential.endpoint] The endpoint of this
   * credential.
   * @member {string} [apnsCredential.thumbprint] The Apns certificate
   * Thumbprint
   * @member {string} [apnsCredential.keyId] A 10-character key identifier
   * (kid) key, obtained from your developer account
   * @member {string} [apnsCredential.appName] The name of the application
   * @member {string} [apnsCredential.appId] The issuer (iss) registered claim
   * key, whose value is your 10-character Team ID, obtained from your
   * developer account
   * @member {string} [apnsCredential.token] Provider Authentication Token,
   * obtained through your developer account
   * @member {object} [wnsCredential] The WnsCredential of the created
   * NotificationHub
   * @member {string} [wnsCredential.packageSid] The package ID for this
   * credential.
   * @member {string} [wnsCredential.secretKey] The secret key.
   * @member {string} [wnsCredential.windowsLiveEndpoint] The Windows Live
   * endpoint.
   * @member {object} [gcmCredential] The GcmCredential of the created
   * NotificationHub
   * @member {string} [gcmCredential.gcmEndpoint] The GCM endpoint.
   * @member {string} [gcmCredential.googleApiKey] The Google API key.
   * @member {object} [mpnsCredential] The MpnsCredential of the created
   * NotificationHub
   * @member {string} [mpnsCredential.mpnsCertificate] The MPNS certificate.
   * @member {string} [mpnsCredential.certificateKey] The certificate key for
   * this credential.
   * @member {string} [mpnsCredential.thumbprint] The Mpns certificate
   * Thumbprint
   * @member {object} [admCredential] The AdmCredential of the created
   * NotificationHub
   * @member {string} [admCredential.clientId] The client identifier.
   * @member {string} [admCredential.clientSecret] The credential secret access
   * key.
   * @member {string} [admCredential.authTokenUrl] The URL of the authorization
   * token.
   * @member {object} [baiduCredential] The BaiduCredential of the created
   * NotificationHub
   * @member {string} [baiduCredential.baiduApiKey] Baidu Api Key.
   * @member {string} [baiduCredential.baiduEndPoint] Baidu Endpoint.
   * @member {string} [baiduCredential.baiduSecretKey] Baidu Secret Key
   */
  constructor() {
    super();
  }

  /**
   * Defines the metadata of PnsCredentialsResource
   *
   * @returns {object} metadata of PnsCredentialsResource
   *
   */
  mapper() {
    return {
      required: false,
      serializedName: 'PnsCredentialsResource',
      type: {
        name: 'Composite',
        className: 'PnsCredentialsResource',
        modelProperties: {
          id: {
            required: false,
            readOnly: true,
            serializedName: 'id',
            type: {
              name: 'String'
            }
          },
          name: {
            required: false,
            readOnly: true,
            serializedName: 'name',
            type: {
              name: 'String'
            }
          },
          type: {
            required: false,
            readOnly: true,
            serializedName: 'type',
            type: {
              name: 'String'
            }
          },
          location: {
            required: true,
            serializedName: 'location',
            type: {
              name: 'String'
            }
          },
          tags: {
            required: false,
            serializedName: 'tags',
            type: {
              name: 'Dictionary',
              value: {
                  required: false,
                  serializedName: 'StringElementType',
                  type: {
                    name: 'String'
                  }
              }
            }
          },
          sku: {
            required: false,
            serializedName: 'sku',
            type: {
              name: 'Composite',
              className: 'Sku'
            }
          },
          apnsCredential: {
            required: false,
            serializedName: 'properties.apnsCredential',
            type: {
              name: 'Composite',
              className: 'ApnsCredential'
            }
          },
          wnsCredential: {
            required: false,
            serializedName: 'properties.wnsCredential',
            type: {
              name: 'Composite',
              className: 'WnsCredential'
            }
          },
          gcmCredential: {
            required: false,
            serializedName: 'properties.gcmCredential',
            type: {
              name: 'Composite',
              className: 'GcmCredential'
            }
          },
          mpnsCredential: {
            required: false,
            serializedName: 'properties.mpnsCredential',
            type: {
              name: 'Composite',
              className: 'MpnsCredential'
            }
          },
          admCredential: {
            required: false,
            serializedName: 'properties.admCredential',
            type: {
              name: 'Composite',
              className: 'AdmCredential'
            }
          },
          baiduCredential: {
            required: false,
            serializedName: 'properties.baiduCredential',
            type: {
              name: 'Composite',
              className: 'BaiduCredential'
            }
          }
        }
      }
    };
  }
}

module.exports = PnsCredentialsResource;
