I am creating a Web API service that acts as a facade for my clients to a more complex messaging API on the backend. The .XSD that represents the calls I need to make to the backend API is obviously not something I want them to understand. My goal is to flatten out the required elements in a ViewModel class that can be used by the client. My POST might be something like below:\[code\]public HttpResponseMessage Post(FlattenedViewModel flattenedViewModel){}\[/code\]The idea of the flattened view model is to prevent my clients from having to understand any complex structuring of data to call my API. It's a lot easier to submit this (could be JSON or XML):\[code\]<PersonFirstName>John</PersonFirstName><PersonLastName>Smith</PersonLastName><PersonPhone>123-456-7890</PersonPhone>\[/code\]than this:\[code\]<Person> <Name> <FirstName>John</FirstName> <LastName>Smith</LastName> </Name> <Communication> <Type> <Phone>123-456-7890</Phone> </Type> </Communication></Person>\[/code\]I understand creating the class structure to represent the 2nd example is not difficult and easy for all of us to understand. However, my real .XSD is about 50x this example. My goal is to provide an easier interface and ability to have a flattened view, so please use that as a constraint of this question. Imagine it like a user was entering data on a form and pressed submit; a form is like a flattened view of data to be entered.The hurdles I am encountering are the following:[*]Having a node that can repeat a finite set of times is solvable. However, nodes with the following constraint on the .xsd: \[code\]maxOccurs="unbounded"\[/code\] do not appear to be initially doable with a flattened view. Is there another way of doing this so I don't have to introduce a collection? Or can I introduce a collection but still allow the user to not have to understand a complex structure (like my 1st example)? Please provide an example of what that would look like if possible.[*]I have node names that are repeated among different parts of the .xsd but are unrelated. For example the node \[code\]ID\[/code\] or \[code\]Date\[/code\]. My solution is to append the parent node name to the value to create a property like \[code\]SubmitDate\[/code\] or \[code\]PersonID\[/code\]. The issue I now have is my ViewModel class property names don't match the ones of my entities that must be mapped to in the domain model. I'm using ValueInjecter, so is there any type of streamlined way I can still map properties to other classes that have different names (i.e. annotation or something)?Any help is appreciated, thank you!