{
  "name": "dscl",
  "description": "Directory Service command line utility",
  "subcommands": [
    {
      "name": "read",
      "aliases": [
        "-read"
      ],
      "description": "Prints a directory",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "keys",
          "description": "Directory Service record attribute type",
          "is_variadic": true
        }
      ]
    },
    {
      "name": "readall",
      "aliases": [
        "-readall"
      ],
      "description": "Prints all the records of a given type",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "keys",
          "description": "Directory Service record attribute type",
          "is_variadic": true
        }
      ]
    },
    {
      "name": "readpl",
      "aliases": [
        "-readpl"
      ],
      "description": "Prints the contents of plist_path",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "key",
          "description": "Directory Service record attribute type"
        },
        {
          "name": "plist path",
          "description": "Path to the plist file"
        }
      ]
    },
    {
      "name": "readpli",
      "aliases": [
        "-readpli"
      ],
      "description": "Prints the contents of plist_path for the plist at value_index of the key",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "key",
          "description": "Directory Service record attribute type"
        },
        {
          "name": "value index",
          "description": "Value index of the key"
        },
        {
          "name": "plist path",
          "description": "Path to the plist file"
        }
      ]
    },
    {
      "name": "list",
      "aliases": [
        "-list",
        "ls",
        "-ls"
      ],
      "description": "Lists the subdirectories of the given directory",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "key",
          "description": "Directory Service record attribute type"
        }
      ]
    },
    {
      "name": "search",
      "aliases": [
        "-search"
      ],
      "description": "Searches for records that match a pattern",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "key",
          "description": "Directory Service record attribute type"
        },
        {
          "name": "val",
          "description": "Value of the key"
        }
      ]
    },
    {
      "name": "create",
      "aliases": [
        "-create",
        "mk",
        "-mk"
      ],
      "description": "Creates a new record",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "key",
          "description": "Directory Service record attribute type"
        },
        {
          "name": "vals",
          "description": "Value of the key",
          "is_variadic": true
        }
      ]
    },
    {
      "name": "createpl",
      "aliases": [
        "-createpl"
      ],
      "description": "Creates a string, or array of strings at plist_path",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "key",
          "description": "Directory Service record attribute type"
        },
        {
          "name": "plist path",
          "description": "Path to the plist file"
        },
        {
          "name": "val",
          "description": "Value of the key"
        },
        {
          "name": "vals",
          "description": "Value of the key",
          "is_variadic": true
        }
      ]
    },
    {
      "name": "createpli",
      "aliases": [
        "-createpli"
      ],
      "description": "Creates a string, or array of strings at plist_path for the plist at value_index of the key",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "key",
          "description": "Directory Service record attribute type"
        },
        {
          "name": "value index",
          "description": "Value index of the key"
        },
        {
          "name": "plist path",
          "description": "Path to the plist file"
        },
        {
          "name": "val",
          "description": "Value of the key"
        },
        {
          "name": "vals",
          "description": "Value of the key",
          "is_variadic": true
        }
      ]
    },
    {
      "name": "append",
      "aliases": [
        "-append"
      ],
      "description": "Appends one or more values to a property in a given record",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "key",
          "description": "Directory Service record attribute type"
        },
        {
          "name": "vals",
          "description": "Value of the key",
          "is_variadic": true
        }
      ]
    },
    {
      "name": "merge",
      "aliases": [
        "-merge"
      ],
      "description": "Appends one or more values to a property in a given directory if the property does not already have those values",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "key",
          "description": "Directory Service record attribute type"
        },
        {
          "name": "vals",
          "description": "Value of the key",
          "is_variadic": true
        }
      ]
    },
    {
      "name": "delete",
      "aliases": [
        "-delete",
        "rm",
        "-rm"
      ],
      "description": "Delete a directory, property, or value",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "key",
          "description": "Directory Service record attribute type"
        },
        {
          "name": "vals",
          "description": "Value of the key",
          "is_variadic": true
        }
      ]
    },
    {
      "name": "deletepl",
      "aliases": [
        "-deletepl"
      ],
      "description": "Deletes a value in a plist",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "key",
          "description": "Directory Service record attribute type"
        },
        {
          "name": "plist path",
          "description": "Path to the plist file"
        },
        {
          "name": "vals",
          "description": "Value of the key",
          "is_variadic": true
        }
      ]
    },
    {
      "name": "deletepli",
      "aliases": [
        "-deletepli"
      ],
      "description": "Deletes a value for the plist at value_index of the key",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "key",
          "description": "Directory Service record attribute type"
        },
        {
          "name": "value index",
          "description": "Value index of the key"
        },
        {
          "name": "plist path",
          "description": "Path to the plist file"
        },
        {
          "name": "vals",
          "description": "Value of the key",
          "is_variadic": true
        }
      ]
    },
    {
      "name": "change",
      "aliases": [
        "-change"
      ],
      "description": "Replaces the given old value in the list of values of the given key with the new value in the specified record",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "key",
          "description": "Directory Service record attribute type"
        },
        {
          "name": "old val",
          "description": "Old value of the key"
        },
        {
          "name": "new val",
          "description": "New value of the key"
        }
      ]
    },
    {
      "name": "changei",
      "aliases": [
        "-changei"
      ],
      "description": "Replaces the value at the given index in the list of values of the given key with the new value in the specified record",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "key",
          "description": "Directory Service record attribute type"
        },
        {
          "name": "value index",
          "description": "Value index of the key"
        },
        {
          "name": "new val",
          "description": "New value of the key"
        }
      ]
    },
    {
      "name": "diff",
      "aliases": [
        "-diff"
      ],
      "description": "Compares the data from path1 and path2 looking at the specified keys (or all if no keys are specified)",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "keys",
          "description": "Directory Service record attribute type",
          "is_variadic": true
        }
      ]
    },
    {
      "name": "passwd",
      "aliases": [
        "-passwd"
      ],
      "description": "Changes the password of a user",
      "args": [
        {
          "name": "path",
          "description": "Path to the record"
        },
        {
          "name": "new password",
          "description": "New password of the user"
        }
      ]
    }
  ],
  "options": [
    {
      "names": [
        "-p"
      ],
      "description": "Prompt for password"
    },
    {
      "names": [
        "-u"
      ],
      "description": "Authenticate as user",
      "takes_arg": true,
      "arg": {
        "name": "user",
        "description": "User to authenticate as"
      }
    },
    {
      "names": [
        "-P"
      ],
      "description": "Authenticate with password",
      "takes_arg": true,
      "arg": {
        "name": "password",
        "description": "Password to authenticate with"
      }
    },
    {
      "names": [
        "-f"
      ],
      "description": "Targeted local node database file path",
      "takes_arg": true,
      "arg": {
        "name": "file",
        "description": "File path"
      }
    },
    {
      "names": [
        "-raw"
      ],
      "description": "Don't strip off prefix from DirectoryService API constants"
    },
    {
      "names": [
        "-plist"
      ],
      "description": "Print out record(s) or attribute(s) in XML plist format"
    },
    {
      "names": [
        "-url"
      ],
      "description": "Print record attribute values in URL-style encoding"
    },
    {
      "names": [
        "-q"
      ],
      "description": "Quiet - no interactive prompt"
    }
  ],
  "args": [
    {
      "name": "datasource",
      "suggestions": [
        ".",
        "..",
        "localhost",
        "localonly"
      ]
    }
  ]
}
