{"swagger":"2.0","info":{"description":"Submitting and managing jobs through the Job Manager Service.","version":"v4","title":"CLC Genomics Cloud Engine REST API","license":{"name":"Copyright (C) 2020, QIAGEN Aarhus A/S. All rights reserved."}},"host":"yourHostNameHere.com","basePath":"/","tags":[{"name":"app-login-controller","description":"App Login Controller"},{"name":"batch-controller","description":"Batch Controller"},{"name":"instance-type-controller","description":"Instance Type Controller"},{"name":"job-manager-controller","description":"Job Manager Controller"},{"name":"job-manager-settings-controller","description":"Job Manager Settings Controller"},{"name":"validation-controller","description":"Validation Controller"}],"consumes":["application/json"],"produces":["application/json"],"paths":{"/v4/gce/app/config":{"get":{"tags":["app-login-controller"],"summary":"Return OAuth2 configuration to be used by apps.","operationId":"config","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/AppConfiguration"}}},"security":[{"oauth2":[]},{"basicAuth":[]}],"deprecated":false}},"/v4/gce/instancetypes/get-list":{"get":{"tags":["instance-type-controller"],"summary":"Get list of currently available instance types.","operationId":"getInstanceTypeList","responses":{"200":{"description":"Successfully returned the instance type list.","schema":{"$ref":"#/definitions/InstanceTypeDescriptions"}},"401":{"description":"Access denied. Can be caused by missing or invalid credentials."},"500":{"description":"Internal error."},"503":{"description":"Unable to process request as subsystem not currently available. Try again later."}},"security":[{"oauth2":[]},{"basicAuth":[]}],"deprecated":false}},"/v4/gce/job-manager/batches":{"get":{"tags":["batch-controller"],"summary":"Search for batches using query parameters. Results are not sorted.","operationId":"searchBatches","parameters":[{"name":"id","in":"query","description":"Search batches having an exact batch id, or multiple ids using in expression","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Max count of batches to retrieve","required":false,"type":"integer","default":10,"format":"int32","allowEmptyValue":false},{"name":"name","in":"query","description":"Search for batches having a given name either using exact match, or by using the operators contains, in, lt, lteq, gt, gteq, between or betweeneq","required":false,"type":"string","allowEmptyValue":false},{"name":"offset","in":"query","description":"Offset into search result, to be used for paging","required":false,"type":"integer","default":0,"format":"int32","allowEmptyValue":false},{"name":"status","in":"query","description":"Search for batches having a specific status either as an exact match or matching a list of values using the in operator. Allowed values: WAITING, RUNNING, DONE","required":false,"type":"string","allowEmptyValue":false},{"name":"tag","in":"query","description":"Search for batches having a specific tag value either using exact match, or by using the operators contains, in, lt, gt or between","required":false,"type":"string","allowEmptyValue":false}],"responses":{"200":{"description":"Successfully returned batch information.","schema":{"type":"array","items":{"$ref":"#/definitions/Batch"}}},"401":{"description":"Access denied. Can be caused by missing or invalid credentials."},"500":{"description":"Unable to search batches because of an internal error."},"503":{"description":"Unable to search batches because of a subsystem not currently being available. Try again later."}},"security":[{"oauth2":[]},{"basicAuth":[]}],"deprecated":false},"post":{"tags":["batch-controller"],"summary":"Submit a batch job request","description":"Create a new batch job to be added to the job queue. Subsequent posts with the same data will result in new instances of the same batch being added with each post.","operationId":"createBatch","parameters":[{"in":"body","name":"batch","description":"Batch submit request description","required":true,"schema":{"$ref":"#/definitions/BatchSubmitRequest"}}],"responses":{"201":{"description":"Returns the newly created batch of jobs. The URL for the batch can be found in the response header \"location\".","headers":{"Location":{"type":"string"}},"schema":{"$ref":"#/definitions/Batch"}},"400":{"description":"Unable to submit the batch because of missing or malformed information in the request body."},"401":{"description":"Access denied. Can be caused by missing or invalid credentials."},"500":{"description":"Unable to submit the batch because of an internal error."},"503":{"description":"Unable to submit the batch because of a subsystem not currently being available. Try again later."}},"security":[{"oauth2":[]},{"basicAuth":[]}],"deprecated":false}},"/v4/gce/job-manager/batches/{id}":{"get":{"tags":["batch-controller"],"summary":"Find a batch from given ID","operationId":"findBatch","parameters":[{"name":"id","in":"path","description":"Id of a batch to find","required":true,"type":"string"}],"responses":{"200":{"description":"Successfully returned the batch information.","schema":{"$ref":"#/definitions/Batch"}},"401":{"description":"Access denied. Can be caused by missing or invalid credentials."},"404":{"description":"Batch with the specified ID does not exist."},"500":{"description":"Unable to find the batch because of an internal error."},"503":{"description":"Unable to find the batch because of a subsystem not currently being available. Try again later."}},"security":[{"oauth2":[]},{"basicAuth":[]}],"deprecated":false},"delete":{"tags":["batch-controller"],"summary":"Cancel a batch job request","operationId":"cancelBatch","parameters":[{"name":"id","in":"path","description":"Id of a batch to cancel","required":true,"type":"string"}],"responses":{"200":{"description":"Successfully cancelled the batch or the batch is already complete and cannot be cancelled.","schema":{"$ref":"#/definitions/Batch"}},"401":{"description":"Access denied. Can be caused by missing or invalid credentials."},"404":{"description":"Batch with the specified ID does not exist."},"500":{"description":"Unable to cancel the batch because of an internal error."},"503":{"description":"Unable to cancel the batch because of a subsystem not currently being available. Try again later."}},"security":[{"oauth2":[]},{"basicAuth":[]}],"deprecated":false}},"/v4/gce/job-manager/jobs":{"get":{"tags":["job-manager-controller"],"summary":"Search for jobs using query parameters. Results are sorted by archive status (not archived first) and on submit time (latest first).","operationId":"searchJobs","parameters":[{"name":"archived","in":"query","description":"Search for jobs having a specifc archive status","required":false,"type":"string","default":"NOT_ARCHIVED","allowEmptyValue":false,"enum":["ARCHIVED","NOT_ARCHIVED","BOTH"]},{"name":"batchid","in":"query","description":"Search jobs having an exact batch id, or multiple ids using in expression","required":false,"type":"string","allowEmptyValue":false},{"name":"id","in":"query","description":"Search jobs having an exact job id, or multiple ids using in expression","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Max count of jobs to retrieve","required":false,"type":"integer","default":10,"format":"int32","allowEmptyValue":false},{"name":"modifyUserId","in":"query","description":"Search for jobs modified by a specific user id either by searching for a user id or by using in operator to search for multiple user ids","required":false,"type":"string","allowEmptyValue":false},{"name":"modifyUserName","in":"query","description":"Search for jobs modified by a specific user name either using exact match, or by using the operators in, lt, lteq, gt, gteq, between or betweeneq","required":false,"type":"string","allowEmptyValue":false},{"name":"name","in":"query","description":"Search for jobs having a given name either using exact match, or by using the operators contains, in, lt, lteq, gt, gteq, between or betweeneq","required":false,"type":"string","allowEmptyValue":false},{"name":"offset","in":"query","description":"Offset into search result, to be used for paging","required":false,"type":"integer","default":0,"format":"int32","allowEmptyValue":false},{"name":"status","in":"query","description":"Search for jobs having a specific status either as an exact match or matching a list of values using the in operator. Allowed values: CREATED, WAITING, RUNNING, COMPLETED, CANCELLED, FAILED, ON_HOLD","required":false,"type":"string","allowEmptyValue":false},{"name":"submitTime","in":"query","description":"Search for jobs submitted at a specifc timestamp in millis since epoch either using exact match, or by using the operators in,lt, lteq, gt, gteq, between or betweeneq","required":false,"type":"string","allowEmptyValue":false},{"name":"submitUserId","in":"query","description":"Search for jobs submitted by a specific user id either by searching for a user id or by using in operator to search for multiple user ids","required":false,"type":"string","allowEmptyValue":false},{"name":"submitUserName","in":"query","description":"Search for jobs submitted by a specific user name either using exact match, or by using the operators in, lt, lteq, gt, gteq, between or betweeneq","required":false,"type":"string","allowEmptyValue":false},{"name":"tag","in":"query","description":"Search for jobs having a specific tag value either using exact match, or by using the operators contains, in,lt, gt or between","required":false,"type":"string","allowEmptyValue":false}],"responses":{"200":{"description":"Successfully returned job information.","schema":{"type":"array","items":{"$ref":"#/definitions/Job"}}},"401":{"description":"Access denied. Can be caused by missing or invalid credentials."},"500":{"description":"Unable to search jobs because of an internal error."},"503":{"description":"Unable to search jobs because of a subsystem not currently being available. Try again later."}},"security":[{"oauth2":[]},{"basicAuth":[]}],"deprecated":false},"post":{"tags":["job-manager-controller"],"summary":"Submit a job request","description":"Create a new job to be added to the job queue. Subsequent posts with the same data will result in new instances of the same job being added with each post.","operationId":"createJob","parameters":[{"in":"body","name":"jobData","description":"Job submit request description","required":true,"schema":{"$ref":"#/definitions/JobSubmitRequest"}}],"responses":{"201":{"description":"Returns the newly created job. The URL for the job can be found in the response header \"location\".","headers":{"Location":{"type":"string"}},"schema":{"$ref":"#/definitions/Job"}},"400":{"description":"Unable to submit the job because of missing or malformed information in the request body."},"401":{"description":"Access denied. Can be caused by missing or invalid credentials."},"500":{"description":"Unable to submit the job because of an internal error."},"503":{"description":"Unable to submit the job because of a subsystem not currently being available. Try again later."}},"security":[{"oauth2":[]},{"basicAuth":[]}],"deprecated":false}},"/v4/gce/job-manager/jobs/{id}":{"get":{"tags":["job-manager-controller"],"summary":"Find a job from given ID","operationId":"findJob","parameters":[{"name":"id","in":"path","description":"id","required":true,"type":"string"}],"responses":{"200":{"description":"Successfully returned the job information.","schema":{"$ref":"#/definitions/Job"}},"401":{"description":"Access denied. Can be caused by missing or invalid credentials."},"404":{"description":"Job with the specified ID does not exist."},"500":{"description":"Unable to find the job because of an internal error."},"503":{"description":"Unable to find the job because of a subsystem not currently being available. Try again later."}},"security":[{"oauth2":[]},{"basicAuth":[]}],"deprecated":false},"delete":{"tags":["job-manager-controller"],"summary":"Cancel a job request","operationId":"cancelJob","parameters":[{"name":"id","in":"path","description":"id","required":true,"type":"string"}],"responses":{"200":{"description":"Successfully cancelled the job or the job is already complete and cannot be cancelled.","schema":{"$ref":"#/definitions/Job"}},"401":{"description":"Access denied. Can be caused by missing or invalid credentials."},"404":{"description":"Job with the specified ID does not exist."},"500":{"description":"Unable to cancel the job because of an internal error."},"503":{"description":"Unable to cancel the job because of a subsystem not currently being available. Try again later."}},"security":[{"oauth2":[]},{"basicAuth":[]}],"deprecated":false}},"/v4/gce/job-manager/plugins":{"get":{"tags":["job-manager-controller"],"summary":"Returns list of supported GxWB plugins for the CLC Genomics Cloud Engine","operationId":"supportedPlugins","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/GxsPlugin"}}}},"security":[{"oauth2":[]},{"basicAuth":[]}],"deprecated":false}},"/v4/gce/setting/signing-policy":{"get":{"tags":["job-manager-settings-controller"],"summary":"Gets GCE URI signing policy preferences","operationId":"getSigningPolicyUsingGET","responses":{"200":{"description":"URI signing policy returned","schema":{"type":"boolean"}},"501":{"description":"URI signing policy is probably not configured correctly"}},"security":[{"oauth2":[]},{"basicAuth":[]}],"deprecated":false}},"/v4/gce/validation/validate-batch":{"post":{"tags":["validation-controller"],"summary":"Validates a batch but does not submit it","description":"Validates inputs and parameters.","operationId":"validateBatch","parameters":[{"in":"body","name":"batchSubmitRequest","description":"Batch submit request description","required":true,"schema":{"$ref":"#/definitions/BatchSubmitRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ValidationResult"}},"401":{"description":"Access denied. Can be caused by missing or invalid credentials."},"500":{"description":"Unable to validate because of an internal error."}},"security":[{"oauth2":[]},{"basicAuth":[]}],"deprecated":false}},"/v4/gce/validation/validate-s3-access":{"post":{"tags":["validation-controller"],"summary":"Validates if the GCE Job Executor can access the specified S3 bucket and key","description":"This validation can be used for determining if a presigned S3 url is needed for the Job Executor","operationId":"validateS3Access","parameters":[{"in":"body","name":"s3BucketAndKey","description":"S3 bucket and key","required":true,"schema":{"$ref":"#/definitions/S3BucketAndKey"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ValidationResult"}}},"security":[{"oauth2":[]},{"basicAuth":[]}],"deprecated":false}}},"securityDefinitions":{"basicAuth":{"type":"basic"},"oauth2":{"type":"oauth2","tokenUrl":"oauth2/token","flow":"application"}},"definitions":{"Annotation":{"type":"object","title":"Annotation"},"AppConfiguration":{"type":"object","required":["accessTokenUri","authorizeUri","clientId","redirectUri","userInfoIdKey","userInfoNameKey","userInfoUri","version"],"properties":{"version":{"type":"string","example":1.0,"description":"Version of the configuration structure."},"redirectUri":{"type":"string","description":"The redirect URI to specify when retrieving an access token from OAUth2"},"authorizeUri":{"type":"string","description":"The URI to use for logins from Apps"},"clientId":{"type":"string","description":"The OAuth2 client ID to use when retrieving access tokens"},"accessTokenUri":{"type":"string","description":"The OAuth2 access token URI to use when retrieving access tokens"},"accessTokenParameters":{"type":"object","description":"Optional additional access token parameters to use for retrieving access tokens. For some OAuth2 severs it may be necessary to use special parameters.","additionalProperties":{"type":"string"}},"userInfoUri":{"type":"string","description":"The OAuth2 user info uri to retrieve user details from an access token"},"userInfoNameKey":{"type":"string","description":"The key for the user name, in the user info returned from the OAuth2 server"},"userInfoIdKey":{"type":"string","description":"The key for the user ID, in the user info returned from the OAuth2 server"}},"title":"AppConfiguration","description":"Contains OAUth2 configuration settings to be able to login from Apps"},"ApplicationContext":{"type":"object","properties":{"applicationName":{"type":"string"},"autowireCapableBeanFactory":{"$ref":"#/definitions/AutowireCapableBeanFactory"},"beanDefinitionCount":{"type":"integer","format":"int32"},"beanDefinitionNames":{"type":"array","items":{"type":"string"}},"classLoader":{"$ref":"#/definitions/ClassLoader"},"displayName":{"type":"string"},"environment":{"$ref":"#/definitions/Environment"},"id":{"type":"string"},"parent":{"$ref":"#/definitions/ApplicationContext"},"parentBeanFactory":{"$ref":"#/definitions/BeanFactory"},"startupDate":{"type":"integer","format":"int64"}},"title":"ApplicationContext"},"AutowireCapableBeanFactory":{"type":"object","title":"AutowireCapableBeanFactory"},"Batch":{"type":"object","required":["id","name","status"],"properties":{"id":{"type":"string","example":"42038d1f-0d86-42e2-bbe9-0d68125d2d3a","description":"Batch ID generated by the CLC Genomics Cloud Engine. Uniqely identifies the batch."},"name":{"type":"string","example":"Batch_1","description":"Name provided by the submitter of the batch. May not be unique."},"description":{"type":"string","example":"This batch is based on samples from panel 62983.","description":"Description provided by the submitter of the batch."},"status":{"type":"string","example":"RUNNING","description":"The current status of the Batch. If any jobs in the batch have been stated, then the batch is in state running untill the last job of the batch completes.","enum":["WAITING","RUNNING","DONE"]},"tag":{"type":"string","example":"Sample_c1af5cb049f223b1cf0ac3","description":"Tag provided by the submitter of the Batch."},"failureStrategy":{"type":"string","example":"FAIL_FAST","description":"Failure strategy used by this batch.","enum":["FAIL_FAST","CONTINUE"]},"jobs":{"type":"object","example":{ "firstJob": "9ee414b2-5bba-419d-a85d-7b81d87e9260", "secondJob": "a61a71ec-72d3-437c-9f87-fc4972f53757"},"description":"A map containing the ID of all the jobs in this batch.","additionalProperties":{"type":"string"}}},"title":"Batch","description":"Contains all the information known about a batch and a map of all the IDs of the jobs associated to the batch."},"BatchJobDefinitionSubmitRequest":{"type":"object","required":["parameters","workflowUrl"],"properties":{"deleteFolders":{"type":"array","description":"Workflow output folders to deleted after the job has run","items":{"type":"string"}},"parameters":{"type":"object","description":"The parameters for the workflow","additionalProperties":{"type":"array","items":{"type":"string"}}},"workflowUrl":{"type":"string","description":"URL defining the location of the workflow file"}},"title":"BatchJobDefinitionSubmitRequest","description":"Contains a job definition within a batch"},"BatchJobSubmitRequest":{"type":"object","required":["jobDefinition","jobName"],"properties":{"jobName":{"type":"string","example":"Job_1","description":"The job name can be any text that does not contain spaces and is JSON compliant. Strings up to a size of 256 characters are accepted. There is no requirement of uniqueness, but it is likely convenient for the user if the job name is sufficiently unique to be able to identify the job during its lifetime."},"jobDefinition":{"$ref":"#/definitions/BatchJobDefinitionSubmitRequest"},"jobTag":{"type":"string","example":"Sample_c1af5cb049f223b1cf0ac3","description":"User defined tag that is carried through to the job result. Strings up to a size of 256 characters are accepted."},"failureStrategy":{"type":"string","example":"FAIL_FAST","description":"Failure strategy if ouput from dependent jobs are missing","enum":["FAIL_FAST","AT_LEAST_ONE_SUCCESS"]},"executionRequirements":{"description":"Execution requirements for the job. If null then the default execution requirements for the batch will be used","$ref":"#/definitions/ExecutionRequirements"}},"title":"BatchJobSubmitRequest","description":"Contains all the information needed when submitting a new job."},"BatchSubmitRequest":{"type":"object","required":["batchDescription","batchName","batchTemplateVersion","defaultExecutionRequirements","destinationUrl","executorVersion","failureStrategy","jobs"],"properties":{"batchTemplateVersion":{"type":"string","description":"The version of the template","enum":["2"]},"batchName":{"type":"string","example":"Batch_1","description":"The batch name can be any text that is JSON compliant. Strings up to a size of 256 characters are accepted. There is no requirement of uniqueness, but it is likely convenient for the user if the batch name is sufficiently unique to be able to identify the batch during its lifetime."},"batchDescription":{"type":"string","example":"Variant analysis of batch 872139172","description":"The batch description can be any text that is JSON compliant. Strings up to a size of 1024 characters are accepted."},"failureStrategy":{"type":"string","description":"The action if a job fails.","enum":["FAIL_FAST","CONTINUE"]},"destinationUrl":{"type":"string","description":"The S3 folder where output of the jobs in the batch will be stored."},"tag":{"type":"string","description":"Optional tag for the batch and the jobs in the batch"},"jobs":{"type":"object","description":"The jobs of the batch. The key is the id of the job inside the batch used for referencing job outputs.","additionalProperties":{"$ref":"#/definitions/BatchJobSubmitRequest"}},"defaultExecutionRequirements":{"description":"Default job execution requirements.","$ref":"#/definitions/ExecutionRequirements"},"executorVersion":{"type":"string","example":"20.0.4","description":"The version of the executor for the job"}},"title":"BatchSubmitRequest","description":"Contains all the information needed when submitting a new batch."},"BeanFactory":{"type":"object","title":"BeanFactory"},"ClassLoader":{"type":"object","properties":{"definedPackages":{"type":"array","items":{"$ref":"#/definitions/Package"}},"name":{"type":"string"},"parent":{"$ref":"#/definitions/ClassLoader"},"registeredAsParallelCapable":{"type":"boolean"},"unnamedModule":{"$ref":"#/definitions/Module"}},"title":"ClassLoader"},"CommonExecutionRequirements":{"type":"object","required":["minRam"],"properties":{"cloudPlatform":{"type":"string","enum":["AWS"]},"cloudRegion":{"type":"string"},"executionType":{"type":"string","enum":["Standard"]},"instanceFamily":{"type":"string"},"minAccelCores":{"type":"integer","format":"int32"},"minCpuCores":{"type":"integer","format":"int32"},"minRam":{"type":"integer","format":"int32"}},"title":"CommonExecutionRequirements"},"Environment":{"type":"object","properties":{"activeProfiles":{"type":"array","items":{"type":"string"}},"defaultProfiles":{"type":"array","items":{"type":"string"}}},"title":"Environment"},"ExecutionRequirements":{"type":"object","properties":{"minCpuCores":{"type":"integer","format":"int32","description":"Minimum VCpu cores to use"},"minRam":{"type":"integer","format":"int32","description":"Minimum RAM in MB to use"},"executionType":{"type":"string","description":"The cloud execution type","enum":["Standard"]},"instanceFamily":{"type":"string","description":"EC2 Instance family name"},"minAccelCores":{"type":"integer","format":"int32","description":"Minimum Accelerator cores to use. Eg. GPU/FPGA depending on instance family."}},"title":"ExecutionRequirements","description":"Contains the execution related requirements for the job, i.e. hardware requirements etc."},"FileReference":{"type":"object","required":["etag","url"],"properties":{"url":{"type":"string","example":"S3://some-bucket/output/66e0f68d-127c-4386-8832-19b9383a921b/workflow-result.clc","description":"URL pointing to the location where the file is stored."},"etag":{"type":"string","example":"02a00ba1ef1b168ce0652714766dbd3b","description":"The ETag generated when the file was stored. If this ETag does not match the ETag associated with the file when it is downloaded, the file has been changed."}},"title":"FileReference","description":"Contains a reference to a file and an etag to validate if the file has been changed."},"GxsPlugin":{"type":"object","properties":{"buildId":{"type":"string"},"id":{"type":"string"},"version":{"type":"string"}},"title":"GxsPlugin"},"InstanceTypeDescription":{"type":"object","properties":{"name":{"type":"string"},"requirements":{"$ref":"#/definitions/CommonExecutionRequirements"}},"title":"InstanceTypeDescription"},"InstanceTypeDescriptions":{"type":"object","properties":{"instanceTypes":{"type":"array","items":{"$ref":"#/definitions/InstanceTypeDescription"}},"instanceTypesVersion":{"type":"integer","format":"int32"}},"title":"InstanceTypeDescriptions"},"Job":{"type":"object","required":["archived","executorVersion","id","jobHandlerId","name","requirements","status","submitUserId","submitUserName"],"properties":{"id":{"type":"string","example":"66e0f68d-127c-4386-8832-19b9383a921b","description":"Job ID generated by the CLC Genomics Cloud Engine. Uniqely identifies the job."},"name":{"type":"string","example":"Job_1","description":"Name provided by the submitter of the job. May not be unique."},"status":{"type":"string","example":"RUNNING","description":"The current status of the job.","enum":["WAITING","RUNNING","COMPLETED","FAILED","CANCELLED","ON_HOLD"]},"tag":{"type":"string","example":"Sample_c1af5cb049f223b1cf0ac3","description":"Tag provided by the submitter of the job."},"message":{"type":"string","example":"Uploading results to destination.","description":"Can contain a human readable message about the current state of the job. Will be empty if the job is in WAITING state."},"progress":{"type":"integer","format":"int32","example":53,"description":"Job progress in percent [%]."},"resultUrl":{"type":"string","example":"S3://some-bucket/output/66e0f68d-127c-4386-8832-19b9383a921b/result.json","description":"The result of a finished job, locates a resource of type WorkflowExecutorResult. Is only set when the job is in \"COMPLETED\" or \"FAILED\" state. A result can not be guarentied for a failed job, but will be generated if possible."},"submitUserId":{"type":"string","example":105932146654239185789,"description":"OAuth2 user ID of the user who submitted the job."},"submitUserName":{"type":"string","example":"Aldous Huxley","description":"OAuth2 user name of the user who submitted the job."},"modifyUserId":{"type":"string","example":203186378159312489354,"description":"OAuth2 user ID of the user who modified the job. Empty if the job has not been modified."},"modifyUserName":{"type":"string","example":"Frank Herbert","description":"The name of the OAuth2 user who modified the job. Empty if the job has not been modified."},"submitTime":{"type":"integer","format":"int64","example":1544525546028,"description":"Epoch timestamp in milliseconds specifying when the job submission was received."},"startTime":{"type":"integer","format":"int64","example":1544525547028,"description":"Epoch timestamp in milliseconds specifying when execution of the job was started."},"endTime":{"type":"integer","format":"int64","example":1544526847028,"description":"Epoch timestamp in milliseconds specifying when execution of the job was completed."},"archived":{"type":"string","description":"The archive status the job.","enum":["ARCHIVED","NOT_ARCHIVED"]},"batchId":{"type":"string","example":"66e0f68d-127c-4386-8832-19b9383a921b","description":"The batch ID the job belongs to"},"batchJobId":{"type":"string","description":"The batch job ID (id specified for for the job when the batch was submitted)"},"requirements":{"description":"The execution requirements for the job","$ref":"#/definitions/ExecutionRequirements"},"executorVersion":{"type":"string","example":"20.0.4","description":"Executor version for the job"},"jobHandlerId":{"type":"string","description":"ID of job handler that processed the job"}},"title":"Job","description":"Contains all the information known about a job."},"JobSubmitRequest":{"type":"object","required":["executorVersion","jobDefinition","jobName","requirements"],"properties":{"jobName":{"type":"string","example":"Job_1","description":"The job name can be any text that does not contain spaces and is JSON compliant. Strings up to a size of 256 characters are accepted. There is no requirement of uniqueness, but it is likely convenient for the user if the job name is sufficiently unique to be able to identify the job during its lifetime."},"jobDefinition":{"$ref":"#/definitions/WorkflowExecutorJobDefinition"},"jobTag":{"type":"string","example":"Sample_c1af5cb049f223b1cf0ac3","description":"User defined tag that is carried through to the job result. Strings up to a size of 256 characters are accepted."},"requirements":{"$ref":"#/definitions/ExecutionRequirements"},"executorVersion":{"type":"string","example":"20.0.4","description":"Executor version for the job"}},"title":"JobSubmitRequest","description":"Contains all the information needed when submitting a new job."},"Module":{"type":"object","properties":{"annotations":{"type":"array","items":{"$ref":"#/definitions/Annotation"}},"classLoader":{"$ref":"#/definitions/ClassLoader"},"declaredAnnotations":{"type":"array","items":{"$ref":"#/definitions/Annotation"}},"descriptor":{"$ref":"#/definitions/ModuleDescriptor"},"layer":{"$ref":"#/definitions/ModuleLayer"},"name":{"type":"string"},"named":{"type":"boolean"},"packages":{"type":"array","items":{"type":"string"}}},"title":"Module"},"ModuleDescriptor":{"type":"object","properties":{"automatic":{"type":"boolean"},"open":{"type":"boolean"}},"title":"ModuleDescriptor"},"ModuleLayer":{"type":"object","title":"ModuleLayer"},"Package":{"type":"object","properties":{"annotations":{"type":"array","items":{"$ref":"#/definitions/Annotation"}},"declaredAnnotations":{"type":"array","items":{"$ref":"#/definitions/Annotation"}},"implementationTitle":{"type":"string"},"implementationVendor":{"type":"string"},"implementationVersion":{"type":"string"},"name":{"type":"string"},"sealed":{"type":"boolean"},"specificationTitle":{"type":"string"},"specificationVendor":{"type":"string"},"specificationVersion":{"type":"string"}},"title":"Package"},"RedirectView":{"type":"object","properties":{"applicationContext":{"$ref":"#/definitions/ApplicationContext"},"attributesMap":{"type":"object"},"beanName":{"type":"string"},"contentType":{"type":"string"},"exposePathVariables":{"type":"boolean"},"hosts":{"type":"array","items":{"type":"string"}},"propagateQueryProperties":{"type":"boolean"},"redirectView":{"type":"boolean"},"requestContextAttribute":{"type":"string"},"staticAttributes":{"type":"object"},"url":{"type":"string"}},"title":"RedirectView"},"S3BucketAndKey":{"type":"object","required":["bucket","key"],"properties":{"bucket":{"type":"string","description":"The S3 bucket"},"key":{"type":"string","description":"The S3 key"}},"title":"S3BucketAndKey","description":"Contains S3 bucket and key"},"ValidationResult":{"type":"object","required":["errorCode","valid"],"properties":{"valid":{"type":"boolean","description":"True is the validation was successful, false if not"},"errorCode":{"type":"string","description":"Error code","enum":["OK","PARAMETERIZED_OUTPUT_FOLDER_NOT_SUPPORTED","BATCH_JOB_ID_TOO_LONG","BATCH_JOB_ID_IS_NULL","BATCH_JOB_ID_IS_EMPTY","INVALID_BATCH_JOB_ID","BATCH_TAG_IS_TOO_LONG","TOTAL_LENGTH_OF_BATCH_TAG_AND_JOB_TAG_TOO_LONG","BATCH_DESCRIPTION_IS_TOO_LONG","DESTINATION_IS_NOT_AN_S3_URL","INVALID_S3_DESTINATION","BATCH_JOB_NAME_TOO_LONG","UNKNOWN_DELETE_FOLDER","UNKNOWN_JOB_OUTPUT","UNKNOWN_WORKFLOW_INPUT_OR_PARAMETER","NO_TEMPLATE_VERSION","TEMPLATE_NOT_SUPPORTED","CYCLIC_JOB_DEPENDENCY","INVALID_WORKFLOW_URL","WORKFLOW_VERSION_IS_NOT_SUPPORTED","UNKNOWN_JOB_ID_REFERENCED","BATCH_CONTAINS_NO_JOBS","INVALID_URL","NO_WORKFLOW_DESCRIPTION_FILE","NO_SUCH_S3_KEY","NO_SUCH_S3_BUCKET","NO_S3_ACCESS","INVALID_WORKFLOW_DESCRIPTION","COULD_NOT_LOAD_WORKFLOW_DESCRIPTION","INVALID_JOB_OUTPUT_REFERENCE","S3_URI_NOT_ALLOWED_BY_POLICY","JOB_NAME_IS_EMPTY","JOB_NAME_IS_ILLEGAL","JOB_DEFINITION_IS_EMPTY","ALGO_NOT_INSTALLED_ON_SERVER","WRONG_ALGO_VERSION","EXECUTOR_VERSION_INVALID","EXECUTOR_VERSION_IS_NOT_SUPPORTED","PLUGIN_NOT_AVAILABLE","S3_KEY_CANNOT_BE_ACCESSED","JOB_TAG_IS_TOO_LONG","COULD_NOT_PARSE_JOB_DEFINITION","DESTINATION_URL_IS_EMPTY","DELETE_FOLDER_IS_PARAMETERIZED","MISSING_EXECUTION_REQUIREMENTS","MISSING_CLOUD_PLATFORM","MISSING_CLOUD_REGION","MISSING_EXECUTION_TYPE","MIN_MEMORY_NOT_SPECIFIED","CLOUD_PLATFORMS_CANNOT_BE_MIXED","CLOUD_REGIONS_CANNOT_BE_MIXED","REQUIREMENTS_CANNOT_BE_SATISFIED"]},"message":{"type":"string","description":"Description of the validation result."}},"title":"ValidationResult","description":"Contains the result of a validation."},"WorkflowExecutorJobDefinition":{"type":"object","required":["destinationUrl","workflowUrl"],"properties":{"workflowUrl":{"type":"string","example":"https://some-bucket.s3.amazonaws.com/clc-workflows/analysis1.cpw?AWSAccessKeyId=WHUAJPD4JD3JZBXEOV2Q&Expires=1544529771&Signature=%2RTtKlqy8uBrinu9w5bMvFsxMx4Y%4D","description":"The location of the workflow."},"parameters":{"type":"object","example":{"--workflowInput":["https://databucket.s3.amazonaws.com/inputData1.clc?AWSAccessKeyId=AKIAJPD4GH5JZWNSO72Q&Expires=1241692907&Signature=4Qua5p2Xsz3Ab58hoEZudnSbn1Y%3D","https://databucket.s3.amazonaws.com/inputData2.clc?AWSAccessKeyId=AKIAJPD4GH5JZWNSO72Q&Expires=1241692907&Signature=lacAdobcDmvuBL3FINDKSfjyIG0%3D"]},"description":"The parameters of the workflow. Each parameter can have an array of values. Allowed names and values depends on the workflow.","additionalProperties":{"type":"array","items":{"type":"string"}}},"destinationUrl":{"type":"string","example":"S3://some-bucket/output/","description":"The S3 URL specifying where the output of the workflow should be stored. The CLC Genomics Cloud Engine must have write access to this location."},"deleteFolders":{"type":"array","example":["/reports", "variants"],"description":"The workflow output folders to delete. Root folder is '/'. Sub folders are not deleted, thus all folders to be deleted must be explicitly specified","items":{"type":"string"}}},"title":"WorkflowExecutorJobDefinition","description":"Contains the job information used by the backend service executing the workflow."},"WorkflowExecutorResult":{"type":"object","required":["jobId","logUrl","outputFiles","status"],"properties":{"jobId":{"type":"string","example":"Job_1","description":"The job ID generated by CLC Genomics Cloud Engine."},"status":{"type":"string","description":"The final status of the job.","enum":["COMPLETED","FAILED"]},"jobTag":{"type":"string","example":"Sample_c1af5cb049f223b1cf0ac3","description":"Any job tags submitted with this job."},"outputFiles":{"type":"array","description":"A list of all the files generated by the workflow.","items":{"$ref":"#/definitions/FileReference"}},"logUrl":{"type":"string","description":"The location of the job log generated during the job execution."}},"title":"WorkflowExecutorResult","description":"Contains job information and a list of all the result files generated by the workflow."}}}