Ask a Question


Hello, I'm using the REST API for iMIS EMS to try to update a panel source. Is there anyway to use PATCH to just update one property that I care about? Or do I have to fetch the entire entity, manipulate my one property, and then send it back as a PUT? Thanks, Joe

Where can I find Order_Meet.UF_1 thru UF_10

Can't seem to narrow down where these fields are via the API (or even if they're available any more). Thanks.

Deleting Party records with REST API

We are wondering what exactly is being removed when we call the endpoint to [remove a Party by id](https://developer.imis.com/reference/deletepartybyid-1). Is this information available for review? For example: - Does it remove (legacy) Activity records? - Does it remove panel sources data associated with the delete record? - What about Orders? Gifts? Event Registrations? etc. Is it also possible with REST API to delete more than one record at a time? The use case being: a load testing process was completed and now we would like to remove all data it created...

Add Commerce item to cart - 403 on second Order/_execute UpdatePricing

Hello, Due to a bug in ProductDisplay list Addtocart functionality (ZD 267095) I am trying to implement my own. Here is my process: Create cart (assume no existing cart for this example): ``` const user = await AVICapiData(`/api/Person/${uid}`); var bid = user["PrimaryOrganization"]["OrganizationPartyId"]; if (bid == undefined) { bid = uid; } const cartpost = { "$type": "Asi.Soa.Commerce.DataContracts.CartData, Asi.Contracts", "UserId": uid, "ComboOrder": { "$type": "Asi.Soa.Commerce.DataContracts.ComboOrderData, Asi.Contracts", "Order": { "$type": "Asi.Soa.Commerce.DataContracts.OrderData, Asi.Contracts", "Lines": { "$type": "Asi.Soa.Commerce.DataContracts.OrderLineDataCollection, Asi.Contracts", "$values": [] }, "SoldToCustomerParty": { "$type": "Asi.Soa.Commerce.DataContracts.CustomerPartyData, Asi.Contracts", "PartyId": uid }, "BillToCustomerParty": { "$type": "Asi.Soa.Commerce.DataContracts.CustomerPartyData, Asi.Contracts", "PartyId": bid }, "OriginatorCustomerParty": { "$type": "Asi.Soa.Commerce.DataContracts.CustomerPartyData, Asi.Contracts", "PartyId": uid }, "Currency": { "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts", "CurrencyCode": "AUD", "DecimalPositions": 2 }, "SourceCode": "" }, "Currency": { "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts", "CurrencyCode": "AUD", "DecimalPositions": 2 }, }, "UpdateInformation": { "$type": "Asi.Soa.Core.DataContracts.EntityUpdateInformationData, Asi.Contracts", "CreatedBy": uid, "CreatedOn": new Date().toISOString(), "UpdatedBy": uid, "UpdatedOn": new Date().toISOString() } }; return await AVICapiData("/api/cart", cartpost, "POST"); ``` That is a pretty basic empty cart, of note: I set the Bill to ID to the organisation. I get the item data from ItemSummary (also tried Item endpoint), pretty straight forward ``const itemresult = await AVICapiData(`/api/ItemSummary/${productID}`);`` I wrap that item data in a basic OrderLine structure: ``` order["Lines"]["$values"].push(createOrderLine(itemresult, orderlines+1)); function createOrderLine(itemData, lineno) { return { "$type": "Asi.Soa.Commerce.DataContracts.OrderLineData, Asi.Contracts", "OrderLineId": self.crypto.randomUUID(), "Item": itemData, "QuantityOrdered": { "$type": "System.Nullable`1[[Asi.Soa.Commerce.DataContracts.QuantityData, Asi.Contracts]], mscorlib", "Amount": 1 }, "LineNumber": lineno, "SourceCode": "", "CanCombine": true, "UsesPriceGroup" : true } } ``` now I have my order object wrapped and ready to be UpdatePricing ``` order = await AVICapiData("/api/Order/_execute", { "$type": "Asi.Soa.Commerce.DataContracts.OrderPriceUpdateRequest, Asi.Contracts", "EntityTypeName": "Order", "OperationName": "UpdatePricing", "Order": order }, "POST"); ``` Now, if I add this updated order object to the comboorder and PUT to /api/cart, the pricing will be incorrect... ![](https://files.readme.io/fbf33e8-image.png) That is with a single Order/\_execute. Pricing is incorrect, and if you try to checkout with this cart you will get ![](https://files.readme.io/385d414-image.png) So I UpdatePricing on the _returned_ order object, which should then give me correct pricing. However _if_ you use BillToCustomerParty = Organisation ID, I get 403 after the second UpdatePricing. ![](https://files.readme.io/57c9f7d-image.png) If I use BillToCustomerParty = user ID _and_ change "Users who can bill to their organisation = All users", I can double UpdatePricing, see the correct cart, and no problem. ![](https://files.readme.io/1482dfd-image.png) For some reason when Adding to cart from ItemDetail, it is able to add to cart without problem. If someone is able to point out any obvious flaw in what I am doing that would be massively useful. Or if it was possible to get a fiddler dump of someone on the latest update doing Add to Cart from ItemDetail with the following setup: - Settings -> Contacts -> General -> Users who can bill to their organisation: All users - organization selected by default - Add Pricing Group on the item -> Add new pricing group -> Group Type -> Member Type Hopefully that will give me some insight in to what is happening behind the scenes, and will show me what steps if any I am missing. Thank you for your time and assistance.

How to move program item to registration item?

EMS, event was originally set up with a program item that now needs to be a registration item. It already has registrations. In SQL it's a checkbox (pretty much), I can't seem to get a PUT Event to work (not documented). Is there a way to do it that doesn't involve deleting the function and adding it? Thanks.

Deadlocks on TaskQueue and TaskQueuePublishDetail

One of our clients with two iMIS servers talking to the same database started monitoring for deadlocks, and they are seeing a high volume of deadlocks on the TaskQueue and TaskQueuePublishDetail pages. We haven't dug very deep yet, but it appears both servers are trying to execute PA+ tasks, or possibly "publishing" (indexing) contacts, events, products. A classic race condition. We don't see any problem with processes running twice, we just don't want them to run simultaneously. Given that these servers are meant to operate as load balanced and/or failover, we want them both to stay active and current. It's also critical that their system clocks remain in sync. What strategies could we use to reduce the race condition? Even if we could get one of the servers to process 1/4 second later, it should make a huge difference.

Creating a webservice and hosting

We're looking to create a webservice to be integrated into iMIS for a cloud hosted client. This webservice will enable the push and pull of data to and from the vendor's system. Would this be possible in a fully cloud hosted instance? I know this question is relatively scant on information so let me know if there is anything else I can provide? Thank you, William

PowerBi iMIS

Hi, Has anyone previously integrated iMIS with PowerBi. How was your experience. How long did the project take? Kind regards, Saif

Create Event Registration options with Pricing Group via REST API

Hello, We are looking to creating Events via the iMIS REST API, which would include setting up different Registration options with various Pricing Group information. For example, having different pricing policies for members and non-members (default) or even having custom Pricing Group defined. From RiSE website there are always two Pricing Group out of the box on any event: Default and Members ![](https://files.readme.io/cb3e286-image.png) When we query the ItemPrice endpoint it always returns only one line, for example: `api/ItemPrice?ItemId=ANNCONF/1DAY` ```json { "$type": "Asi.Soa.Core.DataContracts.PagedResult`1[[Asi.Soa.Commerce.DataContracts.ItemPriceData, Asi.Contracts]], Asi.Contracts", "Items": { "$type": "System.Collections.Generic.List`1[[Asi.Soa.Commerce.DataContracts.ItemPriceData, Asi.Contracts]], mscorlib", "$values": [ { "$type": "Asi.Soa.Commerce.DataContracts.ItemPriceData, Asi.Contracts", "ItemPriceId": "ANNCONF/1DAY:Standard:00000000-0000-0000-0000-000000000000:USD", "Item": { "$type": "Asi.Soa.Commerce.DataContracts.ItemSummaryData, Asi.Contracts", "ItemId": "ANNCONF/1DAY" }, "PriceSheet": { "$type": "Asi.Soa.Commerce.DataContracts.PriceSheetSummaryData, Asi.Contracts", "Description": "", "Name": "", "PriceSheetId": "Standard" }, "Currency": { "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts", "CurrencyCode": "USD", "DecimalPositions": 2 }, "SalesUom": { "$type": "Asi.Soa.Commerce.DataContracts.UomSummaryData, Asi.Contracts", "UomId": "00000000-0000-0000-0000-000000000000", "Name": "", "Description": "" }, "DefaultPrice": { "$type": "Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts", "Amount": 200.0000, "Currency": { "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts", "CurrencyCode": "USD", "DecimalPositions": 2 } }, "IncomeAccount": { "$type": "Asi.Soa.Commerce.DataContracts.FinancialAccountData, Asi.Contracts", "GLAccount": { "$type": "Asi.Soa.Commerce.DataContracts.GLAccountData, Asi.Contracts", "GLAccountCode": "" } }, "SpecialPriceRules": { "$type": "Asi.Soa.Commerce.DataContracts.SpecialPriceRuleDataCollection, Asi.Contracts", "$values": [ { "$type": "Asi.Soa.Commerce.DataContracts.SpecialPriceRuleData, Asi.Contracts", "SpecialPriceRuleId": "NM:EarlyFee", "Name": "NM:EarlyFee", "Description": "Non-Member", "EndDate": "2023-03-01T00:00:00", "Amount": { "$type": "Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts", "Amount": 175.0000, "Currency": { "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts", "CurrencyCode": "USD", "DecimalPositions": 2 } } }, { "$type": "Asi.Soa.Commerce.DataContracts.SpecialPriceRuleData, Asi.Contracts", "SpecialPriceRuleId": "NM:LateFee", "Name": "NM:LateFee", "Description": "Non-Member", "BeginDate": "2023-05-03T00:00:00", "EndDate": "0001-01-01T00:00:00", "Amount": { "$type": "Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts", "Amount": 250.0000, "Currency": { "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts", "CurrencyCode": "USD", "DecimalPositions": 2 } } }, { "$type": "Asi.Soa.Commerce.DataContracts.Pricing.LegacyPriceRuleData, Asi.Contracts", "RuleCustomerType": "NM" } ] } } ] }, "Offset": 0, "Limit": 100, "Count": 1, "TotalCount": 0, "NextPageLink": null, "HasNext": false, "NextOffset": 0 } ``` This looks similar to a question asked before: [Create Event RegistrationOptions with the API](https://developer.imis.com/discuss/651b28adddc70b000b40b344) Is there additional information available on this subject? Or should we contact [[email protected]](mailto:[email protected]) about an api enhancement? Thank you for your consideration.

REST API Get Current DateTime

Is there any available api endpoint that I can query to get back what server's current date time is? I'm trying to create an activity and have it be in the correct iMIS instance's time zone.