code: func (c *Client) GetDomainByName(domainName string) (*Domain, error) {
  	uri := fmt.Sprintf("/%s", domainName)
  	req, err := c.newRequest(http.MethodGet, uri, nil)
  	if err != nil {
  		return nil, err
  	}
  
  	domain := &Domain{}
  	resp, err := c.do(req, domain)
  	if err != nil {
  		switch {
  		case resp.StatusCode == http.StatusNotFound && strings.Count(domainName, ".") > 1:
  			// Look up for the next sub domain
  			subIndex := strings.Index(domainName, ".")
  			return c.GetDomainByName(domainName[subIndex+1:])
  		default:
  			return nil, err
  		}
  	}
  
  	return domain, nil
  }
docs: // GetDomainByName gets Domain object by its name. If `domainName` level > 2 and there is
  // no such domain on the account - it'll recursively search for the first
  // which is exists in Vscale Domains API.