/// <summary>
 /// Sends a PUT to '/api/user/{id}/groups'
 /// </summary>
 /// <param name="id">a path parameter (no description)</param>
 /// <param name="model">a body parameter (no description)</param>
 /// <param name="top">a query parameter (Sets the maximum number of results to return)</param>
 /// <param name="skip">a query parameter (Sets the number of results to skip, before return up the $top number of matching items.)</param>
 /// <param name="inlinecount">a query parameter (Determines if the count and total number of results should be included as part of the result set)</param>
 /// <param name="expand">a query parameter (Allows the specifying of eager-loading of related data which is returned in-line within the results of the request.)</param>
 /// <param name="filter">a query parameter (OData filter identifying a subset of results to return.)</param>
 /// <param name="orderby">a query parameter (OData order-by syntax to order results by one or more fields in ascending or descending order.)</param>
 /// <returns></returns>
 public static RestOperation SetGroupMembershipsForUser(string id, GroupMemberships model, int? top = null, int? skip = null, string inlinecount = null, string expand = null, string filter = null, string orderby = null)
 {
     return new RestOperation("PUT", "api/user/" + id + "/groups")
         {
             Content = model,                    QueryParams =
                 {
                      {"$top", top},
                      {"$skip", skip},
                      {"$inlinecount", inlinecount},
                      {"$expand", expand},
                      {"$filter", filter},
                      {"$orderby", orderby},
                 }
         };
 }
 public GroupMemberships Clone(bool includeLocalProperties)
 {
     var c = new GroupMemberships
             {
                 Items = Items.Select(x=>x.Clone(includeLocalProperties)).ToList(),
             };
     CopyExtraPropertiesToClone(c, includeLocalProperties);
     return c;
 }
partial         void CopyExtraPropertiesToClone(GroupMemberships clone, bool includeLocalProperties);
		/// <summary>
        /// Sends a PUT to '/api/user/{id}/groups'  (asynchronous)
        /// </summary>
        /// <param name="id">a path parameter (no description)</param>
        /// <param name="model">a body parameter (no description)</param>
        /// <param name="top">a query parameter (Sets the maximum number of results to return)</param>
        /// <param name="skip">a query parameter (Sets the number of results to skip, before return up the $top number of matching items.)</param>
        /// <param name="inlinecount">a query parameter (Determines if the count and total number of results should be included as part of the result set)</param>
        /// <param name="expand">a query parameter (Allows the specifying of eager-loading of related data which is returned in-line within the results of the request.)</param>
        /// <param name="filter">a query parameter (OData filter identifying a subset of results to return.)</param>
        /// <param name="orderby">a query parameter (OData order-by syntax to order results by one or more fields in ascending or descending order.)</param>
        /// <returns></returns>
        public virtual async Task<QueryResults<Group>> SetGroupMembershipsForUserAsync(string id, GroupMemberships model, int? top = null, int? skip = null, string inlinecount = null, string expand = null, string filter = null, string orderby = null)
        {
            var operation = Operations.SetGroupMembershipsForUser(id, model, top, skip, inlinecount, expand, filter, orderby);
			var response = await _client.SendAsync(operation.BuildRequest(_client));
			EnsureSuccess(response);
			var result = await response.Content.ReadAsAsync<QueryResults<Group>>();
			return result;
						
		}