code: func (d *DNSProvider) Present(domain, token, keyAuth string) error {
  	fqdn, value := dns01.GetRecord(domain, keyAuth)
  
  	err := d.login()
  	if err != nil {
  		return err
  	}
  
  	viewID, err := d.lookupViewID(d.config.DNSView)
  	if err != nil {
  		return err
  	}
  
  	parentZoneID, name, err := d.lookupParentZoneID(viewID, fqdn)
  	if err != nil {
  		return err
  	}
  
  	queryArgs := map[string]string{
  		"parentId": strconv.FormatUint(uint64(parentZoneID), 10),
  	}
  
  	body := bluecatEntity{
  		Name:       name,
  		Type:       "TXTRecord",
  		Properties: fmt.Sprintf("ttl=%d|absoluteName=%s|txt=%s|", d.config.TTL, fqdn, value),
  	}
  
  	resp, err := d.sendRequest(http.MethodPost, "addEntity", body, queryArgs)
  	if err != nil {
  		return err
  	}
  	defer resp.Body.Close()
  
  	addTxtBytes, _ := ioutil.ReadAll(resp.Body)
  	addTxtResp := string(addTxtBytes)
  	// addEntity responds only with body text containing the ID of the created record
  	_, err = strconv.ParseUint(addTxtResp, 10, 64)
  	if err != nil {
  		return fmt.Errorf("bluecat: addEntity request failed: %s", addTxtResp)
  	}
  
  	err = d.deploy(parentZoneID)
  	if err != nil {
  		return err
  	}
  
  	return d.logout()
  }
docs: // Present creates a TXT record using the specified parameters
  // This will *not* create a subzone to contain the TXT record,
  // so make sure the FQDN specified is within an extant zone.