Ref T4324. Currently, notifications data is POSTed to the Aphlict server in the application/x-www-form-urlencoded format. This works fine for simple data but is problematic for nested data. For example:
array( 'data' => array( 'key' => '6021329908492455737', 'type' => 'PhabricatorNotificationAdHocFeedStory', ), 'subscribers' => array( 'PHID-USER-y7ofqm276ejs62yqghge', ), );
Is encoded as data%5Bkey%5D=6021329908492455737&data%5Btype%5D=PhabricatorNotificationAdHocFeedStory&subscribers%5B0%5D=PHID-USER-y7ofqm276ejs62yqghge. This string is then (incorrectly) decoded by querystring.parse as:
> querystring.parse('data%5Bkey%5D=6021329908492455737&data%5Btype%5D=PhabricatorNotificationAdHocFeedStory&subscribers%5B0%5D=PHID-USER-y7ofqm276ejs62yqghge'); { 'data[key]': '6021329908492455737', 'data[type]': 'PhabricatorNotificationAdHocFeedStory', 'subscribers[0]': 'PHID-USER-y7ofqm276ejs62yqghge' }