Hi,
I recently had this issue and my approach was to use ArcGIS Pro to author the symbol save the symbol style. The style files seem to be Sq-lite database files, using a Sq-Lite browser you can find in one of the tables the JSON. The symbols seem to be built from the CIM classes (e.g. ArcGIS Pro 2.3 API Reference Guide ).
Here is an example of a layered symbol for a pointMarker consisting of triangle and picture (I removed the actual base64 picture)
{
"type": "CIMPointSymbol",
"symbolLayers": [{
"type": "CIMVectorMarker",
"enable": true,
"anchorPoint": {"x": 0,"y": 0,"z": 0
},
"anchorPointUnits": "Relative",
"dominantSizeAxis3D": "Y",
"offsetY": 14,
"rotation": 180,
"size": 17,
"billboardMode3D": "FaceNearPlane",
"frame": {"xmin": -5.0,"ymin": -5.0,"xmax": 5.0,"ymax": 3.74},
"markerGraphics": [{
"type": "CIMMarkerGraphic",
"geometry": {"x": 0,"y": 0},
"symbol": {
"type": "CIMPointSymbol",
"symbolLayers": [{
"type": "CIMVectorMarker",
"enable": true,
"anchorPoint": {"x": 0,"y": 0,"z": 0},
"anchorPointUnits": "Relative",
"dominantSizeAxis3D": "Y",
"size": 5,
"billboardMode3D": "FaceNearPlane",
"frame": {"xmin": 0.0,"ymin": 0.0,"xmax": 17.0,"ymax": 17.0},
"markerGraphics": [{
"type": "CIMMarkerGraphic",
"geometry": {
"rings": [[[0.0,0.0],[8.61,14.85],[17.0,0.0],[0.0,0.0]]]},
"symbol": {
"type": "CIMPolygonSymbol",
"symbolLayers": [{
"type": "CIMSolidStroke",
"enable": true,
"capStyle": "Round",
"joinStyle": "Round",
"lineStyle3D": "Strip",
"miterLimit": 10,
"width": 0,
"color": {"type": "CIMRGBColor","values": [0,0,0,100]}
},
{
"type": "CIMSolidFill",
"enable": true,
"color": {
"type": "CIMRGBColor",
"values": [0,0,0,100]
}
}]
}
}],
"scaleSymbolsProportionally": true,
"respectFrame": true
}],
"haloSize": 0,
"scaleX": 1,
"angleAlignment": "Display"
}
}],
"scaleSymbolsProportionally": true,
"respectFrame": true
},
{
"type": "CIMPictureMarker",
"enable": true,
"anchorPoint": {"x": 0,"y": -6,"z": 0},
"anchorPointUnits": "Absolute",
"dominantSizeAxis3D": "Y",
"offsetY": 17,
"size": 32,
"billboardMode3D": "FaceNearPlane",
"invertBackfaceTexture": true,
"scaleX": 1,
"textureFilter": "Picture",
"tintColor": {"type": "CIMRGBColor","values": [255, 255,255,100]},
"url": "data:image/png;base64, <REMOVED>"
}],
"haloSize": 1,
"scaleX": 1,
"angleAlignment": "Display"
}