For the complete documentation index, see llms.txt. This page is also available as Markdown.

Get a list of available campaigns for the member.

Integration This method returns all active Campaigns for Member. The logged in member can only see their own available campaigns. Endpoint returns all active campaigns, for campaigns that have not reached the limit it adds "limitReached": false, and for campaigns that have reached the limit "limitReached": true. If there is a dynamic effect in the campaign, the endpoint may return that the campaign limit is not reached, although the effect may exceed the limit and points will not be awarded If sorting is not chosen, the rows will be returned in an unspecified order. To sort a result, use an _orderBy parameter in query.

get
Authorizations
AuthorizationstringRequired

Open Loyalty has the JWT authorization. To learn what a JSON Web Token is and how it works, check out Introduction to JSON Web Tokens https://jwt.io/introduction/

Obtain an access token

Send a request with the parameters username and password

Definition

POST /api/admin/login_check Go to definition
POST /api/{storeCode}/member/login_check Go to definition

Example

curl {HOST}/api/admin/login_check
    -H 'Content-Type: application/json;charset=UTF-8'
    -H 'Accept: application/json, text/plain, */*'
    --data-binary '{"username":"admin","password":"password"}'

Example Response

{
    "token":"eyJhbGciOiJSUzI1NiIsInR5cCI6...",
    "refresh_token":"0558f8bb29948c4e54c443f..."
}

Using JSON Web Token

Add authorization header to each request
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6...
You can now access any API method you want under the /api prefix.

Example

curl {HOST}/api/{storeCode}/analytics/members
    -H 'Accept: application/json'
    -H 'Content-type: application/x-www-form-urlencoded'
    -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6...'

Refresh JSON Web Token

You can refresh token using refresh_token that was given during login.
There are two endpoints
To refresh admin token POST /api/token/refresh Go to definition
To refresh member token POST /api/{storeCode}/token/refresh Go to definition

Path parameters
storeCodestringRequired

Store code

memberstringRequiredPattern: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|email=[a-zA-Z0-9!#$%&'\.*+\-@=?^_{|}~;]+|phone=[0-9+]+|loyaltyCardNumber=[0-9a-zA-Z\._-]+
Query parameters
typestringOptional
triggerstringOptional
eventstringOptional
campaignIdstringOptional
showAllbooleanOptional

This parameter allows to show all campaign even not active

namestringOptional

Campaign name

startsAtstring · date-timeOptional
endsAtstring · date-timeOptional
labelsstringOptional

Filter with Campaign custom attributes.

Example: labels=(key;value)

formatstring · html|rawOptional

If set to html, the descriptions will be in HTML format. Omit for raw output.

_pageinteger · min: 1Optional

Number of page with results, starts from 1

Default: 1Example: 1
_itemsOnPageinteger · min: 1 · max: 50Optional

Items on one page

Default: 10Example: 25
Responses
200

List of available member campaigns.

application/json
or
get/api/{storeCode}/member/{member}/campaign
GET /api/{storeCode}/member/{member}/campaign HTTP/1.1
Host: openloyalty.localhost
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "items": [
    {
      "campaignId": "123e4567-e89b-12d3-a456-426614174000",
      "active": true,
      "activity": {
        "startsAt": "2024-09-17 00:00+02:00",
        "endsAt": "2024-09-17 00:00+02:00"
      },
      "rules": [
        {
          "conditions": [
            {
              "operator": "text",
              "data": [
                "text"
              ],
              "attribute": "text"
            }
          ],
          "effects": [
            {
              "effect": "text",
              "pointsRule": "text"
            }
          ]
        }
      ],
      "limits": {
        "points": {
          "interval": {
            "type": "days"
          },
          "value": 1
        },
        "pointsPerMember": {
          "interval": {
            "type": "days"
          },
          "value": 1
        },
        "executionsPerMember": {
          "interval": {
            "type": "days"
          },
          "value": 1
        }
      },
      "translations": [
        {
          "name": "text",
          "description": "text",
          "id": 1,
          "locale": "text"
        }
      ],
      "createdAt": "2026-01-01T00:00:00.000Z",
      "memberFilter": {},
      "displayOrder": 1,
      "labels": [
        {
          "key": "text",
          "value": "text"
        }
      ],
      "multiLevel": 1,
      "codeGenerator": {},
      "eventCodeAttribute": "text",
      "name": "text",
      "description": "text",
      "type": "text",
      "trigger": "text",
      "event": "text",
      "achievementId": "123e4567-e89b-12d3-a456-426614174000",
      "limitReached": true,
      "limitUsages": {
        "points": {
          "currentValue": 1,
          "limitValue": 1,
          "remaining": 1,
          "interval": {
            "type": "calendarHours"
          }
        }
      }
    }
  ]
}

Last updated

Was this helpful?