How-to Guide - Rest API - Customers, Loyalty, and Account Balances
Introduction
The purpose of this guide is to provide an understanding of the REST Customers, Loyalty and Account Balances APIs provided by Enactor for use with external Web Sites and for Customer integration. It is separated out into functional areas, with each section related to a specific service. Note that the final URL used to access the service will be determined based on how the Enactor REST Promotions API is deployed.
Following are Enactor REST Customers, Loyalty and Account Balances APIs areas covered in this document:
-
Customer API
-
Customer Transaction History API
-
Loyalty API
-
Account Balance API
Customer API
The Customer API will provide the ability to retrieve and update Customer details. This includes details about Customer contact and loyalty information. Following is the list of Customer APIs covered in this section:
-
Get the Customer’s Details.
-
Update the Customer’s Name.
-
Add a new Phone Number.
-
Update a Phone Number.
-
Remove a Phone Number.
-
Add a new Email Address.
-
Update an Email Address.
-
Remove an Email Address.
-
Add a new Customer Address.
-
Update a Customer Address.
-
Remove a Customer Address.
Get the Customer’s Details
This service can retrieve details about the customer, including their name and contact details. It can also return their current loyalty tier and balance. Note that the customer number cannot be specified, it must come from the information included in the access token.
Request
Request Service URL
GET /customers
Request Tokens
There are no request tokens.
Request Parameters
There are no request parameters.
Request Body
There is no request body.
Response
Response Headers
There are no response headers.
Response Body
ICustomerResponse
Element | Type | Description |
---|---|---|
customer | ICustomer | The details of the customer to return. |
Request & Response Examples
Request:
GET http://[SWARM_LEADER_IP]/WebRestApi/rest/customers
Response:
Status: 200 OK
{
"@entity": "retail:customerResponse",
"customer": {
"@entity": "retail:customer",
"addresses": {
"list": [
{
"country": "",
"countryCodeId": {
"@entity": "retail:countryCodeKey",
"id": ""
},
"isPreferred": true,
"organisation": "Enactor",
"restrictedReason": "",
"isActive": false,
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"county": "Hertfordshire",
"postCode": "SG141PB",
"street1": "1 Enactor House",
"street2": "Bluecoats Avenue",
"street3": "Street 3",
"town": "Hertford",
"isTemplate": false,
"referenceId": "",
"lastUpdated": 1518626282000,
"addressReferenceId": "c637-:19f34d5d541:4780d454:e6018e477d3b5ada",
"province": ""
},
{
"country": "UK",
"countryCodeId": {
"@entity": "retail:countryCodeKey",
"id": "GB"
},
"isPreferred": false,
"organisation": "Enactor Limited (work)",
"restrictedReason": "",
"isActive": false,
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": "ADDRESS_WORK"
},
"county": "Hertfordshire",
"postCode": "SG14 1PB",
"street1": "Enactor House",
"street2": "1 Bluecoats Avenue",
"street3": "",
"town": "Hertford",
"isTemplate": false,
"referenceId": "",
"lastUpdated": 1518626282000,
"addressReferenceId": "77a7-:374a487ba51:489e4565:28f3b2913cf5213c",
"province": ""
}
]
},
"contactMethod": "",
"contactable": false,
"dateCreated": 1397580687000,
"maritalStatus": "",
"nationality": "",
"noChildren": 0,
"customerNumber": "1",
"emailAddresses": [
{
"@entity": "retail:emailAddress",
"emailAddress": "markneilharrison@hotmail.co.uk",
"lastUpdated": 1518626282000,
"preferred": true,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
},
{
"@entity": "retail:emailAddress",
"emailAddress": "john.doe@enactor.co.uk",
"lastUpdated": 1518626282000,
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
},
{
"@entity": "retail:emailAddress",
"emailAddress": "john.doe@enactor.co.uk",
"lastUpdated": 1518626282000,
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
},
{
"@entity": "retail:emailAddress",
"emailAddress": "john.doe@enactor.co.uk",
"lastUpdated": 1518626282000,
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
},
{
"@entity": "retail:emailAddress",
"emailAddress": "john.doe@enactor.co.uk",
"lastUpdated": 1518626282000,
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
},
{
"@entity": "retail:emailAddress",
"emailAddress": "john.doe@enactor.co.uk",
"lastUpdated": 1518626282000,
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
},
{
"@entity": "retail:emailAddress",
"emailAddress": "john.doe@enactor.co.uk",
"lastUpdated": 1518626282000,
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
},
{
"@entity": "retail:emailAddress",
"emailAddress": "john.doe@enactor.co.uk",
"lastUpdated": 1518626282000,
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
},
{
"@entity": "retail:emailAddress",
"emailAddress": "john.doe@enactor.co.uk",
"lastUpdated": 1518626282000,
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
},
{
"@entity": "retail:emailAddress",
"emailAddress": "john.doe@enactor.co.uk",
"lastUpdated": 1518626282000,
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
},
{
"@entity": "retail:emailAddress",
"emailAddress": "john.doe@enactor.co.uk",
"lastUpdated": 1518626282000,
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
},
{
"@entity": "retail:emailAddress",
"emailAddress": "john.doe@enactor.co.uk",
"lastUpdated": 1518626282000,
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
},
{
"@entity": "retail:emailAddress",
"emailAddress": "john.doe@enactor.co.uk",
"lastUpdated": 1518626282000,
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
},
{
"@entity": "retail:emailAddress",
"emailAddress": "john.doe@enactor.co.uk",
"lastUpdated": 1518626282000,
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
},
{
"@entity": "retail:emailAddress",
"emailAddress": "john.doe@enactor.co.uk",
"lastUpdated": 1518626282000,
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
},
{
"@entity": "retail:emailAddress",
"emailAddress": "john.doe@enactor.co.uk",
"lastUpdated": 1518626282000,
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
},
{
"@entity": "retail:emailAddress",
"emailAddress": "john.doe@enactor.co.uk",
"lastUpdated": 1518626282000,
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
},
{
"@entity": "retail:emailAddress",
"emailAddress": "john.doe@enactor.co.uk",
"lastUpdated": 1518626282000,
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true
}
],
"phoneNumbers": [
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01295768256",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true,
"phoneNumberReferenceId": "b637-:19f34d5d541:4780d454:e6018e477d3b5ada"
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01992546873",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": true,
"phoneNumberReferenceId": "a637-:19f34d5d541:4780d454:e6018e477d3b5ada"
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": true,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
},
{
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1518626282000,
"number": "01707991122",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "",
"active": false,
"phoneNumberReferenceId": ""
}
],
"customerName": {
"@entity": "retail:name",
"surname": "Hanson",
"forename": "James"
},
"businessContactMethod": "",
"preferredContactTime": "",
"allowInternalMarketing": true,
"allowExternalMarketing": true,
"privacyLevel": 25,
"employeeKey": {
"@entity": "retail:employeeKey",
"id": ""
},
"lastUpdated": 1518626282000,
"contactInfoLinks": [
{
"@entity": "retail:contactInfoLink",
"addressReferenceId": "77a7-:374a487ba51:489e4565:28f3b2913cf5213c",
"phoneNumberReferenceId": "a637-:19f34d5d541:4780d454:e6018e477d3b5ada",
"lastUpdated": 1489141901000
}
],
"customerType": {
"@entity": "retail:customerTypeKey",
"id": ""
},
"organisation": "",
"taxIdentification": "",
"companyNumber": "",
"createdBy": {
"@entity": "retail:userKey",
"id": ""
},
"createdAt": {
"@entity": "retail:deviceKey",
"id": ""
},
"status": "",
"source": "",
"password": ""
}
}
Update the Customer’s Name
This service can change the name for the customer.
Request
Request Service URL
PATCH /customers/name
Request Tokens
There are no request tokens.
Request Parameters
There are no request parameters.
Request Body
IAddBasketItemRequest
Element | Required / Optional | Type | Description |
---|---|---|---|
customerName | Required | ICustomerName | The new name for the customer. |
Response
Response Headers
There are no response headers.
Response Body
There is no response body.
Request & Response Examples
Request:
PATCH: http://[SWARM_LEADER_IP]/WebRestApi/rest/customers/name
Content-Type: application/json
{
"@entity": "retail:updateCustomerNameRequest",
"customerName": {
"@entity": "retail:customerName",
"surname": "Baldwin",
"forename": "Amelia"
}
}
Response:
Status: 200 OK
Add a new Phone Number
This service can add a phone number to a customer. In this service, the phone number is associated with the customer and not a particular address. The ID for the new phone number is returned in the response headers. If the new phone number is marked as the preferred number, the existing preferred phone number is also updated to remove the preferred flag.
Request
Request Service URL
POST /customers/phoneNumbers
Request Tokens
There are no request tokens.
Request Parameters
There are no request parameters.
Request Body
Element | Required / Optional | Type | Description |
---|---|---|---|
phoneNumberDetails | Required | IPhoneNumber | The new phone number details for the customer. |
Response
Response Headers
Location: /customers/phoneNumbers/{phoneNumberId}
Response Body
There is no response body.
Request & Response Examples
Request:
POST http://[SWARM_LEADER_IP]/WebRestApi/rest/customers/phoneNumbers
Content-Type: application/json
{
"@entity": "retail:addCustomerPhoneNumberRequest",
"phoneNumberDetails": {
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 1521045610000,
"number": "01295768256",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "C4DR673J6ZCQREFKJJ7M6GDOBQ",
"active": true
}
}
Response:
Status: 201 Created
Location: http://[SWARM_LEADER_IP]/WebRestApi/rest/customers/phoneNumbers/47
Update a Phone Number
This service can update a phone number on the customer. If the new details set the preferred phone number, the existing preferred phone number is changed to remove the preferred flag.
Request
Request Service URL
PUT /customers/phoneNumbers/{phoneNumberId}
Request Tokens
- phoneNumberId: The phoneNumberReferenceId of the phone number that is to be updated.
Request Parameters
There are no request parameters.
Request Body
Element | Required / Optional | Type | Description |
---|---|---|---|
phoneNumberDetails | Required | IPhoneNumber | The new phone details for the customer. |
Response
Response Headers
There are no response headers.
Response Body
There is no response body.
Request & Response Examples
Request:
PUT http://[SWARM_LEADER_IP]/WebRestApi/rest/customers/phoneNumbers/C4DR673J6ZCQREFKJJ7M6GDOBQ
Content-Type: application/json
{
"@entity": "retail:updateCustomerPhoneNumberRequest",
"phoneNumberDetails": {
"@entity": "retail:phoneNumber",
"countryCode": "",
"lastUpdated": 15210456111111,
"number": "01295768256",
"preferred": false,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "C4DR673J6ZCQREFKJJ7M6GDOBQ",
"active": true
}
}
Response:
Status: 200 OK
Remove a Phone Number
This service can remove a phone number from the customer. The preferred phone number cannot be removed.
Request
Request Service URL
DELETE /customers/phoneNumbers/{phoneNumberId}
Request Tokens
- phoneNumberId: The phoneNumberReferenceId of the phone number that is to be deleted.
Request Parameters
There are no request parameters.
Request Body
There is no request body.
Response
Response Headers
There are no response headers.
Response Body
There is no response body.
Request & Response Examples
Request:
DELETE http://[SWARM_LEADER_IP]/WebRestApi/rest/customers/phoneNumbers/C4DR673J6ZCQREFKJJ7M6GDOBQ
Response:
Status: 200 OK
Add a new Email Address
This service can add a new email address for the customer. This service can also change the preferred email address for the customer. If so, the existing preferred email address is updated to clear the preferred flag.
Request
Request Service URL
POST /customers/emailAddresses
Request Tokens
There are no request tokens.
Request Parameters
There are no request parameters.
Request Body
Element | Required / Optional | Type | Description |
---|---|---|---|
emailAddressDetails | Required | IEmailAddress | The new email address details for the customer. |
Response
Response Headers
Location: /customers/emailAddresses/{emailAddressId}
Response Body
There is no response body.
Request & Response Examples
Request:
POST http://[SWARM_LEADER_IP]/WebRestApi/rest/customers/emailAddresses
Content-Type: application/json
{
"@entity": "retail:addCustomerEmailAddressRequest",
"emailAddress": {
"@entity": "retail:emailAddress",
"emailAddress": "markneilharrison@hotmail.co.uk",
"lastUpdated": 1521048023000,
"preferred": true,
"restrictedReason": "",
"status": "",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": ""
},
"referenceId": "QCRT3GLPXBBG3BTBW64CBORJXI",
"active": true
}
}
Response:
Status: 200 Created
Update an Email Address
This service can update an existing email address for the customer. This service can also change the preferred email address for the customer. If so, the existing preferred email address is updated to clear the preferred flag.
Request
Request Service URL
PUT /customers/emailAddresses/{emailAddressId}
Request Tokens
- emailAddressId: The emailAddressReferenceId of the email address that is to be updated.
Request Parameters
There are no request parameters.
Request Body
Element | Required / Optional | Type | Description |
---|---|---|---|
emailAddressDetails | Required | IEmailAddress | The new email address details for the customer. |
Response
Response Headers
There are no response headers.
Response Body
There is no response body.
Request & Response Examples
Request:
PUT http://[SWARM_LEADER_IP]/WebRestApi/rest/customers/emailAddresses/QCRT3GLPXBBG3BTBW64CBORJXI
Content-Type: application/json
{
"@entity": "retail:updateCustomerEmailAddressRequest",
"emailAddress": {
"@entity": "retail:emailAddress",
"emailAddress": "john.smith@example.co.uk",
"preferred": false,
"typeId": {
"@entity": "retail:contactTypeKey",
"id": "EMAIL_HOME"
},
"active": true
}
}
Response:
Status: 200 OK
Remove an Email Address
This service can remove an email address from the customer. The preferred email address cannot be removed.
Request
Request Service URL
DELETE /customers/emailAddresses/{emailAddressId}
Request Tokens
- emailAddressId: The emailAddressReferenceId of the email address that is to be deleted.
Request Parameters
There are no request parameters.
Request Body
There is no request body.
Response
Response Headers
There are no response headers.
Response Body
There is no response body.
Request & Response Examples
Request:
DELETE http://[SWARM_LEADER_IP]/WebRestApi/rest/customers/emailAddresses/QCRT3GLPXBBG3BTBW64CBORJXI
Response:
Status: 200 OK
Add a new Customer Address
This service is used to add a new address associated with the customer. The address may include a phone number and mobile phone number. This service can also be used to change the preferred contact and delivery addresses, in which case the existing preferred contact and delivery address is changed to not have the preferred flag.
Request
Request Service URL
POST /customers/addresses
Request Tokens
There are no request tokens.
Request Parameters
There are no request parameters.
Request Body
Element | Required / Optional | Type | Description |
---|---|---|---|
addressAndContact | Required | IAddressAndContact | The new email address details for the customer. |
Response
Response Headers
Location: /customers/addresses/{addressId}
Response Body
There is no response body.
Request & Response Examples
Request:
POST http://[SWARM_LEADER_IP]/WebRestApi/rest/customers/addresses
Content-Type: application/json
{
"@entity": "retail:addCustomerAddressRequest",
"address": {
"@entity": "retail:address",
"country": "UK",
"countryCodeId": {
"@entity": "retail:countryCodeKey"
},
"organisation": "Enactor Limited",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": "ADDRESS WORK"
},
"county": "Hertfordshire",
"street1": "1 Bluecoats Avenune",
"town": "Hertord",
"isTemplate": false
}
}
Response:
Status: 201 Created
Location: http://[SWARM_LEADER_IP]/WebRestApi/rest/customers/addresses/JOKSCHVO5JC7ZJ36GL5BCEPTR4
Update a Customer Address
This service is used to update an existing address associated with the customer. The address may include a phone number and mobile phone number. This service can also be used to change the preferred contact and delivery addresses, in which case the existing preferred contact and delivery address is changed to not have the preferred flag.
Request
Request Service URL
PUT /customers/addresses/{addressId}
Request Tokens
- addressId: The ID of the address that is to be updated.
Request Parameters
There are no request parameters.
Request Body
Element | Required / Optional | Type | Description |
---|---|---|---|
addressAndContact | Required | IAddressAndContact | The address with associated contact details to add to the customer. |
Response
Response Headers
There are no response headers.
Response Body
There is no response body.
Request & Response Examples
Request:
PUT http://[SWARM_LEADER_IP]/WebRestApi/rest/customers/addresses/JOKSCHVO5JC7ZJ36GL5BCEPTR4
Content-Type: application/json
{
"@entity": "retail:updateCustomerAddressRequest",
"address": {
"@entity": "retail:address",
"country": "UK",
"countryCodeId": {
"@entity": "retail:countryCodeKey"
},
"organisation": "Enactor Limited Work",
"typeId": {
"@entity": "retail:contactTypeKey",
"id": "ADDRESS WORK"
},
"county": "Hertfordshire",
"street1": "1 Bluecoats Avenune",
"town": "Hertord",
"isTemplate": false
}
}
Response:
Status: 200 OK
Remove a Customer Address
This service is used to remove an existing address associated with the customer. The 'default' address cannot be removed.
Request
Request Service URL
DELETE /customers/addresses/{addressId}
Request Tokens
- addressId: The ID of the address that is to be deleted.
Request Parameters
There are no request parameters.
Request Body
There is no request body.
Response
Response Headers
There are no response headers.
Response Body
There is no response body.
Request & Response Examples
Request:
DELETE http://[SWARM_LEADER_IP]/WebRestApi/rest/customers/addresses/JOKSCHVO5JC7ZJ36GL5BCEPTR4
Response:
Status: 200 OK
Customer Transaction History API
The Customer Transaction History API provides the ability to list and retrieve a customer’s transaction history.
Following is the list of Promotions APIs covered in this section:
-
List Customer Transaction History.
-
Get a Customer’s Transaction History.
List Customer Transaction History
This API will list the transactions associated with the customer.
Request
Request Service URL
GET /customers/transactions
Request Tokens
There are no request tokens.
Request Parameters
There are no request parameters.
Request Body
There is no request body.
Response
Response Headers
There are no response headers.
Response Body
ICustomerTransactionSearchResponse
Element | Type | Description |
---|---|---|
customerTransactionList | ICustomerTransactionList | This contains a list of 'CustomerTransactionListElement'. |
Request & Response Examples
Request:
GET http://[SWARM_LEADER_IP]/WebRestApi/rest/customers/transactions
Response:
Status: 200 OK
{
"customerTransactionList": [
{
"customerNumber": "1",
"applicationId": "POS",
"transactionId": "00010001000062008281556502",
"transactionTypeId": "Sale",
"locationId": "0001",
"transactionDate": 1598627791000,
"value": 12780,
"description": "Women's Dresses",
"loyaltyPoints": 0
},
{
"customerNumber": "1",
"applicationId": "POS",
"transactionId": "00010001000052008281555563",
"transactionTypeId": "Sale",
"locationId": "0001",
"transactionDate": 1598626606000,
"value": 17040,
"description": "Women's Dresses",
"loyaltyPoints": 0
},
{
"customerNumber": "1",
"applicationId": "POS",
"transactionId": "00010001000042008271257173",
"transactionTypeId": "Sale",
"locationId": "0001",
"transactionDate": 1598529760000,
"value": 8520,
"description": "Women's Dresses",
"loyaltyPoints": 0
},
{
"customerNumber": "1",
"applicationId": "POS",
"transactionId": "00010001000032008271252408",
"transactionTypeId": "Sale",
"locationId": "0001",
"transactionDate": 1598529434000,
"value": 8520,
"description": "Women's Dresses",
"loyaltyPoints": 0
}
]
}
Get a Customer’s Transaction History
This API will retrieve a customer's transaction for a given a transaction ID. The search can be filtered by assigning the Transactions Type ID parameter in the request.
Request
Request Service URL
GET /customers/transactions/{transactionId}
Request Tokens
- transactionId: The ID of the transaction to retrieve.
Request Parameters
- transactionTypeId: String. Can filter the type of transactions to be returned such as Sale. Eg: transactionTypeId=sale
Request Body
There is no request body.
Response
Response Headers
There are no response headers.
Response Body
ICustomerTransactionEnquiryResponse
Element | Type | Description |
---|---|---|
customerTransactionDetailsList | ICustomerTransactionDetailsList | This contains the List of Customer Transaction Details. |
criteria | ICustomerTransactionEnquiryListCriteria | This contains the criteria for the retrieved transaction. |
transactionDate | Date | This contains the date of the transaction. |
Request & Response Examples
Request:
GET http://[SWARM_LEADER_IP]/WebRestApi/rest/customers/transactions/0001000100000045381
Response:
Status: 200 OK
{
"customerTransactionDetailsList": [
{
"lineNumber": "2",
"quantity": 1.0,
"effectiveNetValue": 4260,
"salesPerson": "1",
"productId": "MB709SN-2",
"description": "Rose Print Tea Dress",
"loyaltyPoints": 0
},
{
"lineNumber": "1",
"quantity": 1.0,
"effectiveNetValue": 4260,
"salesPerson": "1",
"productId": "MB709SN-2",
"description": "Rose Print Tea Dress",
"loyaltyPoints": 0
},
{
"lineNumber": "3",
"quantity": 0.0,
"effectiveNetValue": -8520,
"salesPerson": "1",
"description": "Cash UK",
"loyaltyPoints": 0
}
],
"criteria": {
"maxRows": 0,
"suppressDefaultOrderBy": false,
"distinct": false
}
}
Loyalty API
The Loyalty API is used to get loyalty details about a customer. It is not used to edit customer details, and only provides information about Loyalty aspects of the customer relationship.
Following is the list of Loyalty APIs covered in this section:
-
List Loyalty Accounts.
-
Get Loyalty Details.
-
Get Vouchers.
-
Get Voucher Details.
List Loyalty Accounts
This service is used to find all loyalty accounts that a customer is associated with. The customer is derived from the access token and cannot be directly specified.
Request
Request Service URL
GET /loyalty
Request Tokens
There are no request tokens.
Request Parameters
There are no request parameters.
Request Body
There is no request body.
Response
Response Headers
There are no response headers.
Response Body
IListLoyaltyAccountsResponse
Element | Type | Description |
---|---|---|
accountList | List <ICustomerLoyaltyAccount> | A list of accounts associated with the customer, including the Account ID. |
Request & Response Examples
Request:
GET http://[SWARM_LEADER_IP]/WebRestApi/rest/loyalty
Response:
Status: 200 OK
{
"accountList": [
{
"customerLoyaltyAccount": {
"loyaltySchemeId": {
"id": "LOYALTY_UK"
},
"tierCode": "UK3",
"manualTierReview": false,
"accountId": "1",
"accountType": "customerLoyaltyAccount",
"accountOpenedDate": 1397516400000,
"status": "ACTIVE",
"customerNumber": "1",
"currencyId": {
"id": "GBP"
}
}
}
]
}
Get Loyalty Details
This service is used to find details about a specific Loyalty Account that the customer is associated with.
Note: Although an Account ID can be specified, it must be associated with the customer on the access token before it can be returned.
Request
Request Service URL
GET /loyalty/{accountId}
Request Tokens
- accountId: The ID of the Account to return.
Request Parameters
There are no request parameters.
Request Body
There is no request body.
Response
Response Headers
There are no response headers.
Response Body
CustomerLoyaltyDetailResponse
Element | Type | Description |
---|---|---|
accountId | String | The loyalty account ID of the customer. |
customerNumber | Integer | The customer account ID of the customer. |
lastTransactionDate | DateTime | The date and time of the last transaction performed by the customer. |
lastTransactionValue | Integer | The value of the last transaction performed by the customer. |
rewardNumber | String | The loyalty card number of the customer. |
accountStatusId | String | The status ID of the loyalty account of the customer. |
accountStatusDesc | String | The status description of the loyalty account of the customer. |
rewardTier | String | The loyalty tier ID that the customer is in. |
rewardTierDesc | String | The loyalty tier description that the customer is in. |
pointsBalance | Integer | The loyalty points balance of the customer. |
redemptionBalance | Integer | The redemption balance of the customer. |
pointsDate | DateTime | The date and time that the points were last updated. |
loyaltySchemeId | String | The loyalty scheme ID of the customer. |
loyaltySchemeDesc | String | The loyalty scheme description of the customer. |
Request & Response Examples
Request:
GET : http://[SWARM_LEADER_IP]/WebRestApi/rest/loyalty/200
Response:
Status: 200 OK
{
"accountId": "200",
"customerNumber": "100",
"lastTransactionDate": 1725552089000,
"lastTransactionDesc": "Womens Dresses",
"lastTransactionValue": 15000,
"rewardNumber": "14420000",
"accountStatusId": "ACTIVE",
"accountStatusDesc": "ACTIVE",
"rewardTier": "UK3",
"rewardTierDesc": "Gold",
"pointsBalance": 2691,
"redemptionBalance": 538200,
"pointsDate": 1725517899000,
"loyaltySchemeId": "LOYALTY_UK",
"loyaltySchemeDesc": "Loyalty Scheme UK"
}
Get Vouchers
This service is used to supply the list of vouchers issued to the customer associated with the access token. The customer is set in the header where the key is subject and the value is the customer ID.
Response
Response Headers
There are no response headers.
Response BodyIListVouchersResponse | Element | Type | Description |
---|---|---|---|
voucherList | List<IVoucherSerialNumber> | The vouchers issued to the customer. | |
voucherTypes | List<IVoucherType | The types of vouchers associated in the list of vouchers. |
Request & Response Examples
Request:
GET: http://[SWARM_LEADER_IP]/WebRestApi/rest/loyalty/vouchers
Response:
Status: 200 OK
{
"vouchersList": [
{
"voucherSerialNumber": {
"lastUpdated": 1556707671950,
"voucherTypeId": {
"regionId": {
"id": "All",
"groupTypeId": "region",
"groupHierarchyId": "All"
},
"voucherTypeId": "10_POUND"
},
"serialNumber": "11111111",
"value": 1000,
"status": "ISSUED",
"currencyId": "GBP",
"customerId": {
"id": "1"
},
"usageCount": 1000
}
}
],
"voucherTypes": [
{
"voucherType": {
"lastUpdated": 1556707672001,
"regionId": {
"id": "All",
"groupTypeId": "region",
"groupHierarchyId": "All"
},
"voucherTypeId": "10_POUND",
"description": {
"string": [
{
"string": "£10 Pound off"
},
{
"country": "GB",
"language": "en",
"string": "£10 Pound off"
}
]
},
"longDescription": {
"string": [
{
"string": "£10 Pound off when you spend £100"
},
{
"country": "GB",
"language": "en",
"string": "When you spend £100"
}
]
},
"disabled": false,
"allowReturn": false,
"allowIssue": true,
"allowTender": true,
"appliesDiscount": false,
"track": false,
"captureSerialNumber": false,
"generateSerialNumber": false,
"allowIssueOffline": false,
"allowRedemptionOffline": false,
"saleable": false,
"printed": false,
"endorse": false,
"openDrawer": false,
"expiryPeriod": 0,
"frankOnRedemption": false,
"valueType": "FIXED",
"redemptionOptions": {
"tenderValue": 1000,
"rewardType": "NONE",
"minimumSpend": 10000,
"itemPriceAbove": 0,
"itemPriceBelow": 0,
"markItemsUsed": false
},
"currencyKey": {
"id": "GBP"
},
"voucherValue": 10000,
"allowReturnOffline": false,
"usageLimit": 1000,
"allowMultiUseInOneTransaction": true
}
}
]
}
Get Voucher Details
This service is used to loads a voucher and its voucher type by the voucherId (voucher serial number).
Request
Request Service URL
GET /loyalty/vouchers/{voucherId}
Request Tokens
- voucherId: The ID of the Voucher to return the voucher details.
Request Parameters
There are no request parameters.
Request Body
There is no request body.
Response
Response Headers
There are no response headers.
Response Body
GET VoucherResponse
Element | Type | Description |
---|---|---|
voucher | IVoucherSerialNumber | The voucher requested. |
voucherType | IVoucherType | The voucher type of the voucher requested. |
Request & Response Examples
Request:
GET http://[SWARM_LEADER_IP]/WebRestApi/rest/loyalty/vouchers/0502046240313153745016
Response:
{
"voucherType": {
"lastUpdated": 1724321738068,
"regionId": {
"groupTypeId": "region",
"groupHierarchyId": "All",
"groupId": "US",
"id": "US"
},
"voucherTypeId": "10_DOLLAR",
"description": {
"string": [
{
"country": "US",
"language": "en",
"string": "$10 dollar off"
}
]
},
"longDescription": {
"string": [
{
"country": "US",
"language": "en",
"string": "When you spend $100"
}
]
},
"disabled": false,
"allowReturn": false,
"allowIssue": true,
"allowTender": true,
"appliesDiscount": false,
"track": false,
"captureSerialNumber": false,
"generateSerialNumber": false,
"allowIssueOffline": false,
"allowRedemptionOffline": false,
"saleable": false,
"printed": false,
"endorse": false,
"openDrawer": false,
"expiryPeriod": 0,
"frankOnRedemption": false,
"valueType": "FIXED",
"redemptionOptions": {
"tenderValue": 1000,
"rewardType": "NONE",
"minimumSpend": 10000,
"itemPriceAbove": 0,
"itemPriceBelow": 0,
"markItemsUsed": false,
"tenderid": {
"tenderId": "VCH",
"groupId": {
"groupTypeId": "region",
"groupHierarchyId": "All",
"groupId": "US",
"id": "US"
}
}
},
"currencyKey": {
"id": "USD"
},
"voucherValue": 10000,
"allowReturnOffline": false,
"usageLimit": 1000000,
"allowMultiUseInOneTransaction": true
}
}
Account Balance API
The Account Balance API is used to run customer account related functions. Following is the list of Account Balance APIs covered in this section:
-
Loyalty Lookup.
-
Get Account & Balance Details.
-
Submit or Cancel Account Balance Update.
Loyalty Lookup
This service is used to run a customer loyalty lookup.
Request
Request Service URL
GET /accounts/search/{?accountType}{?accountId}{?pan}{?hashedPan}{?currencyId}{?locationId}
Request Headers
Header | Description | Example |
---|---|---|
enactor-device-id | This header will identify the ID of the device making the request. | pos1@0001.enactor |
enactor-location-id | This header will specify the location of the device making the request. | 0001 |
enactor-user-id | This header will specify the ID of the user making the request. Note that unlike the subject header, this identifier should be for information only and should not be used for authorisation. | 000101 |
subject | Customer number to identify and verify the customer who is making the request and has the required permission to access an account. | 100 |
Request Tokens
-
accountType: Type of the account CustomerLoyaltyAccount, CustomerDepositAccount, CustomerCreditAccount, CustomerSpendAccount, etc.
-
accountId: The customer account ID.
-
pan:
The card number or the nceResponse.
-
hashedPan: The hashed card number.
-
currencyId: The ID of the currency.
-
locationId: The ID of the locations.
Request Parameters
There are no request parameters.
Request Body
There is no response body.
Response
Response Headers
There is no response header.
Response Body
Element | Type | Description |
---|---|---|
accountBalanceEnquiryResponses | List <AccountBalanceEnquiryResponses > | A list of account balances associated with the customer, as requested in the lookup request. |
Request & Response Examples
Request:
GET http://[SWARM_LEADER_IP]/WebRestApi/rest/accounts/search/?accountType=customerLoyaltyAccount&accountId=887
enactor-device-id: pos1@0001.enactor
enactor-location-id: 0001
enactor-user-id: 000101
subject: 887
Response:
Status: 200 OK
{
"accountBalanceEnquiryResponses": [
{
"@type": "accountBalanceEnquiryResponse",
"accountBalanceEnquiryOutput": {
"@type": "accountBalanceEnquiryOutput",
"account": {
"@type": "customerLoyaltyAccount",
"loyaltySchemeId": {
"@type": "loyaltySchemeKey",
"id": "LOYALTY_UK"
},
"tierCode": "UK",
"manualTierReview": true,
"accountId": "0101025190527144502028",
"accountType": "customerLoyaltyAccount",
"accountOpenedDate": 1247596200000,
"status": "ACTIVE",
"customerNumber": "1",
"currencyId": {
"@type": "currencyKey",
"id": "GBP"
}
},
"accountDescription": "Customer Loyalty Account - Club",
"customer": {
"@type": "customer",
"addresses": [
{
"@type": "address",
"country": "GBR",
"isPreferred": true,
"county": "London",
"street2": "Chsiwick",
"street3": "street3",
"town": "London"
}
],
"customerNumber": "100000000000001",
"emailAddresses": [
{
"@type": "emailAddress",
"emailAddress": "validCustomer@enactor.co.uk",
"typeId": {
"@type": "contactTypeKey"
}
}
],
"phoneNumbers": [
{
"@type": "phoneNumber",
"number": "020 8234 4321",
"typeId": {
"@type": "contactTypeKey"
}
}
],
"customerName": {
"@type": "name",
"surname": "User",
"forename": "Test",
"title": "Mr"
}
},
"accountBalance": {
"@type": "accountBalance",
"accountId": "123456",
"accountType": "customerLoyaltyAccount",
"accountBalance": 1000,
"cardNumber": "8934736829037",
"currencyId": "GBP",
"balanceDate": 1625140844717,
"lastUpdated": 1625054444717
},
"customerCard": {
"@type": "customerCard",
"accountId": "0101025190527144502028",
"status": "NEW",
"accountType": "customerLoyaltyAccount",
"pan": "8934736829037",
"expiryDate": 1638100844718,
"issueDate": 1620820844718,
"nameOnCard": "Test User",
"issuedAt": {
"@type": "locationKey",
"id": "0001"
},
"createdOn": 1620734444718
},
"customerGroup": [
{
"@type": "groupKey",
"groupTypeId": "customerGroup",
"groupHierarchyId": "GOLD",
"id": "GOLD"
}
],
"customerLoyaltyAccountTotal": {
"@type": "customerLoyaltyAccountTotal",
"accountId": "0101025190527144502028",
"currencyId": {
"@type": "currencyKey",
"id": "GBP"
},
"numberOfTransactions": 3434,
"numberOfVisits": 8,
"totalSpend": 2980
},
"alternativeAmount": 888
},
"dynamicPromotions": [
{
"@type": "dynamicPromotion",
"promotionId": {
"@type": "promotionKey",
"promotionId": "PROMO",
"groupKey": {
"@type": "groupKey",
"groupTypeId": "customerGroup",
"groupHierarchyId": "GOLD",
"id": "GOLD"
}
},
"promotion": {
"@type": "promotion",
"promotionId": "TEST",
"groupKey": {
"@type": "groupKey",
"groupTypeId": "customerGroup",
"groupHierarchyId": "GOLD",
"id": "GOLD"
},
"description": "Birthday Promotion",
"priority": 99,
"overlapping": false,
"distributeSavingsOverAllItems": true,
"operationWithPreviousPromotions": "GROSS",
"raiseNearMissAlert": true,
"maximumTriggersPerTransaction": 10,
"timetableTrigger": {
"@type": "timetableTrigger",
"startDate": "2021-03-23T00:00:00.000+05:30",
"endDate": "2021-10-09T23:59:59.000+05:30",
"triggerPeriods": [
{
"timePeriod": {
"dayOfWeek": 1
}
},
{
"timePeriod": {
"dayOfWeek": 2
}
},
{
"timePeriod": {
"dayOfWeek": 3
}
},
{
"timePeriod": {
"dayOfWeek": 4
}
},
{
"timePeriod": {
"dayOfWeek": 5
}
},
{
"timePeriod": {
"dayOfWeek": 6
}
},
{
"timePeriod": {
"dayOfWeek": 7
}
}
]
},
"allowedForEmployeeSale": true,
"adjustEmployeeBalance": true
}
}
],
"messages": [
{
"@type": "uiMessage",
"messageBase": "Pos/Birthday/BirthdayMessages",
"messageId": "CUSTOMER_BIRTHDAY"
}
],
"errorMessage": {}
}
]
}
Get Account & Balance Details
This service is used to retrieve account balance details based on the provided parameters.
Request
Request Service URL
GET /accounts/{accountType}/{accountId}
Request Headers
Header | Description | Example |
---|---|---|
enactor-device-id | This header will identify the ID of the device making the request. | pos1@0001.enactor |
enactor-location-id | This header will specify the location of the device making the request. | 0001 |
enactor-user-id | This header will specify the ID of the user making the request. Note that unlike the subject header, this identifier should be for information only and should not be used for authorisation. | 000101 |
subject | Customer number to identify and verify the customer who is making the request and has the required permission to access an account. | 100 |
Request Tokens
-
accountType: Type of the account CustomerLoyaltyAccount, CustomerDepositAccount, CustomerCreditAccount, CustomerSpendAccount, etc.
-
accountId: The customer account ID.
Request Parameters
There are no request parameters.
Request Body
There is no response body.
Response
Response Headers
There is no response header.
Response Body
Element | Type | Description |
---|---|---|
accountBalanceEnquiryResponses | List <AccountBalanceEnquiryResponses > | A list of account balances associated with the customer, as requested in the lookup request. |
Request & Response Examples
Request:
GET http://[SWARM_LEADER_IP]/WebRestApi/rest/accounts/customerLoyaltyAccount/888
enactor-device-id: pos1@0001.enactor
enactor-location-id: 0001
enactor-user-id: 000101
subject: 100
Response:
Status: 200 OK
{
"@type": "accountBalanceEnquiryResponse",
"accountBalanceEnquiryOutput": {
"@type": "accountBalanceEnquiryOutput",
"account": {
"@type": "customerLoyaltyAccount",
"loyaltySchemeId": {
"@type": "loyaltySchemeKey",
"id": "LOYALTY_UK"
},
"tierCode": "UK",
"manualTierReview": true,
"accountId": "0101025190527144502028",
"accountType": "customerLoyaltyAccount",
"accountOpenedDate": 1247596200000,
"status": "ACTIVE",
"customerNumber": "1",
"currencyId": {
"@type": "currencyKey",
"id": "GBP"
}
},
"accountDescription": "Customer Loyalty Account - Club",
"customer": {
"@type": "customer",
"addresses": [
{
"@type": "address",
"country": "GBR",
"isPreferred": true,
"county": "London",
"street2": "Chsiwick",
"street3": "street3",
"town": "London"
}
],
"customerNumber": "100000000000001",
"emailAddresses": [
{
"@type": "emailAddress",
"emailAddress": "validCustomer@enactor.co.uk",
"typeId": {
"@type": "contactTypeKey"
}
}
],
"phoneNumbers": [
{
"@type": "phoneNumber",
"number": "020 8234 4321",
"typeId": {
"@type": "contactTypeKey"
}
}
],
"customerName": {
"@type": "name",
"surname": "User",
"forename": "Test",
"title": "Mr"
}
},
"accountBalance": {
"@type": "accountBalance",
"accountId": "123456",
"accountType": "customerLoyaltyAccount",
"accountBalance": 1000,
"cardNumber": "8934736829037",
"currencyId": "GBP",
"balanceDate": 1625140844717,
"lastUpdated": 1625054444717
},
"customerCard": {
"@type": "customerCard",
"accountId": "0101025190527144502028",
"status": "NEW",
"accountType": "customerLoyaltyAccount",
"pan": "8934736829037",
"expiryDate": 1638100844718,
"issueDate": 1620820844718,
"nameOnCard": "Test User",
"issuedAt": {
"@type": "locationKey",
"id": "0001"
},
"createdOn": 1620734444718
},
"customerGroup": [
{
"@type": "groupKey",
"groupTypeId": "customerGroup",
"groupHierarchyId": "GOLD",
"id": "GOLD"
}
],
"customerLoyaltyAccountTotal": {
"@type": "customerLoyaltyAccountTotal",
"accountId": "0101025190527144502028",
"currencyId": {
"@type": "currencyKey",
"id": "GBP"
},
"numberOfTransactions": 3434,
"numberOfVisits": 8,
"totalSpend": 2980
},
"alternativeAmount": 888
},
"dynamicPromotions": [
{
"@type": "dynamicPromotion",
"promotionId": {
"@type": "promotionKey",
"promotionId": "PROMO",
"groupKey": {
"@type": "groupKey",
"groupTypeId": "customerGroup",
"groupHierarchyId": "GOLD",
"id": "GOLD"
}
},
"promotion": {
"@type": "promotion",
"promotionId": "TEST",
"groupKey": {
"@type": "groupKey",
"groupTypeId": "customerGroup",
"groupHierarchyId": "GOLD",
"id": "GOLD"
},
"description": "Birthday Promotion",
"priority": 99,
"overlapping": false,
"distributeSavingsOverAllItems": true,
"operationWithPreviousPromotions": "GROSS",
"raiseNearMissAlert": true,
"maximumTriggersPerTransaction": 10,
"timetableTrigger": {
"@type": "timetableTrigger",
"startDate": "2021-03-23T00:00:00.000+05:30",
"endDate": "2021-10-09T23:59:59.000+05:30",
"triggerPeriods": [
{
"timePeriod": {
"dayOfWeek": 1
}
},
{
"timePeriod": {
"dayOfWeek": 2
}
},
{
"timePeriod": {
"dayOfWeek": 3
}
},
{
"timePeriod": {
"dayOfWeek": 4
}
},
{
"timePeriod": {
"dayOfWeek": 5
}
},
{
"timePeriod": {
"dayOfWeek": 6
}
},
{
"timePeriod": {
"dayOfWeek": 7
}
}
]
},
"allowedForEmployeeSale": true,
"adjustEmployeeBalance": true
}
}
],
"messages": [
{
"@type": "uiMessage",
"messageBase": "Pos/Birthday/BirthdayMessages",
"messageId": "CUSTOMER_BIRTHDAY"
}
],
"errorMessage": {}
}
Submit or Cancel Account Balance Update
This service is used to apply or cancel the account balance update to the appropriate account balance.
Request
Request Service URL
POST /accountBalances/update
PATCH /accountBalances
Request Headers
Header | Description | Example |
---|---|---|
enactor-device-id | This header will identify the ID of the device making the request. | pos1@0001.enactor |
enactor-location-id | This header will specify the location of the device making the request. | 0001 |
enactor-user-id | This header will specify the ID of the user making the request. Note that unlike the subject header, this identifier should be for information only and should not be used for authorisation. | 000101 |
subject | Customer number to identify and verify the customer who is making the request and has the required permission to access an account. | 100 |
Request Tokens
-
accountType: Type of the account CustomerLoyaltyAccount, CustomerDepositAccount, CustomerCreditAccount, CustomerSpendAccount, etc.
-
accountId: The customer account ID.
Request Parameters
There are no request parameters.
Request Body
Response
Response Headers
There is no response header.
Response Body
Element | Type | Description |
---|---|---|
accountBalanceEnquiryResponses | List <AccountBalanceEnquiryResponses > | A list of account balances associated with the customer, as requested in the lookup request. |
Request & Response Examples
Request:
POST http://[SWARM_LEADER_IP]/WebRestApi/rest/accountBalances/update
enactor-device-id: pos1@0001.enactor
enactor-location-id: 0001
enactor-user-id: 000101
subject: 100
Content-Type: application/json
{
"@type": "accountBalanceUpdate",
"transactionId": 978789,
"deviceId": { "@type": "deviceKey", "id": "pos1@0001.enactor" },
"accountId": "0101025190527144502028",
"accountType": "customerLoyalatyAccount",
"cardNumber": "8934736829037",
"updateAmount": 88,
"dateTimeUpdated": 1624295653842,
"expiryTime": 1625591653000,
"status": "PENDING",
"referenceId": "34546344543",
"locationId": "0001"
}
Response:
Status: 200 OK
{
"@type": "accountBalanceUpdateResponse",
"accountBalanceUpdateOutput": {
"@type": "accountBalanceUpdateOutput",
"accountBalanceUpdate": {
"@type": "accountBalanceUpdate",
"transactionId": 978789,
"deviceId": {
"@type": "deviceKey",
"id": "pos1@0001.enactor"
},
"originalTransactionDeviceId": {
"@type": "deviceKey",
"id": "pos1@0001.enactor"
},
"originalTransactionId": "123456789012345",
"locationId": "Store1",
"accountId": "0101025190527144502028",
"accountType": "customerLoyalatyAccount",
"cardNumber": "8934736829037",
"updateAmount": 88,
"dateTimeUpdated": 1624300226258,
"expiryTime": 1625596226000,
"status": "PENDING",
"referenceId": "343435423"
}
},
"errorMessage": {}
}