App Metadata
Annotated Example
{
// (required) Simple name; cannot be changed across versions of an app
"name": "mapper",
// (required) Human-readable name (shown on the App's page and used as the
// default job name)
"title": "Simple Read Mapper",
// (required) One-liner description of what the app(let) does
"summary": "Maps reads to a genome",
// (optional) Longer description of what the app(let) does; if not provided,
// dx build will inline the Readme.md file if available
"description": "This app...",
// (optional) Detailed notes covering extra details; if not provided,
// dx build will inline the Readme.developer.md file if available
"developerNotes": "...",
// (optional) This can contain arbitrary metadata, but there are some
// key/value pairs that are recognized as conventions by the website
// when rendering your app, e.g. for displaying contact information
"details": {
"contactEmail": "[email protected]"
},
// (required) The version of the API that your app uses
"dxapi": "1.0.0",
// (required) Apps only: version of the app that is being built
"version": "0.0.1",
// (optional) Apps only: list of categories describing the app (see
// below for a list of recognized categories)
"categories": ["Read Mapping"],
// (required) Input specification (see API documentation)
// An array:int input "1,2,3" would be launched with the input [1, 2, 3]
// An array:string "1,2,3" would be launched with the input ["1", "2", "3"]
"inputSpec": [
{
"name": "reads",
"class": "file",
"patterns": ["*.fastq", "*.fastq.gz"],
"help": "Input FASTQ files ... ",
"optional": false
},
{
"name": "genomeindex_targz",
"label": "BWA reference genome index",
"help": "A file ...",
"class": "file",
"patterns": ["*.bwa-index.tar.gz"],
"suggestions": [
{
"name": "DNAnexus Reference Genomes",
"project": "project-BQpp3Y804Y0xbyG4GJPQ01xv",
"path": "/"
}
],
"optional": false
},
{
"name": "reads_type",
"class": "string",
"default": "paired-end",
"choices": ["single-end", "paired-end"],
"group": "Advanced Options"
}
],
// (required) Output specification (see API documentation)
"outputSpec": [
{
"name": "mappings",
"class": "file",
"patterns": ["*.bam"]
}
],
// (required) Run specification (for more details, see the API documentation)
"runSpec": {
// Either "bash" or "python3" to indicate the interpreter for which
// the script in "file" was written
"interpreter": "python3",
// Path to the script that will be run when this app(let) is run
"file": "src/mapper.py",
// (optional) Whether headJobOnDemand is enabled by default for this applet
// or app. Can be overridden at runtime.
"headJobOnDemand": true,
// All entry points may be restarted if a restartable error occurs
"restartableEntryPoints": "all",
"assetDepends": [
{
// Asset bundle record ID
"id": "record-Bq320600kXGxY7PyB43GZ69j"
},
{
// (optional) Asset bundle record name
"name": "qiime_asset",
// (optional) Asset bundle record version number
"version": "0.0.1",
// (optional) ID of the project containing the asset bundle record
"project": "project-Bq1pqV00kXGgzp45j4jGyYY7",
// (optional) Folder in the project containing the asset bundle record.
// By default the folder is "/"
"folder": "/records"
}
],
// (optional, deprecated, moved to "regionalOptions") Request different
// instance types for different entry points
"systemRequirements": {
// "main" here is the name of the entry point that is called when an
// app(let) is run
"main": {
"instanceType": "mem1_ssd1_x4"
},
// "process" is the name of an entry point (used when spawning a new job
// via /job/new that runs the function called "process")
"process": {
"instanceType": "mem3_ssd2_fpga1_x24",
// FPGA driver to install on FPGA instances
"fpgaDriver": "edico-1.4.9.2",
// NVIDIA driver to install on GPU instances
"nvidiaDriver": "R535"
},
// "analyze" demonstrates dynamic instance type selection. The system
// attempts to provision instances from the instanceTypeSelector.allowedInstanceTypes
// list in specified order.
"analyze": {
"instanceTypeSelector": {
"allowedInstanceTypes": ["mem1_ssd1_x4", "mem1_ssd1_x8", "mem2_ssd1_x4"]
}
},
// "*" indicates that the request applies to all other entry points
// (when calling /job/new any function value other than "main", "process",
// or "analyze")
"*": {
"instanceType": "mem3_ssd1_x4",
// (optional) request a cluster of instances
"clusterSpec": {
// "dxspark", "apachespark","generic"
"type": "dxspark",
// "2.4.4" or "3.2.3" for spark, not present for generic
"version": "3.2.3",
// Size of the cluster (min 1) including the master
"initialInstanceCount": 3,
// (optional) Ports/port-ranges to open for communication between nodes
// in the cluster
"ports": "1000, 1100-1200",
// (optional) Script to run on all nodes before running app code on
// master node
"bootstrapScript": "./bootstrap.sh"
}
}
},
// (optional) Options governing job restart policy
"executionPolicy": {
"restartOn": {
// Restart automatically up to 3 times for system errors
"*": 3
}
},
// (optional) User-specified timeout policy for a job running this executable.
// The default and max timeout is 30 days for orgs without the
// allowJobsWithoutTimeout license. For orgs with the allowJobsWithoutTimeout
// license, the default timeout value is null and is equivalent to no timeout.
"timeoutPolicy": {
// "main" here is the name of the entry point that is called when this
// executable is run. The "main" entry point will timeout after 12 hours.
"main": {
"hours": 12
},
// "*" indicates that all other entry points except those explicitly
// specified in `timeoutPolicy` (i.e. "main") will timeout after 4 hours
// 30 minutes.
"*": {
"hours": 4,
"minutes": 30
}
},
// The flavor of Linux that your app(let) will run on. Supported value: "Ubuntu"
"distribution": "Ubuntu",
// The release of the Linux distribution your app(let) will run on.
// Supported values: "24.04" and "20.04".
"release": "24.04",
// Default: "0". A triplet of (distribution, release, version)
// uniquely identifies an application execution environment. Supported versions:
// ("Ubuntu","24.04","0") and ("Ubuntu","20.04","0")
"version": "0",
// (optional) A list of packages that your app(let) requires to be
// installed before it can be run
"execDepends": [
{
// "samtools" is an APT package name (other package managers also
// supported; see documentation on the run specification for details)
"name": "samtools"
}
]
},
// (optional, deprecated, moved to the "regionalOptions" field) Apps only: request
// some resource(s) to be made (privately) accessible to the app when it is run;
// can be a project ID or a list of data object IDs. It can be used only for apps
// enabled in a single region and when "regionalOptions" field is not specified.
"resources": "project-BBF4Jp80vVky55Vvgkb0028v",
// (optional) Whether to allow Smart Reuse for this applet or app.
// Default is false (reuse allowed). Can be overridden at runtime using the flags
// --ignore-reuse (sets true) or --extra-args (can set true or false).
"ignoreReuse": true,
// (optional) Apps only: Whether the contents of this app version's
// resources container should be viewable by all members of the app's
// developers and authorized users
"openSource": true,
// (optional) externally expose jobs to the internet via an HTTPS proxy
// at https://job-xxxx.dnanexus.cloud/
"httpsApp": {
// Array of ports to allow access. Allowed values are 443, 8080, 8081
"ports": [443, 8080, 8081],
// Restrict access to users with project access VIEW, CONTRIBUTE, ADMINISTER,
// or NONE to limit to the launching user
"shared_access": "VIEW"
},
// (optional) Request that the app(let) be given additional access
// permissions
"access": {
// (optional) Give the app(let) CONTRIBUTE access to the project in
// which it is run. By default, an app will receive NO access, or if
// you build this as an applet, it will receive VIEW access.
"project": "CONTRIBUTE",
// (optional) Give the app(let) VIEW access to all projects that the
// user running the app can access. Use this carefully.
"allProjects": "VIEW",
// (optional) Give the app(let) network access to all domains; you can
// also list specific domains such as "github.com".
"network": [
"*"
],
// (optional) Give the app(let) permissions to act as a developer on
// behalf of the user (e.g. it will be able to create new apps and
// access unpublished apps)
"developer": true
},
// (optional) Apps only: these users will be allowed to publish new versions of
// this app and perform other administrative functions.
"developers": [
"user-you"
],
// (optional) Apps only: any published version of this app will be runnable by the
// developers of the app, and by user-alice and user-bob. (Access to an applet
// is determined by access to the project containing the applet.)
"authorizedUsers": [
"user-alice",
"user-bob"
],
// (optional) In the case of apps, set this field to allow your app to be run in more
// than one region. Provide as keys all the regions in which you wish the
// app to be enabled. At a minimum, supply an empty object mapping {}
// as the corresponding value. Within each value, you may also supply
// any of the keys "systemRequirements", "bundledDepends",
// "assetDepends", or "resources". The corresponding values will be treated
// as if you had supplied them in the run specification above, but only
// for the associated region.
//
// In the case of applets: request specific "systemRequirements"
// in the region in which the applet will be built.
//
// You can use this to request different instance types that might be
// available in different clouds, or to supply copies of app resources
// that are colocated with the specific region where the app will be run.
"regionalOptions": {
"aws:us-east-1": {
"systemRequirements": {"*": {"instanceType": "mem2_ssd1_x2"}},
"bundledDepends": [{"name": "bundle.tar.gz", "id": {"$dnanexus_link": "file-xxxx"}}],
"assetDepends": [{"id": "record-yyyy"}],
"resources": "project-zzzz"
},
"azure:westus": {
"systemRequirements": {"*": {"instanceType": "azure:mem2_ssd1_x2"}},
"bundledDepends": [{"name": "bundle.tar.gz", "id": {"$dnanexus_link": "file-zzzz"}}],
"assetDepends": [{"id": "record-aaaa"}],
"resources": ["file-aaaa", "file-bbbb"]
}
}
}Specification
name
nametitle
titlesummary
summarydescription
descriptiondeveloperNotes
developerNotesdetails (Developer and Contact Info, and Other Metadata)
details (Developer and Contact Info, and Other Metadata)dxapi
dxapiversion
versioncategories (User-Browseable Categories)
categories (User-Browseable Categories)inputSpec and outputSpec
inputSpec and outputSpecrunSpec (Entry Point and Dependencies)
runSpec (Entry Point and Dependencies)access field (App Permissions)
access field (App Permissions)authorizedUsers field (Who Can Access Your App)
authorizedUsers field (Who Can Access Your App)regionalOptions field (Where Can Your App Run)
regionalOptions field (Where Can Your App Run)Last updated
Was this helpful?