Any resource payload can be deserialized into a standardized format using the JSONAPI::Deserializable::Resource class. In case you need more control over the generated hash (modifying some field names, or modifying the default deserialization scheme for attributes/relationships), you can define custom deserializable resources. Deserializable resources map the members of a payload to fields of a hash. They are defined via an intuitive DSL.

Once your deserializable resources are defined, you can call them on hashes representing input JSON API payloads, and obtain a hash that you can use directly to create/update your models.