code: function(action) {
      var self = this,
        imports = this.getActionImports(action),
        config = this.getActionConfig(action),
        authDisposition = this.getAuthDisposition(),
        auth = this.getAuthProperties(),
        descriptions = [];
  
       _.each(
        _.uniq(
          _.union(authDisposition, imports.required || [], config.required || []).concat(
            authDisposition,
            imports.disposition || [],
            config.disposition || []
          )
        ),
        function(attr) {
          var prop;
  
          if (imports.properties.hasOwnProperty(attr)) {
            prop = _.clone(imports.properties[attr]);
  
          } else if (config.properties.hasOwnProperty(attr)) {
            prop = _.clone(config.properties[attr]);
  
          } else if (auth.hasOwnProperty(attr)) {
            prop = _.clone(auth[attr]);
          }
  
          if (prop) {
            prop.name = attr;
            descriptions.push(prop);
          } else {
            self._logger('required field "' + attr + '" not in imports or config', 'warn');
          }
        }
      );
  
       return descriptions;
    }
docs: Returns array of config/imports in merged disposition order