Critical information is missing from the nftTransfer schema, making the data unusable

The nftTransfer schema does not include any field indicating the type of transaction that it represents. This is a problem, for example when using the getNFTTransfers endpoints to retrieve a list of NFT transfers.

The Moralis API usually reports transfers as having a value field that is equal to zero, so it’s easy to filter them out and keep only sales, simply by excluding all entries with a value of zero. However, some transfers have a value field that’s not zero, and the nftTransfer schema offers no other field to differentiate between different transaction types. OpenSea is filtering those out correctly and only showing them as transfers, however with Moralis those transfers look like sales, as again, there’s no other fields available to distinguish between sales and transfers.

Here is an example of a transfer with a non-zero value [1], “Transaction Action” says only Transfer. And here is an example of a sales followed by a transfer [2], “Transaction Action” is set to Sale.

This missing field is a critical issue, because this transfer [1] will be miscategorized as a sale. And because it has a value low value of 0.005 ETH, including this entry in calculations of averages, medians, and so on, is going to skew the data so much that it will be unusable.

The solution is to add a transaction_type field to the nftTransfer schema that would indicate if the entry represents a sales or a transfer. Until this field is added to the API, the API cannot be trusted for anything serious.

Moralis is a great product, please fix this asap.

Thank you for reading.