The JSON used by the CDAP Applications and the CDAP UI is lacking a clear specification. It keeps slowing changing, and sometimes in backwardly incompatible ways.
The documentation page "Plugin Widget JSON" (http://docs.cask.co/cdap/current/en/cdap-apps/hydrator/custom.html#plugin-widget-json) attempts to define this, but it is incomplete as a spec.
It does not have a formal definition, nor does it have all the elements that are currently being used by Hydrator or the CDAP UI. For instance, it does not explain how the Hydrator uses the "_ui_" property, nor does it explain which elements are required or not. descriptions are not mentioned at all. Are connections required? They are required to show a pipeline in the UI, but the JSON will still work in the CLI.
It does not specify what is the current version of the spec. Is it 1.0? That is what's shown in the example JSON at the end of the page.
It's also not clear what the expectation is here. Should JSON that works in the CLI be able to work in the CDAP UI and in Cask Hydrator, all at the same time? Currently, that's not the case, as examples in the documentation that work in the CLI don't work in either CDAP UI or Hydrator.