I'm working on a custom Dynamics service that I'm using to process webhook requests from a 3rd party vendor. The request body of the 3rd party vendors webhook is as follows...

I have a custom service that looks like this...

Dynamics does some magic with the auto deserializing of the request as long as the method parameter name matches a JSON node of the same name. In my case "event_type". If I name the method parameter "event_type" then that node of JSON will get deserialized into the associated contact class (PMSIApi_LobWebhookEventTypeDTO).
The problem I'm encountering is I can't figure out how to map root level JSON elements (red square) to a contract class as there is no root element name like "event_type" : { stuff } syntax in the JSON. The root elements are...
{
"reference_id": "ltr_b0b5b49352ac6889",
"id": "evt_d95ff8ffd2b5cfb4",
"date_created": "2016-12-04T22:50:08.180Z",
}
And not something like...
"event_type": {
"resource": "letters",
"enabled_for_test": true,
"id": "letter.mailed",
"object": "event_type"
}
Which I can automagically map to the contract like...

How can I deserialize those root level elements? Changing the JSON request body to wrap in something like { "request" : { all the stuff } } is not an option.
Thanks!