App Metadata
Examples
{
// Required: Simple name. Globally unique identifier for apps. Immutable across versions. Allowed: a-z, 0-9, _, -
"name": "mapper",
// Recommended: Human-readable name (shown in the UI)
"title": "Simple Read Mapper",
// Recommended: One-line description of what the app(let) does
"summary": "Maps reads to a genome",
// Optional: Detailed description. If omitted, dx build inlines the Readme.md file if available
"description": "This app maps sequencing reads to a reference genome using BWA-MEM...",
// Optional: Technical notes. If omitted, dx build inlines the Readme.developer.md file if available
"developerNotes": "Additional notes for developers maintaining this app...",
// Optional: Arbitrary metadata
"details": {
"contactEmail": "[email protected]"
},
// Recommended: DNAnexus API version
"dxapi": "1.0.0",
// Apps — Required. Semantic versioning (MAJOR.MINOR.PATCH) is recommended.
"version": "0.0.1",
// Optional: Recognized or custom categories for Tools Library
"categories": ["Read Mapping"],
// Apps — Required; Applets — Recommended: Input definitions (see I/O and Run Specifications for details)
"inputSpec": [
{
// Required: Parameter name (alphanumeric/underscore; starts with letter/underscore)
"name": "reads",
// Required: Data type
"class": "array:file",
// Optional: Type constraint (e.g., specific file ontology)
"type": "Reads",
// Optional: Filename patterns (e.g. "*.txt"). For data objects, use a mapping with "name", "pointer_class", and "tag"
"patterns": ["*.fastq", "*.fastq.gz"],
// Optional: Display name in UI
"label": "Sequencing Reads",
// Optional: Tooltip description
"help": "Input FASTQ files containing sequencing reads",
// Optional: Predefined values to populate the UI (does not restrict input like "choices")
"suggestions": [
{
"name": "DNAnexus Reference Genomes",
"project": "project-BQpp3Y804Y0xbyG4GJPQ01xv",
"path": "/"
},
{
"name": "GRCh38 BWA Index",
"value": {"$dnanexus_link": "file-xxxx"}
}
],
},
{
"name": "reads_type",
"class": "string",
"default": "paired-end",
// Optional: Mark as omittable (default is false)
"optional": true,
// Optional: Restrict input to specific values
"choices": ["single-end", "paired-end"],
// Optional: Group parameters in the UI
"group": "Advanced Options"
}
],
// Apps — Required; Applets — Recommended: Output definitions
"outputSpec": [
{
"name": "mappings",
"class": "file",
"patterns": ["*.bam"],
"help": "Mapped reads in BAM format"
}
],
// Required: How to run the executable
"runSpec": {
// Required: Interpreter ("bash" or "python3")
"interpreter": "bash",
// Required (or "code"): Path to the entry point script (inlined during build)
"file": "src/mapper.sh",
// Required: OS distribution (only "Ubuntu" supported)
"distribution": "Ubuntu",
// Required: Ubuntu version ("20.04" or "24.04")
"release": "24.04",
// Required: Execution environment version
"version": "0",
// Optional: Use on-demand instance for the head job, preserving the specified priority for the rest of the execution tree
"headJobOnDemand": true,
// Optional: Restart behavior — "all" or "master" (default)
"restartableEntryPoints": "all",
// Optional: Package dependencies (installed at runtime). Not recommended for production: package versions can change between job executions, causing inconsistent behavior. Prefer assetDepends or bundledDepends for reproducible builds.
"execDepends": [
{
// Required: Package name
"name": "bwa",
// Optional: Package manager. Supported values: "apt", "pip3", "pip", "gem", "cpan", "cran", "git"
"package_manager": "apt"
}
],
// Optional: Asset dependencies - pre-built asset bundles (automatically unpacked)
"assetDepends": [
{
// Method 1: Reference by record ID
"id": "record-Bq320600kXGxY7PyB43GZ69j"
},
{
// Method 2: Reference by name. Required: name, project, version. Optional: folder
"name": "bwa_asset",
"project": "project-Bq1pqV00kXGgzp45j4jGyYY7",
"version": "1.0.0",
"folder": "/assets"
}
],
// Optional: Bundled dependencies - raw file archives
"bundledDepends": [
{
// Required: Filename
"name": "resources.tar.gz",
// Required: File object reference
"id": {"$dnanexus_link": "file-xxxx"}
}
],
// Optional: Options governing job restart policy
"executionPolicy": {
// Optional: Restart counts per error type
"restartOn": {
"ExecutionError": 2,
"UnresponsiveWorker": 3,
// All other restartable errors
"*": 1
},
// Optional: Global restart limit (0-9; default 9)
"maxRestarts": 5
},
// Optional: Inherit parent job's restartOn policy (default false)
"inheritParentRestartOnPolicy": false,
// Optional: Execution time limits per entry point (default 30 days)
"timeoutPolicy": {
// "main" is the name of the entry point that is called when this executable is run
"main": {
"days": 2,
"hours": 12
},
// "process" is the name of an entry point (used when spawning a new job via /job/new that runs the function called "process")
"process": {
"hours": 6,
"minutes": 30
},
// Fallback for all other entry points
"*": {
"hours": 4
}
}
},
// Optional: Disable Smart Reuse. Default is false (reuse allowed). Can be overridden at runtime.
"ignoreReuse": true,
// Apps only — Optional: Expose source code to the app's authorized users and developers
"openSource": true,
// Optional: Externally expose jobs to the internet via HTTPS proxy at https://job-xxxx.dnanexus.cloud/
"httpsApp": {
// Required: Exposed ports
"ports": [443, 8080, 8081],
// Required: Minimum project access level (VIEW, CONTRIBUTE, ADMINISTER, NONE)
"shared_access": "VIEW"
},
// Optional: Request additional permissions (default: restricted)
"access": {
// Optional: Allowed domains or "*" for unrestricted internet access
"network": ["*"],
// Optional: Access to the launch project. Defaults to NONE for apps and VIEW for applets
"project": "CONTRIBUTE",
// Optional: Access to all user projects
"allProjects": "VIEW",
// Optional: Act as developer (create/modify apps, access unpublished apps)
"developer": true,
// Optional: Create new projects
"projectCreation": true
},
// Apps only — Recommended: Users who can modify/publish the app
"developers": ["user-alice"],
// Apps only — Recommended: Users/Orgs who can run the app (use "PUBLIC" for public apps). For applets, access is determined by access to the project containing the applet.
"authorizedUsers": ["org-example_lab"],
// Recommended: Region-specific configuration.
// For apps, specify all regions where the app can run and region-specific settings (systemRequirements, bundledDepends, assetDepends, resources).
// For applets, specify systemRequirements for the build region.
"regionalOptions": {
// Region key (see Regions documentation for valid identifiers)
"aws:us-east-1": {
// Region-specific instance types and drivers
"systemRequirements": {
"main": {"instanceType": "mem2_ssd1_x4"},
// Subjob entry point on a GPU instance
"process": {
"instanceType": "mem3_ssd2_gpu_x8",
"nvidiaDriver": "R535"
},
// Subjob entry point on an FPGA instance
"process_fpga": {
"instanceType": "mem3_ssd2_fpga1_x24",
"fpgaDriver": "edico-1.4.9.2"
},
// Subjob entry point with dynamic instance type selection
"analyze": {
// Optional: Tries each instance type in order until one is available
"instanceTypeSelector": {
"allowedInstanceTypes": ["mem1_ssd1_x4", "mem1_ssd1_x8", "mem2_ssd1_x4"]
}
},
// Defaults for all other entry points, including a cluster
"*": {
"instanceType": "mem3_ssd1_x4",
// Optional: Request a cluster of instances
"clusterSpec": {
// Required: "dxspark", "apachespark", or "generic"
"type": "dxspark",
// Required for dxspark/apachespark: Spark version
"version": "3.2.3",
// Optional: Cluster size (min 1) including the driver node
"initialInstanceCount": 3,
// Optional: Ports and 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
"bootstrapScript": "./bootstrap.sh"
}
}
},
// Region-specific bundled dependencies
"bundledDepends": [
{"name": "bundle.tar.gz", "id": {"$dnanexus_link": "file-xxxx"}}
],
// Region-specific asset bundle dependencies
"assetDepends": [
{
"name": "bwa_asset",
"project": "project-Bq1pqV00kXGgzp45j4jGyYY7",
"version": "1.0.0"
}
]
},
"azure:westus": {
"systemRequirements": {
"main": {"instanceType": "azure:mem2_ssd1_x4"}
},
"bundledDepends": [
{"name": "bundle.tar.gz", "id": {"$dnanexus_link": "file-zzzz"}}
],
"assetDepends": [
{"id": "record-yyyy"}
]
}
}
}Specification
name
nametitle
titlesummary
summarydescription
descriptiondeveloperNotes
developerNotesdetails
detailsdxapi
dxapiversion
versioncategories
categoriesinputSpec and outputSpec
inputSpec and outputSpecrunSpec (Entry Point and Dependencies)
runSpec (Entry Point and Dependencies)httpsApp
httpsAppaccess (App Permissions)
access (App Permissions)ignoreReuse
ignoreReuseopenSource
openSourcedevelopers
developersauthorizedUsers
authorizedUsersregionalOptions
regionalOptionsMigration from Deprecated Fields
Last updated
Was this helpful?