JS Service to provide agent's VirtualThing dynamic property initialization based on ThingTemplate

I have a template with field like "Deflector" of NUMERIC type (and other properties not show in above image).
I would like to create a JavaScript service that will based on template name return a collection of JSON objects
containing all property information that can be seen in the image.
I want to build agent with a VirtualThing implementation that will be based on this JSON configuration that can be retrieved from the TW JS service.
In addition I would like to add "custom aspects" like: System, Group and Model that can be associated with each property (Can I use some kind of linked DataTable that I need to maintain using a custom mashup where I would show property names in one column, hide ThingTemplate name (which will point to TT name) and add DataShape columns: System, Group and Model). Can this be achieved differently?
[{....}, {....},{
"Name": "Deflector",
"Description": "Deflector",
"Category": "Overview",
"BaseType": "NUMBER",
"Units": "meter",
"MinValue": "0",
"MaxValue": "120",
"HasDefaultValue": true,
"DefaultValue": "0",
"Persistent": false,
"ReadOnly": false,
"Logged": true,
"DataChangeType": "VALUE",
"ChangeThreshold": "2",
"CacheOptions": "",
"PushType": "VALUE",
"PushThreshold": "1",
"System": "MonoLaser", >>> Desired as extra aspect
"Group": "Optics", >>> Desired as extra aspect
"Model": "ML4000", >>> Desired as extra aspect
},{....}
]
I tried these service calls: GetRemotePropertyBinding, GetNamedProperties, GetPropertyValues, but
I don't get all information needed by the agent to build VirtualThing's properties in the constructor of inherited class anding with initialize() VirtualThing call.
I would prefer to base this service on the Template name since I would know what template VirtualThing will be using on the server. I also have ThingShapes which will be implemented by some ThingTemplates.
Thank you,
Rad

