ISSUE
Take a look at our OpenAPI (Swagger-Spec) schema to learn more about the API calls.
The ISSUE
endpoint is used to both calculate how many Miles will be issued for all eligible items in the basket, and deposit those Miles to the Collector’s account.
Important
You do not need to make aCALCULATE
call prior to making an ISSUE
call. The CALCULATE
call is only required if you want to see how many Miles would be issued for an item (or items), but don’t want to issue those Miles.
API call validation process
After making a call to ISSUE
, you will receive one of the following responses:
- If the call is SUCCESSFUL
- You will receive a response code of
200
- No further action is required
- You will receive a response code of
- If the call is SUCCESSFUL but issuances are pending and causing a delay
- You will receive a response code of
202
- No further action is required
- Resubmitting the same request will have no effect on the transaction.
- You will receive a response code of
- If the call is REJECTED due to incorrect or invalid details
- You will receive a response code of
400
- You must retry the request with a valid transaction record and/or the corrected details
- You will receive a response code of
- If the call FAILS due to an error or other issue
- You will receive a response code of
500
- It’s recommended you retry the request at least 2 additional times
- You will receive a response code of
Note
The “FAIL” response above could indicate a system error on our end. If this happens, please contact our Support Desk for assistance.WARNING
While a transaction is being processed for a Collector, DO NOT attempt to process an additional transaction in parallel for the same Collector. This will result in an error.Sample request
curl -X POST https://cert.airmilesapis.ca/checkout/issuance/issue \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 123e4567-e89b-12d3-a456-426655440000" \
-d {
"basketGSTAmount": 0,
"basketPSTAmount": 0,
"basketHSTAmount": 3.25,
"basketQSTAmount": 0,
"basketPreTaxAmount": 24.97,
"basketPostTaxAmount": 28.22,
"checkoutDateTime": "2019-05-30T14:12:59.479Z",
"checkoutTransactionId": "12340001111",
"collectorNumber": "81111111111",
"context": {"key1": "value1","key2": "value2"},
"coupon": ["57841","57862"],
"deviceId": "POS1",
"items": [{
"baseAmount": 9.99,
"categoryId" : "11101",
"departmentId":"10001",
"finalAmount": 19.98,
"id": "SKU1234",
"name": "Dog Food",
"number": 1,
"quantity": 2
},
{
"baseAmount": 4.99,
"categoryId" : "CAT2",
"departmentId":"DEPT2",
"finalAmount": 4.99,
"id": "SKU1252",
"name": "Potato Chips",
"number": 2,
"quantity": 1
}
],
"locationCode": "1137",
"sponsorCode": "TEST",
"tender": ["CASH", "CREDIT"]
}
Request parameters
* required field
Parameter | Description |
---|---|
basketGSTAmount |
The dollar amount of GST (Government Sales Tax) to be added.
Example: |
basketHSTAmount |
The dollar amount of HST (Harmonized Sales Tax) to be added.
Example: |
basketPSTAmount |
The dollar amount of PST (Provincial Sales Tax) to be added.
Example: |
basketQSTAmount |
The dollar amount of QST (Quebec Sales Tax) to be added.
Example: |
basketPostTaxAmount * |
The total dollar amount of the basket, POST-TAX (i.e., what the Collector spent at checkout).
Example: |
basketPreTaxAmount * |
The total dollar amount of the basket, PRE-TAX (i.e., before taxes are calculated and added to the total).
Example: |
checkoutDateTime * |
Standard date/time format for the transaction at checkout. (see ISO-8601)
Examples:
|
checkoutTransactionId * |
Unique identifier generated by the Partner for the transaction at checkout.
Example: |
collectorNumber * |
The customer’s AIR MILES account number.
Example: |
context |
Notes or additional information that is desired on each request as a key value pair.
Example: |
coupon |
A list of all coupon codes applied to the bill at checkout.
Example: |
deviceId |
ID number used to identify the POS terminal currently in use.
Example: |
items |
This optional object contains data elements related to purchase details, including the list of item(s) purchased, their quantity, individual price, and total amount paid (pre-tax). Click below to see additional details on the data object’s elements, including their descriptions and examples.
Example:
|
locationCode |
A maximum of four alpha-numeric characters created by the Partner and used to identify the Partner’s location.
Example: |
sponsorCode * |
Alpha-numeric value used to identify the Partner.
Example: |
tender |
The method of payment used to pay for the transaction at checkout.
Example: |
Sample response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Mon, 29 Oct 2018 15:27:34 GMT
{
"basketGSTAmount": 0,
"basketPSTAmount": 0,
"basketHSTAmount": 3.25,
"basketQSTAmount": 0,
"basketPreTaxAmount": 24.97,
"basketPostTaxAmount": 28.22,
"checkoutDateTime": "2019-05-30T14:12:59.479Z",
"checkoutTransactionId": "12340001111",
"collectorNumber": "81111111111",
"context": {"key1": "value1","key2": "value2"},
"coupon": ["57841","57862"],
"deviceId": "POS1",
"issuances": [{
"confirmationNumber": "0ed100a4-fc9a-41bb-a747-942c2593b683",
"contributingItemIds": ["SKU1234","SKU1252"],
"issuanceOfferCode": "STANDARD",
"locationCode": "1100",
"milesAmount": 5,
"offerDescription": "Bonus Miles for Groceries.",
"offerId": "123454",
"processedDateTime": "2019-05-30T14:12:59.479Z",
"status": "CONFIRMED"
}],
"items": [{
"baseAmount": 9.99,
"categoryId" : "11101",
"departmentId":"10001",
"finalAmount": 19.98,
"id": "SKU1234",
"name": "Dog Food",
"number": 1,
"quantity": 2
},
{
"baseAmount": 4.99,
"categoryId" : "CAT2",
"departmentId":"DEPT2",
"finalAmount": 4.99,
"id": "SKU1252",
"name": "Potato Chips",
"number": 2,
"quantity": 1
}
],
"locationCode": "1137",
"sponsorCode": "TEST",
"tender": ["CASH","CREDIT"],
"transactionId": "c4f6cd00-dd00-4aaf-9099-b0685ab710b3"
}
Response parameters
Only parameters unique to the Sample Response are listed below. For all other parameters, refer to the table above.
Parameter | Description |
---|---|
issuances |
Array value describing the issuance offers redeemed by the Collector.
Example:
|
transactionId |
A unique ID created for the particular transaction.
Example: |
Status codes
Refer to our Audit report errors table for more information.
Status Code | Description |
---|---|
200 | Request processed successfully. |
202 | Request still processing, please wait. |
400 | Bad request, failed to process. |
500 | Request failed due to internal error. |