When querying the /rest/v11/metadata?type_filter=modules endpoint we can see the list of fields under the /fields object.
Some fields have the property "readonly", as the name implies this defines if this field can be used on Create/Update endpoints.
Some other fields do not have the read-only property, but have a property "type" set to link, relate, another module name, etc.
On the other hand, most of them have the source=non-db, but some of these fields are updatable.
Some others can not be used in Create/Update, the server does not throw an error, but again the values are ignored.
As far as I've seen this has to do with 1-1 or 1-* related fields/modules or calculated fields.
The question is: How can I precisely define if a field is read-only or not from the metadata? What are all the combinations of properties to make a field read-only?