LLSR API - Louise Card API Specification and Examples
Root Nodes
/louiseCard Louise Card API root node
/louiseCard/{cardNumber}/activation Returns member activation info for that Louise Card/DTL Pass
/louiseCard/{cardNumber}/info Returns the member info for that Louise Card/DTL Pass
/louiseCard/{cardNumber}/status Returns the current status for the Louise Card/DTL Pass
/louiseCard/{cardNumber}/usage Returns usage for that Louise Card/DTL Pass
/louiseCard/{cardNumber}/activation
Reading
Details of a member associated with the given card number. The following example shows how the /louiseCard/activation endpoint is used to achieve this:
GET /louiseCard/1234567890/activation HTTP/1.1
Host: api.skilouise.com
In this example, a query on the cardnumber 1234567890 might generate the following JSON-encoded result:
{
"cardNumber":"1234567890",
"info":{
"MemberID":"123456",
"FirstName":"Test",
"LastName":"Testerton",
"Address1":"",
"City":"Calgary",
"Province":"AB",
"Country":"Canada",
"PostalCode":"T0L 1E0",
"EMail":"",
"Birthdate":"1970-01-01 00:00:00"
}
}
If a member isn't associated with the given Louise Card/DTL Pass the following error is generated:
{
"error":{
"message":"No member associated with this card."
}
}
Publishing
Activating a Lake Louise Plus Card is achieved by publishing to the card for a given member.
This node takes one POST variable: memberID.
memberID represents the member to whom the card is being activated. To obtain the memberID for a given member, use the update node of the Member API.
Example
POST /louiseCard/1234567890/activation HTTP/1.1
Host: api.skilouise.com
memberID=12345
If successful, the following JSON-encoded result would be generated:
{
"cardNumber":"1234567890",
"activated":true,
}
Updating
You can't update a member using the Louise Card API
Deleting
You can't delete an association of a member and Louise Cardusing the Louise Card API
/louiseCard/{cardNumber}/info
Reading
Details of a member associated with the given card number. The following example shows how the /louiseCard/info endpoint is used to achieve this:
GET /louiseCard/1234567890/info HTTP/1.1
Host: api.skilouise.com
In this example, a query on the cardnumber 1234567890 might generate the following JSON-encoded result:
{
"cardNumber":"1234567890",
"info":{
"MemberID":"123456",
"FirstName":"Test",
"LastName":"Testerton",
"Address1":"",
"City":"Calgary",
"Province":"AB",
"Country":"Canada",
"PostalCode":"T0L 1E0",
"EMail":"",
"Birthdate":"1970-01-01 00:00:00"
}
}
If a member isn't associated with the given Louise Card/DTL Pass the following error is generated:
{
"error":{
"message":"No member associated with this card."
}
}
Publishing
You can't link a member to a Louise Card using the Louise Card API
Updating
You can't update a member using the Louise Card API
Deleting
You can't delete an association of a member and Louise Card using the Louise Card API
/louiseCard/{cardNumber}/status
Reading
Returns the current status information for the Louise Card/DTL Pass. The following example shows how the /louiseCard/status endpoint is used to achieve this:
GET /louiseCard/1234567890/status HTTP/1.1
Host: api.skilouise.com
In this example, a query on the cardnumber 1234567890 might generate the following JSON-encoded result:
{
"cardNumber":"1234567890",
"status":{
"current":7,
"type":"Free",
"valid":true,
"active":true,
"hotlisted":false,
"redeemedToday":false,
"redeemedAdvanced":false
}
}
Publishing
You can't link a member to a Louise Card using the Louise Card API
Updating
You can't update a member using the Louise Card API
Deleting
You can't delete an association of a member and Louise Card using the Louise Card API
/louiseCard/{cardNumber}/usage
Reading
Details of usage for a given card number and all previous Louise Card/DTL Pass associated with the give card number. The following example shows how the /louiseCard/usage endpoint is used to achieve this:
GET /louiseCard/1234567890/usage HTTP/1.1
Host: api.skilouise.com
In this example, a query on the cardnumber 1234567890 might generate the following JSON-encoded result:
{
"cardNumber":"1234567890",
"usage":[
{
"id":"1234123412340001",
"cardNumber":"1234567890",
"date":"2014-12-06 09:38:00",
"resortName":"Lake Louise",
"freeDay":1,
},
{
"id":"1234123412340012",
"cardNumber":"1234567890",
"date":"2015-01-11 09:40:00",
"resortName":"Lake Louise",
"freeDay":0,
},
{
"id":"1234123412340025",
"cardNumber":"1234567890",
"date":"2015-02-07 10:02:00",
"resortName":"Lake Louise",
"freeDay":0,
},
]
}
An optional includeRefunds parameter can be sent to request all refunded/"deleted" usage be included, along with the refund status of each use; e.g.:
GET /louiseCard/1234567890/usage?includeRefunds=true HTTP/1.1
Host: api.skilouise.com
This will added a refunded attribute to each element in the usage array:
{
"cardNumber":"1234567890",
"usage":[
{
"id":"1234123412340001",
"cardNumber":"1234567890",
"date":"2014-12-06 09:38:00",
"resortName":"Lake Louise",
"freeDay":1,
"refunded":false
},
{
"id":"1234123412340012",
"cardNumber":"1234567890",
"date":"2015-01-11 09:40:00",
"resortName":"Lake Louise",
"freeDay":0,
"refunded":false
},
{
"id":"1234123412340025",
"cardNumber":"1234567890",
"date":"2015-02-07 10:02:00",
"resortName":"Lake Louise",
"freeDay":0,
"refunded":false
},
{
"id":"1234123412340039",
"cardNumber":"1234567890",
"date":"2015-02-13 10:02:00",
"resortName":"Panorama",
"freeDay":1,
"refunded":true
},
]
}
If no usage exists for the given Louise Card/DTL Pass or previous cards/passes the following error is generated:
{
"error":{
"message":"Card has no usage"
}
}
Publishing
You create usage using the following example which shows how the /louiseCard/{cardNumber}/usage endpoint is used to achieve this:
POST /louiseCard/1234567890/usage HTTP/1.1
Host: api.skilouise.com
date=2015-05-01%2009:00:00&amount=0&transactionID=12345678
In this example,a usage has been recorded for the 1st May 2015 at 9am and it's a free day.
If successful, the following JSON-encoded result would be generated:
{
"cardNumber":"1234567890",
"added":true,
}
Updating
You can't update usage using the Louise Card API
Deleting
This endpoint provides a method of refunding ("deleting") Louise Card usage that was redeemed at a partner resort (through the partner portal) - to achieve this, a usageID must be appended to the URI. To find the usageID of the desired usage to be refunded/deleted, use the method above for reading the /louiseCard/{cardNumber}/usage endpoint.
Example:
fDELETE /louiseCard/1234567890/usage/1234567890abcdef HTTP/1.1
Host: api.skilouise.com
If successful, the following JSON-encoded result would be generated:
{
"cardNumber": "1234567890",
"refundResult": {
"id": "1234567890abcdef",
"perkId": "fedcba0987654321",
"attributeId": "1234abc2345bcde",
"origin": "MTNHUB",
"requestId": "2345bcde3456cdef",
"requestedBy": "test",
"requestedAt": "2023-01-19T10:42:41.525",
"reference": null,
"timestamp": "2023-01-19T10:42:41.627",
"partnerResortId": "fedc0987edcb9876",
"refunded": true
}
}
If the usage was redeemed directly through MtnOS (i.e., at Lake Louise), an error message is returned:
{
"error": {
"message": "Usage associated with MtnOS OrderId - must be refunded through MtnOS"
}
}
If the usage has already been refunded, an error message is returned:
{
"error": {
"message": "Usage has already been refunded - no action required"
}
}
If the provided usageID does not correspond to the provided Louise Card cardNumber, an error message is returned:
{
"error": {
"message": "Usage not found"
}
}
If the provided cardNumber does not exist, is invalid, or has not been activated, an error message is returned:
{
"error": {
"message": "Invalid barcode - not a valid Lake Louise Plus Card or Direct-to-Lift pass."
}
}
HTTP Status Codes
The Louise Card API uses the following standard HTTP status codes:
200: OK
400: Bad Request
401: Unauthorized
503: Service Unavailable