(v1.0) LS Central member API (1.0.0)

Download OpenAPI specification:

(v1.0) LS Central member API for Dynamics 365 Business Central. Published by the LS Central AL API pages at /api/lsRetail/member/v1.0.

Wish List Line

Read-only projection of the item lines on a wish list. Line mutation (insert, update, remove) is not available through this part — it is done exclusively through the itemModify and modifyQtyUsed bound actions on the parent wishLists entity, which carry the same validation and response codes as the legacy WishListItemModify/WishListModifyQtyUsed SOAP web services.

Get wishListLines from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

query Parameters
$top
number <int64> >= 0
Example: $top=50

Show only the first n items

$skip
number <int64> >= 0

Skip the first n items

$search
string

Search items by search phrases

$filter
string

Filter items by property values

$count
boolean

Include count of items

$orderby
Array of strings unique

Order items by property values

$select
Array of strings unique
Items Enum: "id" "wishListNo" "lineNo" "itemNo" "variantCode" "quantity" "unitOfMeasureCode" "isDeal" "barcode" "purchasedQty" "lastModifiedDateTime"

Select properties to be returned

$expand
Array of strings unique
Items Value: "wishList"

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "value": [
    ]
}

Get wishListLines from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

wishListLine-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of wishListLine

query Parameters
$select
Array of strings unique
Items Enum: "id" "wishListNo" "lineNo" "itemNo" "variantCode" "quantity" "unitOfMeasureCode" "isDeal" "barcode" "purchasedQty" "lastModifiedDateTime"

Select properties to be returned

$expand
Array of strings unique
Items Value: "wishList"

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "wishListNo": null,
  • "lineNo": null,
  • "itemNo": null,
  • "variantCode": null,
  • "quantity": null,
  • "unitOfMeasureCode": null,
  • "isDeal": null,
  • "barcode": null,
  • "purchasedQty": null,
  • "lastModifiedDateTime": null,
  • "wishList": {
    }
}

Get wishListLines from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

wishList-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of wishList

query Parameters
$top
number <int64> >= 0
Example: $top=50

Show only the first n items

$skip
number <int64> >= 0

Skip the first n items

$search
string

Search items by search phrases

$filter
string

Filter items by property values

$count
boolean

Include count of items

$orderby
Array of strings unique

Order items by property values

$select
Array of strings unique
Items Enum: "id" "wishListNo" "lineNo" "itemNo" "variantCode" "quantity" "unitOfMeasureCode" "isDeal" "barcode" "purchasedQty" "lastModifiedDateTime"

Select properties to be returned

$expand
Array of strings unique
Items Value: "wishList"

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "value": [
    ]
}

Get wishListLines from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

wishList-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of wishList

wishListLine-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of wishListLine

query Parameters
$select
Array of strings unique
Items Enum: "id" "wishListNo" "lineNo" "itemNo" "variantCode" "quantity" "unitOfMeasureCode" "isDeal" "barcode" "purchasedQty" "lastModifiedDateTime"

Select properties to be returned

$expand
Array of strings unique
Items Value: "wishList"

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "wishListNo": null,
  • "lineNo": null,
  • "itemNo": null,
  • "variantCode": null,
  • "quantity": null,
  • "unitOfMeasureCode": null,
  • "isDeal": null,
  • "barcode": null,
  • "purchasedQty": null,
  • "lastModifiedDateTime": null,
  • "wishList": {
    }
}

Wish List

Exposes member wish lists — header, item lines, and member/card links — as an OData v4 entity, replacing the legacy WishListGet/WishListCreate/WishListDeleteByID/WishListItemModify/WishListLinking/WishListModifyQtyUsed SOAP web services (all six remain available unchanged for the duration of the coexistence window). All reads and writes delegate to the same "LSC Wish List Service" facade the legacy services use, so persisted results and validation match exactly. Six behaviors are non-standard for a REST API and are called out here so consumers are not surprised: (1) GET wishLists(id) is a MUTATING read — fetching a single wish list by id increments its noOfTimesVisited counter, exactly as the legacy WishListGet.GetWishListByID does; a list GET (no key) does not increment. A PATCH wishLists(id) (rename) resolves the entity via the identical key-based fetch as GET wishLists(id) — there is no separate code path that binds fields before that fetch runs — so a successful PATCH also increments noOfTimesVisited, in addition to persisting the name change; live HTTP testing confirmed (reproducibly, twice) this is by +3 per PATCH, not +1, because BC''s real OData PATCH-by-key pipeline performs multiple internal record fetches (key resolution, If-Match/ETag validation, response-body construction), each independently triggering the same mutating-read side effect as a GET. The exact magnitude (3, on this platform version) is a platform implementation detail, not a guaranteed, stable API contract — callers should not hard-code an assumption of exactly 3, only that the counter advances by more than the single-GET amount on a rename. This is expected, accepted behavior, not a bug; callers should not be surprised to see the counter advance on a rename. (2) Creation is a TWO-CALL model: POST wishLists creates the header plus a single owner link from the required cardNo input, then item lines are added afterwards via the itemModify action — there is no single-call deep-insert of lines. (3) The lines and links parts are READ-ONLY projections ($expand only); all line and link mutation is done exclusively through the itemModify and linking bound actions, which carry the same validation and response codes as the legacy operations. The linking action''s status parameter is passed as a plain string matching one of the enum value names — Requesting, Active, Blocked, or Remove — not an OData enum member. (4) The word "owner" means two different things on two different entities: on the header, owner is a derived Text name of the wish list owner (read-only); on a link, owner is a Boolean ownership flag. They are separate OData entity types so there is no schema collision, but callers should not assume the same shape. (5) PATCH is allowed (ModifyAllowed = true) but ONLY name is actually mutable this way — renaming an existing wish list mirrors the interactive Wish List Card page, which has always allowed editing Name post-creation. calculationType and cardNo are both writable ONLY at create time (POST), via a conditional Editable flag that switches to false the moment the record is fetched for view/modify (OnAfterGetRecord) — so neither is actually changeable via PATCH, even though the entity as a whole now accepts it. (6) To find all wish lists linked to a given membership card, do NOT attempt a single-call $filter on this entity for a linked card — Business Central OData v4 has no lambda/any() support, so filtering a header entity by a field on a related child entity in one call is not possible. Instead use a two-call pattern: first GET wishListLinks?$filter=cardNo eq ''...'' to retrieve the matching wish list numbers, then GET this entity with $filter=no in (...) using those numbers (this requires the $schemaversion=2.1 query parameter — e.g. ?$schemaversion=2.1&$filter=no in (...) — omitting it causes BC to reject the request with ''The OData filter expression is not supported'') — add $expand=wishListLines,wishListLinks to the same call for full detail (lines and links), or omit it for a headers-only result.

Get wishLists from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

query Parameters
$top
number <int64> >= 0
Example: $top=50

Show only the first n items

$skip
number <int64> >= 0

Skip the first n items

$search
string

Search items by search phrases

$filter
string

Filter items by property values

$count
boolean

Include count of items

$orderby
Array of strings unique

Order items by property values

$select
Array of strings unique
Items Enum: "id" "no" "calculationType" "name" "noOfTimesVisited" "barcode" "contactNo" "owner" "dateCreated" "lastModifiedDateTime" "cardNo"

Select properties to be returned

$expand
Array of strings unique
Items Enum: "wishListLines" "wishListLinks"

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "value": [
    ]
}

Create new navigation property to wishLists for companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

Request Body schema: application/json
required

New navigation property

id
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
no
string <= 20 characters
(lscWishListCalculationType (null or string))
name
null or string <= 100 characters
noOfTimesVisited
null or number <int32> [ -2147483648 .. 2147483647 ]
barcode
null or string <= 22 characters
contactNo
null or string <= 20 characters
owner
null or string <= 100 characters
dateCreated
null or string <date-time> ^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|...
lastModifiedDateTime
null or string <date-time> ^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|...
cardNo
null or string
Array of objects (wishListLine)
Array of objects (wishListLink)

Responses

Request samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "no": "string",
  • "calculationType": "Basket",
  • "name": null,
  • "noOfTimesVisited": null,
  • "barcode": null,
  • "contactNo": null,
  • "owner": null,
  • "dateCreated": null,
  • "lastModifiedDateTime": null,
  • "cardNo": null,
  • "wishListLines": [
    ],
  • "wishListLinks": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "no": "string",
  • "calculationType": "Basket",
  • "name": null,
  • "noOfTimesVisited": null,
  • "barcode": null,
  • "contactNo": null,
  • "owner": null,
  • "dateCreated": null,
  • "lastModifiedDateTime": null,
  • "cardNo": null,
  • "wishListLines": [
    ],
  • "wishListLinks": [
    ]
}

Get wishLists from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

wishList-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of wishList

query Parameters
$select
Array of strings unique
Items Enum: "id" "no" "calculationType" "name" "noOfTimesVisited" "barcode" "contactNo" "owner" "dateCreated" "lastModifiedDateTime" "cardNo"

Select properties to be returned

$expand
Array of strings unique
Items Enum: "wishListLines" "wishListLinks"

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "no": "string",
  • "calculationType": "Basket",
  • "name": null,
  • "noOfTimesVisited": null,
  • "barcode": null,
  • "contactNo": null,
  • "owner": null,
  • "dateCreated": null,
  • "lastModifiedDateTime": null,
  • "cardNo": null,
  • "wishListLines": [
    ],
  • "wishListLinks": [
    ]
}

Update the navigation property wishLists in companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

wishList-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of wishList

Request Body schema: application/json
required

New navigation property values

id
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...
no
string <= 20 characters
(lscWishListCalculationType (null or string))
name
null or string <= 100 characters
noOfTimesVisited
null or number <int32> [ -2147483648 .. 2147483647 ]
barcode
null or string <= 22 characters
contactNo
null or string <= 20 characters
owner
null or string <= 100 characters
dateCreated
null or string <date-time> ^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|...
lastModifiedDateTime
null or string <date-time> ^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|...
cardNo
null or string
Array of objects (wishListLine)
Array of objects (wishListLink)

Responses

Request samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "no": "string",
  • "calculationType": "Basket",
  • "name": null,
  • "noOfTimesVisited": null,
  • "barcode": null,
  • "contactNo": null,
  • "owner": null,
  • "dateCreated": null,
  • "lastModifiedDateTime": null,
  • "cardNo": null,
  • "wishListLines": [
    ],
  • "wishListLinks": [
    ]
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Delete navigation property wishLists for companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

wishList-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of wishList

header Parameters
If-Match
string

ETag

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Invoke action itemModify

Adds, updates, or removes a wish list item line. Pass lineNo to update or remove an existing line; omit or pass 0 to insert a new line. Errors when the wish list or the affected line cannot be resolved.

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

wishList-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of wishList

Request Body schema: application/json

Action parameters

itemNo
null or string
lineNo
null or number <int32> [ -2147483648 .. 2147483647 ]
variantCode
null or string
unitOfMeasureCode
null or string
quantity
null or number <decimal>
barcode
null or string
remove
null or boolean
Default: false

Responses

Request samples

Content type
application/json
{
  • "itemNo": null,
  • "lineNo": null,
  • "variantCode": null,
  • "unitOfMeasureCode": null,
  • "quantity": null,
  • "barcode": null,
  • "remove": false
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Invoke action linking

Inserts or updates a member card link on the wish list (status, edit rights, and contact number). cardNo is required. status must be passed as a plain string matching one of the enum value names: Requesting, Active, Blocked, Remove. Errors when the wish list cannot be resolved.

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

wishList-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of wishList

Request Body schema: application/json

Action parameters

cardNo
null or string
status
null or string
canEdit
null or boolean
Default: false
contactNo
null or string

Responses

Request samples

Content type
application/json
{
  • "cardNo": null,
  • "status": null,
  • "canEdit": false,
  • "contactNo": null
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Invoke action modifyQtyUsed

Adds a purchased-quantity delta to the wish list line matching itemNo (and variantCode, if provided). Errors when the wish list cannot be resolved.

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

wishList-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of wishList

Request Body schema: application/json

Action parameters

itemNo
null or string
variantCode
null or string
purchasedQty
null or number <decimal>

Responses

Request samples

Content type
application/json
{
  • "itemNo": null,
  • "variantCode": null,
  • "purchasedQty": null
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Cross Selling Item

Read-only replacement for the SOAP GetCrossSelling operation, which remains available unchanged. Both storeNo and originalItemNo are required scoping inputs; only the eq operator with a single literal value is supported on either - any other operator errors, naming the field. Omitting either required filter raises an error (400 Bad Request) - it does NOT return an empty collection. itemNo is the cross-selling item found for originalItemNo, the item asked about. Results are already filtered to items distributed to storeNo. An unknown storeNo or originalItemNo raises an error carrying the legacy SOAP message verbatim, which also surfaces as 400 Bad Request - not 404 - because BC OData cannot return distinct HTTP status codes from AL Error() calls. id is generated per request - it is not a stable identifier and must not be used for change detection or as an etag.

Get crossSellingItems from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

query Parameters
$top
number <int64> >= 0
Example: $top=50

Show only the first n items

$skip
number <int64> >= 0

Skip the first n items

$search
string

Search items by search phrases

$filter
string

Filter items by property values

$count
boolean

Include count of items

$orderby
Array of strings unique

Order items by property values

$select
Array of strings unique
Items Enum: "id" "storeNo" "originalItemNo" "itemNo" "itemHasAssemblyBom"

Select properties to be returned

$expand
Array of strings unique

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "value": [
    ]
}

Get crossSellingItems from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

crossSellingItem-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of crossSellingItem

query Parameters
$select
Array of strings unique
Items Enum: "id" "storeNo" "originalItemNo" "itemNo" "itemHasAssemblyBom"

Select properties to be returned

$expand
Array of strings unique

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "storeNo": null,
  • "originalItemNo": null,
  • "itemNo": null,
  • "itemHasAssemblyBom": null
}

Member Attribute

This entity exposes Member Attribute setup — the reusable attribute definitions (code, description, data type, default value, and whether the attribute is mandatory) used to capture custom member data — as a read-only OData v4 entity, replacing the generic RetailWebServices GET_TABLE_DATA reflection-based read of table "LSC Member Attribute" for LS Omni (the legacy SOAP service remains available unchanged for the duration of the coexistence window). This is a read-only projection: Insert, Modify, and Delete are not supported over the API — attributes continue to be maintained through the LS Central back-office UI.

Get memberAttributes from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

query Parameters
$top
number <int64> >= 0
Example: $top=50

Show only the first n items

$skip
number <int64> >= 0

Skip the first n items

$search
string

Search items by search phrases

$filter
string

Filter items by property values

$count
boolean

Include count of items

$orderby
Array of strings unique

Order items by property values

$select
Array of strings unique
Items Enum: "id" "code" "description" "attributeType" "defaultValue" "mandatory" "lastModifiedDateTime"

Select properties to be returned

$expand
Array of strings unique

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "value": [
    ]
}

Get memberAttributes from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

memberAttribute-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of memberAttribute

query Parameters
$select
Array of strings unique
Items Enum: "id" "code" "description" "attributeType" "defaultValue" "mandatory" "lastModifiedDateTime"

Select properties to be returned

$expand
Array of strings unique

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "code": "string",
  • "description": null,
  • "attributeType": null,
  • "defaultValue": null,
  • "mandatory": null,
  • "lastModifiedDateTime": null
}

Get memberAttribute from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

mobilePosProfile-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of mobilePosProfile

query Parameters
$select
Array of strings unique
Items Enum: "id" "code" "description" "attributeType" "defaultValue" "mandatory" "lastModifiedDateTime"

Select properties to be returned

$expand
Array of strings unique

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "code": "string",
  • "description": null,
  • "attributeType": null,
  • "defaultValue": null,
  • "mandatory": null,
  • "lastModifiedDateTime": null
}

Member Device

This entity exposes Member Device registrations — the devices (e.g. mobile apps) registered against a member for authenticated self-service access, including status (Active/Blocked) and blocking details — as a read-only OData v4 entity, replacing the generic RetailWebServices GET_TABLE_DATA reflection-based read of table "LSC Member Device" for LS Omni (the legacy SOAP service remains available unchanged for the duration of the coexistence window). This is a read-only projection: Insert, Modify, and Delete are not supported over the API — devices continue to be maintained through the LS Central back-office UI. IMPORTANT: securityToken carries the device''s live authentication credential. This projection exposes it at parity with the legacy SOAP service, which already exposed the same value via reflection, for the duration of the coexistence window. This codebase currently has a single all-encompassing permission set (LSCentralPermissions) with no narrower grant available for this page alone; assigning that set to an integration principal grants broad LS Central access, not just device-read access. Treat assignment of this permission set as a high-trust grant, not a scoped one, until a dedicated narrower permission set exists.

Get memberDevices from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

query Parameters
$top
number <int64> >= 0
Example: $top=50

Show only the first n items

$skip
number <int64> >= 0

Skip the first n items

$search
string

Search items by search phrases

$filter
string

Filter items by property values

$count
boolean

Include count of items

$orderby
Array of strings unique

Order items by property values

$select
Array of strings unique
Items Enum: "id" "deviceId" "securityToken" "friendlyName" "status" "reasonBlocked" "dateBlocked" "blockedBy" "lastModifiedDateTime"

Select properties to be returned

$expand
Array of strings unique

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "value": [
    ]
}

Get memberDevices from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

memberDevice-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of memberDevice

query Parameters
$select
Array of strings unique
Items Enum: "id" "deviceId" "securityToken" "friendlyName" "status" "reasonBlocked" "dateBlocked" "blockedBy" "lastModifiedDateTime"

Select properties to be returned

$expand
Array of strings unique

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "deviceId": null,
  • "securityToken": null,
  • "friendlyName": null,
  • "status": null,
  • "reasonBlocked": null,
  • "dateBlocked": null,
  • "blockedBy": null,
  • "lastModifiedDateTime": null
}

Member Point Entry

This entity exposes the member loyalty point ledger — the point sale, redemption, expiry, positive and negative adjustment, and transfer entries of a membership card, with their source document, point and remaining-point amounts, expiration date, and the club, scheme, store and POS terminal they originated from — as a read-only OData v4 entity, replacing the generic RetailWebServices GET_TABLE_DATA reflection-based read of table "LSC Member Point Entry". The legacy SOAP service remains available unchanged for the duration of the coexistence window. This is a Phase 1, read-only entity: Insert, Modify and Delete are not supported over the API. Point entries are generated by LS Central''s own point posting routines — POS transaction, sales invoice, credit memo, customer order and point journal posting — and by expiration and point-transfer processing; writing them directly over the API would bypass the point register and remaining-point bookkeeping those routines maintain. All 26 columns of the source table are projected, so every field list a GET_TABLE_DATA caller can request today is available here (31 properties in total, once the id/lastModifiedDateTime system fields and the three ordinal companions below are counted). The legacy GET_TABLE_DATA operation serializes its Option/Enum fields as their numeric ordinal, while this OData entity serializes sourceType, entryType and pointType by member name (platform behavior for OData). To let a consumer migrating off GET_TABLE_DATA keep an ordinal-based mapping, sourceTypeOrdinal, entryTypeOrdinal and pointTypeOrdinal are also projected alongside their named counterparts; these three are computed in memory per row and are not filterable or sortable over OData — filter and sort on the named field instead. This is a transactional ledger that grows without bound, so callers are expected to scope every request: normally $filter on cardNo or accountNo, optionally narrowed by date, with $top for paging. An unfiltered GET returns the entire ledger.

Get memberPointEntries from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

query Parameters
$top
number <int64> >= 0
Example: $top=50

Show only the first n items

$skip
number <int64> >= 0

Skip the first n items

$search
string

Search items by search phrases

$filter
string

Filter items by property values

$count
boolean

Include count of items

$orderby
Array of strings unique

Order items by property values

$select
Array of strings unique
Items Enum: "id" "entryNo" "sourceType" "sourceTypeOrdinal" "documentNo" "date" "accountNo" "contactNo" "cardNo" "entryType" "entryTypeOrdinal" "pointType" "pointTypeOrdinal" "points" "pointValue" "postingValue" "open" "remainingPoints" "closedByEntry" "closedByPoints" "expirationDate" "memberClub" "memberScheme" "storeNo" "posTerminalNo" "transactionNo" "reasonCode" "postedToGL" "replicationCounter" "description" "lastModifiedDateTime"

Select properties to be returned

$expand
Array of strings unique

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "value": [
    ]
}

Get memberPointEntries from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

memberPointEntry-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of memberPointEntry

query Parameters
$select
Array of strings unique
Items Enum: "id" "entryNo" "sourceType" "sourceTypeOrdinal" "documentNo" "date" "accountNo" "contactNo" "cardNo" "entryType" "entryTypeOrdinal" "pointType" "pointTypeOrdinal" "points" "pointValue" "postingValue" "open" "remainingPoints" "closedByEntry" "closedByPoints" "expirationDate" "memberClub" "memberScheme" "storeNo" "posTerminalNo" "transactionNo" "reasonCode" "postedToGL" "replicationCounter" "description" "lastModifiedDateTime"

Select properties to be returned

$expand
Array of strings unique

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "entryNo": null,
  • "sourceType": "POS_x0020_Transaction",
  • "sourceTypeOrdinal": null,
  • "documentNo": null,
  • "date": null,
  • "accountNo": null,
  • "contactNo": null,
  • "cardNo": null,
  • "entryType": null,
  • "entryTypeOrdinal": null,
  • "pointType": "Award_x0020_Points",
  • "pointTypeOrdinal": null,
  • "points": null,
  • "pointValue": null,
  • "postingValue": null,
  • "open": null,
  • "remainingPoints": null,
  • "closedByEntry": null,
  • "closedByPoints": null,
  • "expirationDate": null,
  • "memberClub": null,
  • "memberScheme": null,
  • "storeNo": null,
  • "posTerminalNo": null,
  • "transactionNo": null,
  • "reasonCode": null,
  • "postedToGL": null,
  • "replicationCounter": null,
  • "description": null,
  • "lastModifiedDateTime": null
}

Member Scheme

This entity exposes Member Scheme setup and configuration — the loyalty scheme record that governs card numbering, discount and price group defaults, club linkage, and upgrade/downgrade thresholds — as a read-only OData v4 entity, replacing the generic RetailWebServices GET_TABLE_DATA reflection-based read of table "LSC Member Scheme" (the legacy SOAP service remains available unchanged for the duration of the coexistence window). This is a Phase 1, read-only entity: Insert, Modify, and Delete are not supported over the API — schemes continue to be maintained through the LS Central back-office UI. Point-balance totals (issued, used, expired, and transferred points) are intentionally NOT exposed by this entity; they are out of scope for this release and may be added later, potentially via a separate action or query. clubDescription is a convenience field resolved by looking up clubCode against "LSC Member Club" — it is not a stored field on "LSC Member Scheme" and will be blank when clubCode is blank or does not resolve to an existing club.

Get memberSchemes from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

query Parameters
$top
number <int64> >= 0
Example: $top=50

Show only the first n items

$skip
number <int64> >= 0

Skip the first n items

$search
string

Search items by search phrases

$filter
string

Filter items by property values

$count
boolean

Include count of items

$orderby
Array of strings unique

Order items by property values

$select
Array of strings unique
Items Enum: "id" "code" "description" "startingCardNo" "cardNoLength" "barcodeMask" "clubCode" "clubDescription" "defaultCustDiscGroup" "defaultPriceGroup" "cardNumberSeries" "updateSequence" "minPointForUpgrade" "whenCheckForUpgraded" "bufferDaysBeforeExpire" "pointLimitForDowngrade" "nextScheme" "nextSchemeBenefits" "contactHandling" "cardRegistration" "cardSetupType" "noOfAccounts" "noOfContacts" "lastModifiedDateTime"

Select properties to be returned

$expand
Array of strings unique

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "value": [
    ]
}

Get memberSchemes from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

memberScheme-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of memberScheme

query Parameters
$select
Array of strings unique
Items Enum: "id" "code" "description" "startingCardNo" "cardNoLength" "barcodeMask" "clubCode" "clubDescription" "defaultCustDiscGroup" "defaultPriceGroup" "cardNumberSeries" "updateSequence" "minPointForUpgrade" "whenCheckForUpgraded" "bufferDaysBeforeExpire" "pointLimitForDowngrade" "nextScheme" "nextSchemeBenefits" "contactHandling" "cardRegistration" "cardSetupType" "noOfAccounts" "noOfContacts" "lastModifiedDateTime"

Select properties to be returned

$expand
Array of strings unique

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "code": "string",
  • "description": null,
  • "startingCardNo": null,
  • "cardNoLength": null,
  • "barcodeMask": null,
  • "clubCode": null,
  • "clubDescription": null,
  • "defaultCustDiscGroup": null,
  • "defaultPriceGroup": null,
  • "cardNumberSeries": null,
  • "updateSequence": null,
  • "minPointForUpgrade": null,
  • "whenCheckForUpgraded": null,
  • "bufferDaysBeforeExpire": null,
  • "pointLimitForDowngrade": null,
  • "nextScheme": null,
  • "nextSchemeBenefits": null,
  • "contactHandling": "Member_x0020_Contacts_x0020_Only",
  • "cardRegistration": "None",
  • "cardSetupType": "Club",
  • "noOfAccounts": null,
  • "noOfContacts": null,
  • "lastModifiedDateTime": null
}

Mobile POS Profile

Exposes Mobile POS Profiles (table "LSC Member Attribute Setup") as a read-only OData v4 entity. Replaces the legacy RetailWebServices SOAP MobileGetProfiles(profileID, clubID) call; the legacy operation remains available unchanged during the coexistence window. An always-applied filter matches the legacy behavior: Visible Type = Private, Attribute Type = Boolean, and Lookup Type = None. The legacy profileID parameter maps to $filter=code eq ''...'' and the legacy clubID parameter maps to $filter=clubCode eq ''...''; unlike legacy, this entity does not fall back to the Mobile Default Club Code setup value when no club is supplied — callers must filter by an explicit club code. This entity is read-only. Row granularity is one row per (clubCode, code) pair, which can differ from the legacy call''s code-only deduplication for an attribute set up across multiple clubs; parity holds for the club-scoped call real clients make. lastModifiedDateTime reflects only changes to this Setup row''s own fields, not edits to the underlying Member Attribute record — do not build incremental sync on this field without accounting for that gap.

Get mobilePosProfiles from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

query Parameters
$top
number <int64> >= 0
Example: $top=50

Show only the first n items

$skip
number <int64> >= 0

Skip the first n items

$search
string

Search items by search phrases

$filter
string

Filter items by property values

$count
boolean

Include count of items

$orderby
Array of strings unique

Order items by property values

$select
Array of strings unique
Items Enum: "id" "code" "clubCode" "description" "attributeType" "defaultValue" "mandatory" "lastModifiedDateTime"

Select properties to be returned

$expand
Array of strings unique
Items Value: "memberAttribute"

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "value": [
    ]
}

Get mobilePosProfiles from companies

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

mobilePosProfile-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of mobilePosProfile

query Parameters
$select
Array of strings unique
Items Enum: "id" "code" "clubCode" "description" "attributeType" "defaultValue" "mandatory" "lastModifiedDateTime"

Select properties to be returned

$expand
Array of strings unique
Items Value: "memberAttribute"

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "code": null,
  • "clubCode": null,
  • "description": null,
  • "attributeType": null,
  • "defaultValue": null,
  • "mandatory": null,
  • "lastModifiedDateTime": null,
  • "memberAttribute": {
    }
}

Company

Get entities from companies

Authorizations:
oAuth2basicAuth
query Parameters
$top
number <int64> >= 0
Example: $top=50

Show only the first n items

$skip
number <int64> >= 0

Skip the first n items

$search
string

Search items by search phrases

$filter
string

Filter items by property values

$count
boolean

Include count of items

$orderby
Array of strings unique

Order items by property values

$select
Array of strings unique
Items Enum: "id" "systemVersion" "timestamp" "name" "displayName" "businessProfileId" "systemCreatedAt" "systemCreatedBy" "systemModifiedAt" "systemModifiedBy"

Select properties to be returned

$expand
Array of strings unique
Items Enum: "wishLists" "wishListLines" "wishListLinks" "memberSchemes" "memberPointEntries" "mobilePosProfiles" "memberAttributes" "memberDevices" "crossSellingItems"

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "value": [
    ]
}

Get entity from companies by key

Authorizations:
oAuth2basicAuth
path Parameters
company-id
required
string <uuid> ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...

The unique identifier of company

query Parameters
$select
Array of strings unique
Items Enum: "id" "systemVersion" "timestamp" "name" "displayName" "businessProfileId" "systemCreatedAt" "systemCreatedBy" "systemModifiedAt" "systemModifiedBy"

Select properties to be returned

$expand
Array of strings unique
Items Enum: "wishLists" "wishListLines" "wishListLinks" "memberSchemes" "memberPointEntries" "mobilePosProfiles" "memberAttributes" "memberDevices" "crossSellingItems"

Expand related entities

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "systemVersion": null,
  • "timestamp": null,
  • "name": null,
  • "displayName": null,
  • "businessProfileId": null,
  • "systemCreatedAt": null,
  • "systemCreatedBy": null,
  • "systemModifiedAt": null,
  • "systemModifiedBy": null,
  • "wishLists": [
    ],
  • "wishListLines": [
    ],
  • "wishListLinks": [
    ],
  • "memberSchemes": [
    ],
  • "memberPointEntries": [
    ],
  • "mobilePosProfiles": [
    ],
  • "memberAttributes": [
    ],
  • "memberDevices": [
    ],
  • "crossSellingItems": [
    ]
}