Added validation, tags and requires
Moved object json creation utility method
Added metadata
Changed credentials to <String,Object> to support nesting