code: async def parse_get_cred_def_response(get_cred_def_response: str) -> (str, str):
      
  
      logger = logging.getLogger(__name__)
      logger.debug("parse_get_cred_def_response: >>> get_cred_def_response: %r", get_cred_def_response)
  
      if not hasattr(parse_get_cred_def_response, "cb"):
          logger.debug("parse_get_cred_def_response: Creating callback")
          parse_get_cred_def_response.cb = create_cb(CFUNCTYPE(None, c_int32, c_int32, c_char_p, c_char_p))
  
      c_get_cred_def_response = c_char_p(get_cred_def_response.encode('utf-8'))
  
      (cred_def_id, cred_def_json) = await do_call('indy_parse_get_cred_def_response',
                                                   c_get_cred_def_response,
                                                   parse_get_cred_def_response.cb)
  
      res = (cred_def_id.decode(), cred_def_json.decode())
      logger.debug("parse_get_cred_def_response: <<< res: %r", res)
      return res
docs: Parse a GET_CRED_DEF response to get Credential Definition in the format compatible with Anoncreds API.
  
      :param get_cred_def_response: response of GET_CRED_DEF request.
      :return: Credential Definition Id and Credential Definition json.
        {
            id: string - identifier of credential definition
            schemaId: string - identifier of stored in ledger schema
            type: string - type of the credential definition. CL is the only supported type now.
            tag: string - allows to distinct between credential definitions for the same issuer and schema
            value: Dictionary with Credential Definition's data: {
                primary: primary credential public key,
                Optional<revocation>: revocation credential public key
            },
            ver: Version of the Credential Definition json
        }