Schema:
{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "pattern": "^custom_component$"
    },
    "id": {"type" : "string"},
    "data": {
      "type": "object",
      "properties": {
        "uid": {"type" : "string"},
        "title": {"type" : "string"},
        "field_data": {"type":"array"}
      }
    }
  },
  "required": ["id", "type", "data"]
}
Example output of a custom component with no form field values:
{
"type": "custom_component",
"id": "dc123a34-e70a-4d21-88b0-3364b026ecf4",
"data": {
"uid": "react",
"title": "React calculator"
}
}
Example output of a custom component with 3 form fields with Input, Text Area and Color Picker:
{
  "type": "custom_component",
  "id": "c05371b6-b20b-485f-a36d-f1c14eda9091",
  "data": {
    "uid": "js_component",
    "title": "Js custom component",
    "field_data": [
      {
        "type": "form-field",
        "id": "e85dcfcf-3e83-47fc-a697-e17f562eb090",
        "machine_name": "heading",
        "data": {
          "uid": "form-input",
          "title": "Input",
          "value": "Test input"
        }
      },
      {
        "type": "form-field",
        "id": "0e0f0ccb-edd3-43e2-81ec-7061ae230d9d",
        "machine_name": "content",
        "data": {
          "uid": "form-textarea",
          "title": "Plain text area",
          "value": "Some plain text"
        }
      },
      {
        "type": "form-field",
        "id": "e0d9c75b-2f64-4ba1-883d-10cc8f3406e3",
        "machine_name": "font-color",
        "data": {
          "uid": "form-colorpicker",
          "title": "Color picker",
          "value": {
            "hex": "#d14141",
            "rgba": "rgba(209, 65, 65, 1)"
          }
        }
      }
    ]
  }
}