UpdateItems with refresh

The UpdateItems with refresh API updates multiple records in a specified IDO collection and then refreshes the collection.
UpdateItems with refresh

Parameters

Name In Required? Description
responsetype Path Yes Response request data format: Supply any of these values:
  • xml
  • json
ido Path Yes This is the name of the IDO collection.
refresh Query No This parameter provides the instruction to refresh the collection. Supply either of these values:
  • ALL - Refreshes the entire collection and all of its properties.
  • PROPS - Refreshes only the IDO properties.
props Query No This is a comma-delimited list of the properties to refresh.

Headers

Name Description
Authorization If the API is called directly, then a Mongoose security token is obtained through a call to the GetSecurityToken API.

If the API is called through ION API, then a valid OAuth2.0 bearer token is provided by ION API.

X-Infor-MongooseConfig This is the name of a configuration that is available on the application server. This is required only when using the Mongoose API through the ION API.

Request data in XML format

<?xml version="1.0"?>
<ArrayOfIDOUpdateItem
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://www.infor.com">
  <IDOUpdateItem>
    <Action>Update</Action>
    <ItemId>PBT=[UserNames] UserNames.DT=[2019-07-24 13:42:57.280] UserNames.ID=[4b5b7da7-dd7c-47d7-8746-2ce193bfc43a]</ItemId>
    <Properties>
      <UpdateProperty>
        <IsNull>false</IsNull>
        <Modified>true</Modified>
        <Name>UserDesc</Name>
        <Value>John Doe Sr.</Value>
      </UpdateProperty>
    </Properties>
  </IDOUpdateItem>
  <IDOUpdateItem>
    <Action>Update</Action>
    <ItemId> PBT=[UserNames] UserNames.DT=[2019-07-24 13:28:51.960] UserNames.ID=[3faaaaab-47ef-4643-8255-756976238911]</ItemId>
    <Properties>
      <UpdateProperty>
        <IsNull>false</IsNull>
        <Modified>true</Modified>
        <Name>UserDesc</Name>
        <Value>Will Kevin Smith</Value>
      </UpdateProperty>
    </Properties>
  </IDOUpdateItem>
</ArrayOfIDOUpdateItem>

Request data in JSON format

[
   {
      "Action": 2,
      "ItemId": "PBT=[UserNames] UserNames.DT=[2019-07-24 13:42:57.280] UserNames.ID=[4b5b7da7-dd7c-47d7-8746-2ce193bfc43a]",
      "Properties": [
         {
            "IsNull": false,
            "Modified": true,
            "Name": "UserDesc",
            "Value": "John Doe Sr."
         }
      ]
   },
   {
      "Action": 2,
      "ItemId": "PBT=[UserNames] UserNames.DT=[2019-07-24 13:28:51.960] UserNames.ID=[3faaaaab-47ef-4643-8255-756976238911]",
      "Properties": [
         {
            "IsNull": false,
            "Modified": true,
            "Name": "UserDesc",
            "Value": "Will Kevin Smith"
         }
      ]
   }
]

Response data in XML format

<?xml version="1.0"?>
<MGRestUpdateResponse
	xmlns="http://schemas.datacontract.org/2004/07/"
	xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <Message>Update successful.</Message>
  <MessageCode>201</MessageCode>
</MGRestUpdateResponse>

Response data in JSON format

{
   "Message": "Update successful.",
   "MessageCode": 201
}

Example

This example code updates the descriptions of users jdoe and wsmith, and then returns the updated property values.

string xml = string.Empty;
 
using ( HttpClient client = new HttpClient() )
{
   // optionally, you can use json as the response type
   string ido = "UserNames";
   string refresh = "ALL";
   string props = "UserDesc";
   string requestUrl = $"http://localhost/IDORequestService/MGRESTService.svc/xml/{ido}/updateitems/adv?refresh={refresh}&props={props}";
 
   // provide token in the Authorization header
   client.DefaultRequestHeaders.TryAddWithoutValidation(
      "Authorization",
      "b/XdI6IQzCviZOGJ0E+002…5vl903teP0jSDwkFs" );
 
   List<IDOUpdateItem> idoItems = new List<IDOUpdateItem>();
 
   UpdateProperty userDesc = new UpdateProperty
   {
      Name = "UserDesc",
      Value = "John Doe Sr.",
      IsNull = false,
      Modified = true
   };
 
   IDOUpdateItem idoItem = new IDOUpdateItem
   {
      Action = UpdateAction.Update,
      Properties = new[] { userDesc },
      ItemId = "PBT=[UserNames] UserNames.DT=[2019-07-24 13:42:57.280] UserNames.ID=[4b5b7da7-dd7c-47d7-8746-2ce193bfc43a]"
   };
   idoItems.Add( idoItem );
 
   userDesc = new UpdateProperty
   {
      Name = "UserDesc",
      Value = "Will Kevin Smith",
      IsNull = false,
      Modified = true
   };
 
   idoItem = new IDOUpdateItem
   {
      Action = UpdateAction.Update,
      Properties = new[] { userDesc },
      ItemId = "PBT=[UserNames] UserNames.DT=[2019-07-24 13:28:51.960] UserNames.ID=[3faaaaab-47ef-4643-8255-756976238911]"
   };
   idoItems.Add( idoItem );
 
   XDocument xdoc = new XDocument( new XDeclaration( "1.0", "utf-8", "yes" ) );
   using ( XmlWriter writer = xdoc.CreateWriter() )
   {
      DataContractSerializer serializer = new DataContractSerializer( idoItems.GetType() );
      serializer.WriteObject( writer, idoItems );
   }
 
 
   // pass the List<IDOUpdateItem> as the request data and send the update request
   HttpResponseMessage response = client.PutAsync( requestUrl, new StringContent( xdoc.ToString(), Encoding.UTF8, "application/xml" ) ).Result;
 
   using ( HttpContent content = response.Content )
   {
      Task<string> result = content.ReadAsStringAsync();
      xml = result.Result;
   }
}

You can use these classes to construct the Request Data as demonstrated in the previous code snippets:

public class IDOUpdateItem
{
   public UpdateAction Action { get; set; }
   public string ItemId { get; set; }
   public int ItemNo { get; set; }
   public UpdateProperty[] Properties { get; set; }
   public UpdateLocking UpdateLocking { get; set; }
}
 
public class UpdateProperty
{
   public string Name { get; set; }
   public string Value { get; set; }
   public string OriginalValue { get; set; }
   public bool Modified { get; set; }
   public bool IsNull { get; set; }
}
 
public enum UpdateAction
{
   Insert = 1,
   Update = 2,
   Delete = 4
}
 
public enum UpdateLocking
{
   Row = 0,
   Property = 1
}