Ensure compliance with the spec's attributes section

        Specifically, the attributes object of the single resource
        object. This contains the key / values to be mapped to the
        model.

        :param attributes:
            dict JSON API attributes object

def _parse_attributes(self, attributes):
        """ Ensure compliance with the spec's attributes section

        Specifically, the attributes object of the single resource
        object. This contains the key / values to be mapped to the
        model.

        :param attributes:
            dict JSON API attributes object
        """

        link = 'jsonapi.org/format/#document-resource-object-attributes'

        if not isinstance(attributes, dict):
            self.fail('The JSON API resource object attributes key MUST '
                      'be a hash.', link)
        elif 'id' in attributes or 'type' in attributes:
            self.fail('A field name of `id` or `type` is not allowed in '
                      'the attributes object. They should be top-level '
                      'keys.', link)