code: func valueDescriptorByDeviceIdHandler(w http.ResponseWriter, r *http.Request) {
  	defer r.Body.Close()
  
  	vars := mux.Vars(r)
  
  	deviceId, err := url.QueryUnescape(vars["id"])
  	if err != nil {
  		http.Error(w, err.Error(), http.StatusBadRequest)
  		LoggingClient.Error("Error unescaping the device ID: " + err.Error())
  		return
  	}
  
  	ctx := r.Context()
  	// Get the value descriptors
  	vdList, err := getValueDescriptorsByDeviceId(deviceId, ctx)
  	if err != nil {
  		switch err := err.(type) {
  		case *types.ErrServiceClient:
  			http.Error(w, err.Error(), err.StatusCode)
  		case *errors.ErrDbNotFound:
  			http.Error(w, err.Error(), http.StatusNotFound)
  			return
  		default:
  			http.Error(w, err.Error(), http.StatusInternalServerError)
  			return
  		}
  	}
  
  	encode(vdList, w)
  }
docs: // Return the value descriptors that are associated with the device specified by the device ID
  // Associated value descripts are expected parameters of PUT commands and expected results of PUT/GET commands
  // api/v1/valuedescriptor/deviceid/{id}