The following reserved words cannot be used as resource attribute names:
(I am including id in this list because it's possible someone could use UseAsId to specify a particular property as the ID, and then have an additional non-id property called Id.)
To deal with properties like Type, my gut inclination would be to prefix an underscore to the offending field, but that goes against this json-api recommendation:
It is recommended that resource types, attribute names, and association names be "dasherized"; i.e. consist of only lower case alphanumeric characters and dashes
ATM we are using camel-cased resource attribute names, so we aren't complying with this recommendation anyway - although maybe we should?
On a related note, we should probably have some strategy for dealing with models that have naming collisions based on differing capitalization: e.g. a model that has properties called Foo, foo, and fOO. Arguably if you are doing this you have only yourself to blame, but it would be nice if we explicitly blocked it.