I’m working on mapping a large list of properties from an API call to an existing object in Appfarm. The existing object has some properties which are enums/objects. Is there a way of directly linking a string in the API response to an existing enum or object? My current workaround is to make runtime properties of all these and then recalculate in a separate action step. It would be nice to be able to make a javascript function on a property in the mapping - to set the correct property directly in the property mapping.
Regarding the enum: Let’s say you receive a fixed set of order statuses “open”, “in_progress” or “finished” as values in the JSON when receiving orders from an external system:
If you create this Enum in the Global Data Model as a “String” type and add Open, In Progress, and Finished entries with values “open”, “in_progress” and “finished” as entries: You may map the response directly.
Using the Result Parser, the function parameter rawResponseData contains the raw respons. If thw following is returned from the web request:
{
"CompanyName": "Appfarm",
"OrgNo": "123456789",
"ResponsiblePersonEmployeeNo": "999999"
}
…then rawReponseData is an Object with 3 properties.
If I want to tweak the value of Appfarm before I do result mapping, then the result parser may be:
rawResponsData.CompanyName = "Appfarm AS"
return rawResponseData
→ The value of CompanyName in the result mapping is then “Appfarm AS”
Using this concept, you may e.g. add a new property to rawResponseData, before returning it. The result parser will then be:
let respPerson = persons.filter(x => x.employeeNo == rawResponseData.ResponsiblePersonEmployeeNo)
rawResponsData.ResponsiblePersonID = respPerson[0]._id
return rawResponseData
In the above example, I have added the persons datasource as a function parameter, containing all possible employees. When rawResponseData is returned, it now contains a property ResponsiblePersonID which can be used in the Result Mapping directly into the reference to the responsible person