/*
 * Code generated by Microsoft (R) AutoRest Code Generator.
 * Changes may cause incorrect behavior and will be lost if the code is
 * regenerated.
*/

import { ServiceClientOptions, RequestOptions, ServiceCallback, HttpOperationResponse } from 'ms-rest';
import * as models from '../models';


/**
 * @class
 * ApiTokens
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the AccountClient.
 */
export interface ApiTokens {


    /**
     * Returns api tokens for the authenticated user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listWithHttpOperationResponse(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ApiTokensGetResponse[]>>;

    /**
     * Returns api tokens for the authenticated user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    list(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.ApiTokensGetResponse[]>;
    list(callback: ServiceCallback<models.ApiTokensGetResponse[]>): void;
    list(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ApiTokensGetResponse[]>): void;


    /**
     * Creates a new API token
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.description] Description of the token
     *
     * @param {string} [options.description.description] The description of the
     * token
     *
     * @param {array} [options.description.scope] The scope for this token.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<ApiTokensCreateResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    newMethodWithHttpOperationResponse(options?: { description? : models.ApiTokensCreateRequest, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ApiTokensCreateResponse>>;

    /**
     * Creates a new API token
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.description] Description of the token
     *
     * @param {string} [options.description.description] The description of the
     * token
     *
     * @param {array} [options.description.scope] The scope for this token.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {ApiTokensCreateResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {ApiTokensCreateResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ApiTokensCreateResponse} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    newMethod(options?: { description? : models.ApiTokensCreateRequest, customHeaders? : { [headerName: string]: string; } }): Promise<models.ApiTokensCreateResponse>;
    newMethod(callback: ServiceCallback<models.ApiTokensCreateResponse>): void;
    newMethod(options: { description? : models.ApiTokensCreateRequest, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ApiTokensCreateResponse>): void;


    /**
     * Delete the api_token object with the specific id
     *
     * @param {string} apiTokenId The unique ID (UUID) of the api token
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(apiTokenId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Delete the api_token object with the specific id
     *
     * @param {string} apiTokenId The unique ID (UUID) of the api token
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    deleteMethod(apiTokenId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteMethod(apiTokenId: string, callback: ServiceCallback<void>): void;
    deleteMethod(apiTokenId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
}

/**
 * @class
 * Apps
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the AccountClient.
 */
export interface Apps {


    /**
     * Creates a new app and returns it to the caller
     *
     * @param {object} app The data for the app
     *
     * @param {string} [app.description] A short text describing the app
     *
     * @param {string} app.displayName The descriptive name of the app. This can
     * contain any characters
     *
     * @param {string} [app.name] The name of the app used in URLs
     *
     * @param {string} app.os The OS the app will be running on. Possible values
     * include: 'Android', 'iOS', 'macOS', 'Tizen', 'tvOS', 'Windows'
     *
     * @param {string} app.platform The platform of the app. Possible values
     * include: 'Java', 'Objective-C-Swift', 'UWP', 'Cordova', 'React-Native',
     * 'Xamarin'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<AppResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createWithHttpOperationResponse(app: models.AppRequest, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AppResponse>>;

    /**
     * Creates a new app and returns it to the caller
     *
     * @param {object} app The data for the app
     *
     * @param {string} [app.description] A short text describing the app
     *
     * @param {string} app.displayName The descriptive name of the app. This can
     * contain any characters
     *
     * @param {string} [app.name] The name of the app used in URLs
     *
     * @param {string} app.os The OS the app will be running on. Possible values
     * include: 'Android', 'iOS', 'macOS', 'Tizen', 'tvOS', 'Windows'
     *
     * @param {string} app.platform The platform of the app. Possible values
     * include: 'Java', 'Objective-C-Swift', 'UWP', 'Cordova', 'React-Native',
     * 'Xamarin'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {AppResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {AppResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link AppResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    create(app: models.AppRequest, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.AppResponse>;
    create(app: models.AppRequest, callback: ServiceCallback<models.AppResponse>): void;
    create(app: models.AppRequest, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AppResponse>): void;


    /**
     * Returns a list of apps
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.orderBy] The name of the attribute by which to
     * order the response by. By default, apps are in order of creation. All
     * results are ordered in ascending order. Possible values include:
     * 'display_name', 'name'
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listWithHttpOperationResponse(options?: { orderBy? : string, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AppResponse[]>>;

    /**
     * Returns a list of apps
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.orderBy] The name of the attribute by which to
     * order the response by. By default, apps are in order of creation. All
     * results are ordered in ascending order. Possible values include:
     * 'display_name', 'name'
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    list(options?: { orderBy? : string, customHeaders? : { [headerName: string]: string; } }): Promise<models.AppResponse[]>;
    list(callback: ServiceCallback<models.AppResponse[]>): void;
    list(options: { orderBy? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AppResponse[]>): void;


    /**
     * Return a specific app with the given app name which belongs to the given
     * owner.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<AppResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AppResponse>>;

    /**
     * Return a specific app with the given app name which belongs to the given
     * owner.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {AppResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {AppResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link AppResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    get(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.AppResponse>;
    get(appName: string, ownerName: string, callback: ServiceCallback<models.AppResponse>): void;
    get(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AppResponse>): void;


    /**
     * Partially updates a single app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.app] The partial data for the app
     *
     * @param {string} [options.app.description] A short text describing the app
     *
     * @param {string} [options.app.displayName] The display name of the app
     *
     * @param {string} [options.app.name] The name of the app used in URLs
     *
     * @param {string} [options.app.iconUrl] The string representation of the URL
     * pointing to the app's icon
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<AppResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    updateWithHttpOperationResponse(appName: string, ownerName: string, options?: { app? : models.AppPatchRequest, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AppResponse>>;

    /**
     * Partially updates a single app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.app] The partial data for the app
     *
     * @param {string} [options.app.description] A short text describing the app
     *
     * @param {string} [options.app.displayName] The display name of the app
     *
     * @param {string} [options.app.name] The name of the app used in URLs
     *
     * @param {string} [options.app.iconUrl] The string representation of the URL
     * pointing to the app's icon
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {AppResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {AppResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link AppResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    update(appName: string, ownerName: string, options?: { app? : models.AppPatchRequest, customHeaders? : { [headerName: string]: string; } }): Promise<models.AppResponse>;
    update(appName: string, ownerName: string, callback: ServiceCallback<models.AppResponse>): void;
    update(appName: string, ownerName: string, options: { app? : models.AppPatchRequest, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AppResponse>): void;


    /**
     * Delete an app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Delete an app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    deleteMethod(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteMethod(appName: string, ownerName: string, callback: ServiceCallback<void>): void;
    deleteMethod(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Returns the details of all teams that have access to the app.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getTeamsWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.TeamAppResponse[]>>;

    /**
     * Returns the details of all teams that have access to the app.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    getTeams(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.TeamAppResponse[]>;
    getTeams(appName: string, ownerName: string, callback: ServiceCallback<models.TeamAppResponse[]>): void;
    getTeams(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.TeamAppResponse[]>): void;


    /**
     * Returns the testers associated with the app specified with the given app
     * name which belongs to the given owner.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listTestersWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.UserProfileResponse[]>>;

    /**
     * Returns the testers associated with the app specified with the given app
     * name which belongs to the given owner.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listTesters(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.UserProfileResponse[]>;
    listTesters(appName: string, ownerName: string, callback: ServiceCallback<models.UserProfileResponse[]>): void;
    listTesters(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.UserProfileResponse[]>): void;


    /**
     * Transfers ownership of an app to a different user or organization
     *
     * @param {string} appName The name of the application
     *
     * @param {string} destinationOwnerName The name of the owner (user or
     * organization) to which the app is being transferred
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<AppResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    transferOwnershipWithHttpOperationResponse(appName: string, destinationOwnerName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AppResponse>>;

    /**
     * Transfers ownership of an app to a different user or organization
     *
     * @param {string} appName The name of the application
     *
     * @param {string} destinationOwnerName The name of the owner (user or
     * organization) to which the app is being transferred
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {AppResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {AppResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link AppResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    transferOwnership(appName: string, destinationOwnerName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.AppResponse>;
    transferOwnership(appName: string, destinationOwnerName: string, ownerName: string, callback: ServiceCallback<models.AppResponse>): void;
    transferOwnership(appName: string, destinationOwnerName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AppResponse>): void;


    /**
     * Removes the user from the app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} userEmail The user email of the user to delete
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    removeUserWithHttpOperationResponse(appName: string, ownerName: string, userEmail: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Removes the user from the app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} userEmail The user email of the user to delete
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    removeUser(appName: string, ownerName: string, userEmail: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    removeUser(appName: string, ownerName: string, userEmail: string, callback: ServiceCallback<void>): void;
    removeUser(appName: string, ownerName: string, userEmail: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Update user permission for the app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} userEmail The user email of the user to patch
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.userAppPermissionsData] The value to update the
     * user permission for the app.
     *
     * @param {array} options.userAppPermissionsData.permissions The permissions
     * the user has for the app
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    updateUserPermissionsWithHttpOperationResponse(appName: string, ownerName: string, userEmail: string, options?: { userAppPermissionsData? : models.UserAppPermissionsUpdateRequest, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Update user permission for the app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} userEmail The user email of the user to patch
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.userAppPermissionsData] The value to update the
     * user permission for the app.
     *
     * @param {array} options.userAppPermissionsData.permissions The permissions
     * the user has for the app
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    updateUserPermissions(appName: string, ownerName: string, userEmail: string, options?: { userAppPermissionsData? : models.UserAppPermissionsUpdateRequest, customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    updateUserPermissions(appName: string, ownerName: string, userEmail: string, callback: ServiceCallback<void>): void;
    updateUserPermissions(appName: string, ownerName: string, userEmail: string, options: { userAppPermissionsData? : models.UserAppPermissionsUpdateRequest, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Creates a new app for the organization and returns it to the caller
     *
     * @param {object} app The data for the app
     *
     * @param {string} [app.description] A short text describing the app
     *
     * @param {string} app.displayName The descriptive name of the app. This can
     * contain any characters
     *
     * @param {string} [app.name] The name of the app used in URLs
     *
     * @param {string} app.os The OS the app will be running on. Possible values
     * include: 'Android', 'iOS', 'macOS', 'Tizen', 'tvOS', 'Windows'
     *
     * @param {string} app.platform The platform of the app. Possible values
     * include: 'Java', 'Objective-C-Swift', 'UWP', 'Cordova', 'React-Native',
     * 'Xamarin'
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<AppResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createForOrgWithHttpOperationResponse(app: models.AppRequest, orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AppResponse>>;

    /**
     * Creates a new app for the organization and returns it to the caller
     *
     * @param {object} app The data for the app
     *
     * @param {string} [app.description] A short text describing the app
     *
     * @param {string} app.displayName The descriptive name of the app. This can
     * contain any characters
     *
     * @param {string} [app.name] The name of the app used in URLs
     *
     * @param {string} app.os The OS the app will be running on. Possible values
     * include: 'Android', 'iOS', 'macOS', 'Tizen', 'tvOS', 'Windows'
     *
     * @param {string} app.platform The platform of the app. Possible values
     * include: 'Java', 'Objective-C-Swift', 'UWP', 'Cordova', 'React-Native',
     * 'Xamarin'
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {AppResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {AppResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link AppResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    createForOrg(app: models.AppRequest, orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.AppResponse>;
    createForOrg(app: models.AppRequest, orgName: string, callback: ServiceCallback<models.AppResponse>): void;
    createForOrg(app: models.AppRequest, orgName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AppResponse>): void;


    /**
     * Returns a list of apps for the organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listForOrgWithHttpOperationResponse(orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AppResponse[]>>;

    /**
     * Returns a list of apps for the organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listForOrg(orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.AppResponse[]>;
    listForOrg(orgName: string, callback: ServiceCallback<models.AppResponse[]>): void;
    listForOrg(orgName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AppResponse[]>): void;
}

/**
 * @class
 * AzureSubscription
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the AccountClient.
 */
export interface AzureSubscription {


    /**
     * Returns a list of azure subscriptions for the app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listForAppWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AzureSubscriptionResponse[]>>;

    /**
     * Returns a list of azure subscriptions for the app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listForApp(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.AzureSubscriptionResponse[]>;
    listForApp(appName: string, ownerName: string, callback: ServiceCallback<models.AzureSubscriptionResponse[]>): void;
    listForApp(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AzureSubscriptionResponse[]>): void;


    /**
     * Link azure subscription to an app
     *
     * @param {string} appName The name of the application
     *
     * @param {object} azureSubscriptionToAppData The azure subscription data
     * needed to be link to the app.
     *
     * @param {string} azureSubscriptionToAppData.subscriptionId The azure
     * subscription id
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    linkForAppWithHttpOperationResponse(appName: string, azureSubscriptionToAppData: models.AzureSubscriptionAddToAppRequest, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Link azure subscription to an app
     *
     * @param {string} appName The name of the application
     *
     * @param {object} azureSubscriptionToAppData The azure subscription data
     * needed to be link to the app.
     *
     * @param {string} azureSubscriptionToAppData.subscriptionId The azure
     * subscription id
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    linkForApp(appName: string, azureSubscriptionToAppData: models.AzureSubscriptionAddToAppRequest, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    linkForApp(appName: string, azureSubscriptionToAppData: models.AzureSubscriptionAddToAppRequest, ownerName: string, callback: ServiceCallback<void>): void;
    linkForApp(appName: string, azureSubscriptionToAppData: models.AzureSubscriptionAddToAppRequest, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Delete the azure subscriptions for the app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} azureSubscriptionId The unique ID (UUID) of the azure
     * subscription
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteForAppWithHttpOperationResponse(appName: string, azureSubscriptionId: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Delete the azure subscriptions for the app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} azureSubscriptionId The unique ID (UUID) of the azure
     * subscription
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    deleteForApp(appName: string, azureSubscriptionId: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteForApp(appName: string, azureSubscriptionId: string, ownerName: string, callback: ServiceCallback<void>): void;
    deleteForApp(appName: string, azureSubscriptionId: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Returns a list of azure subscriptions for the user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listForUserWithHttpOperationResponse(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AzureSubscriptionResponse[]>>;

    /**
     * Returns a list of azure subscriptions for the user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listForUser(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.AzureSubscriptionResponse[]>;
    listForUser(callback: ServiceCallback<models.AzureSubscriptionResponse[]>): void;
    listForUser(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AzureSubscriptionResponse[]>): void;


    /**
     * Returns a list of azure subscriptions for the organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listForOrgWithHttpOperationResponse(orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AzureSubscriptionResponse[]>>;

    /**
     * Returns a list of azure subscriptions for the organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listForOrg(orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.AzureSubscriptionResponse[]>;
    listForOrg(orgName: string, callback: ServiceCallback<models.AzureSubscriptionResponse[]>): void;
    listForOrg(orgName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AzureSubscriptionResponse[]>): void;
}

/**
 * @class
 * DistributionGroups
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the AccountClient.
 */
export interface DistributionGroups {


    /**
     * Returns a list of distribution groups in the app specified
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DistributionGroupResponse[]>>;

    /**
     * Returns a list of distribution groups in the app specified
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    list(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.DistributionGroupResponse[]>;
    list(appName: string, ownerName: string, callback: ServiceCallback<models.DistributionGroupResponse[]>): void;
    list(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DistributionGroupResponse[]>): void;


    /**
     * Creates a new distribution group and returns it to the caller
     *
     * @param {string} appName The name of the application
     *
     * @param {object} distributionGroup The data for the distribution group
     *
     * @param {string} distributionGroup.name The name of the distribution group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<DistributionGroupResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createWithHttpOperationResponse(appName: string, distributionGroup: models.DistributionGroupRequest, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DistributionGroupResponse>>;

    /**
     * Creates a new distribution group and returns it to the caller
     *
     * @param {string} appName The name of the application
     *
     * @param {object} distributionGroup The data for the distribution group
     *
     * @param {string} distributionGroup.name The name of the distribution group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {DistributionGroupResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {DistributionGroupResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link DistributionGroupResponse} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    create(appName: string, distributionGroup: models.DistributionGroupRequest, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.DistributionGroupResponse>;
    create(appName: string, distributionGroup: models.DistributionGroupRequest, ownerName: string, callback: ServiceCallback<models.DistributionGroupResponse>): void;
    create(appName: string, distributionGroup: models.DistributionGroupRequest, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DistributionGroupResponse>): void;


    /**
     * Returns a single distribution group for a given distribution group name
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<DistributionGroupResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getWithHttpOperationResponse(appName: string, distributionGroupName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DistributionGroupResponse>>;

    /**
     * Returns a single distribution group for a given distribution group name
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {DistributionGroupResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {DistributionGroupResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link DistributionGroupResponse} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    get(appName: string, distributionGroupName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.DistributionGroupResponse>;
    get(appName: string, distributionGroupName: string, ownerName: string, callback: ServiceCallback<models.DistributionGroupResponse>): void;
    get(appName: string, distributionGroupName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DistributionGroupResponse>): void;


    /**
     * Updates the attributes of distribution group
     *
     * @param {string} appName The name of the application
     *
     * @param {object} distributionGroup The attributes to update for the
     * distribution group
     *
     * @param {string} [distributionGroup.name] The name of the distribution group
     *
     * @param {boolean} [distributionGroup.isPublic] Whether the distribution group
     * is public
     *
     * @param {string} distributionGroupName The name of the distribution group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<DistributionGroupResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    updateWithHttpOperationResponse(appName: string, distributionGroup: models.DistributionGroupPatchRequest, distributionGroupName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DistributionGroupResponse>>;

    /**
     * Updates the attributes of distribution group
     *
     * @param {string} appName The name of the application
     *
     * @param {object} distributionGroup The attributes to update for the
     * distribution group
     *
     * @param {string} [distributionGroup.name] The name of the distribution group
     *
     * @param {boolean} [distributionGroup.isPublic] Whether the distribution group
     * is public
     *
     * @param {string} distributionGroupName The name of the distribution group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {DistributionGroupResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {DistributionGroupResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link DistributionGroupResponse} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    update(appName: string, distributionGroup: models.DistributionGroupPatchRequest, distributionGroupName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.DistributionGroupResponse>;
    update(appName: string, distributionGroup: models.DistributionGroupPatchRequest, distributionGroupName: string, ownerName: string, callback: ServiceCallback<models.DistributionGroupResponse>): void;
    update(appName: string, distributionGroup: models.DistributionGroupPatchRequest, distributionGroupName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DistributionGroupResponse>): void;


    /**
     * Deletes a distribution group
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(appName: string, distributionGroupName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Deletes a distribution group
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    deleteMethod(appName: string, distributionGroupName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteMethod(appName: string, distributionGroupName: string, ownerName: string, callback: ServiceCallback<void>): void;
    deleteMethod(appName: string, distributionGroupName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Returns a list of member details in the distribution group specified
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {boolean} [options.excludePendingInvitations] Whether to exclude
     * pending invitations in the response
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listUsersWithHttpOperationResponse(appName: string, distributionGroupName: string, ownerName: string, options?: { excludePendingInvitations? : boolean, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DistributionGroupUserGetResponse[]>>;

    /**
     * Returns a list of member details in the distribution group specified
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {boolean} [options.excludePendingInvitations] Whether to exclude
     * pending invitations in the response
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listUsers(appName: string, distributionGroupName: string, ownerName: string, options?: { excludePendingInvitations? : boolean, customHeaders? : { [headerName: string]: string; } }): Promise<models.DistributionGroupUserGetResponse[]>;
    listUsers(appName: string, distributionGroupName: string, ownerName: string, callback: ServiceCallback<models.DistributionGroupUserGetResponse[]>): void;
    listUsers(appName: string, distributionGroupName: string, ownerName: string, options: { excludePendingInvitations? : boolean, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DistributionGroupUserGetResponse[]>): void;


    /**
     * Adds the members to the specified distribution group
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group
     *
     * @param {object} members The list of members to add
     *
     * @param {array} [members.userEmails] The list of emails of the users
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    addUserWithHttpOperationResponse(appName: string, distributionGroupName: string, members: models.DistributionGroupUserRequest, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DistributionGroupUserPostResponse[]>>;

    /**
     * Adds the members to the specified distribution group
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group
     *
     * @param {object} members The list of members to add
     *
     * @param {array} [members.userEmails] The list of emails of the users
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    addUser(appName: string, distributionGroupName: string, members: models.DistributionGroupUserRequest, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.DistributionGroupUserPostResponse[]>;
    addUser(appName: string, distributionGroupName: string, members: models.DistributionGroupUserRequest, ownerName: string, callback: ServiceCallback<models.DistributionGroupUserPostResponse[]>): void;
    addUser(appName: string, distributionGroupName: string, members: models.DistributionGroupUserRequest, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DistributionGroupUserPostResponse[]>): void;


    /**
     * Remove the users from the distribution group
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group
     *
     * @param {object} members The list of members to delete
     *
     * @param {array} [members.userEmails] The list of emails of the users
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    removeUserWithHttpOperationResponse(appName: string, distributionGroupName: string, members: models.DistributionGroupUserRequest, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DistributionGroupUserDeleteResponse[]>>;

    /**
     * Remove the users from the distribution group
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group
     *
     * @param {object} members The list of members to delete
     *
     * @param {array} [members.userEmails] The list of emails of the users
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    removeUser(appName: string, distributionGroupName: string, members: models.DistributionGroupUserRequest, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.DistributionGroupUserDeleteResponse[]>;
    removeUser(appName: string, distributionGroupName: string, members: models.DistributionGroupUserRequest, ownerName: string, callback: ServiceCallback<models.DistributionGroupUserDeleteResponse[]>): void;
    removeUser(appName: string, distributionGroupName: string, members: models.DistributionGroupUserRequest, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DistributionGroupUserDeleteResponse[]>): void;


    /**
     * Resend distribution group app invite notification to previously invited
     * testers
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group
     *
     * @param {object} members The list of members to resend the invitation
     *
     * @param {array} [members.userEmails] The list of emails of the users
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    resendInviteWithHttpOperationResponse(appName: string, distributionGroupName: string, members: models.DistributionGroupUserRequest, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Resend distribution group app invite notification to previously invited
     * testers
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group
     *
     * @param {object} members The list of members to resend the invitation
     *
     * @param {array} [members.userEmails] The list of emails of the users
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    resendInvite(appName: string, distributionGroupName: string, members: models.DistributionGroupUserRequest, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    resendInvite(appName: string, distributionGroupName: string, members: models.DistributionGroupUserRequest, ownerName: string, callback: ServiceCallback<void>): void;
    resendInvite(appName: string, distributionGroupName: string, members: models.DistributionGroupUserRequest, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
}

/**
 * @class
 * AppInvitations
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the AccountClient.
 */
export interface AppInvitations {


    /**
     * Invites a new or existing user to an app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.userEmail] The email of the user to invite
     *
     * @param {string} options.userEmail.userEmail The user's email address'
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createWithHttpOperationResponse(appName: string, ownerName: string, options?: { userEmail? : models.UserEmailRequest, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Invites a new or existing user to an app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.userEmail] The email of the user to invite
     *
     * @param {string} options.userEmail.userEmail The user's email address'
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    create(appName: string, ownerName: string, options?: { userEmail? : models.UserEmailRequest, customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    create(appName: string, ownerName: string, callback: ServiceCallback<void>): void;
    create(appName: string, ownerName: string, options: { userEmail? : models.UserEmailRequest, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Gets the pending invitations for the app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<AppInvitationDetailResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AppInvitationDetailResponse>>;

    /**
     * Gets the pending invitations for the app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {AppInvitationDetailResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {AppInvitationDetailResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link AppInvitationDetailResponse} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    list(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.AppInvitationDetailResponse>;
    list(appName: string, ownerName: string, callback: ServiceCallback<models.AppInvitationDetailResponse>): void;
    list(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AppInvitationDetailResponse>): void;


    /**
     * Invites a new or existing user to an app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} userEmail The email of the user to invite
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createByEmailWithHttpOperationResponse(appName: string, ownerName: string, userEmail: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Invites a new or existing user to an app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} userEmail The email of the user to invite
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    createByEmail(appName: string, ownerName: string, userEmail: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    createByEmail(appName: string, ownerName: string, userEmail: string, callback: ServiceCallback<void>): void;
    createByEmail(appName: string, ownerName: string, userEmail: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Update pending invitation permission
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} userEmail The email of the user to invite
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.userInvitationPermissionsData] The value to update
     * the user permission in the invite.
     *
     * @param {array} options.userInvitationPermissionsData.permissions The
     * permissions the user has for the app in the invitation
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    updatePermissionsWithHttpOperationResponse(appName: string, ownerName: string, userEmail: string, options?: { userInvitationPermissionsData? : models.UserInvitationPermissionsUpdateRequest, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Update pending invitation permission
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} userEmail The email of the user to invite
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.userInvitationPermissionsData] The value to update
     * the user permission in the invite.
     *
     * @param {array} options.userInvitationPermissionsData.permissions The
     * permissions the user has for the app in the invitation
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    updatePermissions(appName: string, ownerName: string, userEmail: string, options?: { userInvitationPermissionsData? : models.UserInvitationPermissionsUpdateRequest, customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    updatePermissions(appName: string, ownerName: string, userEmail: string, callback: ServiceCallback<void>): void;
    updatePermissions(appName: string, ownerName: string, userEmail: string, options: { userInvitationPermissionsData? : models.UserInvitationPermissionsUpdateRequest, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Removes a user's invitation to an app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} userEmail The email of the user to invite
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(appName: string, ownerName: string, userEmail: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Removes a user's invitation to an app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} userEmail The email of the user to invite
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    deleteMethod(appName: string, ownerName: string, userEmail: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteMethod(appName: string, ownerName: string, userEmail: string, callback: ServiceCallback<void>): void;
    deleteMethod(appName: string, ownerName: string, userEmail: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Accepts a pending invitation for the specified user
     *
     * @param {string} invitationToken The app invitation token that was sent to
     * the user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    acceptWithHttpOperationResponse(invitationToken: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Accepts a pending invitation for the specified user
     *
     * @param {string} invitationToken The app invitation token that was sent to
     * the user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    accept(invitationToken: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    accept(invitationToken: string, callback: ServiceCallback<void>): void;
    accept(invitationToken: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Rejects a pending invitation for the specified user
     *
     * @param {string} invitationToken The app invitation token that was sent to
     * the user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    rejectWithHttpOperationResponse(invitationToken: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Rejects a pending invitation for the specified user
     *
     * @param {string} invitationToken The app invitation token that was sent to
     * the user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    reject(invitationToken: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    reject(invitationToken: string, callback: ServiceCallback<void>): void;
    reject(invitationToken: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
}

/**
 * @class
 * Users
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the AccountClient.
 */
export interface Users {


    /**
     * Returns the users associated with the app specified with the given app name
     * which belongs to the given owner.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.UserProfileResponse[]>>;

    /**
     * Returns the users associated with the app specified with the given app name
     * which belongs to the given owner.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    list(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.UserProfileResponse[]>;
    list(appName: string, ownerName: string, callback: ServiceCallback<models.UserProfileResponse[]>): void;
    list(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.UserProfileResponse[]>): void;


    /**
     * Returns a list of users that belong to an organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listForOrgWithHttpOperationResponse(orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.OrganizationUserResponse[]>>;

    /**
     * Returns a list of users that belong to an organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listForOrg(orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.OrganizationUserResponse[]>;
    listForOrg(orgName: string, callback: ServiceCallback<models.OrganizationUserResponse[]>): void;
    listForOrg(orgName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.OrganizationUserResponse[]>): void;


    /**
     * Updates the given organization user
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} organizationUser
     *
     * @param {string} [organizationUser.role] The user's role in the
     * organizatiion. Possible values include: 'admin', 'collaborator'
     *
     * @param {string} userName The slug name of the user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<OrganizationUserResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    updateOrgRoleWithHttpOperationResponse(orgName: string, organizationUser: models.OrganizationUserPatchRequest, userName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.OrganizationUserResponse>>;

    /**
     * Updates the given organization user
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} organizationUser
     *
     * @param {string} [organizationUser.role] The user's role in the
     * organizatiion. Possible values include: 'admin', 'collaborator'
     *
     * @param {string} userName The slug name of the user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {OrganizationUserResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {OrganizationUserResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link OrganizationUserResponse} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    updateOrgRole(orgName: string, organizationUser: models.OrganizationUserPatchRequest, userName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.OrganizationUserResponse>;
    updateOrgRole(orgName: string, organizationUser: models.OrganizationUserPatchRequest, userName: string, callback: ServiceCallback<models.OrganizationUserResponse>): void;
    updateOrgRole(orgName: string, organizationUser: models.OrganizationUserPatchRequest, userName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.OrganizationUserResponse>): void;


    /**
     * Removes a user from an organization.
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} userName The slug name of the user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    removeFromOrgWithHttpOperationResponse(orgName: string, userName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Removes a user from an organization.
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} userName The slug name of the user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    removeFromOrg(orgName: string, userName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    removeFromOrg(orgName: string, userName: string, callback: ServiceCallback<void>): void;
    removeFromOrg(orgName: string, userName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Returns the user profile data
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<UserProfileResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getWithHttpOperationResponse(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.UserProfileResponse>>;

    /**
     * Returns the user profile data
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {UserProfileResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {UserProfileResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link UserProfileResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    get(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.UserProfileResponse>;
    get(callback: ServiceCallback<models.UserProfileResponse>): void;
    get(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.UserProfileResponse>): void;


    /**
     * Updates the user profile and returns the updated user data
     *
     * @param {object} user The data for the created user
     *
     * @param {string} [user.displayName] The full name of the user. Might for
     * example be first and last name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<UserProfileResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    updateWithHttpOperationResponse(user: models.UserUpdateRequest, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.UserProfileResponse>>;

    /**
     * Updates the user profile and returns the updated user data
     *
     * @param {object} user The data for the created user
     *
     * @param {string} [user.displayName] The full name of the user. Might for
     * example be first and last name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {UserProfileResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {UserProfileResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link UserProfileResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    update(user: models.UserUpdateRequest, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.UserProfileResponse>;
    update(user: models.UserUpdateRequest, callback: ServiceCallback<models.UserProfileResponse>): void;
    update(user: models.UserUpdateRequest, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.UserProfileResponse>): void;
}

/**
 * @class
 * Organizations
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the AccountClient.
 */
export interface Organizations {


    /**
     * Creates a new organization and returns it to the caller
     *
     * @param {object} organization The organization data
     *
     * @param {string} [organization.displayName] The display name of the
     * organization
     *
     * @param {string} [organization.name] The name of the organization used in
     * URLs
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<OrganizationResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createOrUpdateWithHttpOperationResponse(organization: models.OrganizationRequest, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.OrganizationResponse>>;

    /**
     * Creates a new organization and returns it to the caller
     *
     * @param {object} organization The organization data
     *
     * @param {string} [organization.displayName] The display name of the
     * organization
     *
     * @param {string} [organization.name] The name of the organization used in
     * URLs
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {OrganizationResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {OrganizationResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link OrganizationResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    createOrUpdate(organization: models.OrganizationRequest, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.OrganizationResponse>;
    createOrUpdate(organization: models.OrganizationRequest, callback: ServiceCallback<models.OrganizationResponse>): void;
    createOrUpdate(organization: models.OrganizationRequest, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.OrganizationResponse>): void;


    /**
     * Returns a list of organizations the requesting user has access to
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listWithHttpOperationResponse(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ListOKResponseItem[]>>;

    /**
     * Returns a list of organizations the requesting user has access to
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    list(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.ListOKResponseItem[]>;
    list(callback: ServiceCallback<models.ListOKResponseItem[]>): void;
    list(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ListOKResponseItem[]>): void;


    /**
     * Returns the details of a single organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<OrganizationResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getWithHttpOperationResponse(orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.OrganizationResponse>>;

    /**
     * Returns the details of a single organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {OrganizationResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {OrganizationResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link OrganizationResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    get(orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.OrganizationResponse>;
    get(orgName: string, callback: ServiceCallback<models.OrganizationResponse>): void;
    get(orgName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.OrganizationResponse>): void;


    /**
     * Returns a list of organizations the requesting user has access to
     *
     * @param {object} org The data for the org
     *
     * @param {string} [org.displayName] The full (friendly) name of the
     * organization.
     *
     * @param {string} [org.name] The name of the organization used in URLs
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<OrganizationResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    updateWithHttpOperationResponse(org: models.OrganizationPatchRequest, orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.OrganizationResponse>>;

    /**
     * Returns a list of organizations the requesting user has access to
     *
     * @param {object} org The data for the org
     *
     * @param {string} [org.displayName] The full (friendly) name of the
     * organization.
     *
     * @param {string} [org.name] The name of the organization used in URLs
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {OrganizationResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {OrganizationResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link OrganizationResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    update(org: models.OrganizationPatchRequest, orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.OrganizationResponse>;
    update(org: models.OrganizationPatchRequest, orgName: string, callback: ServiceCallback<models.OrganizationResponse>): void;
    update(org: models.OrganizationPatchRequest, orgName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.OrganizationResponse>): void;


    /**
     * Deletes a single organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Deletes a single organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    deleteMethod(orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteMethod(orgName: string, callback: ServiceCallback<void>): void;
    deleteMethod(orgName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
}

/**
 * @class
 * OrgInvitations
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the AccountClient.
 */
export interface OrgInvitations {


    /**
     * Invites a new or existing user to an organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.userEmail] The email of the user to invite
     *
     * @param {string} options.userEmail.userEmail The user's email address'
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createWithHttpOperationResponse(orgName: string, options?: { userEmail? : models.UserEmailRequest, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Invites a new or existing user to an organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.userEmail] The email of the user to invite
     *
     * @param {string} options.userEmail.userEmail The user's email address'
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    create(orgName: string, options?: { userEmail? : models.UserEmailRequest, customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    create(orgName: string, callback: ServiceCallback<void>): void;
    create(orgName: string, options: { userEmail? : models.UserEmailRequest, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Removes a user's invitation to an organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.userEmail] The email of the user whose invitation
     * should be removed
     *
     * @param {string} options.userEmail.userEmail The user's email address'
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(orgName: string, options?: { userEmail? : models.UserEmailRequest, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Removes a user's invitation to an organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.userEmail] The email of the user whose invitation
     * should be removed
     *
     * @param {string} options.userEmail.userEmail The user's email address'
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    deleteMethod(orgName: string, options?: { userEmail? : models.UserEmailRequest, customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteMethod(orgName: string, callback: ServiceCallback<void>): void;
    deleteMethod(orgName: string, options: { userEmail? : models.UserEmailRequest, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Gets the pending invitations for the organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listPendingWithHttpOperationResponse(orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.OrganizationInvitationSimpleDetailResponse[]>>;

    /**
     * Gets the pending invitations for the organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listPending(orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.OrganizationInvitationSimpleDetailResponse[]>;
    listPending(orgName: string, callback: ServiceCallback<models.OrganizationInvitationSimpleDetailResponse[]>): void;
    listPending(orgName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.OrganizationInvitationSimpleDetailResponse[]>): void;


    /**
     * Cancels an existing organization for the user and sends a new one
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.userEmail] The email of the user for which to
     * resend the invitation
     *
     * @param {string} options.userEmail.userEmail The user's email address'
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    sendNewInvitationWithHttpOperationResponse(orgName: string, options?: { userEmail? : models.UserEmailRequest, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Cancels an existing organization for the user and sends a new one
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.userEmail] The email of the user for which to
     * resend the invitation
     *
     * @param {string} options.userEmail.userEmail The user's email address'
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    sendNewInvitation(orgName: string, options?: { userEmail? : models.UserEmailRequest, customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    sendNewInvitation(orgName: string, callback: ServiceCallback<void>): void;
    sendNewInvitation(orgName: string, options: { userEmail? : models.UserEmailRequest, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Accepts a pending organization invitation for the specified user
     *
     * @param {string} invitationToken The app invitation token that was sent to
     * the user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    acceptWithHttpOperationResponse(invitationToken: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Accepts a pending organization invitation for the specified user
     *
     * @param {string} invitationToken The app invitation token that was sent to
     * the user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    accept(invitationToken: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    accept(invitationToken: string, callback: ServiceCallback<void>): void;
    accept(invitationToken: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Rejects a pending organization invitation
     *
     * @param {string} invitationToken The app invitation token that was sent to
     * the user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    rejectWithHttpOperationResponse(invitationToken: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Rejects a pending organization invitation
     *
     * @param {string} invitationToken The app invitation token that was sent to
     * the user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    reject(invitationToken: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    reject(invitationToken: string, callback: ServiceCallback<void>): void;
    reject(invitationToken: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
}

/**
 * @class
 * Teams
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the AccountClient.
 */
export interface Teams {


    /**
     * Returns the list of all teams in this org
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listAllWithHttpOperationResponse(orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.TeamResponse[]>>;

    /**
     * Returns the list of all teams in this org
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listAll(orgName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.TeamResponse[]>;
    listAll(orgName: string, callback: ServiceCallback<models.TeamResponse[]>): void;
    listAll(orgName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.TeamResponse[]>): void;


    /**
     * Creates a team and returns it
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.team] The information used to create the team
     *
     * @param {string} options.team.displayName The display name of the team
     *
     * @param {string} [options.team.name] The name of the team
     *
     * @param {string} [options.team.description] The description of the team
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Object>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createTeamWithHttpOperationResponse(orgName: string, options?: { team? : models.TeamRequest, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<any>>;

    /**
     * Creates a team and returns it
     *
     * @param {string} orgName The organization's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.team] The information used to create the team
     *
     * @param {string} options.team.displayName The display name of the team
     *
     * @param {string} [options.team.name] The name of the team
     *
     * @param {string} [options.team.description] The description of the team
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Object} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Object} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    createTeam(orgName: string, options?: { team? : models.TeamRequest, customHeaders? : { [headerName: string]: string; } }): Promise<any>;
    createTeam(orgName: string, callback: ServiceCallback<any>): void;
    createTeam(orgName: string, options: { team? : models.TeamRequest, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<any>): void;


    /**
     * Returns the details of a single team
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<TeamResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getTeamWithHttpOperationResponse(orgName: string, teamName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.TeamResponse>>;

    /**
     * Returns the details of a single team
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {TeamResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {TeamResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link TeamResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    getTeam(orgName: string, teamName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.TeamResponse>;
    getTeam(orgName: string, teamName: string, callback: ServiceCallback<models.TeamResponse>): void;
    getTeam(orgName: string, teamName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.TeamResponse>): void;


    /**
     * Deletes a single team
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(orgName: string, teamName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Deletes a single team
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    deleteMethod(orgName: string, teamName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteMethod(orgName: string, teamName: string, callback: ServiceCallback<void>): void;
    deleteMethod(orgName: string, teamName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Updates a single team
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.team] The information used to create the team
     *
     * @param {string} options.team.displayName The display name of the team
     *
     * @param {string} [options.team.name] The name of the team
     *
     * @param {string} [options.team.description] The description of the team
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<TeamResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    updateWithHttpOperationResponse(orgName: string, teamName: string, options?: { team? : models.TeamRequest, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.TeamResponse>>;

    /**
     * Updates a single team
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.team] The information used to create the team
     *
     * @param {string} options.team.displayName The display name of the team
     *
     * @param {string} [options.team.name] The name of the team
     *
     * @param {string} [options.team.description] The description of the team
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {TeamResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {TeamResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link TeamResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    update(orgName: string, teamName: string, options?: { team? : models.TeamRequest, customHeaders? : { [headerName: string]: string; } }): Promise<models.TeamResponse>;
    update(orgName: string, teamName: string, callback: ServiceCallback<models.TeamResponse>): void;
    update(orgName: string, teamName: string, options: { team? : models.TeamRequest, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.TeamResponse>): void;


    /**
     * Adds an app to a team
     *
     * @param {object} app The name of the app to be added to the app. The app has
     * to be owned by the organization.
     *
     * @param {string} app.name The name of the app to be added to the team
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<AppWithTeamPermissionsResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    addAppWithHttpOperationResponse(app: models.AppTeamAddRequest, orgName: string, teamName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AppWithTeamPermissionsResponse>>;

    /**
     * Adds an app to a team
     *
     * @param {object} app The name of the app to be added to the app. The app has
     * to be owned by the organization.
     *
     * @param {string} app.name The name of the app to be added to the team
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {AppWithTeamPermissionsResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {AppWithTeamPermissionsResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link AppWithTeamPermissionsResponse} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    addApp(app: models.AppTeamAddRequest, orgName: string, teamName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.AppWithTeamPermissionsResponse>;
    addApp(app: models.AppTeamAddRequest, orgName: string, teamName: string, callback: ServiceCallback<models.AppWithTeamPermissionsResponse>): void;
    addApp(app: models.AppTeamAddRequest, orgName: string, teamName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AppWithTeamPermissionsResponse>): void;


    /**
     * Returns the apps a team has access to
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listAppsWithHttpOperationResponse(orgName: string, teamName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AppWithTeamPermissionsResponse[]>>;

    /**
     * Returns the apps a team has access to
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listApps(orgName: string, teamName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.AppWithTeamPermissionsResponse[]>;
    listApps(orgName: string, teamName: string, callback: ServiceCallback<models.AppWithTeamPermissionsResponse[]>): void;
    listApps(orgName: string, teamName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AppWithTeamPermissionsResponse[]>): void;


    /**
     * Updates the permissions the team has to the app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.team]
     *
     * @param {array} options.team.permissions The permissions all members of the
     * team have on the app
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<AppWithTeamPermissionsResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    updatePermissionsWithHttpOperationResponse(appName: string, orgName: string, teamName: string, options?: { team? : models.TeamAppUpdateRequest, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AppWithTeamPermissionsResponse>>;

    /**
     * Updates the permissions the team has to the app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.team]
     *
     * @param {array} options.team.permissions The permissions all members of the
     * team have on the app
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {AppWithTeamPermissionsResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {AppWithTeamPermissionsResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link AppWithTeamPermissionsResponse} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    updatePermissions(appName: string, orgName: string, teamName: string, options?: { team? : models.TeamAppUpdateRequest, customHeaders? : { [headerName: string]: string; } }): Promise<models.AppWithTeamPermissionsResponse>;
    updatePermissions(appName: string, orgName: string, teamName: string, callback: ServiceCallback<models.AppWithTeamPermissionsResponse>): void;
    updatePermissions(appName: string, orgName: string, teamName: string, options: { team? : models.TeamAppUpdateRequest, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AppWithTeamPermissionsResponse>): void;


    /**
     * Removes an app from a team
     *
     * @param {string} appName The name of the application
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    removeAppWithHttpOperationResponse(appName: string, orgName: string, teamName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Removes an app from a team
     *
     * @param {string} appName The name of the application
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    removeApp(appName: string, orgName: string, teamName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    removeApp(appName: string, orgName: string, teamName: string, callback: ServiceCallback<void>): void;
    removeApp(appName: string, orgName: string, teamName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Returns the users of a team which is owned by an organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<TeamUserResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getUsersWithHttpOperationResponse(orgName: string, teamName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.TeamUserResponse>>;

    /**
     * Returns the users of a team which is owned by an organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {TeamUserResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {TeamUserResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link TeamUserResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    getUsers(orgName: string, teamName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.TeamUserResponse>;
    getUsers(orgName: string, teamName: string, callback: ServiceCallback<models.TeamUserResponse>): void;
    getUsers(orgName: string, teamName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.TeamUserResponse>): void;


    /**
     * Adds a new user to a team that is owned by an organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.userEmail] The email of the user to add to the team
     *
     * @param {string} options.userEmail.userEmail The user's email address'
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<TeamUserResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    addUserWithHttpOperationResponse(orgName: string, teamName: string, options?: { userEmail? : models.UserEmailRequest, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.TeamUserResponse>>;

    /**
     * Adds a new user to a team that is owned by an organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.userEmail] The email of the user to add to the team
     *
     * @param {string} options.userEmail.userEmail The user's email address'
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {TeamUserResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {TeamUserResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link TeamUserResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    addUser(orgName: string, teamName: string, options?: { userEmail? : models.UserEmailRequest, customHeaders? : { [headerName: string]: string; } }): Promise<models.TeamUserResponse>;
    addUser(orgName: string, teamName: string, callback: ServiceCallback<models.TeamUserResponse>): void;
    addUser(orgName: string, teamName: string, options: { userEmail? : models.UserEmailRequest, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.TeamUserResponse>): void;


    /**
     * Removes a user from a team that is owned by an organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {string} userName The slug name of the user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    removeUserWithHttpOperationResponse(orgName: string, teamName: string, userName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Removes a user from a team that is owned by an organization
     *
     * @param {string} orgName The organization's name
     *
     * @param {string} teamName The team's name
     *
     * @param {string} userName The slug name of the user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    removeUser(orgName: string, teamName: string, userName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    removeUser(orgName: string, teamName: string, userName: string, callback: ServiceCallback<void>): void;
    removeUser(orgName: string, teamName: string, userName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
}

/**
 * @class
 * DistributionGroupInvitations
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the AccountClient.
 */
export interface DistributionGroupInvitations {


    /**
     * Accepts all pending invitations to distribution groups for the specified
     * user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    acceptAllWithHttpOperationResponse(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Accepts all pending invitations to distribution groups for the specified
     * user
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    acceptAll(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    acceptAll(callback: ServiceCallback<void>): void;
    acceptAll(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
}
