My guess is that this indeed has to do with the reserved word data, as Laravel tries to be smart about this and prevent double wrapping (https://laravel.com/docs/5.8/eloquent-resources#data-wrapping). To circumvent this, you could simply wrap everything in a 'data' key yourself:
class StoreResource extends Resource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
return [
'data' => [
'id' => $this->id,
'title' => $this->title,
'data' => $this->data
]
];
}
}