Generates a payload ready for submission to the API, guided by `_api_payload`

def api_payload(self):
        """ Generates a payload ready for submission to the API, guided by `_api_payload` """
        if not self._api_payload:
            raise NotImplementedError()
        payload = {}
        for attr_name in self._api_payload:
            value = getattr(self, attr_name, None)
            if value is not None:
                payload[attr_name] = value
        return payload