<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_bundle(self, href=None, embed_tracks=False, embed_metadata=False, embed_insights=False):
 """Get a bundle. 'href' the relative href to the bundle. May not be None. 'embed_tracks' determines whether or not to include track information in the response. 'embed_metadata' determines whether or not to include metadata information in the response. 'embed_insights' determines whether or not to include insights information in the response. Returns a data structure equivalent to the JSON returned by the API. If the response status is not 2xx, throws an APIException. If the JSON to python data struct conversion fails, throws an APIDataException."""


        # Argument error checking.
        assert href is not None

        data = None
        fields = {}
        embed = helper.process_embed(embed_items=False,
                                     embed_tracks=embed_tracks,
                                     embed_metadata=embed_metadata,
                                     embed_insights=embed_insights)
        if embed is not None:
            fields['embed'] = embed

        if len(fields) > 0:
            data = fields

        raw_result = self.get(href, data)

        if raw_result.status < 200 or raw_result.status > 202:
            raise APIException(raw_result.status, raw_result.json)

        # Convert the JSON to a python data struct.

        return self._parse_json(raw_result.json)