iMIS SDK

iMIS SDK Developer Guide

The iMIS software development kit (SDK) provides a secure set of web services for accessing the iMIS platform, across the organization, across different physical locations, and even across organizational boundaries.

This documentation contains the following sections and supports iMIS versions 20.2.26 (iMIS 20-300), 100.1.65 (iMIS 20-100 and iMIS 20-200), and later versions, unless a specific environment is specified.

Data models list the properties available and their datatype, and will explain the purpose of each property. Swagger files describe the API and can be used by the Swagger-UI project to display the API and Swagger-Codegen to generate clients in various languages. Additional utilities can also take advantage of the resulting files, such as testing tools.

For more information, see iMIS REST API Data models and swagger json files.

Get Started    Discussions

Paying an event registration

This article details the steps involved in paying an event registration.

The following are the steps involved in paying an event registration:

  1. Create the registration without payment
  2. Make any adjustments to the event registration (adding functions, answering questions, etc.)
  3. Find the invoice and submit a ComboOrder for that invoice

The following information details an example of the above steps, and bypasses the part of making adjustments.

Register for events

This will be to the endpoint https://{{URL}}/api/EventRegistration/_execute
Here you will need to modify all properties below the RegistrationType.

{     

  "$type": "Asi.Soa.Events.DataContracts.EventRegistrationRequest, Asi.Contracts", 
  "EntityTypeName": "EventRegistration", 
  "OperationName": "RegisterEvent", 
  "RegistrationType": 3,    "EventId": "ANNCONF", 
  "RegistrationOptionFunctionId": "ANNCONF/ANNGONFREG", 
  "FunctionId": "ANNCONF/Exhibit1", 
  "RegistrantId": "21095", 
  "RegisteredBy": "21095", 
  "BillTo": "21095", 
  "Waitlist": false 

} 

Making adjustments to the EventRegistrations

See EventRegistration.

Find the invoice

Other parameters might be needed to filter for the desired invoice. The following example will filter by the BillToParty and the InvoiceDate.

The endpoint looks like this:
https://{{URL}}/api/Invoice? BillToParty.PartyId=21095&InvoiceDate=2019-05-29T00:00:00

This will return a PagedResult with the invoice(s) requested.

In this example, a single invoice is retrieved. To retrieve multiple invoices, you will need to parse the json object a bit better to retrieve the one that matches an InvoiceLine's ItemCode of the RegistrationOption from above or another function. You could build up an IQA for this and have a better filter.

Making the payment

To make the payment, you will need to submit a ComboOrder given the invoice we found in the previous step.

There are only a few required fields for the ComboOrder:

{    "$type": "Asi.Soa.Commerce.DataContracts.ComboOrderData, Asi.Contracts",   

     "Currency": {"$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts"},  

     "Order": {         

         "$type": "Asi.Soa.Commerce.DataContracts.OrderData, Asi.Contracts",                           "OrderTotal": {}, 

         "BillToCustomerParty": {} 

    }, 

    "Invoices": {"$type": "Asi.Soa.Commerce.DataContracts.InvoiceSummaryDataCollection, Asi.Contracts"},     

   "Payments": {"$type": "Asi.Soa.Commerce.DataContracts.RemittanceDataCollection, Asi.Contracts"} 

} 

From the above, the OrderTotal needs to match the Invoice.Balance that will be paid and the BillToCustomerParty must match the BillToParty from the Invoice.

PROPERTY NAME
DATA TYPE
CHILD PROPERTIES
NOTE

Currency

CurrencyData

Order

OrderData

OrderTotal
BillToCustomerParty

OrderTotal = Invoice.Balance
BillToCustomerParty = Invoice.BillToParty

Invoices

InvoiceSummaryDataCollection

Payments

RemittanceDataCollection

Here is an example with the Invoice retrieved and making a CASH payment.

{
    "$type": "Asi.Soa.Commerce.DataContracts.ComboOrderData, Asi.Contracts",
    "Currency": {
        "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts",
        "CurrencyCode": "USD",
        "DecimalPositions": 2,
        "ExtensionData": {
            "$type": "System.Runtime.Serialization.ExtensionDataObject, System.Runtime.Serialization"
        }
    },
    "Order": {
        "$type": "Asi.Soa.Commerce.DataContracts.OrderData, Asi.Contracts",
        "OrderTotal": {
            "$type": "System.Nullable`1[[Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts]], mscorlib",
            "Amount": 350,
            "Currency": {
                "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts",
                "CurrencyCode": "USD",
                "DecimalPositions": 2,
                "ExtensionData": {
                    "$type": "System.Runtime.Serialization.ExtensionDataObject, System.Runtime.Serialization"
                }
            },
            "IsAmountDefined": true
        },
        "BillToCustomerParty": {
            "$type": "Asi.Soa.Commerce.DataContracts.CustomerPartyData, Asi.Contracts",
            "PartyId": "21095"
        }
    },
    "Invoices": {
        "$type": "Asi.Soa.Commerce.DataContracts.InvoiceSummaryDataCollection, Asi.Contracts",
        "$values": [
            {
                "$type": "Asi.Soa.Commerce.DataContracts.LegacyInvoiceData, Asi.Contracts",
                "LockedEffectiveDate": "0001-01-01T00:00:00",
                "Lines": {
                    "$type": "Asi.Soa.Commerce.DataContracts.InvoiceLineDataCollection, Asi.Contracts",
                    "$values": [
                        {
                            "$type": "Asi.Soa.Commerce.DataContracts.InvoiceLineData, Asi.Contracts",
                            "InvoiceLineId": "8134:1",
                            "LineNumber": 1,
                            "Item": {
                                "$type": "Asi.Soa.Commerce.DataContracts.ItemSummaryData, Asi.Contracts",
                                "Description": "Registration for all three days of the annual conference plus networking events.",
                                "ItemClass": {
                                    "$type": "Asi.Soa.Commerce.DataContracts.ItemClassSummaryData, Asi.Contracts",
                                    "ItemClassId": "MEETING",
                                    "Name": "Event Function"
                                },
                                "ItemCode": "ANNCONF/ANNGONFREG",
                                "ItemId": "ANNCONF/ANNGONFREG",
                                "Name": "Full Conference"
                            },
                            "ShipToParty": {
                                "$type": "Asi.Soa.Membership.DataContracts.PartySummaryData, Asi.Contracts",
                                "CityName": "Memphis",
                                "CountryName": "",
                                "CountrySubEntityName": "TN",
                                "Email": "larryestrada@mailinator.com",
                                "Phone": "(901) 272-9906",
                                "PartyId": "21095",
                                "Id": "21095",
                                "UniformId": "f1122ce3-d922-492a-b5d4-be027e8623d1",
                                "Status": {
                                    "$type": "Asi.Soa.Membership.DataContracts.PartyStatusData, Asi.Contracts",
                                    "PartyStatusId": "A",
                                    "Name": "Active",
                                    "Description": "Active"
                                },
                                "Name": "Mr. Larry Estrada",
                                "Sort": "ESTRADA, LARRY",
                                "IsMarkedForDelete": false
                            },
                            "Quantity": {
                                "$type": "Asi.Soa.Commerce.DataContracts.QuantityData, Asi.Contracts",
                                "Amount": 1
                            },
                            "UnitPrice": {
                                "$type": "Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts",
                                "Amount": 350,
                                "Currency": {
                                    "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts",
                                    "CurrencyCode": "USD",
                                    "DecimalPositions": 2,
                                    "ExtensionData": null
                                },
                                "IsAmountDefined": true
                            },
                            "ExtendedAmount": {
                                "$type": "Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts",
                                "Amount": 350,
                                "Currency": {
                                    "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts",
                                    "CurrencyCode": "USD",
                                    "DecimalPositions": 2,
                                    "ExtensionData": null
                                },
                                "IsAmountDefined": true
                            },
                            "Balance": {
                                "$type": "Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts",
                                "Amount": 350,
                                "Currency": {
                                    "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts",
                                    "CurrencyCode": "USD",
                                    "DecimalPositions": 2,
                                    "ExtensionData": null
                                },
                                "IsAmountDefined": true
                            },
                            "PaymentAdjustmentAmount": {
                                "$type": "System.Nullable`1[[Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts]], mscorlib",
                                "Currency": {
                                    "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts",
                                    "CurrencyCode": "USD",
                                    "DecimalPositions": 2,
                                    "ExtensionData": null
                                },
                                "IsAmountDefined": true
                            },
                            "AdjustmentAmount": {
                                "$type": "System.Nullable`1[[Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts]], mscorlib",
                                "Currency": {
                                    "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts",
                                    "CurrencyCode": "USD",
                                    "DecimalPositions": 2,
                                    "ExtensionData": null
                                },
                                "IsAmountDefined": true
                            },
                            "PendingAdjustmentAmount": {
                                "$type": "System.Nullable`1[[Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts]], mscorlib",
                                "Currency": {
                                    "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts",
                                    "CurrencyCode": "USD",
                                    "DecimalPositions": 2,
                                    "ExtensionData": null
                                },
                                "IsAmountDefined": true
                            },
                            "PendingPaymentAdjustmentAmount": {
                                "$type": "System.Nullable`1[[Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts]], mscorlib",
                                "Currency": {
                                    "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts",
                                    "CurrencyCode": "USD",
                                    "DecimalPositions": 2,
                                    "ExtensionData": null
                                },
                                "IsAmountDefined": true
                            },
                            "AdditionalAttributes": {
                                "$type": "Asi.Soa.Core.DataContracts.GenericPropertyDataCollection, Asi.Contracts",
                                "$values": []
                            }
                        }
                    ]
                },
                "AdditionalCharges": {
                    "$type": "Asi.Soa.Commerce.DataContracts.InvoiceAdditionalChargeDataCollection, Asi.Contracts",
                    "$values": []
                },
                "ScheduledPayments": {
                    "$type": "Asi.Soa.Commerce.DataContracts.ScheduledPaymentDataCollection, Asi.Contracts",
                    "$values": []
                },
                "InvoiceId": "8134",
                "FinancialEntity": {
                    "$type": "Asi.Soa.Commerce.DataContracts.FinancialEntitySummaryData, Asi.Contracts",
                    "FinancialEntityId": "DEMO",
                    "Name": "iMIS International",
                    "IsDefault": true
                },
                "InvoiceNumber": "R8134",
                "InvoiceDate": "2019-05-29T00:00:00",
                "BillToParty": {
                    "$type": "Asi.Soa.Membership.DataContracts.PartySummaryData, Asi.Contracts",
                    "CityName": "Memphis",
                    "CountryName": "",
                    "CountrySubEntityName": "TN",
                    "Email": "larryestrada@mailinator.com",
                    "Phone": "(901) 272-9906",
                    "PartyId": "21095",
                    "Id": "21095",
                    "UniformId": "f1122ce3-d922-492a-b5d4-be027e8623d1",
                    "Status": {
                        "$type": "Asi.Soa.Membership.DataContracts.PartyStatusData, Asi.Contracts",
                        "PartyStatusId": "A",
                        "Name": "Active",
                        "Description": "Active"
                    },
                    "Name": "Mr. Larry Estrada",
                    "Sort": "ESTRADA, LARRY",
                    "IsMarkedForDelete": false
                },
                "SoldToParty": {
                    "$type": "Asi.Soa.Membership.DataContracts.PartySummaryData, Asi.Contracts",
                    "CityName": "Memphis",
                    "CountryName": "",
                    "CountrySubEntityName": "TN",
                    "Email": "larryestrada@mailinator.com",
                    "Phone": "(901) 272-9906",
                    "PartyId": "21095",
                    "Id": "21095",
                    "UniformId": "f1122ce3-d922-492a-b5d4-be027e8623d1",
                    "Status": {
                        "$type": "Asi.Soa.Membership.DataContracts.PartyStatusData, Asi.Contracts",
                        "PartyStatusId": "A",
                        "Name": "Active",
                        "Description": "Active"
                    },
                    "Name": "Mr. Larry Estrada",
                    "Sort": "ESTRADA, LARRY",
                    "IsMarkedForDelete": false
                },
                "Description": "ESTRADA, LARRY, Annual Conference",
                "InvoiceAmount": {
                    "$type": "Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts",
                    "Amount": 350,
                    "Currency": {
                        "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts",
                        "CurrencyCode": "USD",
                        "DecimalPositions": 2,
                        "ExtensionData": null
                    },
                    "IsAmountDefined": true
                },
                "PaymentAdjustmentAmount": {
                    "$type": "Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts",
                    "Currency": {
                        "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts",
                        "CurrencyCode": "USD",
                        "DecimalPositions": 2,
                        "ExtensionData": null
                    },
                    "IsAmountDefined": true
                },
                "PendingPaymentAdjustmentAmount": {
                    "$type": "Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts",
                    "Currency": {
                        "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts",
                        "CurrencyCode": "USD",
                        "DecimalPositions": 2,
                        "ExtensionData": null
                    },
                    "IsAmountDefined": true
                },
                "Balance": {
                    "$type": "Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts",
                    "Amount": 350,
                    "Currency": {
                        "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts",
                        "CurrencyCode": "USD",
                        "DecimalPositions": 2,
                        "ExtensionData": null
                    },
                    "IsAmountDefined": true
                },
                "AccountingMethod": 1,
                "AdditionalAttributes": {
                    "$type": "Asi.Soa.Core.DataContracts.GenericPropertyDataCollection, Asi.Contracts",
                    "$values": [
                        {
                            "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts",
                            "Name": "SourceSystem",
                            "Value": "MEETING"
                        }
                    ]
                }
            }
        ]
    },
    "Payments": {
        "$type": "Asi.Soa.Commerce.DataContracts.RemittanceDataCollection, Asi.Contracts",
        "$values": [
            {
                "$type": "Asi.Soa.Commerce.DataContracts.RemittanceData, Asi.Contracts",
                "PaymentMethod": {
                    "$type": "Asi.Soa.Commerce.DataContracts.PaymentMethodData, Asi.Contracts",
                    "Name": "Main Checking Account",
                    "PaymentMethodId": "CASH",
                    "PaymentType": "Cash",
                    "Message": "Cash"
                },
                "Amount": {
                    "$type": "Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts",
                    "Amount": 350,
                    "Currency": {
                        "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts",
                        "CurrencyCode": "USD",
                        "DecimalPositions": 2,
                        "ExtensionData": null
                    },
                    "IsAmountDefined": true
                }
            }
        ]
    }
}

Paying an event registration


This article details the steps involved in paying an event registration.

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.