code: func (a *Agent) AgentHealthServiceByID(serviceID string) (string, *AgentServiceChecksInfo, error) {
  	path := fmt.Sprintf("/v1/agent/health/service/id/%v", url.PathEscape(serviceID))
  	r := a.c.newRequest("GET", path)
  	r.params.Add("format", "json")
  	r.header.Set("Accept", "application/json")
  	_, resp, err := a.c.doRequest(r)
  	if err != nil {
  		return "", nil, err
  	}
  	defer resp.Body.Close()
  	// Service not Found
  	if resp.StatusCode == http.StatusNotFound {
  		return HealthCritical, nil, nil
  	}
  	var out *AgentServiceChecksInfo
  	if err := decodeBody(resp, &out); err != nil {
  		return HealthCritical, out, err
  	}
  	switch resp.StatusCode {
  	case http.StatusOK:
  		return HealthPassing, out, nil
  	case http.StatusTooManyRequests:
  		return HealthWarning, out, nil
  	case http.StatusServiceUnavailable:
  		return HealthCritical, out, nil
  	}
  	return HealthCritical, out, fmt.Errorf("Unexpected Error Code %v for %s", resp.StatusCode, path)
  }
docs: // AgentHealthServiceByID returns for a given serviceID: the aggregated health status, the service definition or an error if any
  // - If the service is not found, will return status (critical, nil, nil)
  // - If the service is found, will return (critical|passing|warning), AgentServiceChecksInfo, nil)
  // - In all other cases, will return an error