Working with Event Registrations

This article details the steps involved in completing 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", 
  "RegistrantId": "21095", 
  "RegisteredBy": "21095", 
  "BillTo": "21095", 
  "Waitlist": false 

}

Check whether a user is already registered for an event

When setting up an event registration, it is important to check if the user you are trying to register is already registered for an event.

This is done by supplying the Method: POST /api/EventRegistration/_validate

With the following required values:

  • EventId
  • PartyId
  • FullAddressId
  • Status = 1.

Including Status = 1 (Registered) in your request allows the _validate endpoint to check if the user is already registered for the event. If the user is not registered, the response will be isValid = false; if the user is registered, the response will be isValid = true.

The endpoint verifies whether a registration with Status = 1 already exists for the given user and event.

🚧

Important Note:

"Functions" must be present as an empty array (such as "Functions": [] ).

The following is the absolute minimum JSON payload that validates if someone is registered for an event:

JSON Body for request:

{
    "$type": "Asi.Soa.Events.DataContracts.EventRegistrationData, Asi.Contracts",
    "Functions": [],
    "Event": {
        "$type": "Asi.Soa.Events.DataContracts.EventSummaryData, Asi.Contracts",
        "EventId": "ANNCONF"
    },
    "Registrant": {
        "$type": "Asi.Soa.Membership.DataContracts.PartySummaryData, Asi.Contracts",
        "PartyId": "23271"
    },
    "RegistrantAddress": {
        "$type": "Asi.Soa.Membership.DataContracts.PartyAddressData, Asi.Contracts",
        "FullAddressId": "13747"
    },
    "Status": 1
}

Response Example (not registered):

{
    "$type": "Asi.Soa.Core.DataContracts.ValidateResultsData, Asi.Contracts",
    "Entity": {
        "$type": "Asi.Soa.Events.DataContracts.EventRegistrationData, Asi.Contracts",
        "Functions": {
            "$type": "Asi.Soa.Events.DataContracts.EventFunctionRegistrationDataCollection, Asi.Contracts",
            "$values": []
        },
        "Registrant": {
            "$type": "Asi.Soa.Membership.DataContracts.PartySummaryData, Asi.Contracts",
            "PartyId": "23271"
        },
        "RegistrantAddress": {
            "$type": "Asi.Soa.Membership.DataContracts.PartyAddressData, Asi.Contracts",
            "FullAddressId": "13747"
        },
        "Event": {
            "$type": "Asi.Soa.Events.DataContracts.EventSummaryData, Asi.Contracts",
            "EventId": "ANNCONF"
        },
        "Status": 1
    },
    "IsValid": false,
    "ValidationResults": {
        "$type": "Asi.Soa.Core.DataContracts.ValidationResultsData, Asi.Contracts",
        "Errors": {
            "$type": "Asi.Soa.Core.DataContracts.ValidationResultDataCollection, Asi.Contracts",
            "$values": [
                {
                    "$type": "Asi.Soa.Core.DataContracts.ValidationResultData, Asi.Contracts",
                    "Message": "Unable to find existing event registration."
                }
            ]
        },
        "Warnings": {
            "$type": "Asi.Soa.Core.DataContracts.ValidationResultDataCollection, Asi.Contracts",
            "$values": []
        }
    }
}

Response Example (registered):

{
    "$type": "Asi.Soa.Core.DataContracts.ValidateResultsData, Asi.Contracts",
    "Entity": {
        "$type": "Asi.Soa.Events.DataContracts.EventRegistrationData, Asi.Contracts",
        "Functions": {
            "$type": "Asi.Soa.Events.DataContracts.EventFunctionRegistrationDataCollection, Asi.Contracts",
            "$values": []
        },
        "Registrant": {
            "$type": "Asi.Soa.Membership.DataContracts.PartySummaryData, Asi.Contracts",
            "PartyId": "23271"
        },
        "RegistrantAddress": {
            "$type": "Asi.Soa.Membership.DataContracts.PartyAddressData, Asi.Contracts",
            "FullAddressId": "13747"
        },
        "Event": {
            "$type": "Asi.Soa.Events.DataContracts.EventSummaryData, Asi.Contracts",
            "EventId": "ANNCONF"
        },
        "Status": 1
    },
    "IsValid": true,
    "ValidationResults": {
        "$type": "Asi.Soa.Core.DataContracts.ValidationResultsData, Asi.Contracts",
        "Errors": {
            "$type": "Asi.Soa.Core.DataContracts.ValidationResultDataCollection, Asi.Contracts",
            "$values": []
        },
        "Warnings": {
            "$type": "Asi.Soa.Core.DataContracts.ValidationResultDataCollection, Asi.Contracts",
            "$values": []
        }
    }
}

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 NAMEDATA TYPECHILD PROPERTIESNOTE
CurrencyCurrencyData
OrderOrderDataOrderTotal
BillToCustomerParty
OrderTotal = Invoice.Balance
BillToCustomerParty = Invoice.BillToParty
InvoicesInvoiceSummaryDataCollection
PaymentsRemittanceDataCollection

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": "[email protected]",
                                "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": "[email protected]",
                    "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": "[email protected]",
                    "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",
                "ReferenceNumber": "CheckNumber",
                "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
                }
            }
        ]
    }
}

Use the AdditionalAttributes property to specify the BatchId.

"AdditionalAttributes": {
                    "$type": "Asi.Soa.Core.DataContracts.GenericPropertyDataCollection, Asi.Contracts",
                    "$values": [
                        {
                            "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts",
                            "Name": "BatchId",
                            "Value": "201231-1"
                        }
                    ]
                },

Contact us
Copyright © Advanced Solutions International, All rights reserved.