{
  "id": "dxpy",
  "name": "dxpy",
  "homepage": "https://github.com/dnanexus/dx-toolkit",
  "description": "DNAnexus toolkit utilities and platform API bindings for Python",
  "executables": [
    "dx"
  ],
  "dotfiles": {
    "paths": [],
    "secret": [
      "~/.dnanexus_config/environment.json"
    ]
  },
  "commands": {
    "format": 1,
    "label": "DNAnexus dx",
    "description": "Upload local files to a DNAnexus project and download data objects. All other dx commands (run, describe, build and so on) are not covered.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": false,
      "short_bundles": false
    },
    "source": [
      {
        "id": "help",
        "kind": "help",
        "url": "https://documentation.dnanexus.com/user/helpstrings-of-sdk-command-line-utilities",
        "revision": "2026-10-27",
        "evidence": "usage: dx upload [-h] ...\nusage: dx download [-h] ...\n"
      }
    ],
    "subcommand": [
      {
        "path": [
          "upload"
        ],
        "label": "Upload files",
        "description": "Upload local files or directories to the current DNAnexus project and folder.",
        "source": [
          {
            "id": "help",
            "kind": "help",
            "url": "https://documentation.dnanexus.com/user/helpstrings-of-sdk-command-line-utilities",
            "revision": "2026-10-27",
            "evidence": "usage: dx upload [-h] [--visibility {hidden,visible}] [--property KEY=VALUE]\n                 [--type TYPE] [--tag TAG] [--details DETAILS] [-p] [--brief |\n                 --verbose] [--env-help] [--path [PATH]] [-r] [--wait]\n                 [--no-progress] [--buffer-size WRITE_BUFFER_SIZE]\n                 [--singlethread]\n                 filename [filename ...]\n  filename              Local file or directory to upload (\"-\" indicates stdin\n  --path, --destination [PATH]\n                        DNAnexus path to upload file(s) to (default uses\n  -r, --recursive       Upload directories recursively\n  --wait                Wait until the file has finished closing\n  --no-progress         Do not show a progress bar\n  --tag TAG             Tag of the data object; repeat as necessary\n  --type TYPE           Type of the data object; repeat as necessary\n  -p, --parents         Create any parent folders necessary\n"
          }
        ],
        "field": [
          {
            "id": "filename",
            "label": "Local files or directories",
            "type": "path",
            "position": 0,
            "multiple": true,
            "min": 1,
            "path": {
              "kind": "any",
              "role": "input",
              "must_exist": true
            },
            "sources": [
              "help"
            ]
          },
          {
            "id": "path",
            "label": "Destination path",
            "description": "DNAnexus path. A trailing slash means a folder; otherwise it is the final name.",
            "type": "string",
            "option": [
              "--path",
              "--destination"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "recursive",
            "label": "Upload directories recursively",
            "type": "boolean",
            "option": [
              "--recursive",
              "-r"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "parents",
            "label": "Create parent folders",
            "type": "boolean",
            "option": [
              "--parents",
              "-p"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "tag",
            "label": "Tag",
            "type": "string",
            "option": [
              "--tag"
            ],
            "multiple": true,
            "sources": [
              "help"
            ]
          },
          {
            "id": "type",
            "label": "Object type",
            "type": "string",
            "option": [
              "--type"
            ],
            "multiple": true,
            "sources": [
              "help"
            ]
          },
          {
            "id": "wait",
            "label": "Wait until closed",
            "type": "boolean",
            "option": [
              "--wait"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "no_progress",
            "label": "No progress bar",
            "type": "boolean",
            "option": [
              "--no-progress"
            ],
            "sources": [
              "help"
            ]
          }
        ],
        "task": [
          {
            "id": "upload",
            "label": "Upload files",
            "fields": [
              "filename",
              "path"
            ],
            "required": [
              "filename"
            ]
          },
          {
            "id": "upload_dir",
            "label": "Upload a directory",
            "fields": [
              "filename",
              "recursive",
              "path"
            ],
            "required": [
              "filename",
              "recursive"
            ],
            "set": {
              "recursive": [
                true
              ]
            }
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "filename",
              "path",
              "recursive",
              "parents"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "tag",
              "type",
              "wait",
              "no_progress"
            ]
          }
        ]
      },
      {
        "path": [
          "download"
        ],
        "label": "Download data",
        "description": "Download files or folders from DNAnexus to the local machine.",
        "source": [
          {
            "id": "help",
            "kind": "help",
            "url": "https://documentation.dnanexus.com/user/helpstrings-of-sdk-command-line-utilities",
            "revision": "2026-10-27",
            "evidence": "usage: dx download [-h] [--env-help] [-o OUTPUT] [-f] [-r] [-a]\n                   [--no-progress] [--lightweight]\n                   path [path ...]\n  path                  Data object ID or name, or folder to download\n  -o, --output OUTPUT   Local filename or directory to be used (\"-\" indicates\n  -f, --overwrite       Resume an interupted download if the local and remote\n  -r, --recursive       Download folders recursively\n  -a, --all             If multiple objects match the input, download all of\n  --no-progress         Do not show a progress bar\n"
          }
        ],
        "field": [
          {
            "id": "path",
            "label": "Objects or folders",
            "description": "Data object IDs or names, or folders.",
            "type": "string",
            "position": 0,
            "multiple": true,
            "min": 1,
            "sources": [
              "help"
            ]
          },
          {
            "id": "output",
            "label": "Local output",
            "description": "Local filename or directory. Defaults to the object's name on the platform.",
            "type": "path",
            "option": [
              "--output",
              "-o"
            ],
            "path": {
              "kind": "any",
              "role": "output",
              "must_exist": false
            },
            "sources": [
              "help"
            ]
          },
          {
            "id": "overwrite",
            "label": "Overwrite local file",
            "description": "Resume an interrupted download if signatures match; otherwise overwrite the local file.",
            "type": "boolean",
            "option": [
              "--overwrite",
              "-f"
            ],
            "effect": "overwrite",
            "sources": [
              "help"
            ]
          },
          {
            "id": "recursive",
            "label": "Download folders recursively",
            "type": "boolean",
            "option": [
              "--recursive",
              "-r"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "all",
            "label": "Download all matches",
            "type": "boolean",
            "option": [
              "--all",
              "-a"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "no_progress",
            "label": "No progress bar",
            "type": "boolean",
            "option": [
              "--no-progress"
            ],
            "sources": [
              "help"
            ]
          }
        ],
        "task": [
          {
            "id": "download",
            "label": "Download objects",
            "fields": [
              "path",
              "output"
            ],
            "required": [
              "path"
            ]
          },
          {
            "id": "download_folder",
            "label": "Download a folder",
            "fields": [
              "path",
              "recursive",
              "output"
            ],
            "required": [
              "path",
              "recursive"
            ],
            "set": {
              "recursive": [
                true
              ]
            }
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "path",
              "output",
              "recursive"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "overwrite",
              "all",
              "no_progress"
            ]
          }
        ]
      }
    ]
  }
}
