Schema:
{
  "type": "object",
  "properties": {
    "type": {"type": "string", "pattern": "^form-field$"},
    "id": {"type": "string", "pattern": "^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$"},
    "machine_name": {"type": "string"},
    "data": {
      "type": "object",
      "properties": {
        "uid": {"type": "string","pattern": "^form-iconpicker"},
        "title": {"type": "string"},
        "value": {"type": "object"}
      }
    }
  },
  "required": ["id", "type", "data"]
}
Example output:
Given "Icon picker" form element on a component set up like so
  
      
            
      
  
And used on Node layout canvas like so
  
      
            
      
  
JSON:API output for this form field will be this:
 
{
  "type": "form-field",
  "id": "b770d8e7-0b87-49dc-acdb-1590410cd82c",
  "machine_name": "icon-picker",
  "data": {
    "uid": "form-iconpicker",
    "title": "Icon picker",
    "value": {
      "iconName": 61556,
      "fontFamily": "icomoon"
    }
  }
}