Internal function used to traverse a data structure and map the contents onto python-friendly objects inplace.

            This uses recursion, so try not to pass in anything that's over 255 objects deep.

            :param data: data structure
            :type data: any
            :param prefix: endpoint family, eg. sources, historics
            :type prefix: str
            :param endpoint: endpoint being called on the API
            :type endpoint: str
            :returns: Nothing, edits inplace

def outputmap(self, data):
        """ Internal function used to traverse a data structure and map the contents onto python-friendly objects inplace.

            This uses recursion, so try not to pass in anything that's over 255 objects deep.

            :param data: data structure
            :type data: any
            :param prefix: endpoint family, eg. sources, historics
            :type prefix: str
            :param endpoint: endpoint being called on the API
            :type endpoint: str
            :returns: Nothing, edits inplace
        """
        if isinstance(data, list):
            for item in data:
                self.outputmap(item)
        elif isinstance(data, dict):
            for map_target in self.output_map:
                if map_target in data:
                    data[map_target] = getattr(self, self.output_map[map_target])(data[map_target])
            for item in data.values():
                self.outputmap(item)