/// <summary>
 /// Create or update a menu item
 /// </summary>
 /// <returns> PutMenuItemResponse object</returns>
 /// <param name="request"> PutMenuItemRequest object</param>
 /// <param name='jsonRpcCallId'>
 /// The json rpc call identifier. This is a string generated by the client, which can be used to correlate the response to the request. Max length is 256 characters. A JSON-RPC id must be generated on a per call invocation basis. The Rogerthat platform uses the id of the call to store the call result for a certain amount of time so that if something fails during the communication, the same call (having the same JSON-RPC id) can be resent to the Rogerthat service, allowing to fetch the result, without actually executing the call again. This avoids annoying problems such as duplicate delivery of messages.
 /// 
 /// You should use a different JSON-RPC id for every call you make.
 /// 
 /// In case of an intermittent failure such as a network connectivity problem, you can retry the same call using the same JSON-RPC id, without running the risk of duplicate execution of your call (e.g. duplicate message delivery).
 /// </param>
 public PutMenuItemResponse PutMenuItem(PutMenuItemRequest request, string jsonRpcCallId)
 {
     PutMenuItemResponse result = new PutMenuItemResponse();
     WireRequest(0, jsonRpcCallId, "system.put_menu_item", (writer) =>
     {
         request.Write(writer, false);
     }, (reader) =>
     {
         result.Read(reader);
     }
     );
     return result;
 }
 /// <summary>
 /// Create or update a menu item
 /// </summary>
 /// <returns> PutMenuItemResponse object</returns>
 /// <param name="request"> PutMenuItemRequest object</param>
 public PutMenuItemResponse PutMenuItem(PutMenuItemRequest request)
 {
     return PutMenuItem(request, Guid.NewGuid().ToString());
 }