code: func CreateOpenPrinter(auth Auth, info *PrinterInfo) (*OpenPrinter, error) {
  	var mr multipartRequest
  	mr.init()
  	mr.WriteField("printer", info.Name)
  	w, _ := mr.CreateFormFile("capabilities", "capabilities")
  	cap := info.Capabilities
  	if cap == nil {
  		cap = []byte(defaultPPD)
  	}
  	w.Write(cap)
  
  	var resp registerResponse
  	if err := jsonRPC(&auth, "POST", cloudprintURL+"/register", &mr, &resp); err != nil {
  		return nil, fmt.Errorf("CreateOpenPrinter: %v", err)
  	}
  	if len(resp.Printers) != 1 {
  		return nil, fmt.Errorf("CreateOpenPrinter: server did not create printer")
  	}
  
  	p := &OpenPrinter{
  		auth:     auth,
  		register: &resp,
  		printer:  resp.Printers[0].Printer(),
  	}
  	return p, nil
  }
docs: // CreateOpenPrinter registers a new open printer with Google.
  //
  // Only the ClientID, ClientSecret, and ProxyID fields need to be set in auth.
  // The Token and TokenUser fields in the auth are ignored.