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

Partially update member details

Management Allows partial update of member's custom attributes (labels) and custom fields data.

Two formats are supported:

  1. New format (recommended):

    • Labels as associative array (object with key-value pairs)

    • Adding: To add a new label, provide a new key with its value.

    • Editing: To update an existing label, provide its key with a new value.

    • Removing: To remove a label, provide its key and set the value to null.

    • Only provided labels will be updated, other labels remain unchanged.

  2. Legacy format (deprecated, will be removed soon):

    • Labels as array of objects with key and value properties

    • Replaces all existing labels - use with caution!

Member identifiers (email, phone, loyaltyCardNumber) can also be partially updated. Only the identifiers present in the request are changed; all other member data is preserved. Editing identifiers is admin-only and is applied directly (no confirmation flow). A non-admin member sending any of these fields receives a 400 response. Members change their own email/phone (with the confirmation flow) via the PUT member endpoint instead.

patch
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\._-]+
Body
Responses
200

Member successfully updated

application/json
customerIdstring · uuidOptional

Updated member identity

patch/api/{storeCode}/member/{member}
PATCH /api/{storeCode}/member/{member} HTTP/1.1
Host: openloyalty.localhost
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 517

{
  "customer": {
    "labels": {
      "size": "L",
      "color": "blue",
      "oldLabel": null
    },
    "customFieldsData": [
      {
        "customFieldSchemaId": "123e4567-e89b-12d3-a456-426614174000",
        "value": "text"
      }
    ],
    "customFields": {
      "group_1": {
        "field_1": "orange",
        "field_2": 48,
        "field_3": 3.5,
        "field_4": true,
        "field_5": "1990-05-12",
        "field_6": "2024-01-15 10:30:00.000000",
        "field_7": null,
        "field_8": "red",
        "field_9": [
          "red",
          "blue"
        ],
        "subgroup_1": [
          {
            "field_name1": 1,
            "field_name2": 92.5,
            "field_name3": true
          }
        ]
      }
    },
    "email": "example@example.com",
    "phone": "text",
    "loyaltyCardNumber": "text"
  }
}
{
  "customerId": "123e4567-e89b-12d3-a456-426614174000"
}

Last updated

Was this helpful?