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

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


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

    /**
     * Gets statistics of the specified job.
     *
     * @param {string} accountName The Azure Data Lake Analytics account to
     * execute job operations on.
     * 
     * @param {uuid} jobIdentity JobInfo ID.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    getStatistics(accountName: string, jobIdentity: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobStatistics>): void;
    getStatistics(accountName: string, jobIdentity: string, callback: ServiceCallback<models.JobStatistics>): void;

    /**
     * Gets the job debug data information specified by the job ID.
     *
     * @param {string} accountName The Azure Data Lake Analytics account to
     * execute job operations on.
     * 
     * @param {uuid} jobIdentity JobInfo ID.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    getDebugDataPath(accountName: string, jobIdentity: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobDataPath>): void;
    getDebugDataPath(accountName: string, jobIdentity: string, callback: ServiceCallback<models.JobDataPath>): void;

    /**
     * Builds (compiles) the specified job in the specified Data Lake Analytics
     * account for job correctness and validation.
     *
     * @param {string} accountName The Azure Data Lake Analytics account to
     * execute job operations on.
     * 
     * @param {object} parameters The parameters to build a job.
     * 
     * @param {uuid} [parameters.jobId] the job's unique identifier (a GUID).
     * 
     * @param {string} [parameters.name] the friendly name of the job.
     * 
     * @param {string} [parameters.type] the job type of the current job (Hive or
     * USql). Possible values include: 'USql', 'Hive'
     * 
     * @param {string} [parameters.submitter] the user or account that submitted
     * the job.
     * 
     * @param {number} [parameters.degreeOfParallelism] the degree of parallelism
     * used for this job. This must be greater than 0.
     * 
     * @param {number} [parameters.priority] the priority value for the current
     * job. Lower numbers have a higher priority. By default, a job has a
     * priority of 1000. This must be greater than 0.
     * 
     * @param {array} [parameters.logFilePatterns] the list of log file name
     * patterns to find in the logFolder. '*' is the only matching character
     * allowed. Example format: jobExecution*.log or *mylog*.txt
     * 
     * @param {object} [parameters.properties] the job specific properties.
     * 
     * @param {string} [parameters.properties.runtimeVersion] the runtime version
     * of the Data Lake Analytics engine to use for the specific type of job
     * being run.
     * 
     * @param {string} [parameters.properties.script] the script to run
     * 
     * @param {string} [parameters.properties.type] Polymorhpic Discriminator
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    build(accountName: string, parameters: models.JobInformation, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobInformation>): void;
    build(accountName: string, parameters: models.JobInformation, callback: ServiceCallback<models.JobInformation>): void;

    /**
     * Cancels the running job specified by the job ID.
     *
     * @param {string} accountName The Azure Data Lake Analytics account to
     * execute job operations on.
     * 
     * @param {uuid} jobIdentity JobInfo ID to cancel.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    cancel(accountName: string, jobIdentity: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    cancel(accountName: string, jobIdentity: string, callback: ServiceCallback<void>): void;

    /**
     * Gets the job information for the specified job ID.
     *
     * @param {string} accountName The Azure Data Lake Analytics account to
     * execute job operations on.
     * 
     * @param {uuid} jobIdentity JobInfo ID.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    get(accountName: string, jobIdentity: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobInformation>): void;
    get(accountName: string, jobIdentity: string, callback: ServiceCallback<models.JobInformation>): void;

    /**
     * Submits a job to the specified Data Lake Analytics account.
     *
     * @param {string} accountName The Azure Data Lake Analytics account to
     * execute job operations on.
     * 
     * @param {uuid} jobIdentity The job ID (a GUID) for the job being submitted.
     * 
     * @param {object} parameters The parameters to submit a job.
     * 
     * @param {uuid} [parameters.jobId] the job's unique identifier (a GUID).
     * 
     * @param {string} [parameters.name] the friendly name of the job.
     * 
     * @param {string} [parameters.type] the job type of the current job (Hive or
     * USql). Possible values include: 'USql', 'Hive'
     * 
     * @param {string} [parameters.submitter] the user or account that submitted
     * the job.
     * 
     * @param {number} [parameters.degreeOfParallelism] the degree of parallelism
     * used for this job. This must be greater than 0.
     * 
     * @param {number} [parameters.priority] the priority value for the current
     * job. Lower numbers have a higher priority. By default, a job has a
     * priority of 1000. This must be greater than 0.
     * 
     * @param {array} [parameters.logFilePatterns] the list of log file name
     * patterns to find in the logFolder. '*' is the only matching character
     * allowed. Example format: jobExecution*.log or *mylog*.txt
     * 
     * @param {object} [parameters.properties] the job specific properties.
     * 
     * @param {string} [parameters.properties.runtimeVersion] the runtime version
     * of the Data Lake Analytics engine to use for the specific type of job
     * being run.
     * 
     * @param {string} [parameters.properties.script] the script to run
     * 
     * @param {string} [parameters.properties.type] Polymorhpic Discriminator
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    create(accountName: string, jobIdentity: string, parameters: models.JobInformation, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobInformation>): void;
    create(accountName: string, jobIdentity: string, parameters: models.JobInformation, callback: ServiceCallback<models.JobInformation>): void;

    /**
     * Lists the jobs, if any, associated with the specified Data Lake Analytics
     * account. The response includes a link to the next page of results, if any.
     *
     * @param {string} accountName The Azure Data Lake Analytics account to
     * execute job operations on.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.filter] OData filter. Optional.
     * 
     * @param {number} [options.top] The number of items to return. Optional.
     * 
     * @param {number} [options.skip] The number of items to skip over before
     * returning elements. Optional.
     * 
     * @param {string} [options.expand] OData expansion. Expand related resources
     * in line with the retrieved resources, e.g. Categories?$expand=Products
     * would expand Product data in line with each Category entry. Optional.
     * 
     * @param {string} [options.select] OData Select statement. Limits the
     * properties on each entry to just those requested, e.g.
     * Categories?$select=CategoryName,Description. Optional.
     * 
     * @param {string} [options.orderby] OrderBy clause. One or more
     * comma-separated expressions with an optional "asc" (the default) or "desc"
     * depending on the order you'd like the values sorted, e.g.
     * Categories?$orderby=CategoryName desc. Optional.
     * 
     * @param {boolean} [options.count] The Boolean value of true or false to
     * request a count of the matching resources included with the resources in
     * the response, e.g. Categories?$count=true. Optional.
     * 
     * @param {string} [options.search] A free form search. A free-text search
     * expression to match for whether a particular entry should be included in
     * the feed, e.g. Categories?$search=blue OR green. Optional.
     * 
     * @param {string} [options.format] The return format. Return the response in
     * particular formatxii without access to request headers for standard
     * content-type negotiation (e.g Orders?$format=json). Optional.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(accountName: string, options: { filter? : string, top? : number, skip? : number, expand? : string, select? : string, orderby? : string, count? : boolean, search? : string, format? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobInfoListResult>): void;
    list(accountName: string, callback: ServiceCallback<models.JobInfoListResult>): void;

    /**
     * Lists the jobs, if any, associated with the specified Data Lake Analytics
     * account. The response includes a link to the next page of results, if any.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobInfoListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.JobInfoListResult>): void;
}
