Recently working on a more complex table permissions scenario on Power Pages, where we required a N:N relationship relationships with more levels of child permissions, we had nice results when using out-of-the-box lists and also with Liquid custom Web Templates.
However, I noted a few errors with basic GET queries in the WebAPI such as:
{"error":{"code":"9004010D","message":"Common Data Service error occurred.","cdscode":"0x0","innererror":{"code":"0x0","message":"Could not find a property named 'mypref_mypref_item_contact' on type 'Microsoft.Dynamics.CRM.mypref_item'."}}}
It turns out this is a known issue when Parental, Contact or Account scopes add additional conditions to the query, as reported here.
To overcome this issue, whenever using such type of relationship and calling the Web API, the recommended approach is to use a FetchXML filter in the querystring, so the issue will not happen.
Note that the FetchXML filter in the querystring needs to be encoded…