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

Update campaign’s configuration

Management This method allows changing the information about a specific Campaign. Custom-fields semantics on PUT:

  • customFields omitted from the request body → existing custom-field values on the campaign are kept untouched (no-op; no validation runs).

  • customFields: null → existing values are kept untouched (treated identically to omitting the field).

  • customFields: {} (explicit empty object) → all existing custom-field values on the campaign are cleared. Required-field validation still runs against the empty payload, so this fails with 400 if any active campaign custom-field group contains a required field.

  • customFields: { groupKey: { fieldKey: value, ... }, ... }wholesale entity replace. The campaign's entire custom-field state is deleted first, then only the groups present in the payload are persisted. Consequence: any group NOT listed in the payload is also wiped, even if it had values before. Required-field validation runs against the payload as a whole.

The feature flag CUSTOM_FIELD_CAMPAIGN must be enabled; when disabled the customFields key is silently ignored regardless of value. For granular per-group or per-key updates that preserve other groups, use the bulk patch endpoint (PATCH /api/{storeCode}/custom-fields/campaign/{campaignId}).

put
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

campaignstring · uuidRequired

Campaign ID

Body
or
or
or
or
or
Responses
204

Success. No content.

No content

put/api/{storeCode}/campaign/{campaign}
PUT /api/{storeCode}/campaign/{campaign} HTTP/1.1
Host: openloyalty.localhost
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 1417

{
  "campaign": {
    "triggerStrategy": {
      "type": "birthday",
      "executionSchedule": {
        "dayOfWeek": [
          0
        ],
        "dayOfMonth": [
          1
        ]
      }
    },
    "visibility": {
      "target": "segment",
      "tiers": [
        "text"
      ],
      "segments": [
        "text"
      ]
    },
    "audience": {
      "target": "segment",
      "tiers": [
        "text"
      ],
      "segments": [
        "text"
      ]
    },
    "rules": [
      {
        "name": "text",
        "description": "text",
        "target": "self",
        "effects": [
          {
            "effect": "give_points",
            "pointsRule": null,
            "walletCode": "text",
            "unitsLockRule": {
              "lockStrategy": "expression",
              "expression": "text"
            },
            "unitsExpirationRule": {
              "expirationStrategy": "expression",
              "expression": "text"
            },
            "rewardId": "123e4567-e89b-12d3-a456-426614174000",
            "couponValueRule": "text",
            "customAttributeKey": "text",
            "customAttributeValueRule": "text",
            "badgeSystemCode": "text",
            "tierSetId": "123e4567-e89b-12d3-a456-426614174000",
            "tierId": "123e4567-e89b-12d3-a456-426614174000"
          }
        ],
        "conditions": [
          {
            "attribute": "text",
            "operator": "expression",
            "data": null
          }
        ]
      }
    ],
    "limits": {
      "points": {
        "interval": {
          "type": "days"
        },
        "value": 1
      },
      "pointsPerMember": {
        "interval": {
          "type": "days"
        },
        "value": 1
      },
      "executionsPerMember": {
        "interval": {
          "type": "days"
        },
        "value": 1
      }
    },
    "type": "direct",
    "trigger": "achievement",
    "activity": {
      "startsAt": "2024-09-17 00:00+02:00",
      "endsAt": "2024-09-17 00:00+02:00"
    },
    "displayOrder": 1,
    "active": true,
    "labels": [
      {
        "key": "text",
        "value": "text"
      }
    ],
    "translations": {
      "en": {
        "name": "text",
        "description": "text"
      },
      "pl": {
        "name": "text",
        "description": "text"
      }
    },
    "customFields": {
      "ANY_ADDITIONAL_PROPERTY": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      }
    }
  }
}

No content

Last updated

Was this helpful?