async def get_record(type_: str, id: str, options: str):
        """
        Retrieves a record from the wallet storage.
        :param type_: String
        :param id: String
        :param options: String
        Example:
        import json
        await Wallet.add_record({
            'id': 'RecordId',
            'tags': json.dumps({
                'tag1': 'unencrypted value1',
                '~encryptedTag', 'this value is encrypted,
                'integerTag', 1
                }),
            'type_': 'TestType',
            'value': 'RecordValue'
        })
        options = json.dumps({"retrieveType": True, "retrieveValue": True, "retrieveTags": True})
        record = await Wallet.get_record('TestType', 'RecordId', options)
        :return:
        :return:
        """
        logger = logging.getLogger(__name__)

        if not hasattr(Wallet.get_record, "cb"):
            logger.debug("vcx_wallet_get_record: Creating callback")
            Wallet.get_record.cb = create_cb(CFUNCTYPE(None, c_uint32, c_uint32, c_char_p))

        c_type_ = c_char_p(type_.encode('utf-8'))
        c_id = c_char_p(id.encode('utf-8'))
        c_options = c_char_p(options.encode('utf-8'))
        data = await do_call('vcx_wallet_get_record',
                             c_type_,
                             c_id,
                             c_options,
                             Wallet.get_record.cb)

        logger.debug("vcx_wallet_get_record completed")
        return data.decode()