LLSR API - Louise Card API Specification and Examples

Note that the methods in this API require authentication to use them. Visit the Authentication API for more information.

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:

f
DELETE /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