Mat,
Below are the steps I took to explore your question.
Create a Service Helper added a AddPerson that has a Json as its input (which is really an InfoTable)
Here is the definition

Use Postman to explore service and get the correct input body
http://localhost/Thingworx/Things/PTC-ScriptingMyServiceHelper-Thing/Services/AddPerson

Below shows the full syntax
{
"Details": {
"dataShape": {
"fieldDefinitions": {
"Age": {
"name": "Age",
"aspects": {
"tagType": "ModelTags",
"isPrimaryKey": false
},
"description": "",
"baseType": "INTEGER",
"ordinal": 2
},
"Date": {
"name": "Date",
"aspects": {
"tagType": "ModelTags",
"isPrimaryKey": false
},
"description": "",
"baseType": "DATETIME",
"ordinal": 3
},
"Name": {
"name": "Name",
"aspects": {
"tagType": "ModelTags",
"isPrimaryKey": false
},
"description": "",
"baseType": "STRING",
"ordinal": 1
}
}
},
"rows": [
{
"Age": 34,
"Date": "2018-03-22T06:00:00.000Z",
"Name": "Bob"
},
{
"Age": 25,
"Date": "2018-03-15T06:00:00.000Z",
"Name": "Jill"
},
{
"Age": 45,
"Date": "2018-03-15T06:00:00.000Z",
"Name": "John"
}
]
}
}
In the code I just return the input as a Infotable based on the DataShape
and it returns
{"dataShape":{"fieldDefinitions":{"Age":{"name":"Age","description":"","baseType":"INTEGER","ordinal":2,"aspects":{"tagType":"ModelTags","isPrimaryKey":false}},"Date":{"name":"Date","description":"","baseType":"DATETIME","ordinal":3,"aspects":{"tagType":"ModelTags","isPrimaryKey":false}},"Name":{"name":"Name","description":"","baseType":"STRING","ordinal":1,"aspects":{"tagType":"ModelTags","isPrimaryKey":false}}}},"rows":[{"Age":34,"Date":1521698400000,"Name":"Bob"},{"Age":25,"Date":1521093600000,"Name":"Jill"},{"Age":45,"Date":1521093600000,"Name":"John"}]}