ECRS WebCart API (5.8)

Download OpenAPI specification:Download

General Overview

This document describes the API backing the ECRS WebCart user interface. The WebCart API provides a robust and flexible framework for integrating and managing various WebCart functionalities in the eCommerce platform of your choice. This API enables developers to build custom e-commerce solutions by leveraging a wide range of endpoints that cover everything from user authentication and account management to order processing and inventory management.

In environments where multiple stores are served via a single domain name, a specific store can be selected by prefixing the given path with /s/{storeId} (ie., /s/1000-2/api/b).

Note that while ECRS attempts to maintain backwards compatibility whenever possible, this API is subject to change without notice.

Use Cases

There are various use cases for users accessing the WebCart API; however, users typically fall into one of two categories:

  1. An integrator using WebCart's API and creating their own user interface ("head"). Because this route does not require third-party accounts to access the API, it does not depend on API keys, nor does it require the use of Authorization Security checkpoints.

Example: A CATAPULT retailer wishes to create their own app with custom UI specific to their unique branding.

  1. A user authorizing a third-party to perform an operation on their behalf using the WebCart API. This approach requires the CATAPULT retailer to generate an API key for the integrator and set up an Employee / Authorization Security appropriately. More information on how to grant Machine Account access to the API in CATAPULT Web Office is available in the OLM.

Example: A CATAPULT co-op wishes to manage their customers’ membership information and fees via a third-party. Any third-party acting as an employee to perform tasks (such as updating membership details) will need explicit permissions set at a granular level to make changes to the CATAPULT database.

Capabilities & Limitations

Capabilities

The WebCart API is designed to empower integrators by providing a robust framework for building and managing e-commerce functionalities. The WebCart API enables you to:

  • Authenticate Users: Manage user login and logout processes, including support for social logins and temporary one-time passwords (TOTPs).
  • Manage Accounts: Retrieve and update customer account information, handle password resets, and manage account settings.
  • Process Orders: Create, update, cancel, and query orders, ensuring efficient order management.
  • Handle Payments: Accept various payment methods, including EBT and gift cards, and manage payment authorizations.
  • View Inventory: Query item information, handle item recommendations, and manage item lists.
  • Facilitate Customer Interactions: Manage customer notifications, handle customer check-ins, and process customer feedback through forms.
  • Query Store Settings: Access store-specific configurations, themes, and styles.

Limitations

While the WebCart API offers extensive capabilities, there are some limitations to be aware of:

  • Authorization Security: Account access to the API is managed through Authorization Security checkpoints. The WebCart API Access category includes comprehensive checkpoints, allowing you to have full control over which parts of the API users can access.
  • Potential Dependency on API Keys: Third-party and machine account access to the API requires valid API keys, which must be securely managed.
  • Potential Rate Limits: Some of the WebCart API endpoints are rate limited. These rate limits will be noted on the respective endpoints.

Employee

The endpoints in the Employee group are designed to manage employee-authenticated requests. These endpoints allow employees to perform actions with Employee-level privileges. Before users can utilize many of the endpoints in this group, they must complete either “Machine Account Login” or “Authenticate Employee.”

Machine Account users should start with a call to “Machine Account Login” (/employee/machineEmployeeLogin) to create a session.

All other users should start with a call to the “Authenticate Employee” (/employee/password) endpoint. This is the endpoint that is used by WebCart’s Employee Login, so users looking to make their own Employee Login would want to use the “Authenticate Employee” endpoint as well. Until the user has successfully performed the “Machine Employee Login” or “Authenticate Employee,” all the other endpoints in this group will return an error.

If the authenticated user has the necessary permissions, the next step is often to call “Associate as Customer” (/employee/cs), which permits performing actions on behalf of specific customers.

Use the endpoints in this group to:

  • Retrieve a list of customers by accessing customer records.
  • Allow an associated Employee to associate as a customer and perform operations on behalf of a customer.
  • Retrieve system logs for troubleshooting and auditing purposes.
  • Retrieve the current version number of the WebCart system.
  • Verify employee credentials and allow users to log in as an employee.
  • Replicate data from the CATAPULT database to WebCart.

browseCustomers

query Parameters
cq
string
s
string
ps
integer <int32>
pn
integer <int32>

Responses

Associate as Customer

Allows employees to associate as a customer.

Once associated, methods that deal with a logged in customer will behave as if the associated customeris logged in, according to the employee's permissions.

Request Body schema: application/json

Customer Association Request

id
required
string

The ID of the user to associate as.

Responses

Response Schema: application/json
code
required
integer <int32>
Value: 0
message
required
string
Value: "Success"
Response Schema: application/json
code
required
integer <int32>
Value: -13

Refer to "Error Codes" in API Responses for a complete reference.

message
required
string

Summary of the error.

Request samples

Content type
application/json

Customer Associate Request Request

{
  • "id": "1000-54"
}

Response samples

Content type
application/json
{
  • "code": 0,
  • "message": "Success"
}

downloadLogs

Responses

getWebCartVersionNumber

Responses

Machine Account Login

Allows machine accounts to associate as an employee by using an API key.If permissions configured in Web Office allow, a machine employee may interact with select endpoints as though they are an employee. This includes, but is not limited to, associating as a customer via the "Associate as Customer" (/employee/cs) endpoint, and interacting with any "Account" (/me) endpoints or the "CMS Customer Membership Details" (/cms/membershipDetails) endpoint.To end machine account access, call the "Logout" (/auth/logout) endpoint or clear your cookies containing the auth token.
Should a machine account attempt to access an endpoint either not configured or not authorized, a 403 error will be returned.
This feature is currently disabled and will be available at a later date, a 403 will always be returned.

Request Body schema: application/json

Machine account employee login request.

apiKey
required
string

API key for the employee to login as. This key can be found or generated in WebOffice > Employees > {Employee} > (8) Api keys.

Responses

Response Schema: application/json
length
integer <int32>
location
string <uri>
object
lastModified
string <date-time>
date
string <date-time>
object
entity
object
status
integer <int32>
object
object
closed
boolean
Array of objects (Link) unique
object (StatusType)
object (MediaType)
object (EntityTag)
allowedMethods
Array of strings unique
object
Response Schema: application/json
length
integer <int32>
location
string <uri>
object
lastModified
string <date-time>
date
string <date-time>
object
entity
object
status
integer <int32>
object
object
closed
boolean
Array of objects (Link) unique
object (StatusType)
object (MediaType)
object (EntityTag)
allowedMethods
Array of strings unique
object

Request samples

Content type
application/json

Machine Employee Login Request

{
  • "apiKey": "AE1LMA6S012345678901234567890O0I"
}

Response samples

Content type
application/json
{
  • "length": 0,
  • "location": "http://example.com",
  • "language": {
    • "language": "string",
    • "displayName": "string",
    • "script": "string",
    • "country": "string",
    • "variant": "string",
    • "extensionKeys": [
      • "string"
      ],
    • "unicodeLocaleAttributes": [
      • "string"
      ],
    • "unicodeLocaleKeys": [
      • "string"
      ],
    • "iso3Language": "string",
    • "iso3Country": "string",
    • "displayLanguage": "string",
    • "displayScript": "string",
    • "displayCountry": "string",
    • "displayVariant": "string"
    },
  • "lastModified": "2019-08-24T14:15:22Z",
  • "date": "2019-08-24T14:15:22Z",
  • "headers": {
    • "empty": true,
    • "property1": [
      • { }
      ],
    • "property2": [
      • { }
      ]
    },
  • "entity": { },
  • "status": 0,
  • "metadata": {
    • "empty": true,
    • "property1": [
      • { }
      ],
    • "property2": [
      • { }
      ]
    },
  • "cookies": {
    • "property1": {
      • "name": "string",
      • "value": "string",
      • "version": 0,
      • "path": "string",
      • "domain": "string",
      • "comment": "string",
      • "maxAge": 0,
      • "expiry": "2019-08-24T14:15:22Z",
      • "secure": true,
      • "httpOnly": true,
      • "sameSite": "NONE"
      },
    • "property2": {
      • "name": "string",
      • "value": "string",
      • "version": 0,
      • "path": "string",
      • "domain": "string",
      • "comment": "string",
      • "maxAge": 0,
      • "expiry": "2019-08-24T14:15:22Z",
      • "secure": true,
      • "httpOnly": true,
      • "sameSite": "NONE"
      }
    },
  • "closed": true,
  • "links": [
    • {
      • "type": "string",
      • "params": {
        • "property1": "string",
        • "property2": "string"
        },
      • "rel": "string",
      • "title": "string",
      • "uriBuilder": { },
      • "rels": [
        • "string"
        ]
      }
    ],
  • "statusInfo": {
    • "reasonPhrase": "string",
    • "statusCode": 0,
    • "family": "INFORMATIONAL"
    },
  • "mediaType": {
    • "type": "string",
    • "subtype": "string",
    • "parameters": {
      • "property1": "string",
      • "property2": "string"
      },
    • "wildcardType": true,
    • "wildcardSubtype": true
    },
  • "entityTag": {
    • "value": "string",
    • "weak": true
    },
  • "allowedMethods": [
    • "string"
    ],
  • "stringHeaders": {
    • "empty": true,
    • "property1": [
      • "string"
      ],
    • "property2": [
      • "string"
      ]
    }
}

passwordLogin_1

Request Body schema: application/json
account
required
string <= 50 characters

The account name to log in with

password
required
string

The password to log in with

accountId
string

The account id to log in with, used when multiple accounts are associated with the same login

totp
string

The TOTP code to log in with, used when 2-factor authentication enabled is enabled

scan
boolean

Whether the shopper is using Accelerated Checkout

Responses

Request samples

Content type
application/json
{
  • "account": "johndoe@email.com",
  • "password": "password123",
  • "accountId": "1000-1",
  • "totp": "123456",
  • "scan": true
}

replicate

Responses

Reset Index

Invalidates the WebCart Index and prepares it to be rebuilt during the next replication cycle. Can only be executed once per hour per employee.

Responses

Push Notifications

Methods to manage customer push notification registration tokens. This includes methods to subscribe or unsubscribe registration tokens to specific topics. Customer association is required for all methods.

Save customer registration token

This method saves the requested registration token to the associated customer.

Request Body schema: application/json

Customer registration token, optional date string with timezone, and optional list of topics. If no date is provided, the current date will be used. The date will be used to manage token expiration. The "ordering statuses" topic is required for a registration token to receive order status push notifications. Topics provided in the topics field will not be subscribed to an FCM topic at this time.

registrationToken
required
string

The user's FCM registration token.

created
string

Zoned timestamp representing the date when this token was created or last used.

topics
Array of strings
Items Value: "ordering statuses"

List of topics that determine which push notification(s) the "registrationToken" will receive.

Responses

Request samples

Content type
application/json
Example

Customer Registration Token

{
  • "registrationToken": "dQw4w9WgXcQ:APA91bH1f8k9J7l8mN2o3P4Q5r6S7t8U"
}

Delete customer registration token(s)

This method deletes all requested registration tokens from the associated customer.

Request Body schema: application/json

List of customer registration tokens to be deleted.

registrationTokens
required
Array of strings

List of customer registration tokens to be deleted.

Responses

Request samples

Content type
application/json
Example

List with single registration token

{
  • "registrationTokens": [
    • "dQw4w9WgXcQ:APA91bH1f8k9J7l8mN2o3P4Q5r6S7t8U"
    ]
}

Authorization

The Authorization endpoints provide comprehensive control over login authorization, allowing you to manage various aspects of user authentication and session management.
Use these endpoints to control how users can:

  • Log into and out of WebCart. Choose how users can log in, either by username and password or through social login. An endpoint is also provided to verify credentials and offer a logout option.
  • Interact with Temporary One Time Passwords (TOTPs). Generate, email, check, clear, and confirm TOTPs.
  • Log into a Home Store. A Home Store is the default store a user is directed to upon login.
  • Sign up for a new account, resend verification links, and request account removal.


Claims information:
WebCart sessions are persisted using cookies in the form of a JWT token. When an action requires the cookie to be updated, two values are set in the header:

  • flag-set-cookie: A flag set to 1 when the cookie has changed.
  • set-cookie: Contains a copy of the new cookie with the JWT token filled with claims information. You can get a copy of the claims in the cookie at any time from the Get Customer Claims endpoint. Best practice is to pull the new cookie and set relevant values on the client side when the flag-set-cookie value is present in the header.

    Possible JWT claims:
  • "disp": Display name.
  • "num": Customer number.
  • "emp": Employee claim.
  • "emn": Employee name on the claim.
  • "pl": Price level of the claim.
  • "pf": Customer power field of the claim.
  • "lym": Loyalty multiplier of the claim.
  • "cart": Active cart ID in cpk-pk format.
  • "ordertype": Order type of the claim in cpk-pk format.
  • "cart-ot-": Cart order type in cpk-pk format appended to the field, with the value being the cart cpk-pk (e.g., ["cart-ot-1000-4": "0-6374"]).
  • "home": Home store.
  • "ep": Boolean indicating if the email is provided.
  • "spp": Special pricing claim.
  • "tpr": Timeout period.
  • "dispShort": Nickname if provided, or first name if provided. If neither exist, the account number.
  • "scango": Boolean indicating if the user is in Accelerated Checkout mode. Refer to Accelerated Checkout
  • "macc": Boolean indicating if the JWT is for a machine account.
  • "fi": Fraud iterator (deprecated).
  • "iss": Issuer, always "com.ecrs.ecat".

Check Two-Factor Authentication Status

Checks if the authenticated customer has two-factor authentication (2FA) enabled on their account

Responses

Response Schema: application/json
setup
boolean

Flag indicating if two-factor authentication is set up for this customer

Response samples

Content type
application/json
{
  • "setup": true
}

Clear TOTP Setup

Removes the Time-based One-Time Password (TOTP) setup from the authenticated customer's account, disabling two-factor authentication

Responses

Response Schema: application/json
setup
boolean

Flag indicating if two-factor authentication is set up for this customer

Response samples

Content type
application/json
{
  • "setup": true
}

Confirm TOTP Code

Validates a Time-based One-Time Password (TOTP) code against the provided secret and sets up two-factor authentication for the authenticated customer

Request Body schema: application/json
secret
required
string

Secret used to generate the TOTP code

code
required
string

TOTP code to confirm

Responses

Response Schema: application/json
setup
boolean

Flag indicating if two-factor authentication is set up for this customer

Request samples

Content type
application/json
{
  • "secret": "JBSWY3DPEHPK3PXP",
  • "code": "123456"
}

Response samples

Content type
application/json
{
  • "setup": true
}

Email TOTP Code

Sends a time-based one-time password (TOTP) to the customer's email address for use with two-factor authentication. This TOTP is valid for 4 minutes.

Request Body schema: application/json
id
required
string

Customer ID

Responses

Request samples

Content type
application/json
{
  • "id": "1000-1"
}

Facebook Classic Login

When using the Facebook Classic Login, customers can log in using their Facebook user access token. However, there is a known issue that affects some users.

Known Issue:

  • Problem: If a Facebook account was created using a phone number, it cannot return an email address when queried. Since WebCart requires an email to create an account, customers with a phone number as their primary contact will fail to log in.
  • Cause: This issue is due to a bug in the Facebook GraphQL code.
  • Resolution:
    1. Remove their phone number from their Facebook settings.
    2. Re-add the phone number, ensuring that the primary contact is set to an email address.
Request Body schema: application/json
token
string

Facebook access token

Responses

Request samples

Content type
application/json
{
  • "token": "EAAIZAse1BrloBOxiUDdFPJOHMpjTmQBjzSarihir3BKC1fpUPRyAgP3kq8kZC5EuajTad2Gik4oqkiRjy8h8AM3X8z902Enk65qykR2ZAH99ZCx4sxigZA7Dws9Qo51WBiaZBQHfgTXpjDGUVlsAZBr0XCR1WRrxrmKYH6Tz9FyAIgllrVor3V3qJDGMqgL4ZBLK5TDZCwNPEyKVC0XjfsM2zBmABbgrENhBYir1voLYSWmZCJ65UuaZA6itU6gnD7aYb8ZD"
}

Federated Login

Customers can log in using federated authentication. This method of authentication expects a JSON Web Token (JWT) signed by a federated identity provider.
Token Information: This authentication JWT is often referred to as the "ID Token" in the providers' documentation.

Supported Providers

  • Google
  • Facebook
  • Apple

Behavior

  • If a guest user attempts to log in with social media and no existing record is found, a new customer record will be created.
  • If a new customer federated login lacks a first name or last name in the token, these fields will be autofilled with "Valued" and "Customer" respectively.
  • If the email address is not verified, a code of -34 will be returned along with the UUID associated with the verification, and the Verify Customer endpoint should be called to complete the registration process.
path Parameters
provider
required
string
Enum: "google" "facebook" "apple"
Request Body schema: application/json
idToken
required
string

ID token for the customer logging in. This token should be a JWT signed by the account provider.

firstName
string <= 25 characters

First name for the customer logging in. We will try to parse the name from the idToken but if it is missing it will be set to this value.

lastName
string <= 25 characters

Last name for the customer logging in. We will try to parse the name from the idToken but if it is missing it will be set to this value.

email
string <= 50 characters

Email address for the customer logging in. We will try to parse the email from the idToken but if it is missing it will be set to this value.

phone
string [ 10 .. 14 ] characters

Phone number for the customer logging in.

scan
boolean
Default: false

Indicates whether the logging in customer is in Accelerated Checkout mode

Responses

Request samples

Content type
application/json
{
  • "idToken": "xxxxx.yyyyy.zzzzz",
  • "firstName": "John",
  • "lastName": "Smith",
  • "email": "jsmith@email.com",
  • "phone": "1234567890",
  • "scan": false
}

Generate TOTP Secret

Generates a new Time-based One-Time Password (TOTP) secret for the authenticated customer. This endpoint returns both the secret and a URL that can be used with authenticator apps.

Responses

Response Schema: application/json
secret
string

Secret used to generate the TOTP code

secretUrl
string

URL used to generate the TOTP code

Response samples

Content type
application/json
{
  • "secret": "JBSWY3DPEHPK3PXP",
  • "secretUrl": "otpauth://totp/Terminal:customer@store?secret"
}

Set Home Store

Sets the user's home store preference and stores it in the store cookie

Request Body schema: application/json
home
string

The ID of the store to become the home store.

Responses

Request samples

Content type
application/json
{
  • "home": "1000-3"
}

Logout

Logs out the current user by clearing customer and employee claims from the session

Responses

OAuth Provider Login

Authenticates a customer using various OAuth providers including Facebook, Google, LinkedIn, GitHub, Microsoft, Yahoo, and Instagram.
Email verification may be required. If the email address is not verified, a code of -34 will be returned along with the UUID associated with the verification. The Verify Customer endpoint should be called to complete the registration process.

path Parameters
provider
required
string
Enum: "facebook" "google" "linkedin" "github" "live" "yahoo" "instagram"

OAuth provider name

Request Body schema: application/json
redirectUri
required
string

URI to redirect after authentication

clientId
required
string

OAuth 2.0 client identifier

code
required
string

OAuth 2.0 authorization code received from authorization server

state
string

OAuth 2.0 state parameter to maintain session between request and callback

error
string

Error message returned by the authorization server

scan
boolean
Default: false

Indicates whether the logging in customer is in Accelerated Checkout mode

oauth_token
string
Deprecated

OAuth 1.0 request token received from authorization server

oauth_verifier
string
Deprecated

OAuth 1.0 verifier code used to exchange for an access token

Responses

Request samples

Content type
application/json
{
  • "clientId": "client_12345",
  • "code": "4/P7q7W91a-oMsCeLvIaQm6bTrgtp7",
  • "state": "xyzABC123",
  • "error": "access_denied",
  • "scan": false,
  • "oauth_token": "abc123xyz456",
  • "oauth_verifier": "z9y8x7"
}

Password Login

Authenticates a customer using their username/email and password credentials.
It is possible that multiple customers exist with the same username and password, for which this endpoint will return a list of customer objects for the customer to select from.
If the customer has 2-factor authentication enabled, a 200 response will be returned with a code of -14 and the customer object.

Request Body schema: application/json
account
required
string <= 50 characters

The account name to log in with

password
required
string

The password to log in with

accountId
string

The account id to log in with, used when multiple accounts are associated with the same login

totp
string

The TOTP code to log in with, used when 2-factor authentication enabled is enabled

scan
boolean

Whether the shopper is using Accelerated Checkout

Responses

Response Schema: application/json
id
string

The ID of the customer.

accountNumber
string

The account number of the customer.

displayName
string

The display name of the customer.

Request samples

Content type
application/json
{
  • "account": "johndoe@email.com",
  • "password": "password123",
  • "accountId": "1000-1",
  • "totp": "123456",
  • "scan": true
}

Response samples

Content type
application/json
{
  • "id": "1000-3",
  • "accountNumber": "123456789",
  • "displayName": "John Doe"
}

Request Customer Account Removal

Informs the merchant that the customer would like their account removed both in-store and online.
This will send an email to the store's employee email addresses requesting account removal.

Responses

Resend Verification Code

Resends a verification code to a customer who is in the process of registering

Request Body schema: application/json
key
required
string

Verification key identifier

scan
boolean
Default: false

Flag indicating if the shopper is in Accelerated Checkout mode

Responses

Response Schema: application/json
string

New verification UUID

Request samples

Content type
application/json
{
  • "key": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  • "scan": false
}

Response samples

Content type
application/json
"a567c10b-58cc-4372-a567-0e02b2c3c10b"

Sign Up

Handles submission of the signup form for a registering user.
A 6-digit code will be emailed to the registering user and a verified UUID will be returned upon successful registration. The Verify Customer endpoint should be called to complete the registration process.

Request Body schema: application/json
firstName
required
string <= 25 characters

First name of the customer that is registering

lastName
required
string <= 25 characters

Last name of the customer that is registering

email
required
string <= 50 characters

E-mail address of the customer that is registering

phone
required
string [ 10 .. 14 ] characters

Phone number of the customer that is registering

password
required
string [ 8 .. 255 ] characters

Password of the customer that is registering. A valid password must contain a capital letter, a lowercase letter, a number, and a symbol.

recaptcha
string

Recaptcha validation for the customer registration attempt. Required if Recaptcha is enabled on the configuration and Registration is an enabled scenario.

marketing
boolean

Indicates whether the registering customer is opting in to marketing e-mails

receipts
boolean

Indicates whether the registering customer is opting in to e-mailed receipts, and opting out of printed receipts

scan
boolean

Indicates whether the registering customer is in Accelerated Checkout mode

object (Me)

The boarding profile set on the configuration.

Responses

Response Schema: application/json
string

Verification UUID

Request samples

Content type
application/json
{
  • "firstName": "string",
  • "lastName": "string",
  • "email": "string",
  • "phone": "stringstri",
  • "password": "stringst",
  • "recaptcha": "string",
  • "marketing": true,
  • "receipts": true,
  • "scan": true,
  • "boardingProfile": {
    • "accountNumber": "WB24XVXCXIBY3ZH3",
    • "firstName": {
      • "name": "firstName",
      • "option": "REQUIRED",
      • "value": "John",
      • "length": 25
      },
    • "middleName": {
      • "name": "middleName",
      • "option": "OPTIONAL",
      • "value": "Michael",
      • "length": 25
      },
    • "lastName": {
      • "name": "lastName",
      • "option": "REQUIRED",
      • "value": "Doe",
      • "length": 25
      },
    • "nickName": {
      • "name": "nickName",
      • "option": "OPTIONAL",
      • "value": "Johnny",
      • "length": 25
      },
    • "prefix": {
      • "name": "prefix",
      • "option": "OPTIONAL",
      • "value": "1000-16",
      • "options": [
        • {
          • "id": "1000-16",
          • "description": "Mr."
          },
        • {
          • "id": "1000-17",
          • "description": "Ms."
          },
        • {
          • "id": "1000-18",
          • "description": "Mrs."
          },
        • {
          • "id": "1000-19",
          • "description": "unknown"
          }
        ]
      },
    • "suffix": {
      • "name": "suffix",
      • "option": "OPTIONAL",
      • "value": "1000-19",
      • "options": [
        • {
          • "id": "1000-16",
          • "description": "Jr."
          },
        • {
          • "id": "1000-19",
          • "description": "Sr."
          }
        ]
      },
    • "company": "{\n \"name\": \"company\",\n \"option\": \"OPTIONAL\",\n \"value\": ECRS,\n \"length\": 50\n}",
    • "title": "{\n \"name\": \"title\",\n \"option\": \"OPTIONAL\",\n \"value\": Technical Writer,\n \"length\": 25\n}",
    • "suppressReceipt": {
      • "name": "suppressReceipt",
      • "option": "OPTIONAL",
      • "value": false
      },
    • "birthDate": {
      • "name": "birthDate",
      • "option": "OPTIONAL",
      • "value": "1995-05-04"
      },
    • "pf1": {
      • "name": "Configured PowerField 1 Name",
      • "option": "OPTIONAL",
      • "value": "1000-7263",
      • "options": [
        • {
          • "id": "1000-7263",
          • "description": "Option 1"
          },
        • {
          • "id": "1000-7268",
          • "description": "Option 2"
          }
        ]
      },
    • "pf2": {
      • "name": "Configured PowerField 2 Name",
      • "option": "OPTIONAL",
      • "value": "1000-7263",
      • "options": [
        • {
          • "id": "1000-7263",
          • "description": "Option 1"
          },
        • {
          • "id": "1000-7268",
          • "description": "Option 2"
          }
        ]
      },
    • "pf3": {
      • "name": "Configured PowerField 3 Name",
      • "option": "OPTIONAL",
      • "value": "1000-7263",
      • "options": [
        • {
          • "id": "1000-7263",
          • "description": "Option 1"
          },
        • {
          • "id": "1000-7268",
          • "description": "Option 2"
          }
        ]
      },
    • "pf4": {
      • "name": "Configured PowerField 4 Name",
      • "option": "OPTIONAL",
      • "value": "1000-7263",
      • "options": [
        • {
          • "id": "1000-7263",
          • "description": "Option 1"
          },
        • {
          • "id": "1000-7268",
          • "description": "Option 2"
          }
        ]
      },
    • "pf5": {
      • "name": "Configured PowerField 5 Name",
      • "option": "OPTIONAL",
      • "value": "FOO",
      • "length": 30
      },
    • "pf6": {
      • "name": "Configured PowerField 6 Name",
      • "option": "OPTIONAL",
      • "value": "FOO",
      • "length": 30
      },
    • "pf7": {
      • "name": "Configured PowerField 7 Name",
      • "option": "OPTIONAL",
      • "value": "FOO",
      • "length": 30
      },
    • "pf8": {
      • "name": "Configured PowerField 8 Name",
      • "option": "OPTIONAL",
      • "value": "FOO",
      • "length": 30
      },
    • "phones": [
      • {
        • "id": "1000-39172",
        • "name": "Web",
        • "phone": {
          • "name": "phone",
          • "option": "OPTIONAL",
          • "value": "(333) 999-0000",
          • "length": 14
          },
        • "shipToPhone": {
          • "name": "phoneShipping",
          • "option": "OPTIONAL",
          • "value": false
          },
        • "shipToFax": {
          • "name": "faxShipping",
          • "option": "OPTIONAL",
          • "value": false
          },
        • "billToPhone": {
          • "name": "phoneBilling",
          • "option": "OPTIONAL",
          • "value": false
          },
        • "billToFax": {
          • "name": "faxBilling",
          • "option": "OPTIONAL",
          • "value": false
          },
        • "did": "1000-9563"
        },
      • {
        • "id": "1000-105285",
        • "name": "Personal",
        • "phone": {
          • "name": "phone",
          • "option": "REQUIRED",
          • "value": "3332221111",
          • "length": 14
          },
        • "did": "1000-7280"
        }
      ],
    • "emails": [
      • {
        • "id": "1000-44090",
        • "name": "Web",
        • "email": {
          • "name": "email",
          • "option": "OPTIONAL",
          • "value": "johndoe@ecrs.com"
          },
        • "ereceipt": null,
        • "did": "1000-11"
        },
      • {
        • "id": "1000-51792",
        • "name": "E-Mail",
        • "email": {
          • "name": "email",
          • "option": "OPTIONAL",
          • "value": "johndoe@ecrs.com"
          },
        • "billTo": {
          • "name": "emailBilling",
          • "option": "OPTIONAL",
          • "value": false
          },
        • "shipTo": {
          • "name": "emailShipping",
          • "option": "OPTIONAL",
          • "value": false
          },
        • "marketing": {
          • "name": "emailMarketing",
          • "option": "REQUIRED",
          • "value": false
          },
        • "ereceipt": {
          • "name": "emailReceipt",
          • "option": "REQUIRED",
          • "value": true
          },
        • "did": "1000-7247",
        • "eReceipt": {
          • "name": "emailReceipt",
          • "option": "REQUIRED",
          • "value": true
          }
        }
      ],
    • "addresses": [
      • {
        • "id": "1000-57638",
        • "name": "Home Address",
        • "street1": {
          • "name": "street1",
          • "option": "OPTIONAL",
          • "value": "277 Howard St.",
          • "length": 30
          },
        • "street2": {
          • "name": "street2",
          • "option": "OPTIONAL",
          • "value": "",
          • "length": 30
          },
        • "city": {
          • "name": "city",
          • "option": "OPTIONAL",
          • "value": "Boone",
          • "length": 20
          },
        • "state": {
          • "name": "state",
          • "option": "OPTIONAL",
          • "value": "NC",
          • "length": 2
          },
        • "postal": {
          • "name": "postal",
          • "option": "OPTIONAL",
          • "value": "28607",
          • "length": 15
          },
        • "country": {
          • "name": "country",
          • "option": "OPTIONAL",
          • "value": "US",
          • "length": 4
          },
        • "shipTo": {
          • "name": "addressShipping",
          • "option": "OPTIONAL",
          • "value": true
          },
        • "billTo": {
          • "name": "addressBilling",
          • "option": "OPTIONAL",
          • "value": false
          },
        • "did": "1000-4"
        }
      ]
    }
}

Response samples

Content type
application/json
"a567c10b-58cc-4372-a567-0e02b2c3c10b"

Verify Customer

Verifies changes to a customer's account using a verification code. This includes creating a new account.

Request Body schema: application/json
key
required
string

The key (UUID) returned by the initial Forgot Password request.

code
required
string

The verification code the shopper received.

Responses

Request samples

Content type
application/json
{
  • "key": "2aa895da-2c0c-4bfc-a682-082b80eb91e2",
  • "code": "735412"
}

Verify Email

Safely edits a shopper's email address.

If adding a new email address, a verification email will be sent to that address. Prompt the shopper to enter the verification code and submit it with the UUID to the Verify Customer endpoint. If the email address is already attached to the shopper under a different description, no verificationis required. If the email address is null or empty, it will be removed from the description if possible.

Request Body schema: application/json
descriptionId
required
string

The ID of the email description to edit.

email
string

The new email address. Omit to delete.

Responses

Response Schema: application/json
Any of
type
required
string
Enum: "VERIFICATION_EMAIL_SENT" "NO_VERIFICATION_REQUIRED" "SUCCESSFULLY_DELETED"

The type of success.

"VERIFICATION_EMAIL_SENT" if the address needs verification.

"NO_VERIFICATION_REQUIRED" if the address does not need verification (because it is already on the shopper's record).

"SUCCESSFULLY_DELETED" if the address was successfully deleted.

key
required
string

The key (UUID) associated with this verification request. Submit it with the code the shopper received to the Verify Customer endpoint to add the email to the shopper's record.

Response Schema: application/json
code
required
integer <int32>
Enum: -5 -12

Refer to "Error Codes" in API Responses for a complete reference.

message
required
string

Summary of the error.

Request samples

Content type
application/json
{
  • "descriptionId": "1000-7",
  • "email": "user@mail.com"
}

Response samples

Content type
application/json
Example

Returned when verification is required.

{
  • "type": "VERIFICATION_EMAIL_SENT",
  • "uuid": "550e8400-e29b-41d4-a716-446655440000"
}

Password Reset

The endpoints in this group allow shoppers to reset their passwords. Here is an overview of the steps involved.

  1. Obtain a key (UUID) by calling the Forgot Password endpoint. This will send a verification code to the shopper by email, text, or call.
  2. When the shopper enters the verification code, submit both the code and the key to the Verify Shopper endpoint to receive a reset token.
    • If multiple matching accounts are found, prompt the shopper to select an account and submit the code, key, and user ID to Verify Selected Account. This situation is uncommon, and the verification code is only valid for a single account, so this does not permit changing the password for an account the shopper does not control.
  3. Before prompting the shopper to enter a new password, validate the reset token with the Validate Token endpoint to ensure it has not expired.
  4. Submit the new password and reset token to the Reset Password endpoint to change the password.

Call Script

Method called by third party to get script to read over the phone to a customer

path Parameters
code
required
string
Example: 123456

Code that user is meant to enter for password reset

Responses

Response samples

Content type
application/xml
<Response> 
    <Say loop="3">Your verification code is 1. 2. 3. 4. 5. 6.</Say> 
</Response>

Forgot Password

Creates a password reset token and contacts a shopper with a verification code to reset their password.

Request Body schema: application/json
contact
required
string

The email address or phone number to contact the shopper for password reset. If method is EMAIL, this must be an email address. If it is TEXT or CALL, this must be a phone number.

method
required
string
Enum: "EMAIL" "TEXT" "CALL"

How to contact the shopper with the verification code.

Responses

Response Schema: application/json
code
required
integer <int32>
Value: 0
message
required
string
Value: "Success"
data
required
string

A key (UUID) that identifies the newly created reset token. This must be used with the shopper's code to complete verification in Verify Shopper.

Response Schema: application/json
code
required
integer <int32>
Value: -1
message
required
string
Value: "Customer Password Recovery Not Allowed from your network({IP_ADDRESS})."

Request samples

Content type
application/json
{
  • "contact": "jsmith@mail.com",
  • "method": "EMAIL"
}

Response samples

Content type
application/json
{
  • "code": 0,
  • "message": "Success",
  • "data": "2aa895da-2c0c-4bfc-a682-082b80eb91e2"
}

Validate Token

Checks if a given token is valid. Useful to reject a reset attempt before the shopper creates a new password. A token can be obtained by calling the Verify Shopper endpoint.

path Parameters
token
required
string

The reset token to validate.

Responses

Response Schema: application/json
code
required
integer <int32>
Value: 0
message
required
string
Value: "Success"
data
required
string
Enum: "VERIFICATION_CODE" "PASSWORD_RESET" "REMEMBER_ME" "CHECKIN"

The type of the token. "VERIFICATION_CODE": Used to verify new shopper accounts. "PASSWORD_RESET": Used to reset a shopper's password. "REMEMBER_ME": Unused "CHECKIN": Unused.

Response Schema: application/json
code
required
integer <int32>
Value: -1
message
required
string
Value: "Token is no longer valid."

Response samples

Content type
application/json
{
  • "code": 0,
  • "message": "Success",
  • "data": "PASSWORD_RESET"
}

Reset Password

Resets a shopper's password using a reset token. A token can be obtained by calling the Verify Shopper endpoint.

path Parameters
token
required
string

The reset token to use.

Request Body schema: application/json
password
required
string [ 8 .. 255 ] characters

The new password to set. A valid password must contain a capital letter, a lowercase letter, a number, and a symbol.

Responses

Response Schema: application/json
code
required
integer <int32>
Value: -1
message
required
string
Value: "Customer Password Recovery Not Allowed from your network({IP_ADDRESS})."

Request samples

Content type
application/json
{
  • "password": "Password123!"
}

Response samples

Content type
application/json
{
  • "code": -1,
  • "message": "Customer Password Recovery Not Allowed from your network({IP_ADDRESS})."
}

Verify Shopper

Gets the reset token corresponding to a key (UUID) if the verification code is valid. A key can be obtained by calling the Forgot Password endpoint. If there is exactly one account that matches the given key, the token is returned directly. In rare cases, the key may match multiple accounts. If this happens, a list of matching accounts is returned. Verification must be completed with the Verify Selected Account endpoint.

Request Body schema: application/json
key
required
string

The key (UUID) returned by the initial Forgot Password request.

code
required
string

The verification code the shopper received.

Responses

Response Schema: application/json
One of
code
required
integer <int32>
Value: 0
message
required
string
Value: "Success"
data
required
string

Reset token.

Request samples

Content type
application/json
{
  • "key": "2aa895da-2c0c-4bfc-a682-082b80eb91e2",
  • "code": "735412"
}

Response samples

Content type
application/json
Example
{
  • "code": 0,
  • "message": "Success",
  • "data": "string"
}

Verify Selected Account

Gets the reset token corresponding to a key and specific account if the verification code is valid. Use only if multiple accounts matched a key when calling the Verify Shopper endpoint.

path Parameters
account
required
string

The ID of the account to verify.

Request Body schema: application/json
key
required
string

The key (UUID) returned by the initial Forgot Password request.

code
required
string

The verification code the shopper received.

Responses

Response Schema: application/json
code
required
integer <int32>
Value: 0
message
required
string
Value: "Success"
data
required
string

Reset token.

Request samples

Content type
application/json
{
  • "key": "2aa895da-2c0c-4bfc-a682-082b80eb91e2",
  • "code": "735412"
}

Response samples

Content type
application/json
{
  • "code": 0,
  • "message": "Success",
  • "data": "string"
}

Store

Endpoints in this group control store-specific options, allowing users to access information set on the Web Profile for the store in Web Office. This includes:

  • Returning a blank page, custom source details, header scripts, the Web App Manifest (for PWA installation), store detail objects, style.css, and .well-known files.
  • Submitting a Contact Us form.
  • Returning the store’s configuration, including site URL, substitution policies, accessibility disclaimers, and features like cart and list functionalities.

Blank Page

Always returns a success response for the purposes of redirecting to a blank page as long as the frontend can communicate with the backend.

Responses

Configuration

Returns the store's configuration. This is mostly controlled by the Web Profile set on a Store in WebOffice.

Responses

Response Schema: application/vnd.ecrs.webcart-2.0+json;q=1.0, application/json;q=0.9
object (StoreDto)
siteUrl
string

Site URL for this store's WebCart

object (WebAppManifestDto)
object (MenuDto)
allowSubstitutions
boolean

Indicates whether the allow substitution checkbox should be displayed on each line item in the cart

substitutionPolicy
string

Store's substitution policy

accessibilityDisclaimer
string

Accessibility disclaimer if set by the merchant. Set by Advanced Setting com.ecrsoft.tserver.webcart.accessibilityDisclaimer

instructionsPerItem
boolean

Indicates whether the shopper should be able to add per-item notes to an order

instructionsPerTransaction
boolean

Indicates whether the shopper should be able to add per-transaction notes to an order

innerSearch
boolean

Indicates whether the shopper should be able to do additional searches from within the primary search. Controlled by Advanced Setting com.ecrsoft.tserver.webcart.innerSearch

cartEnabled
boolean

Indicates whether the cart is enabled in this web store. If this is set to false, shoppers should not be able to add items to their cart nor checkout.

listEnabled
boolean

Indicates whether List functionality should be available to logged-in shoppers

itemSearchEnabled
boolean

Indicates whether Item Search should be available on this web store. If this is set to false, there should be no search bar and shoppers should not be able to browse.

multistore
boolean

Indicates whether this is a multi-store environment. If set to true, the shopper should be able to choose the store they are shopping at.

allowCustomerAdd
boolean

Indicates whether guest shoppers should be allowed to register for new accounts.

requireCustomerToCheckout
boolean

Indicates whether a logged in customer must be associated for checkout to succeed.

allowCouponClipping
boolean

Indicates whether coupon clipping is enabled for this web store

billingPhoneNumberRequired
boolean

Indicates whether the Billing Phone Number is required to be collected from the shopper

pastOrdersEnabled
boolean

Indicates whether Past Orders are enabled. If set to true the shopper should be able to view their historically placed orders.

pastItemsEnabled
boolean

Indicates whether Past Items are enabled. If set to true the shopper should be able to view items that they have historically ordered.

rewardsEnabled
boolean

Indicates whether Rewards are enabled. If set to true the shopper should be able to view their existing reward progress.

walletEnabled
boolean

Indicates whether the Wallet is enabled. If set to true a logged in shopper should be able to associate tokenized cards to their account.

shiftFourEnabled
boolean

Indicates whether this web store is using Shift4 as a payment provider.

socialNetworksEnabled
boolean

Indicates whether Social Networks are enabled. If set to true the shopper should be able to navigate to a merchant's social links on the web store.

customerCardEnabled
boolean

Indicates whether Customer Card is enabled. If set to true the shopper should be able to view / present a Customer Card that displays a barcode of their account number, for customer association purposes.

allowEditOrder
boolean

Indicates whether the shopper should be allowed to edit their order after they have placed it.

pwaEnabled
boolean

Indicates whether the Progressive Web App (PWA) is enabled. If this is set to true then the client should request the app to be installed.

loyaltyName
string

The name of the default Loyalty program if it exists.

loyaltyDecimal
boolean

Indicates whether the decimal should be displayed for points on the default Loyalty program.

allowGiftCardCheck
boolean

Indicates whether shoppers should be able to check gift card balances

allowEGiftCards
boolean

Indicates whether E-Gift Cards are enabled for this web store. If set to true, E-Gift Cards should be purchasable on the site.

object (GiftCardProfileDto)

The E-Gift Card profile on the Transaction Security Profile.

maxLists
integer <int32> [ 1 .. 99 ]
Default: 10

The maximum number of lists a shopper should be able to configure.

maxListItems
integer <int32> [ 1 .. 499 ]
Default: 100

The maximum number of items a shopper should be able to add to an individual list.

defaultCountry
integer <int32>

Indicates the ID for the default country that should be selected in checkout.

defaultState
integer <int32>

Indicates the ID for the default State / Province that should be selected in checkout.

mapPinAddress
boolean

Indicates whether checkout displays option to select delivery location on Map

sellOutOfStock
boolean
hidePriceUntilLogin
boolean
displayQuantity
boolean
displayAvailability
boolean
limitedAvailabilityQuantity
number
limitedAvailabilityTerm
string
inStockTerm
string
outOfStockTerm
string
onOrderTerm
string
allowSpecialOrder
boolean
deliveryNotificationsDefaultToOff
boolean
preventOfflineCheckout
boolean
cmsEnabled
boolean
googlePayEnabled
boolean

Indicates whether Google Pay is enabled.

storeBillingName
string

The name of the store to show to shoppers for billing purposes

applePayEnabled
boolean

Indicates whether Apple Pay is enabled.

applePayMerchantIdentifier
string

Apple Pay Merchant Identifier

showGoogleLogin
boolean

Indicates whether Google Login should be shown on the log in page

payNowEnabled
boolean
lineBustEnabled
boolean
payNowTotalLimit
number
payNowItemCountLimit
integer <int32>
recommendationsEnabled
boolean
homepageRecommendationsEnabled
boolean
couponRecommendationsEnabled
boolean
onSaleRecommendationsEnabled
boolean
scanAndGoEnabled
boolean
scanTimeout
integer <int32>
webCartPriceLevel
integer <int32>
placeholderImage
string
i18nEnabled
boolean
i18nLanguage
Array of strings
cdn
string
googleMapsApiKey
string
googleMapsStrictAddressCheck
boolean
googleAnalyticsId
string
facebookPixelId
string
signifydKey
string
redPepperClientId
integer <int32>
redPepperUrl
string
redPepperHideInStoryOnlyItems
boolean
includeCircularLinkInMenu
boolean
circularLinkText
string
orderTypesEnabled
boolean
orderTypesMessage
string
Array of objects (SocialProvider)
Array of objects (PaymentProvider)
Array of objects (RowDto)
Array of objects (CountryDto)
Array of objects (StateDto)
Array of objects (AdDto)
Array of objects (CustomSourceDto)
Array of objects (ThirdPartyServiceProfileDto)
Array of objects (OrderTypeDto)
object
Array of objects (CustomerGroupCategoryDto)
Array of objects (BeaconDto)
googleTagManagerId
string
youMayAlsoLikeLabel
string
frequentlyBoughtItemLabel
string
goesWellWithLabel
string
recommendedSubstitutesLabel
string
cortexKey
string
cardknoxEbtIfieldsKey
string
ebtBalanceTimeout
integer <int32>
whitelistEbt
boolean
showAllSpecialTenderBadges
boolean
Default: false

Controls whether items should display their eligibility on the item card for all tenders, instead of the default behavior of displaying only EBT eligibility. Controlled by Advanced Setting com.ecrsoft.tserver.webcart.itembadges.showAllSpecialTenders

allowAccountDeletion
boolean
Default: false

Controls whether shoppers see the option to trigger an account removal request Controlled by Advanced Setting com.ecrsoft.tserver.webcart.account.allowAccountDeletion

Response samples

Content type
application/vnd.ecrs.webcart-2.0+json;q=1.0, application/json;q=0.9
{
  • "store": {
    • "id": "1000-10",
    • "name": "One With Nature",
    • "number": "ABC1",
    • "image": "1000-11",
    • "latitude": 36.217646,
    • "longitude": -81.684149,
    • "webStore": true,
    • "addresses": [
      • {
        • "id": "string",
        • "name": "string",
        • "street1": "string",
        • "street2": "string",
        • "city": "string",
        • "state": "string",
        • "postal": "string",
        • "country": "string",
        • "shipTo": true,
        • "billTo": true,
        • "location": true,
        • "webcart": true,
        • "did": "string"
        }
      ],
    • "emails": [
      • {
        • "id": "string",
        • "name": "string",
        • "email": "string",
        • "billTo": true,
        • "shipTo": true,
        • "marketing": true,
        • "location": true,
        • "webcart": true,
        • "ereceipt": true,
        • "did": "string"
        }
      ],
    • "phones": [
      • {
        • "id": "string",
        • "name": "string",
        • "phone": "string",
        • "billToPhone": true,
        • "billToFax": true,
        • "shipToPhone": true,
        • "shipToFax": true,
        • "fax": true,
        • "locationPhone": true,
        • "locationFax": true,
        • "webcartPhone": true,
        • "did": "string"
        }
      ],
    • "faxes": [
      • {
        • "id": "string",
        • "name": "string",
        • "phone": "string",
        • "billToPhone": true,
        • "billToFax": true,
        • "shipToPhone": true,
        • "shipToFax": true,
        • "fax": true,
        • "locationPhone": true,
        • "locationFax": true,
        • "webcartPhone": true,
        • "did": "string"
        }
      ]
    },
  • "webAppManifest": {},
  • "mainMenu": {
    • "id": "1000-10",
    • "name": "WebCart Upper Menu",
    • "children": [
      • { }
      ],
    • "orderTypeImage": "1000-2"
    },
  • "allowSubstitutions": true,
  • "substitutionPolicy": "Unless you tell us differently using the \\\"Add Instructions\\\" feature, we won't substitute items you ordered with other items if the items you ordered are not available.",
  • "accessibilityDisclaimer": "string",
  • "instructionsPerItem": true,
  • "instructionsPerTransaction": true,
  • "innerSearch": true,
  • "cartEnabled": true,
  • "listEnabled": true,
  • "itemSearchEnabled": true,
  • "multistore": true,
  • "allowCustomerAdd": true,
  • "requireCustomerToCheckout": true,
  • "allowCouponClipping": true,
  • "billingPhoneNumberRequired": true,
  • "pastOrdersEnabled": true,
  • "pastItemsEnabled": true,
  • "rewardsEnabled": true,
  • "walletEnabled": true,
  • "shiftFourEnabled": true,
  • "socialNetworksEnabled": true,
  • "customerCardEnabled": true,
  • "allowEditOrder": true,
  • "pwaEnabled": true,
  • "loyaltyName": "Healthy Rewards",
  • "loyaltyDecimal": true,
  • "allowGiftCardCheck": true,
  • "allowEGiftCards": true,
  • "giftCardProfile": {
    • "policy": "string",
    • "minCardValue": 0,
    • "maxCardValue": 0,
    • "designs": [
      • {
        • "id": "string",
        • "image": "string"
        }
      ],
    • "egiftCardCustomAmount": true,
    • "egiftCardAmounts": [
      • 0
      ]
    },
  • "maxLists": 10,
  • "maxListItems": 100,
  • "defaultCountry": 15,
  • "defaultState": 34,
  • "mapPinAddress": true,
  • "sellOutOfStock": true,
  • "hidePriceUntilLogin": true,
  • "displayQuantity": true,
  • "displayAvailability": true,
  • "limitedAvailabilityQuantity": 0,
  • "limitedAvailabilityTerm": "string",
  • "inStockTerm": "string",
  • "outOfStockTerm": "string",
  • "onOrderTerm": "string",
  • "allowSpecialOrder": true,
  • "deliveryNotificationsDefaultToOff": true,
  • "preventOfflineCheckout": true,
  • "cmsEnabled": true,
  • "googlePayEnabled": true,
  • "storeBillingName": "string",
  • "applePayEnabled": true,
  • "applePayMerchantIdentifier": "string",
  • "showGoogleLogin": true,
  • "payNowEnabled": true,
  • "lineBustEnabled": true,
  • "payNowTotalLimit": 0,
  • "payNowItemCountLimit": 0,
  • "recommendationsEnabled": true,
  • "homepageRecommendationsEnabled": true,
  • "couponRecommendationsEnabled": true,
  • "onSaleRecommendationsEnabled": true,
  • "scanAndGoEnabled": true,
  • "scanTimeout": 0,
  • "webCartPriceLevel": 0,
  • "placeholderImage": "string",
  • "i18nEnabled": true,
  • "i18nLanguage": [
    • "string"
    ],
  • "cdn": "string",
  • "googleMapsApiKey": "string",
  • "googleMapsStrictAddressCheck": true,
  • "googleAnalyticsId": "string",
  • "facebookPixelId": "string",
  • "signifydKey": "string",
  • "redPepperClientId": 0,
  • "redPepperUrl": "string",
  • "redPepperHideInStoryOnlyItems": true,
  • "includeCircularLinkInMenu": true,
  • "circularLinkText": "string",
  • "orderTypesEnabled": true,
  • "orderTypesMessage": "string",
  • "socialProviders": [
    • {
      • "provider": "string",
      • "userKey": "string",
      • "authId": "string",
      • "auth": true
      }
    ],
  • "paymentProviders": [
    • {
      • "provider": "string"
      }
    ],
  • "rows": [
    • {
      • "id": "string",
      • "name": "string"
      }
    ],
  • "countries": [
    • {
      • "id": 0,
      • "description": "string",
      • "abbrv": "string"
      }
    ],
  • "states": [
    • {
      • "id": 0,
      • "country": 0,
      • "description": "string",
      • "abbrv": "string"
      }
    ],
  • "ads": [
    • {
      • "id": "string",
      • "order": 0,
      • "label": "string",
      • "type": 0,
      • "link": "string",
      • "image": "string"
      }
    ],
  • "customSources": [
    • {
      • "id": "string",
      • "type": 0,
      • "label": "string",
      • "content": "string"
      }
    ],
  • "thirdPartyServiceProfiles": [
    • {
      • "id": 0,
      • "name": "string",
      • "thirdPartyServiceProvider": {
        • "id": 0,
        • "name": "string",
        • "type": 0
        }
      }
    ],
  • "orderTypes": [
    • {
      • "id": "string",
      • "name": "string",
      • "urlSlug": "string",
      • "menu": {
        • "id": "1000-10",
        • "name": "WebCart Upper Menu",
        • "children": [
          • { }
          ],
        • "orderTypeImage": "1000-2"
        },
      • "ads": [
        • {
          • "id": "string",
          • "order": 0,
          • "label": "string",
          • "type": 0,
          • "link": "string",
          • "image": "string"
          }
        ],
      • "giftCard": true,
      • "listOnly": true,
      • "hidden": true,
      • "autoFinalize": true,
      • "image": "string",
      • "urlEncodedSlug": "string"
      }
    ],
  • "recaptchaScenarioStatuses": {
    • "property1": true,
    • "property2": true
    },
  • "customerGroups": [
    • {
      • "id": "string",
      • "name": "string",
      • "canEdit": true,
      • "mutuallyExclusive": true,
      • "household": true,
      • "groups": [
        • {
          • "id": "string",
          • "name": "string"
          }
        ]
      }
    ],
  • "beacons": [
    • {
      • "id": "string",
      • "name": "string",
      • "uuid": "string",
      • "url": "string"
      }
    ],
  • "googleTagManagerId": "string",
  • "youMayAlsoLikeLabel": "string",
  • "frequentlyBoughtItemLabel": "string",
  • "goesWellWithLabel": "string",
  • "recommendedSubstitutesLabel": "string",
  • "cortexKey": "string",
  • "cardknoxEbtIfieldsKey": "string",
  • "ebtBalanceTimeout": 0,
  • "whitelistEbt": true,
  • "showAllSpecialTenderBadges": false,
  • "allowAccountDeletion": false
}

Contact

Submits a Contact Us form which will send an e-mail to the store. It will also send an acknowledgement email to the e-mail in the form.

Request Body schema: application/json
name
string
email
string
subject
string
message
string
recaptcha
string

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "email": "string",
  • "subject": "string",
  • "message": "string",
  • "recaptcha": "string"
}

Custom Source by ID

Returns the Custom Source detail for the ID passed in. Custom sources are set on the store's configuration and define custom content (e.g. entire HTML documents, or CSS overrides) to personalize their website.

path Parameters
id
required
string

Responses

Response Schema: application/json
id
string
type
integer <int32>
label
string
content
string

Response samples

Content type
application/json
{
  • "id": "string",
  • "type": 0,
  • "label": "string",
  • "content": "string"
}

Header

Returns scripts that should be injected in the index.html head tag based on the store's configuration.

Responses

Response Schema: application/javascript
object (EntityTag)
content
string

index.html

Returns the generated index.html file based on the store's configuration.

Responses

Response Schema: text/html
object (EntityTag)
content
string

Manifest

Returns the Web App Manifest for the purposes of installing a Progressive Web App (PWA).

Responses

Response Schema: application/json
name
string

Name of this store's web application. Defaults to the store name but configurable via advanced setting com.ecrsoft.tserver.webcart.app.name

short_name
string

The shortened name displayed when the PWA is installed for this web application.

Array of objects (AppIconDto)

Icons for this store's web application, such as different sizes of their favicon.

theme_color
string

Primary color of the theme for this store's web application

background_color
string

Background color of the theme for this store's web application.

display
string
Value: "standalone"

Defines the display property in the manifest for this store's web application. WebCart always returns standalone meaning it should be a standalone application

start_url
string

Defines the start URL of this store's web application.

scope
string

Defines the scope of this store's web application. Set to the same as the startUrl.

orientation
string
Value: "portrait"

Defines the orientation property in the manifest for this store's web application. WebCart always returns portrait meaning it should be used in portrait mode.

description
string

Defines the description property in the manifest for this store's web application. By default this gets set to "Shop online with " + storeName + "!" but can be configured with the Advanced Setting com.ecrsoft.tserver.webcart.app.description

dir
string
Value: "ltr"

Defines the dir global attribute for this store's web application. WebCart always sets this as ltr meaning the text should be read from left-to-right.

Response samples

Content type
application/json
{}

Stores

Returns detail objects for the stores set on the WebCart configuration.

Responses

Response Schema: application/json
Array
object (id)

ID of this store

name
string

Name of the store

number
string

Number of this store

object (image)

ID of this store's web logo

latitude
number

Latitude of the this store

longitude
number

Longitude of the this store

webStore
boolean

Indicates whether this store has a Web Profile (and thus should have a WebCart)

Array of objects (AddressDto)

Physical addresses associated with this store

Array of objects (StoreEmailDto)

E-mail addresses associated with this store

Array of objects (StorePhoneDto)

Phone numbers associated with this store

Array of objects (StorePhoneDto)

Fax numbers associated with this store

Response samples

Content type
application/json
[
  • {
    • "id": "1000-10",
    • "name": "One With Nature",
    • "number": "ABC1",
    • "image": "1000-11",
    • "latitude": 36.217646,
    • "longitude": -81.684149,
    • "webStore": true,
    • "addresses": [
      • {
        • "id": "string",
        • "name": "string",
        • "street1": "string",
        • "street2": "string",
        • "city": "string",
        • "state": "string",
        • "postal": "string",
        • "country": "string",
        • "shipTo": true,
        • "billTo": true,
        • "location": true,
        • "webcart": true,
        • "did": "string"
        }
      ],
    • "emails": [
      • {
        • "id": "string",
        • "name": "string",
        • "email": "string",
        • "billTo": true,
        • "shipTo": true,
        • "marketing": true,
        • "location": true,
        • "webcart": true,
        • "ereceipt": true,
        • "did": "string"
        }
      ],
    • "phones": [
      • {
        • "id": "string",
        • "name": "string",
        • "phone": "string",
        • "billToPhone": true,
        • "billToFax": true,
        • "shipToPhone": true,
        • "shipToFax": true,
        • "fax": true,
        • "locationPhone": true,
        • "locationFax": true,
        • "webcartPhone": true,
        • "did": "string"
        }
      ],
    • "faxes": [
      • {
        • "id": "string",
        • "name": "string",
        • "phone": "string",
        • "billToPhone": true,
        • "billToFax": true,
        • "shipToPhone": true,
        • "shipToFax": true,
        • "fax": true,
        • "locationPhone": true,
        • "locationFax": true,
        • "webcartPhone": true,
        • "did": "string"
        }
      ]
    }
]

style.css

Returns the generated style.css based on the store's configuration. This should define the theme for the site.

Responses

Response Schema: text/css
object (EntityTag)
content
string

.well-known

Returns the .well-known files based on the ECRS-WELLKNOWN request header and the merchant's configuration. This is controlled by the Advanced Setting com.ecrsoft.tserver.webcart.well-known.[filename] and expects the name of the file to be present in the ECRS-WELLKNOWN request header.

Responses

Response Headers
Content-Disposition
any
Response Schema: application/octet-stream
Schema not provided

Style

The endpoints in this group can control the overall theme of your site. They generate a CSS style sheet using all Custom Sources in the Web Profile that are classified as MAIN_SCSS_HEADER or MAIN_SCSS_FOOTER.

Custom sources are set on the store's configuration and define custom content (e.g. CSS overrides) to personalize their website.

These endpoints are primarily intended to style WebCart according to the merchant’s Custom Sources. Integrators using WebCart APIs to operate WebCart behind the scenes while maintaining their own UI may find these options limited. However, integrators developing their own applications can use these style endpoints to update styles dynamically without needing to deploy a new app version.

Get Theme Configuration Deprecated

Returns the theme configuration including primary and secondary colors. Requires employee authentication.

This endpoint is deprecated, use Get CSS Theme instead.

Responses

Response Schema: application/json
primary
required
string
Default: "#0d6efd"

Primary theme color in hex format

secondary
required
string
Default: "#6c757d"

Secondary theme color in hex format

Response samples

Content type
application/json
{
  • "primary": "#0d6efd",
  • "secondary": "#6c757d"
}

Get CSS Theme

Returns the CSS theme file for styling the web application. Uses ETag for caching.

Responses

Account

The endpoints in this group allow shoppers to retrieve and change account data on their WebCart profile. This includes:

  • The ability to set a default email, add or delete an EBT Token or Credit Card Token, retrieve relevant coupons and rewards, and retrieve and update group membership in customer programs.
  • The ability to retrieve and update customer information such as name, company, Power Fields, and contact information.
  • The ability to receive claims, reset passwords, link social accounts, set notification preferences, and access Wallet information.

Add a Web email to the customer's account. Deprecated

This endpoint is deprecated.

Request Body schema: application/json
email
string

Email to be added to the customer account. This must be a valid email.

Responses

Request samples

Content type
application/json
{
  • "email": "string"
}

Add an EBT token to the user's wallet

This saves a tokenized EBT card to the customer's wallet.
This endpoint is rate limited, and if reCAPTCHA is configured, requires a reCAPTCHA response.

Request Body schema: application/json
object (WebAuthCard)

The EBT card to be added to the customer's wallet.

recaptcha
string

The recaptcha response from the client. This is used to validate the request and prevent abuse.

Responses

Response Schema: application/json
autoReloadStatus
string
Enum: "ENABLED" "DISABLED" "NOT_ALLOWED"

Represents the status of auto-reload functionality for a customer.

reloadAmount
number

The reload amount for the customer's default token.

defaultReloadAmount
number

The default reload amount from the WebCart terminal's authorization security profile.

Array of objects (ChargeAccountBalance)

A list of charge accounts associated with the customer.

tokenStatus
string
Enum: "NORMAL" "OFFLINE" "DISABLED" "NORMAL" "OFFLINE" "DISABLED"

Represents the status of returning tokenization information from the server

Array of objects (TokenInfo)

A list of tokens associated with the customer.
Expired tokens are not returned.
If the provider is CardConnect or Stripe, and the card brand is not EBT, then the token must have sufficient billing information to be returned.

object (creditPaymentMethod)

If this WebCart's WebProfile has a credit card payment method enabled, this will return the first credit card payment method found.

object (ebtPaymentMethod)

If this WebCart's WebProfile has an EBT payment method enabled, this will return the first EBT payment method found.

Request samples

Content type
application/json
{
  • "card": {
    • "fields": { },
    • "id": "string",
    • "type": "EBT",
    • "finalDigits": "string",
    • "billingPostal": "string",
    • "nameOnCard": "string",
    • "email": "string",
    • "company": "string",
    • "expiry": "string",
    • "billingStreet2": "string",
    • "bin": "string",
    • "billingStreet1": "string",
    • "billingCity": "string",
    • "token": "string",
    • "billingCountry": "string",
    • "shippingStreet2": "string",
    • "shippingCity": "string",
    • "shippingCountry": "string",
    • "billingPhone": "string",
    • "shippingState": "string",
    • "shippingStreet1": "string",
    • "shippingPhone": "string",
    • "shippingPostal": "string",
    • "billingState": "string",
    • "cvv": "string",
    • "firstName": "string",
    • "lastName": "string"
    },
  • "recaptcha": "string"
}

Response samples

Content type
application/json
{
  • "autoReloadStatus": "ENABLED",
  • "reloadAmount": 50,
  • "defaultReloadAmount": 25,
  • "chargeAccounts": [
    • {
      • "id": "1000-34",
      • "name": "Charge Account",
      • "balance": 100,
      • "creditLimit": 1000
      }
    ],
  • "tokenStatus": "NORMAL",
  • "tokens": [
    • {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      }
    ],
  • "creditPaymentMethod": {
    • "pmId": "1000-27966",
    • "methodId": "1000-27966",
    • "name": "Pay Online",
    • "available": true,
    • "type": 0,
    • "testing": true,
    • "balance": 0,
    • "eligible": 0,
    • "minimum": 0,
    • "maximum": 0,
    • "token": {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      },
    • "provider": "ecrs-charge",
    • "iframePath": "string",
    • "clientKey": "string",
    • "accessBlock": "string",
    • "serverPath": "string",
    • "iframePropertyQueryCount": 0,
    • "merchantId": "string",
    • "countryCode": "string",
    • "currencyCode": "string",
    • "applePayMerchantIdentifier": "string",
    • "googlePayMerchantId": "string"
    },
  • "ebtPaymentMethod": {
    • "pmId": "1000-27966",
    • "methodId": "1000-27966",
    • "name": "Pay Online",
    • "available": true,
    • "type": 0,
    • "testing": true,
    • "balance": 0,
    • "eligible": 0,
    • "minimum": 0,
    • "maximum": 0,
    • "token": {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      },
    • "provider": "ecrs-charge",
    • "iframePath": "string",
    • "clientKey": "string",
    • "accessBlock": "string",
    • "serverPath": "string",
    • "iframePropertyQueryCount": 0,
    • "merchantId": "string",
    • "countryCode": "string",
    • "currencyCode": "string",
    • "applePayMerchantIdentifier": "string",
    • "googlePayMerchantId": "string"
    }
}

Add a token to the customer's wallet

This saves a tokenized card to the customer's wallet.
This endpoint is rate limited and if reCAPTCHA is configured, requires a reCAPTCHA response.
To save a tokenized card for CardConnect and Stripe, WebCart will perform an authorization and reversal of one dollar to verify the authenticity of the card.

Request Body schema: application/json
property name*
additional property
string

Responses

Response Schema: application/json
autoReloadStatus
string
Enum: "ENABLED" "DISABLED" "NOT_ALLOWED"

Represents the status of auto-reload functionality for a customer.

reloadAmount
number

The reload amount for the customer's default token.

defaultReloadAmount
number

The default reload amount from the WebCart terminal's authorization security profile.

Array of objects (ChargeAccountBalance)

A list of charge accounts associated with the customer.

tokenStatus
string
Enum: "NORMAL" "OFFLINE" "DISABLED" "NORMAL" "OFFLINE" "DISABLED"

Represents the status of returning tokenization information from the server

Array of objects (TokenInfo)

A list of tokens associated with the customer.
Expired tokens are not returned.
If the provider is CardConnect or Stripe, and the card brand is not EBT, then the token must have sufficient billing information to be returned.

object (creditPaymentMethod)

If this WebCart's WebProfile has a credit card payment method enabled, this will return the first credit card payment method found.

object (ebtPaymentMethod)

If this WebCart's WebProfile has an EBT payment method enabled, this will return the first EBT payment method found.

Request samples

Content type
application/json
{
  • "property1": "string",
  • "property2": "string"
}

Response samples

Content type
application/json
{
  • "autoReloadStatus": "ENABLED",
  • "reloadAmount": 50,
  • "defaultReloadAmount": 25,
  • "chargeAccounts": [
    • {
      • "id": "1000-34",
      • "name": "Charge Account",
      • "balance": 100,
      • "creditLimit": 1000
      }
    ],
  • "tokenStatus": "NORMAL",
  • "tokens": [
    • {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      }
    ],
  • "creditPaymentMethod": {
    • "pmId": "1000-27966",
    • "methodId": "1000-27966",
    • "name": "Pay Online",
    • "available": true,
    • "type": 0,
    • "testing": true,
    • "balance": 0,
    • "eligible": 0,
    • "minimum": 0,
    • "maximum": 0,
    • "token": {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      },
    • "provider": "ecrs-charge",
    • "iframePath": "string",
    • "clientKey": "string",
    • "accessBlock": "string",
    • "serverPath": "string",
    • "iframePropertyQueryCount": 0,
    • "merchantId": "string",
    • "countryCode": "string",
    • "currencyCode": "string",
    • "applePayMerchantIdentifier": "string",
    • "googlePayMerchantId": "string"
    },
  • "ebtPaymentMethod": {
    • "pmId": "1000-27966",
    • "methodId": "1000-27966",
    • "name": "Pay Online",
    • "available": true,
    • "type": 0,
    • "testing": true,
    • "balance": 0,
    • "eligible": 0,
    • "minimum": 0,
    • "maximum": 0,
    • "token": {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      },
    • "provider": "ecrs-charge",
    • "iframePath": "string",
    • "clientKey": "string",
    • "accessBlock": "string",
    • "serverPath": "string",
    • "iframePropertyQueryCount": 0,
    • "merchantId": "string",
    • "countryCode": "string",
    • "currencyCode": "string",
    • "applePayMerchantIdentifier": "string",
    • "googlePayMerchantId": "string"
    }
}

Get customer claims

Returns the active claims for the user.
Claims are used to determine the user's permissions, access levels, cart, order type information, price level, and more.

Responses

Response Schema: application/json
id
string
expiration
string <date-time>
subject
string
notBefore
string <date-time>
issuer
string
audience
string
issuedAt
string <date-time>
empty
boolean
property name*
additional property
object

Response samples

Content type
application/json
{
  • "id": "string",
  • "expiration": "2019-08-24T14:15:22Z",
  • "subject": "string",
  • "notBefore": "2019-08-24T14:15:22Z",
  • "issuer": "string",
  • "audience": "string",
  • "issuedAt": "2019-08-24T14:15:22Z",
  • "empty": true,
  • "property1": { },
  • "property2": { }
}

Get digital coupon information for the customer

This returns the status (available/clipped/expired/redeemed) of any third-party digital coupons available to the customer. Only digital coupons for configured digital coupon services will be returned.

Responses

Response Schema: application/json
clipped
Array of strings

List of clipped digital coupon IDs.

redeemed
Array of strings

List of redeemed digital coupon IDs.

expired
Array of strings

List of expired digital coupon IDs.

available
Array of strings

List of available digital coupon IDs.

availablePrefixes
Array of strings

List of available digital coupon ID prefixes. Only prefixes for enabled digital coupon providers are returned.

Response samples

Content type
application/json
{
  • "clipped": [
    • "string"
    ],
  • "redeemed": [
    • "string"
    ],
  • "expired": [
    • "string"
    ],
  • "available": [
    • "string"
    ],
  • "availablePrefixes": [
    • "string"
    ]
}

Delete a token from the customer's wallet

This allows the customer to delete a tokenized card from their wallet. This can be used for credit and EBT cards.
If any EBT tenders have been applied to the transaction with the token to be removed, they will be voided before removing the token.

Request Body schema: application/json
cardId
string

An identifier for the card from the card processor.

defaultToken
boolean

If true, this is considered the default token for the associated customer. The default token is used for secure auto-reload of charge accounts. EBT SNAP and EBT Cash tokens are not eligible to be default tokens.

brand
string

The brand of the card.

finalDigits
string

The last four digits of the card.

expiration
string

The card expiration date in MMYY format. This is the same format used by the card processor. For example, a card that expires in December 2025 would be represented as 1225.

authFk
string

The unique identifier for the authorization server profile configured on the WebCart terminal.

tenderType
integer <int32>

Tender type backing this token: 4 for Credit, 6 for EBT SNAP, 8 for Debit, 12 for EBT Cash, 14 for Gift Card, 23 for Tokenization.

Responses

Response Schema: application/json
autoReloadStatus
string
Enum: "ENABLED" "DISABLED" "NOT_ALLOWED"

Represents the status of auto-reload functionality for a customer.

reloadAmount
number

The reload amount for the customer's default token.

defaultReloadAmount
number

The default reload amount from the WebCart terminal's authorization security profile.

Array of objects (ChargeAccountBalance)

A list of charge accounts associated with the customer.

tokenStatus
string
Enum: "NORMAL" "OFFLINE" "DISABLED" "NORMAL" "OFFLINE" "DISABLED"

Represents the status of returning tokenization information from the server

Array of objects (TokenInfo)

A list of tokens associated with the customer.
Expired tokens are not returned.
If the provider is CardConnect or Stripe, and the card brand is not EBT, then the token must have sufficient billing information to be returned.

object (creditPaymentMethod)

If this WebCart's WebProfile has a credit card payment method enabled, this will return the first credit card payment method found.

object (ebtPaymentMethod)

If this WebCart's WebProfile has an EBT payment method enabled, this will return the first EBT payment method found.

Request samples

Content type
application/json
{
  • "cardId": "string",
  • "defaultToken": true,
  • "brand": "Visa",
  • "finalDigits": "1234",
  • "expiration": "1225",
  • "authFk": "1000-21",
  • "tenderType": 4
}

Response samples

Content type
application/json
{
  • "autoReloadStatus": "ENABLED",
  • "reloadAmount": 50,
  • "defaultReloadAmount": 25,
  • "chargeAccounts": [
    • {
      • "id": "1000-34",
      • "name": "Charge Account",
      • "balance": 100,
      • "creditLimit": 1000
      }
    ],
  • "tokenStatus": "NORMAL",
  • "tokens": [
    • {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      }
    ],
  • "creditPaymentMethod": {
    • "pmId": "1000-27966",
    • "methodId": "1000-27966",
    • "name": "Pay Online",
    • "available": true,
    • "type": 0,
    • "testing": true,
    • "balance": 0,
    • "eligible": 0,
    • "minimum": 0,
    • "maximum": 0,
    • "token": {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      },
    • "provider": "ecrs-charge",
    • "iframePath": "string",
    • "clientKey": "string",
    • "accessBlock": "string",
    • "serverPath": "string",
    • "iframePropertyQueryCount": 0,
    • "merchantId": "string",
    • "countryCode": "string",
    • "currencyCode": "string",
    • "applePayMerchantIdentifier": "string",
    • "googlePayMerchantId": "string"
    },
  • "ebtPaymentMethod": {
    • "pmId": "1000-27966",
    • "methodId": "1000-27966",
    • "name": "Pay Online",
    • "available": true,
    • "type": 0,
    • "testing": true,
    • "balance": 0,
    • "eligible": 0,
    • "minimum": 0,
    • "maximum": 0,
    • "token": {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      },
    • "provider": "ecrs-charge",
    • "iframePath": "string",
    • "clientKey": "string",
    • "accessBlock": "string",
    • "serverPath": "string",
    • "iframePropertyQueryCount": 0,
    • "merchantId": "string",
    • "countryCode": "string",
    • "currencyCode": "string",
    • "applePayMerchantIdentifier": "string",
    • "googlePayMerchantId": "string"
    }
}

Get customer groups for the customer

This returns any store coupons / customer groups linked to the customer's account.

Responses

Response Schema: application/json
Array
id
string

The unique identifier for the store coupon / customer group

expiration
string <date-time>

The expiration date of the store coupon / customer group. This is only set if the coupon is set to expire.
This can be set with the Days Valid or End Date fields in the Manage Store Coupons / Customer Groups screen in Web Office.

action
string
Enum: "add" "remove"

This field is used to allow customers to opt-in or opt-out of a store coupon / customer group.

Response samples

Content type
application/json
[
  • {
    • "id": "1000-34",
    • "expiration": "2019-08-24T14:15:22Z",
    • "action": "add"
    }
]

Opt-in / Opt-out a customer from customer group(s)

This is used to add / remove customers from one or more store coupon(s) / customer group(s).

Request Body schema: application/json
Array
id
string

The unique identifier for the store coupon / customer group

expiration
string <date-time>

The expiration date of the store coupon / customer group. This is only set if the coupon is set to expire.
This can be set with the Days Valid or End Date fields in the Manage Store Coupons / Customer Groups screen in Web Office.

action
string
Enum: "add" "remove"

This field is used to allow customers to opt-in or opt-out of a store coupon / customer group.

Responses

Response Schema: application/json
Array
id
string

The unique identifier for the store coupon / customer group

expiration
string <date-time>

The expiration date of the store coupon / customer group. This is only set if the coupon is set to expire.
This can be set with the Days Valid or End Date fields in the Manage Store Coupons / Customer Groups screen in Web Office.

action
string
Enum: "add" "remove"

This field is used to allow customers to opt-in or opt-out of a store coupon / customer group.

Request samples

Content type
application/json
[
  • {
    • "id": "1000-34",
    • "expiration": "2019-08-24T14:15:22Z",
    • "action": "add"
    }
]

Response samples

Content type
application/json
[
  • {
    • "id": "1000-34",
    • "expiration": "2019-08-24T14:15:22Z",
    • "action": "add"
    }
]

Retrieve detailed customer information

If a customer is associated, a detail object containing customer information such as their account number, phones, emails, addresses, and other information is returned.
Only information configured on the site's boarding profile is populated in the response.
If no customer is associated, then an empty boarding profile is returned.

Responses

Response Schema: application/json
accountNumber
string

The account number of the customer. The format of this number is determined by the store's configuration.

object (firstName)

The first name of the customer.

object (middleName)

The middle name of the customer.

object (lastName)

The last name of the customer.

object (nickName)

The nick name of the customer.

object (prefix)

The prefix of the customer. If updating the value, the value field needs to match one of the id fields from the options array. The options array is for displaying possible values; it is not required to update the selected value.

object (suffix)

The suffix of the customer. If updating the value, the value field needs to match one of the id fields from the options array. The options array is for displaying possible values; it is not required to update the selected value.

object (company)

The company name for the customer.

object (title)

The title for the customer. This is often paired with the company name to denote their title at the company.

object (suppressReceipt)

If true, the customer will not receive paper receipts when they shop in-store but instead will receive electronic receipts at the email address they entered. This is the Opt Out Printed Receipt checkbox on the customer profile in Web Office.

object (birthDate)

The birth date of the customer.

object (pf1)

Power Field 1 from the customer profile in Web Office. The name and options are configured in Web Office. The value field is the unique ID for the selected option, if one is selected. PowerFields 1-4 have pre-defined options whereas PowerFields 5-8 are free text fields.

object (pf2)

Power Field 2 from the customer profile in Web Office. The name and options are configured in Web Office. The value field is the unique ID for the selected option, if one is selected. PowerFields 1-4 have pre-defined options whereas PowerFields 5-8 are free text fields.

object (pf3)

Power Field 3 from the customer profile in Web Office. The name and options are configured in Web Office. The value field is the unique ID for the selected option, if one is selected. PowerFields 1-4 have pre-defined options whereas PowerFields 5-8 are free text fields.

object (pf4)

Power Field 4 from the customer profile in Web Office. The name and options are configured in Web Office. The value field is the unique ID for the selected option, if one is selected. PowerFields 1-4 have pre-defined options whereas PowerFields 5-8 are free text fields.

object (pf5)

Power Field 5 from the customer profile in Web Office. The name and options are configured in Web Office. PowerFields 1-4 have pre-defined options whereas PowerFields 5-8 are free text fields.

object (pf6)

Power Field 6 from the customer profile in Web Office. The name and options are configured in Web Office. PowerFields 1-4 have pre-defined options whereas PowerFields 5-8 are free text fields.

object (pf7)

Power Field 7 from the customer profile in Web Office. The name and options are configured in Web Office. PowerFields 1-4 have pre-defined options whereas PowerFields 5-8 are free text fields.

object (pf8)

Power Field 8 from the customer profile in Web Office. The name and options are configured in Web Office. PowerFields 1-4 have pre-defined options whereas PowerFields 5-8 are free text fields.

Array of objects (MePhoneDto)

A list of phone numbers associated with the customer. Each entry includes a Description and a Phone Number. The Descriptions are configured in Web Office as Phone Description Profiles (e.g. Office, Personal, etc.). The Phone Number is the number associated with that description. The number may include formatting such as spaces, dashes, or parentheses.

Array of objects (MeEmailDto)

A list of emails associated with the customer. Each entry includes a Description and an Email. The Descriptions are configured in Web Office as Email Description Profiles (e.g. Office, Personal, etc.). The Email is the value associated with that description.

Array of objects (MeAddressDto)

A list of addresses associated with the customer. Each entry includes a Description and an Address. The Descriptions are configured in Web Office as Address Description Profiles (e.g. Office, Personal, etc.). The Address is the value associated with that description.

Response samples

Content type
application/json
{
  • "accountNumber": "WB24XVXCXIBY3ZH3",
  • "firstName": {
    • "name": "firstName",
    • "option": "REQUIRED",
    • "value": "John",
    • "length": 25
    },
  • "middleName": {
    • "name": "middleName",
    • "option": "OPTIONAL",
    • "value": "Michael",
    • "length": 25
    },
  • "lastName": {
    • "name": "lastName",
    • "option": "REQUIRED",
    • "value": "Doe",
    • "length": 25
    },
  • "nickName": {
    • "name": "nickName",
    • "option": "OPTIONAL",
    • "value": "Johnny",
    • "length": 25
    },
  • "prefix": {
    • "name": "prefix",
    • "option": "OPTIONAL",
    • "value": "1000-16",
    • "options": [
      • {
        • "id": "1000-16",
        • "description": "Mr."
        },
      • {
        • "id": "1000-17",
        • "description": "Ms."
        },
      • {
        • "id": "1000-18",
        • "description": "Mrs."
        },
      • {
        • "id": "1000-19",
        • "description": "unknown"
        }
      ]
    },
  • "suffix": {
    • "name": "suffix",
    • "option": "OPTIONAL",
    • "value": "1000-19",
    • "options": [
      • {
        • "id": "1000-16",
        • "description": "Jr."
        },
      • {
        • "id": "1000-19",
        • "description": "Sr."
        }
      ]
    },
  • "company": "{\n \"name\": \"company\",\n \"option\": \"OPTIONAL\",\n \"value\": ECRS,\n \"length\": 50\n}",
  • "title": "{\n \"name\": \"title\",\n \"option\": \"OPTIONAL\",\n \"value\": Technical Writer,\n \"length\": 25\n}",
  • "suppressReceipt": {
    • "name": "suppressReceipt",
    • "option": "OPTIONAL",
    • "value": false
    },
  • "birthDate": {
    • "name": "birthDate",
    • "option": "OPTIONAL",
    • "value": "1995-05-04"
    },
  • "pf1": {
    • "name": "Configured PowerField 1 Name",
    • "option": "OPTIONAL",
    • "value": "1000-7263",
    • "options": [
      • {
        • "id": "1000-7263",
        • "description": "Option 1"
        },
      • {
        • "id": "1000-7268",
        • "description": "Option 2"
        }
      ]
    },
  • "pf2": {
    • "name": "Configured PowerField 2 Name",
    • "option": "OPTIONAL",
    • "value": "1000-7263",
    • "options": [
      • {
        • "id": "1000-7263",
        • "description": "Option 1"
        },
      • {
        • "id": "1000-7268",
        • "description": "Option 2"
        }
      ]
    },
  • "pf3": {
    • "name": "Configured PowerField 3 Name",
    • "option": "OPTIONAL",
    • "value": "1000-7263",
    • "options": [
      • {
        • "id": "1000-7263",
        • "description": "Option 1"
        },
      • {
        • "id": "1000-7268",
        • "description": "Option 2"
        }
      ]
    },
  • "pf4": {
    • "name": "Configured PowerField 4 Name",
    • "option": "OPTIONAL",
    • "value": "1000-7263",
    • "options": [
      • {
        • "id": "1000-7263",
        • "description": "Option 1"
        },
      • {
        • "id": "1000-7268",
        • "description": "Option 2"
        }
      ]
    },
  • "pf5": {
    • "name": "Configured PowerField 5 Name",
    • "option": "OPTIONAL",
    • "value": "FOO",
    • "length": 30
    },
  • "pf6": {
    • "name": "Configured PowerField 6 Name",
    • "option": "OPTIONAL",
    • "value": "FOO",
    • "length": 30
    },
  • "pf7": {
    • "name": "Configured PowerField 7 Name",
    • "option": "OPTIONAL",
    • "value": "FOO",
    • "length": 30
    },
  • "pf8": {
    • "name": "Configured PowerField 8 Name",
    • "option": "OPTIONAL",
    • "value": "FOO",
    • "length": 30
    },
  • "phones": [
    • {
      • "id": "1000-39172",
      • "name": "Web",
      • "phone": {
        • "name": "phone",
        • "option": "OPTIONAL",
        • "value": "(333) 999-0000",
        • "length": 14
        },
      • "shipToPhone": {
        • "name": "phoneShipping",
        • "option": "OPTIONAL",
        • "value": false
        },
      • "shipToFax": {
        • "name": "faxShipping",
        • "option": "OPTIONAL",
        • "value": false
        },
      • "billToPhone": {
        • "name": "phoneBilling",
        • "option": "OPTIONAL",
        • "value": false
        },
      • "billToFax": {
        • "name": "faxBilling",
        • "option": "OPTIONAL",
        • "value": false
        },
      • "did": "1000-9563"
      },
    • {
      • "id": "1000-105285",
      • "name": "Personal",
      • "phone": {
        • "name": "phone",
        • "option": "REQUIRED",
        • "value": "3332221111",
        • "length": 14
        },
      • "did": "1000-7280"
      }
    ],
  • "emails": [
    • {
      • "id": "1000-44090",
      • "name": "Web",
      • "email": {
        • "name": "email",
        • "option": "OPTIONAL",
        • "value": "johndoe@ecrs.com"
        },
      • "ereceipt": null,
      • "did": "1000-11"
      },
    • {
      • "id": "1000-51792",
      • "name": "E-Mail",
      • "email": {
        • "name": "email",
        • "option": "OPTIONAL",
        • "value": "johndoe@ecrs.com"
        },
      • "billTo": {
        • "name": "emailBilling",
        • "option": "OPTIONAL",
        • "value": false
        },
      • "shipTo": {
        • "name": "emailShipping",
        • "option": "OPTIONAL",
        • "value": false
        },
      • "marketing": {
        • "name": "emailMarketing",
        • "option": "REQUIRED",
        • "value": false
        },
      • "ereceipt": {
        • "name": "emailReceipt",
        • "option": "REQUIRED",
        • "value": true
        },
      • "did": "1000-7247",
      • "eReceipt": {
        • "name": "emailReceipt",
        • "option": "REQUIRED",
        • "value": true
        }
      }
    ],
  • "addresses": [
    • {
      • "id": "1000-57638",
      • "name": "Home Address",
      • "street1": {
        • "name": "street1",
        • "option": "OPTIONAL",
        • "value": "277 Howard St.",
        • "length": 30
        },
      • "street2": {
        • "name": "street2",
        • "option": "OPTIONAL",
        • "value": "",
        • "length": 30
        },
      • "city": {
        • "name": "city",
        • "option": "OPTIONAL",
        • "value": "Boone",
        • "length": 20
        },
      • "state": {
        • "name": "state",
        • "option": "OPTIONAL",
        • "value": "NC",
        • "length": 2
        },
      • "postal": {
        • "name": "postal",
        • "option": "OPTIONAL",
        • "value": "28607",
        • "length": 15
        },
      • "country": {
        • "name": "country",
        • "option": "OPTIONAL",
        • "value": "US",
        • "length": 4
        },
      • "shipTo": {
        • "name": "addressShipping",
        • "option": "OPTIONAL",
        • "value": true
        },
      • "billTo": {
        • "name": "addressBilling",
        • "option": "OPTIONAL",
        • "value": false
        },
      • "did": "1000-4"
      }
    ]
}

Save customer information

If a customer is associated, this endpoint allows the customer to update their information.
The request body only needs to include the data the customer wishes to change. In other words, the entire request body does not need to be sent if only a specific field is being updated.

Request Body schema: application/json
accountNumber
string

The account number of the customer. The format of this number is determined by the store's configuration.

object (firstName)

The first name of the customer.

object (middleName)

The middle name of the customer.

object (lastName)

The last name of the customer.

object (nickName)

The nick name of the customer.

object (prefix)

The prefix of the customer. If updating the value, the value field needs to match one of the id fields from the options array. The options array is for displaying possible values; it is not required to update the selected value.

object (suffix)

The suffix of the customer. If updating the value, the value field needs to match one of the id fields from the options array. The options array is for displaying possible values; it is not required to update the selected value.

object (company)

The company name for the customer.

object (title)

The title for the customer. This is often paired with the company name to denote their title at the company.

object (suppressReceipt)

If true, the customer will not receive paper receipts when they shop in-store but instead will receive electronic receipts at the email address they entered. This is the Opt Out Printed Receipt checkbox on the customer profile in Web Office.

object (birthDate)

The birth date of the customer.

object (pf1)

Power Field 1 from the customer profile in Web Office. The name and options are configured in Web Office. The value field is the unique ID for the selected option, if one is selected. PowerFields 1-4 have pre-defined options whereas PowerFields 5-8 are free text fields.

object (pf2)

Power Field 2 from the customer profile in Web Office. The name and options are configured in Web Office. The value field is the unique ID for the selected option, if one is selected. PowerFields 1-4 have pre-defined options whereas PowerFields 5-8 are free text fields.

object (pf3)

Power Field 3 from the customer profile in Web Office. The name and options are configured in Web Office. The value field is the unique ID for the selected option, if one is selected. PowerFields 1-4 have pre-defined options whereas PowerFields 5-8 are free text fields.

object (pf4)

Power Field 4 from the customer profile in Web Office. The name and options are configured in Web Office. The value field is the unique ID for the selected option, if one is selected. PowerFields 1-4 have pre-defined options whereas PowerFields 5-8 are free text fields.

object (pf5)

Power Field 5 from the customer profile in Web Office. The name and options are configured in Web Office. PowerFields 1-4 have pre-defined options whereas PowerFields 5-8 are free text fields.

object (pf6)

Power Field 6 from the customer profile in Web Office. The name and options are configured in Web Office. PowerFields 1-4 have pre-defined options whereas PowerFields 5-8 are free text fields.

object (pf7)

Power Field 7 from the customer profile in Web Office. The name and options are configured in Web Office. PowerFields 1-4 have pre-defined options whereas PowerFields 5-8 are free text fields.

object (pf8)

Power Field 8 from the customer profile in Web Office. The name and options are configured in Web Office. PowerFields 1-4 have pre-defined options whereas PowerFields 5-8 are free text fields.

Array of objects (MePhoneDto)

A list of phone numbers associated with the customer. Each entry includes a Description and a Phone Number. The Descriptions are configured in Web Office as Phone Description Profiles (e.g. Office, Personal, etc.). The Phone Number is the number associated with that description. The number may include formatting such as spaces, dashes, or parentheses.

Array of objects (MeEmailDto)

A list of emails associated with the customer. Each entry includes a Description and an Email. The Descriptions are configured in Web Office as Email Description Profiles (e.g. Office, Personal, etc.). The Email is the value associated with that description.

Array of objects (MeAddressDto)

A list of addresses associated with the customer. Each entry includes a Description and an Address. The Descriptions are configured in Web Office as Address Description Profiles (e.g. Office, Personal, etc.). The Address is the value associated with that description.

Responses

Request samples

Content type
application/json
{
  • "accountNumber": "WB24XVXCXIBY3ZH3",
  • "firstName": {
    • "name": "firstName",
    • "option": "REQUIRED",
    • "value": "John",
    • "length": 25
    },
  • "middleName": {
    • "name": "middleName",
    • "option": "OPTIONAL",
    • "value": "Michael",
    • "length": 25
    },
  • "lastName": {
    • "name": "lastName",
    • "option": "REQUIRED",
    • "value": "Doe",
    • "length": 25
    },
  • "nickName": {
    • "name": "nickName",
    • "option": "OPTIONAL",
    • "value": "Johnny",
    • "length": 25
    },
  • "prefix": {
    • "name": "prefix",
    • "option": "OPTIONAL",
    • "value": "1000-16",
    • "options": [
      • {
        • "id": "1000-16",
        • "description": "Mr."
        },
      • {
        • "id": "1000-17",
        • "description": "Ms."
        },
      • {
        • "id": "1000-18",
        • "description": "Mrs."
        },
      • {
        • "id": "1000-19",
        • "description": "unknown"
        }
      ]
    },
  • "suffix": {
    • "name": "suffix",
    • "option": "OPTIONAL",
    • "value": "1000-19",
    • "options": [
      • {
        • "id": "1000-16",
        • "description": "Jr."
        },
      • {
        • "id": "1000-19",
        • "description": "Sr."
        }
      ]
    },
  • "company": "{\n \"name\": \"company\",\n \"option\": \"OPTIONAL\",\n \"value\": ECRS,\n \"length\": 50\n}",
  • "title": "{\n \"name\": \"title\",\n \"option\": \"OPTIONAL\",\n \"value\": Technical Writer,\n \"length\": 25\n}",
  • "suppressReceipt": {
    • "name": "suppressReceipt",
    • "option": "OPTIONAL",
    • "value": false
    },
  • "birthDate": {
    • "name": "birthDate",
    • "option": "OPTIONAL",
    • "value": "1995-05-04"
    },
  • "pf1": {
    • "name": "Configured PowerField 1 Name",
    • "option": "OPTIONAL",
    • "value": "1000-7263",
    • "options": [
      • {
        • "id": "1000-7263",
        • "description": "Option 1"
        },
      • {
        • "id": "1000-7268",
        • "description": "Option 2"
        }
      ]
    },
  • "pf2": {
    • "name": "Configured PowerField 2 Name",
    • "option": "OPTIONAL",
    • "value": "1000-7263",
    • "options": [
      • {
        • "id": "1000-7263",
        • "description": "Option 1"
        },
      • {
        • "id": "1000-7268",
        • "description": "Option 2"
        }
      ]
    },
  • "pf3": {
    • "name": "Configured PowerField 3 Name",
    • "option": "OPTIONAL",
    • "value": "1000-7263",
    • "options": [
      • {
        • "id": "1000-7263",
        • "description": "Option 1"
        },
      • {
        • "id": "1000-7268",
        • "description": "Option 2"
        }
      ]
    },
  • "pf4": {
    • "name": "Configured PowerField 4 Name",
    • "option": "OPTIONAL",
    • "value": "1000-7263",
    • "options": [
      • {
        • "id": "1000-7263",
        • "description": "Option 1"
        },
      • {
        • "id": "1000-7268",
        • "description": "Option 2"
        }
      ]
    },
  • "pf5": {
    • "name": "Configured PowerField 5 Name",
    • "option": "OPTIONAL",
    • "value": "FOO",
    • "length": 30
    },
  • "pf6": {
    • "name": "Configured PowerField 6 Name",
    • "option": "OPTIONAL",
    • "value": "FOO",
    • "length": 30
    },
  • "pf7": {
    • "name": "Configured PowerField 7 Name",
    • "option": "OPTIONAL",
    • "value": "FOO",
    • "length": 30
    },
  • "pf8": {
    • "name": "Configured PowerField 8 Name",
    • "option": "OPTIONAL",
    • "value": "FOO",
    • "length": 30
    },
  • "phones": [
    • {
      • "id": "1000-39172",
      • "name": "Web",
      • "phone": {
        • "name": "phone",
        • "option": "OPTIONAL",
        • "value": "(333) 999-0000",
        • "length": 14
        },
      • "shipToPhone": {
        • "name": "phoneShipping",
        • "option": "OPTIONAL",
        • "value": false
        },
      • "shipToFax": {
        • "name": "faxShipping",
        • "option": "OPTIONAL",
        • "value": false
        },
      • "billToPhone": {
        • "name": "phoneBilling",
        • "option": "OPTIONAL",
        • "value": false
        },
      • "billToFax": {
        • "name": "faxBilling",
        • "option": "OPTIONAL",
        • "value": false
        },
      • "did": "1000-9563"
      },
    • {
      • "id": "1000-105285",
      • "name": "Personal",
      • "phone": {
        • "name": "phone",
        • "option": "REQUIRED",
        • "value": "3332221111",
        • "length": 14
        },
      • "did": "1000-7280"
      }
    ],
  • "emails": [
    • {
      • "id": "1000-44090",
      • "name": "Web",
      • "email": {
        • "name": "email",
        • "option": "OPTIONAL",
        • "value": "johndoe@ecrs.com"
        },
      • "ereceipt": null,
      • "did": "1000-11"
      },
    • {
      • "id": "1000-51792",
      • "name": "E-Mail",
      • "email": {
        • "name": "email",
        • "option": "OPTIONAL",
        • "value": "johndoe@ecrs.com"
        },
      • "billTo": {
        • "name": "emailBilling",
        • "option": "OPTIONAL",
        • "value": false
        },
      • "shipTo": {
        • "name": "emailShipping",
        • "option": "OPTIONAL",
        • "value": false
        },
      • "marketing": {
        • "name": "emailMarketing",
        • "option": "REQUIRED",
        • "value": false
        },
      • "ereceipt": {
        • "name": "emailReceipt",
        • "option": "REQUIRED",
        • "value": true
        },
      • "did": "1000-7247",
      • "eReceipt": {
        • "name": "emailReceipt",
        • "option": "REQUIRED",
        • "value": true
        }
      }
    ],
  • "addresses": [
    • {
      • "id": "1000-57638",
      • "name": "Home Address",
      • "street1": {
        • "name": "street1",
        • "option": "OPTIONAL",
        • "value": "277 Howard St.",
        • "length": 30
        },
      • "street2": {
        • "name": "street2",
        • "option": "OPTIONAL",
        • "value": "",
        • "length": 30
        },
      • "city": {
        • "name": "city",
        • "option": "OPTIONAL",
        • "value": "Boone",
        • "length": 20
        },
      • "state": {
        • "name": "state",
        • "option": "OPTIONAL",
        • "value": "NC",
        • "length": 2
        },
      • "postal": {
        • "name": "postal",
        • "option": "OPTIONAL",
        • "value": "28607",
        • "length": 15
        },
      • "country": {
        • "name": "country",
        • "option": "OPTIONAL",
        • "value": "US",
        • "length": 4
        },
      • "shipTo": {
        • "name": "addressShipping",
        • "option": "OPTIONAL",
        • "value": true
        },
      • "billTo": {
        • "name": "addressBilling",
        • "option": "OPTIONAL",
        • "value": false
        },
      • "did": "1000-4"
      }
    ]
}

Change a customer's password

This is used to change a customer's account password.
The old password must be provided to verify the customer. The new password must meet the following password strength requirements:
- Minimum 8 characters
- Maximum 255 characters
- At least 1 uppercase letter
- At least 1 number
- At least 1 symbol

Request Body schema: application/json
oldPassword
string

The old password for the customer account.

newPassword
string

The new password for the customer account.

Responses

Request samples

Content type
application/json
{
  • "oldPassword": "oldPassword123",
  • "newPassword": "newPassword123"
}

Get customer reward information

For associated customer, this returns reward information such as enrolled loyalty programs, discounts, discount groups, customer group / store coupon triggered coupons, and punch cards. This endpoint will not return third party coupon information.
This is traditionally used to display a Rewards page to the customer.

Responses

Response Schema: application/json
discount
string

If the customer is assigned a discount group, this is the discount name. If the customer is not assigned a discount group, but is assigned a discount, this will be the description of that discount.
These values can be configured in the Options section of the Customer profile in Web Office.

Array of objects (LoyaltyBalanceInfo)

A list of loyalty programs and related information for the associated customer.
Only loyalty programs that are confirmed to be shown to the customer will be returned.
In addition, if the site is configured to not display loyalty programs where the customer has zero points, then only loyalty programs with a non-zero balance will be returned.

Array of objects (CouponCombo)

A list of coupons triggered by customer groups/store coupons that are available to a customer.
Only coupons that are configured to be shown to the customer will be returned.

Array of objects (CouponPunchCard)

A list of punch cards that are available to the given customer.
Only punch cards that are configured to be shown to the customer will be returned.

Response samples

Content type
application/json
{
  • "discount": "string",
  • "loyaltyBalances": [
    • {
      • "id": "1000-38",
      • "name": "string",
      • "showDecimal": true,
      • "online": true,
      • "eligible": 0,
      • "balance": 0,
      • "accrual": 0,
      • "redeemed": 0,
      • "minimumBalance": 0,
      • "minimumRedemption": 0,
      • "redeemable": true,
      • "disabled": true,
      • "expirationDate": "2019-08-24",
      • "expiring": 0
      }
    ],
  • "coupons": [
    • {
      • "id": "1000-38",
      • "name": "string",
      • "details": "string",
      • "expiration": "2019-08-24T14:15:22Z"
      }
    ],
  • "punchCards": [
    • {
      • "ruleId": "1000-38",
      • "name": "string",
      • "details": "string",
      • "completedCards": 0,
      • "currentPunches": 0,
      • "requiredPunches": 0,
      • "expiration": "2019-08-24T14:15:22Z"
      }
    ]
}

Get social network providers for the customer

This returns any social network providers linked to the customer's account.

Responses

Response Schema: application/json
Array
provider
string

The social network name.

Response samples

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

Unsubscribe customer emails from marketing

This endpoint can be used to unsubscribe a customer from marketing emails.
This includes the cart abandonment email. All emails on the customer record will be opted-out of marketing after calling this endpoint.

query Parameters
cus
required
string
Example: cus=1000-234

The unique customer catapult ID for the customer. In the form of pk-cpk.

acc
required
string
Example: acc=WB24XVXCXIBY3ZH3

The customer's account number.

Responses

Update a customer's auto-reload status

This endpoint allows an associated customer to update their auto-reload status and auto-reload amount.
Secure auto-reload is not a feature supported in WebCart right now.

Request Body schema: application/json
enabled
boolean

Whether or not auto reload is enabled for the customer.

amount
number

The amount to automatically reload. Must be larger than the minimum default auto-reload amount if configured.

Responses

Response Schema: application/json
autoReloadStatus
string
Enum: "ENABLED" "DISABLED" "NOT_ALLOWED"

Represents the status of auto-reload functionality for a customer.

reloadAmount
number

The reload amount for the customer's default token.

defaultReloadAmount
number

The default reload amount from the WebCart terminal's authorization security profile.

Array of objects (ChargeAccountBalance)

A list of charge accounts associated with the customer.

tokenStatus
string
Enum: "NORMAL" "OFFLINE" "DISABLED" "NORMAL" "OFFLINE" "DISABLED"

Represents the status of returning tokenization information from the server

Array of objects (TokenInfo)

A list of tokens associated with the customer.
Expired tokens are not returned.
If the provider is CardConnect or Stripe, and the card brand is not EBT, then the token must have sufficient billing information to be returned.

object (creditPaymentMethod)

If this WebCart's WebProfile has a credit card payment method enabled, this will return the first credit card payment method found.

object (ebtPaymentMethod)

If this WebCart's WebProfile has an EBT payment method enabled, this will return the first EBT payment method found.

Request samples

Content type
application/json
{
  • "enabled": true,
  • "amount": 50
}

Response samples

Content type
application/json
{
  • "autoReloadStatus": "ENABLED",
  • "reloadAmount": 50,
  • "defaultReloadAmount": 25,
  • "chargeAccounts": [
    • {
      • "id": "1000-34",
      • "name": "Charge Account",
      • "balance": 100,
      • "creditLimit": 1000
      }
    ],
  • "tokenStatus": "NORMAL",
  • "tokens": [
    • {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      }
    ],
  • "creditPaymentMethod": {
    • "pmId": "1000-27966",
    • "methodId": "1000-27966",
    • "name": "Pay Online",
    • "available": true,
    • "type": 0,
    • "testing": true,
    • "balance": 0,
    • "eligible": 0,
    • "minimum": 0,
    • "maximum": 0,
    • "token": {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      },
    • "provider": "ecrs-charge",
    • "iframePath": "string",
    • "clientKey": "string",
    • "accessBlock": "string",
    • "serverPath": "string",
    • "iframePropertyQueryCount": 0,
    • "merchantId": "string",
    • "countryCode": "string",
    • "currencyCode": "string",
    • "applePayMerchantIdentifier": "string",
    • "googlePayMerchantId": "string"
    },
  • "ebtPaymentMethod": {
    • "pmId": "1000-27966",
    • "methodId": "1000-27966",
    • "name": "Pay Online",
    • "available": true,
    • "type": 0,
    • "testing": true,
    • "balance": 0,
    • "eligible": 0,
    • "minimum": 0,
    • "maximum": 0,
    • "token": {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      },
    • "provider": "ecrs-charge",
    • "iframePath": "string",
    • "clientKey": "string",
    • "accessBlock": "string",
    • "serverPath": "string",
    • "iframePropertyQueryCount": 0,
    • "merchantId": "string",
    • "countryCode": "string",
    • "currencyCode": "string",
    • "applePayMerchantIdentifier": "string",
    • "googlePayMerchantId": "string"
    }
}

Update a customer's default token

This allows a customer to update their default credit token.
The default token is used by secure auto-reload for change accounts and it is also the payment option selected by default when a using a credit payment method in WebCart. Tokenized EBT cards cannot be default tokens.

Request Body schema: application/json
cardId
string

An identifier for the card from the card processor.

defaultToken
boolean

If true, this is considered the default token for the associated customer. The default token is used for secure auto-reload of charge accounts. EBT SNAP and EBT Cash tokens are not eligible to be default tokens.

brand
string

The brand of the card.

finalDigits
string

The last four digits of the card.

expiration
string

The card expiration date in MMYY format. This is the same format used by the card processor. For example, a card that expires in December 2025 would be represented as 1225.

authFk
string

The unique identifier for the authorization server profile configured on the WebCart terminal.

tenderType
integer <int32>

Tender type backing this token: 4 for Credit, 6 for EBT SNAP, 8 for Debit, 12 for EBT Cash, 14 for Gift Card, 23 for Tokenization.

Responses

Response Schema: application/json
autoReloadStatus
string
Enum: "ENABLED" "DISABLED" "NOT_ALLOWED"

Represents the status of auto-reload functionality for a customer.

reloadAmount
number

The reload amount for the customer's default token.

defaultReloadAmount
number

The default reload amount from the WebCart terminal's authorization security profile.

Array of objects (ChargeAccountBalance)

A list of charge accounts associated with the customer.

tokenStatus
string
Enum: "NORMAL" "OFFLINE" "DISABLED" "NORMAL" "OFFLINE" "DISABLED"

Represents the status of returning tokenization information from the server

Array of objects (TokenInfo)

A list of tokens associated with the customer.
Expired tokens are not returned.
If the provider is CardConnect or Stripe, and the card brand is not EBT, then the token must have sufficient billing information to be returned.

object (creditPaymentMethod)

If this WebCart's WebProfile has a credit card payment method enabled, this will return the first credit card payment method found.

object (ebtPaymentMethod)

If this WebCart's WebProfile has an EBT payment method enabled, this will return the first EBT payment method found.

Request samples

Content type
application/json
{
  • "cardId": "string",
  • "defaultToken": true,
  • "brand": "Visa",
  • "finalDigits": "1234",
  • "expiration": "1225",
  • "authFk": "1000-21",
  • "tenderType": 4
}

Response samples

Content type
application/json
{
  • "autoReloadStatus": "ENABLED",
  • "reloadAmount": 50,
  • "defaultReloadAmount": 25,
  • "chargeAccounts": [
    • {
      • "id": "1000-34",
      • "name": "Charge Account",
      • "balance": 100,
      • "creditLimit": 1000
      }
    ],
  • "tokenStatus": "NORMAL",
  • "tokens": [
    • {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      }
    ],
  • "creditPaymentMethod": {
    • "pmId": "1000-27966",
    • "methodId": "1000-27966",
    • "name": "Pay Online",
    • "available": true,
    • "type": 0,
    • "testing": true,
    • "balance": 0,
    • "eligible": 0,
    • "minimum": 0,
    • "maximum": 0,
    • "token": {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      },
    • "provider": "ecrs-charge",
    • "iframePath": "string",
    • "clientKey": "string",
    • "accessBlock": "string",
    • "serverPath": "string",
    • "iframePropertyQueryCount": 0,
    • "merchantId": "string",
    • "countryCode": "string",
    • "currencyCode": "string",
    • "applePayMerchantIdentifier": "string",
    • "googlePayMerchantId": "string"
    },
  • "ebtPaymentMethod": {
    • "pmId": "1000-27966",
    • "methodId": "1000-27966",
    • "name": "Pay Online",
    • "available": true,
    • "type": 0,
    • "testing": true,
    • "balance": 0,
    • "eligible": 0,
    • "minimum": 0,
    • "maximum": 0,
    • "token": {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      },
    • "provider": "ecrs-charge",
    • "iframePath": "string",
    • "clientKey": "string",
    • "accessBlock": "string",
    • "serverPath": "string",
    • "iframePropertyQueryCount": 0,
    • "merchantId": "string",
    • "countryCode": "string",
    • "currencyCode": "string",
    • "applePayMerchantIdentifier": "string",
    • "googlePayMerchantId": "string"
    }
}

Get customer digital wallet information

Returns digital wallet information for the associated customer. This includes charge accounts, tokenized credit cards, tokenized EBT cards, as well as credit and EBT payment methods defined on the WebCart terminal.
Moreover, this endpoint returns the auto-reload status for the customer in relation to any associated charge accounts.
In WebCart, this endpoint is used to display a digital wallet page to the customer.

Responses

Response Schema: application/json
autoReloadStatus
string
Enum: "ENABLED" "DISABLED" "NOT_ALLOWED"

Represents the status of auto-reload functionality for a customer.

reloadAmount
number

The reload amount for the customer's default token.

defaultReloadAmount
number

The default reload amount from the WebCart terminal's authorization security profile.

Array of objects (ChargeAccountBalance)

A list of charge accounts associated with the customer.

tokenStatus
string
Enum: "NORMAL" "OFFLINE" "DISABLED" "NORMAL" "OFFLINE" "DISABLED"

Represents the status of returning tokenization information from the server

Array of objects (TokenInfo)

A list of tokens associated with the customer.
Expired tokens are not returned.
If the provider is CardConnect or Stripe, and the card brand is not EBT, then the token must have sufficient billing information to be returned.

object (creditPaymentMethod)

If this WebCart's WebProfile has a credit card payment method enabled, this will return the first credit card payment method found.

object (ebtPaymentMethod)

If this WebCart's WebProfile has an EBT payment method enabled, this will return the first EBT payment method found.

Response samples

Content type
application/json
{
  • "autoReloadStatus": "ENABLED",
  • "reloadAmount": 50,
  • "defaultReloadAmount": 25,
  • "chargeAccounts": [
    • {
      • "id": "1000-34",
      • "name": "Charge Account",
      • "balance": 100,
      • "creditLimit": 1000
      }
    ],
  • "tokenStatus": "NORMAL",
  • "tokens": [
    • {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      }
    ],
  • "creditPaymentMethod": {
    • "pmId": "1000-27966",
    • "methodId": "1000-27966",
    • "name": "Pay Online",
    • "available": true,
    • "type": 0,
    • "testing": true,
    • "balance": 0,
    • "eligible": 0,
    • "minimum": 0,
    • "maximum": 0,
    • "token": {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      },
    • "provider": "ecrs-charge",
    • "iframePath": "string",
    • "clientKey": "string",
    • "accessBlock": "string",
    • "serverPath": "string",
    • "iframePropertyQueryCount": 0,
    • "merchantId": "string",
    • "countryCode": "string",
    • "currencyCode": "string",
    • "applePayMerchantIdentifier": "string",
    • "googlePayMerchantId": "string"
    },
  • "ebtPaymentMethod": {
    • "pmId": "1000-27966",
    • "methodId": "1000-27966",
    • "name": "Pay Online",
    • "available": true,
    • "type": 0,
    • "testing": true,
    • "balance": 0,
    • "eligible": 0,
    • "minimum": 0,
    • "maximum": 0,
    • "token": {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      },
    • "provider": "ecrs-charge",
    • "iframePath": "string",
    • "clientKey": "string",
    • "accessBlock": "string",
    • "serverPath": "string",
    • "iframePropertyQueryCount": 0,
    • "merchantId": "string",
    • "countryCode": "string",
    • "currencyCode": "string",
    • "applePayMerchantIdentifier": "string",
    • "googlePayMerchantId": "string"
    }
}

Account Items

These endpoints allow you to request order information to display a shopper’s Order History. This information should be made available to shoppers so that they are able to see details about their in-store and online purchases.

orders

Request Body schema: application/json
q
string
ps
integer <int32>
pn
integer <int32>
hs
integer <int32>
s
string

Responses

Request samples

Content type
application/json
{
  • "q": "string",
  • "ps": 0,
  • "pn": 0,
  • "hs": 0,
  • "s": "string"
}

Browse

These endpoints facilitate the exploration and retrieval of inventory based on search parameters. They allow shoppers to:

  • Search for items by keyword.
  • Customize display results with sort and filter options.
  • Retrieve full search term suggestions. Endpoints in this group make it easier for a shopper to find the items that they are searching for quickly and efficiently.

Browse Items

Retrieves a list of item summaries matching the described search parameters.

query Parameters
search
required
string

The browse request to execute

Request Body schema: application/json
g
Array of strings

The group path in which to search, consists of the ids of departments, promotional sale worksheets, goes well with groups, substitution groups, brands, item groups, and/or menu groups.

q
required
string <= 64 characters

The query string that will be used to search for results

iq
Array of strings[ items [ 1 .. 64 ] characters ]

Minor text modifiers that are performed within (as an AND) with the main query

s
string
Enum: "NAZ" "NZA" "PLH" "PHL" "POP"

The sort to use when collecting search results. In addition to the default(relevance) sort, indicated by the absence of this parameter the following are available. NAZ - Alphabetical ascending NZA - Albhabetical descending PLH - Price, low to high PHL - Price, high to low POP - Popularity, high to low

ps
integer <int32> <= 128
Default: 8

The number of results per page of the request

pn
integer <int32> >= 1
Default: 1

The 1-based index of the requested page

object

A map from the facet category id to the requested facet value ids

Responses

Response Schema: application/json
code
required
integer <int32>

The status code of the response.Refer to "Error Codes" in API Responses for a complete reference.

message
required
string

A string description of the status code

redirect
string

A redirect URL to send the user to, if applicable

data
object

The main response payload that varies based on the API endpoint

Array of objects (Alert)

A list of alerts that may be relevant to the user

object

A map of field names to their validation error messages, if applicable

object (BrowseRequest)

Describes the search parameters for a set of entities in a WebCart

searchTime
integer <int64>

The time required to execute the browse in ms.

totalCount
integer <int64>

The total number of records that would match the request if pagination was not performed.

Array of objects (GroupDto)

The group path followed to the current results, commonly used to generate a breadcrumb trail

Array of objects (GroupDto)

Any children of the current group path

Array of objects (FacetCategory)

The facet categories which are relevant to the current search so that the current search results can be filtered

items
Array of objects

The items returned by the search result

alternates
Array of strings

Any alternate searches that should be suggested to the user.

Request samples

Content type
application/json
{
  • "g": "MGP-1000-20",
  • "q": "App",
  • "iq": [
    • "Red"
    ],
  • "s": "NAZ",
  • "ps": 16,
  • "pn": 2,
  • "facets": {
    • "property1": [
      • "string"
      ],
    • "property2": [
      • "string"
      ]
    }
}

Response samples

Content type
application/json
{
  • "code": 0,
  • "message": "Success",
  • "data": { },
  • "alerts": [
    • {
      • "code": "shipping.invalid",
      • "values": {
        • "property1": { },
        • "property2": { }
        }
      }
    ],
  • "errors": {
    • "property1": [
      • "string"
      ],
    • "property2": [
      • "string"
      ]
    },
  • "request": {
    • "g": "MGP-1000-20",
    • "q": "App",
    • "iq": [
      • "Red"
      ],
    • "s": "NAZ",
    • "ps": 16,
    • "pn": 2,
    • "facets": {
      • "property1": [
        • "string"
        ],
      • "property2": [
        • "string"
        ]
      }
    },
  • "searchTime": 87,
  • "totalCount": 1048,
  • "groupPath": [
    • {
      • "id": "MGP-1000-20",
      • "name": "Test Menu Group",
      • "image": null
      }
    ],
  • "groupChildren": [
    • {
      • "id": "CGP-1000-34",
      • "name": "Test Item Group",
      • "image": null
      },
    • {
      • "id": "CGP-1000-35",
      • "name": "Test Item Group 2",
      • "image": null
      }
    ],
  • "facets": [
    • {
      • "key": "Brand",
      • "name": "Brand",
      • "count": 1,
      • "values": [
        • {
          • "key": "Maria's",
          • "name": "Marias",
          • "count": 2,
          • "selected": false
          }
        ]
      }
    ],
  • "items": [
    • { }
    ],
  • "alternates": [
    • "Api",
    • "Apple"
    ]
}

Browse Facet Category

Entry point for retrieving all facet values for a given category within a search.

query Parameters
search
required
string

The facet category request to execute

Request Body schema: application/json
g
Array of strings

The group path in which to search, consists of the ids of departments, promotional sale worksheets, goes well with groups, substitution groups, brands, item groups, and

q
required
string <= 64 characters

The query string that will be used to search for results

iq
Array of strings [ 1 .. 64 ] characters

Minor text modifiers that are performed within (as an AND) with the main query

fc
string

The key of the facet category to find all values for

object

A map from the facet category id to the requested facet value ids

Responses

Request samples

Content type
application/json
{
  • "g": [ ],
  • "q": "App",
  • "iq": [ ],
  • "fc": "Brand",
  • "facets": { }
}

Browse Suggestions

Performs a quick search for full search terms related to entered text.

query Parameters
q
required
string

The partial search text to make a suggestion for

Responses

Recommendations

These endpoints facilitate queries for recommended items. If you have CATAPULT Cognition and wish to offer item and digital coupon recommendations, you’ll need to use the endpoint in this group to retrieve the recommendations from Artemis. Recommendations include:

  • Top Picks for You
  • Similar or Related Items
  • More to Consider
  • Deals for You
  • Digital Coupons for You

If you are a CATAPULT retailer who would like to learn more about item and digital coupon recommendations, more information is available in this OLM article.

getRecommendations

path Parameters
id
required
string

Responses

Image

These endpoints facilitate queries for images from the CATAPULT database. They allow retrieval of the following images at a customizable size:

  • Code-128 Barcode: This can be used to generate barcodes for customer cards, transaction barcodes, and e-Gift Cards.
  • Favicon: The favicon is the small image that will be displayed in the browser tab next to your site's page title.
  • Item Images: These are the images stored in your CATAPULT database (set in Web Office) which are associated with unique items.
  • PWA Asset: This is a favicon used on a Progressive Web App (PWA). This is only relevant for PWAs, and not native apps.

Maintaining images in Web Office makes it easier to have consistency throughout your in-person and online presence.

Generate Code-128 barcode

Generates a code-128 barcode based on data height/width parameters

path Parameters
data
required
string

The data that should be encoded in the code-128 barcode

query Parameters
w
integer <int32>
Default: 128

The desired width of the barcode. Optional. Defaults to 128

h
integer <int32>
Default: 64

The desired height of the barcode. Optional. Defaults to 64

Responses

favicon

query Parameters
h
string
w
string

Responses

Get Image

Retrieves an appropriately sized image for the given image id. This request should not generally be made directly against the api, rather, a CDN should be setup to cache the images and use the api as it's backend. Requests should then be made via the CDN.

path Parameters
id
required
string

The id of the image to retrieve

query Parameters
h
string

The desired height of the image. Optional, if specified the only valid values are 24, 30, 50, 64, 180, and 240

w
string

The desired width of the image. Optional, if specified the only valid values are 24, 30, 50, 64, 180, and 240

Responses

Get PWA Asset

Generates a Progressive Web App (PWA) asset using the store's favicon.

query Parameters
h
string

The desired height of the image. Optional, if specified the only valid values are 24, 30, 50, 64, 180, 240, and 512

w
string

The desired width of the image. Optional, if specified the only valid values are 24, 30, 50, 64, 180, 240, and 512

resizeHeight
string

The desired resize height of the image. Optional, if specified the only valid values are 24, 30, 50, 64, 180, 240, and 512

resizeWidth
string

The desired resize width of the image. Optional, if specified the only valid values are 24, 30, 50, 64, 180, 240, and 512

Responses

Items

The endpoints in the Items group facilitate item queries. Use these endpoints to view Made-to-Order (MTO) modifications, detailed information, and summary information about items. See this OLM article for more information on how MTO is used in WebCart.

Item Modifiers by typed item ID

Given an item ID, this endpoint will return all necessary information to display any item modifiers and linked items associated with the item. This endpoint is typically used to display the item customization options when a customer is viewing a MTO item.

path Parameters
id
required
string
Example: INV-1000-12

The typed unique ID of the requested item

Responses

Response Schema: application/json
terminalGroup
string

Unique identifier for the terminal group associated with this Item Modifier

object (ItemModifierCategoryTree)

Linked items associated with this item.

Array of objects (ItemModifierCategoryTree)

List of item modifier categories.

object

Map of item modifier answers, where the key is a identifier for the item modifier category item and the value is an object describing the answer.

Response samples

Content type
application/json
{
  • "terminalGroup": "1000-345",
  • "linkedItems": {
    • "id": "string",
    • "name": "string",
    • "min": 0,
    • "max": 0,
    • "autoDoneOnMax": true,
    • "scoBackground": "1000-194959",
    • "scoWidth": 0,
    • "scoHeight": 0,
    • "items": [
      • {
        • "id": "[1000-5573]",
        • "order": 0,
        • "inv": "1000-78",
        • "quantities": {
          • "id": "1002-1259",
          • "price": 0.5,
          • "name": "A little",
          • "defaultItem": true,
          • "quantity": 1,
          • "scoSelectedImage": "string"
          },
        • "minimum": 0,
        • "maximum": 0,
        • "increment": 0,
        • "price": 0,
        • "freeQuantity": 0,
        • "countTowardsMaxSelections": true,
        • "subTree": { },
        • "name": "string",
        • "image": "1000-194959",
        • "scoUnselectedImage": "1000-194959",
        • "scoSelectedImage": "1000-194959"
        }
      ],
    • "prohibitAlterations": true
    },
  • "categories": [
    • {
      • "id": "string",
      • "name": "string",
      • "min": 0,
      • "max": 0,
      • "autoDoneOnMax": true,
      • "scoBackground": "1000-194959",
      • "scoWidth": 0,
      • "scoHeight": 0,
      • "items": [
        • {
          • "id": "[1000-5573]",
          • "order": 0,
          • "inv": "1000-78",
          • "quantities": {
            • "id": "1002-1259",
            • "price": 0.5,
            • "name": "A little",
            • "defaultItem": true,
            • "quantity": 1,
            • "scoSelectedImage": "string"
            },
          • "minimum": 0,
          • "maximum": 0,
          • "increment": 0,
          • "price": 0,
          • "freeQuantity": 0,
          • "countTowardsMaxSelections": true,
          • "subTree": { },
          • "name": "string",
          • "image": "1000-194959",
          • "scoUnselectedImage": "1000-194959",
          • "scoSelectedImage": "1000-194959"
          }
        ],
      • "prohibitAlterations": true
      }
    ],
  • "answers": {
    • "[1000-6630]": {
      • "id": "[1000-6630]",
      • "quantity": 1
      },
    • "[1000-6609]": {
      • "id": "[1000-6609]",
      • "quantity": 1
      }
    }
}

Create item variation by typed ID and customer modifier selections.

Given an item and an array of customer modifier selections, this endpoint will encode the item and modifiers into a variation string that can be used to identify the item with the selected modifiers. Two identical items with the same modifiers will have the same variation string.

path Parameters
id
required
string
Example: INV-1000-12

The typed unique ID of the requested item

Request Body schema: application/json
Array of objects (ItemModifierAnswer)

List of item modifier answers representing the selected options for the variation.

Responses

Response Schema: application/json
id
string

The created variation string.

Request samples

Content type
application/json
{
  • "options": [
    • {
      • "id": "[1000-5459]",
      • "quantity": 2
      },
    • {
      • "id": "[1000-5484]",
      • "quantity": 1
      },
    • {
      • "id": "[1000-6608]",
      • "quantity": 1
      },
    • {
      • "id": "[1000-6609]",
      • "quantity": 1
      },
    • {
      • "id": "[1000-6625]",
      • "quantity": 1
      },
    • {
      • "id": "[1000-6626]",
      • "quantity": 1
      },
    • {
      • "id": "[1000-6630]",
      • "quantity": 1
      },
    • {
      • "id": "[1000-6633]",
      • "quantity": 1
      },
    • {
      • "id": "[1000-6634]",
      • "quantity": 1
      },
    • {
      • "id": "[1000-6635]",
      • "quantity": 1
      }
    ]
}

Response samples

Content type
application/json
{
  • "id": "string"
}

Item detail by Scan Code

Returns detailed item data given the item's scan code.
This is an expansion on the item summary data returned by the /i/q and /i/summaries endpoints.
This response is traditionally used to populate the item detail page using the item's scancode.
Note that only non-empty fields will be returned in the ItemDetail response object.

query Parameters
scanCode
required
string
Example: scanCode=049000000276

The scan code to look up.

Responses

Response Schema: application/json
id
string

The unique ID of the item

image
string

The id of the image of an item

scanCode
string

The scancode for the item

name
string

The name of the item

alternateName
string

The alternate name of an item, if available. This is used to present items in different languages.This is the Receipt Alias field from the Additional Receipt Alias tab in the Marketing section of Web Office.

suggestedPrice
number

The suggested or pre-sale price of the item

actualPriceDivider
integer <int32>

If a price divider is in effect this contains the divider

actualPrice
number

The actual price of the item. This is typically the base price but can take into account special pricing.

autoDiscount
string

If an auto-discount applies to an item it is named here

promo
string

If the item is on any type of promotion the name of that promotion is indicated

buyDown
string

If a buydown is active for the given item it is named here

object (WeightProfileDto)

If the item is sold by weight this object describes the weight parameters

baseItem
string

If this item is an additional scan code (alternate ID) then this is the ID of its base item

ascQuantity
number

If this item is an additional scan code (alternate ID) then this is the ASC quantity of the item

maxQuantity
number

The max number of this item that can be purchased or added to the cart in a single transaction

maxBaseQuantity
number

The maximum base quantity that should be set for this item taking into account on-hands. That is, the shopper should not be allowed to add more than this quantity to their cart.

object (QuantityLimitDataDescription)

Quantity limits as given by RACS (Retail Access Control Standards).

Array of objects (ItemAttributeDto)

The list of health attributes which apply to this item

itemGroups
Array of strings

The list of item groups to which this item belongs

Array of objects (WebPaymentMethodDto)

Special tenders that this item is eligible for, such as EBT or Loyalty

Array of objects (ExternalCoupon)

The list of external/digital coupons which apply to this item

outOfStock
boolean

Indicates if this item is currently out of stock

sellOutOfStock
boolean

Indicates if this item can be sold while out of stock. Based on global and item-level settings

object (brandId)

The id of this item's brand

brand
string

The name of this item's brand

size
string

The description of this item's size

shelfSequence
integer <int32>

The number of this item's shelf sequence

location
string

The description of this item's location within the store

hasModifiers
boolean

Indicates whether the item has modifiers which require variation ID before they can be added to the cart.

hasLinkedItems
boolean

Indicates if an item has linked items, such as made-to-order items

averageWeight
number

If a weighted item should be sold by average weight, the average weight will be indicated here

hasRestriction
boolean

Indicates if a sales restriction is applied to an item that would require cashier involvement when order is fulfilled (e.g. a check ID requirement).

hasAgeRestriction
boolean

Indicates if an item has an age restriction and the shopper's age should be verified on pickup or delivery.

cashierApprovalRequired
boolean

Indicates if an item must be approved by a cashier at the POS, and thus should not be used for pay-now

hasTimeRestrictions
boolean

Indicates if an item has time restrictions and cannot be purchased at certain times.

excludeFromCombos
boolean

Indicates if this item should be excluded from dynamic promotions.

prohibitedSalesScheduleNames
Array of strings

Names of the Prohibited Sales Schedules that currently apply to this item.

object (departmentId)

ID of the department this item belongs to

department
string

Name of the department this item belongs to

discountType
string
Enum: "override" "dollar" "percent"

If this item has an Auto Discount, this is the type of discount

loyalty
number

Estimated loyalty points to be accrued on this item. This is calculated based on the actual price and the loyalty multiplier.

availability
string
Enum: "out" "low" "high" "order" "showQuantity"

Item availability status.

onHand
number

Estimated quantity on hand. This is only set if the 'Display item quantity' setting is enabled in Web Office. If the 'Display item quantity' setting is enabled and the 'Limited availability quantity' is greater than 0, then the on hand will only be returned if the 'Limited availability quantity' is greater than the on hand. If the 'Limited availability quantity' is zero, then the on hand will be returned as long as it is greater than 0.

servingsPerContainer
string

Servings Per Container entered in the Nutrition Facts field in Web Office.

servingSize
string

Serving size entered in the Nutrition Facts field in Web Office.

Array of objects (Nutrition)

Nutrition fact key/value pairs from the Nutrition Facts field in Web Office.

ingredients
string

Ingredients field from the Health & Nutrition section in Web Office

local
boolean

True if the local checkbox is checked in Web Office for the current store on the inventory page. This field is used to indicate if the item is sourced locally.

regionalDescriptor
string

Regional Descriptor field from the Marketing section in Web Office

productionMethod
string

Production Method from the Health & Nutrition section in Web Office

Array of objects (CustomSource)

List of custom sources linked to this item that have the type ITEM_TAB_HTML.This is populated from the Description Tabs field inside of the WebCart section for an item in Web Office.

Array of objects (ItemSummary)

List of alternate IDs for this item. This is populated from the Alternate ID section in Web Office.

Array of objects (Image)

List of item images. This is populated from the Product Images input in Web Office.

discontinued
boolean

Response samples

Content type
application/json
{
  • "id": "INV-1000-12",
  • "image": "1000-345",
  • "scanCode": "123456789012",
  • "name": "Test Item Name",
  • "alternateName": "Alternate Name",
  • "suggestedPrice": 1.99,
  • "actualPriceDivider": 2,
  • "actualPrice": 4,
  • "autoDiscount": "10% Off 3 or more.",
  • "promo": "Sunday Special",
  • "buyDown": "Test Buydown",
  • "weightProfile": {
    • "abbrv": "lb",
    • "decimals": 2,
    • "selectCount": 15,
    • "selectMinimum": 0.5,
    • "selectIncrement": 0.25,
    • "allowWeightedQuantity": false
    },
  • "baseItem": "INV-1000-5",
  • "ascQuantity": 0,
  • "maxQuantity": 50,
  • "maxBaseQuantity": 0,
  • "quantityLimitData": {
    • "vendorGroup": "RJ",
    • "quantityLimit": 20,
    • "comboPackAmount": 3
    },
  • "attributes": [
    • {
      • "image": "string",
      • "name": "Organic"
      }
    ],
  • "itemGroups": [
    • "string"
    ],
  • "specialTenders": [
    • {
      • "id": "WPM-1000-3",
      • "name": "EBT SNAP Online",
      • "tenderType": 4
      }
    ],
  • "coupons": [
    • {
      • "id": "gc:0100037-00004",
      • "name": "FIJI: $1.00 off",
      • "requirements": null,
      • "description": "$1.00 off select Fiji products",
      • "category": null,
      • "brand": "FIJI",
      • "startDate": "2024-04-05",
      • "endDate": "2034-04-05",
      • "redeemLimit": "1",
      • "requirementUpcs": [
        • "00632565000012"
        ],
      • "rewardUpcs": [ ],
      • "targeted": false,
      • "featured": false,
      • "enabled": false,
      • "sortOrder": 1,
      • "validBanners": null,
      • "validLocations": null,
      • "validForStore": true
      }
    ],
  • "outOfStock": false,
  • "sellOutOfStock": false,
  • "brandId": "1000-12",
  • "brand": "Maria's",
  • "size": "12oz",
  • "shelfSequence": 123,
  • "location": "Aisle 3, Section 5, Shelf 1",
  • "hasModifiers": false,
  • "hasLinkedItems": true,
  • "averageWeight": 0.34,
  • "hasRestriction": false,
  • "hasAgeRestriction": true,
  • "cashierApprovalRequired": true,
  • "hasTimeRestrictions": true,
  • "excludeFromCombos": true,
  • "prohibitedSalesScheduleNames": [
    • "string"
    ],
  • "departmentId": "1000-6",
  • "department": "Grocery",
  • "discountType": "override",
  • "loyalty": 12,
  • "availability": "low",
  • "onHand": 13,
  • "servingsPerContainer": "10",
  • "servingSize": "1 CONE (4 g)",
  • "nutrition": [
    • {
      • "id": 27,
      • "name": "Calories",
      • "value": 11,
      • "unit": null,
      • "percent": 0,
      • "parent": 0,
      • "order": 0,
      • "depth": 0
      }
    ],
  • "ingredients": "POTATO STARCH, TAPIOCA STARCH, PALM OIL (GMO FREE), SUGAR, DIETARY FIBERS, EMUSLIFIER (LECITHIN), COCOA POWDER, XANTHAN GUM, SALT, BAKING SODA, NATURAL VANILLA.",
  • "local": true,
  • "regionalDescriptor": "United States of America",
  • "productionMethod": "Bottled by Machines",
  • "customSources": [
    • {
      • "id": "1000-133079",
      • "label": "Custom Source",
      • "content": "Custom Source"
      }
    ],
  • "alternateItems": [
    • {
      • "id": "INV-1000-12",
      • "image": "1000-345",
      • "scanCode": "123456789012",
      • "name": "Test Item Name",
      • "alternateName": "Alternate Name",
      • "suggestedPrice": 1.99,
      • "actualPriceDivider": 2,
      • "actualPrice": 4,
      • "autoDiscount": "10% Off 3 or more.",
      • "promo": "Sunday Special",
      • "buyDown": "Test Buydown",
      • "weightProfile": {
        • "abbrv": "lb",
        • "decimals": 2,
        • "selectCount": 15,
        • "selectMinimum": 0.5,
        • "selectIncrement": 0.25,
        • "allowWeightedQuantity": false
        },
      • "baseItem": "INV-1000-5",
      • "ascQuantity": 0,
      • "maxQuantity": 50,
      • "maxBaseQuantity": 0,
      • "quantityLimitData": {
        • "vendorGroup": "RJ",
        • "quantityLimit": 20,
        • "comboPackAmount": 3
        },
      • "attributes": [
        • {
          • "image": "string",
          • "name": "Organic"
          }
        ],
      • "itemGroups": [
        • "string"
        ],
      • "specialTenders": [
        • {
          • "id": "WPM-1000-3",
          • "name": "EBT SNAP Online",
          • "tenderType": 4
          }
        ],
      • "coupons": [
        • {
          • "id": "gc:0100037-00004",
          • "name": "FIJI: $1.00 off",
          • "requirements": null,
          • "description": "$1.00 off select Fiji products",
          • "category": null,
          • "brand": "FIJI",
          • "startDate": "2024-04-05",
          • "endDate": "2034-04-05",
          • "redeemLimit": "1",
          • "requirementUpcs": [
            • "00632565000012"
            ],
          • "rewardUpcs": [ ],
          • "targeted": false,
          • "featured": false,
          • "enabled": false,
          • "sortOrder": 1,
          • "validBanners": null,
          • "validLocations": null,
          • "validForStore": true
          }
        ],
      • "outOfStock": false,
      • "sellOutOfStock": false,
      • "brandId": "1000-12",
      • "brand": "Maria's",
      • "size": "12oz",
      • "shelfSequence": 123,
      • "location": "Aisle 3, Section 5, Shelf 1",
      • "hasModifiers": false,
      • "hasLinkedItems": true,
      • "averageWeight": 0.34,
      • "hasRestriction": false,
      • "hasAgeRestriction": true,
      • "cashierApprovalRequired": true,
      • "hasTimeRestrictions": true,
      • "excludeFromCombos": true,
      • "prohibitedSalesScheduleNames": [
        • "string"
        ],
      • "departmentId": "1000-6",
      • "department": "Grocery",
      • "discountType": "override",
      • "discontinued": true
      }
    ],
  • "images": [
    • {
      • "id": "1000-133079",
      • "caption": "string"
      }
    ],
  • "discontinued": true
}

Item Summary by Scan Code

Returns Item Summary data given the item's scan code.
Note that multiple items will be returned if the scan code corresponds to an Alternate ID

query Parameters
sc
required
string
Example: sc=049000000276

The scan code to look up.

codeType
string
Enum: "UPCA" "upc_a" "UPCE" "upc_e" "EAN13" "ean_13"

The type of sc.

Responses

Response Schema: application/json
originalPrice
number

The base price embedded in a GS1 scan code. This is encoded in a custom ECRS format in GS1 DataBars using Application Identifier 91. WebCart parses this format and returns the numerical value. Only returned if one of embeddedPrice, embeddedNetWeight, or expiration are available.

embeddedPrice
number

The current price embedded in the scan code. This could come from a GS1 DataBar or a UPCA Type 2 barcode. In a GS1 DataBar, this is Application Identifier 392.

embeddedDiscount
number

The discount embedded in a KNET markdown label (prefix 9980).

embeddedNetWeight
number

The weight in kilograms embedded in a GS1 scan code. This is Application Identifier 310.

expiration
string <date>

The expiration date of the scan code. This is only available in GS1 DataBars and KNET markdown labels (prefix 9980). In a GS1 DataBar, this is Application Identifier 17.

Array of objects (ItemSummary)

List of items matching the UPC. Note that there can be multiple matches if the scan code corresponds to an Alternate ID.

Response samples

Content type
application/json
{
  • "originalPrice": 20,
  • "embeddedPrice": 15.15,
  • "embeddedDiscount": 1.2,
  • "embeddedNetWeight": 1.02,
  • "expiration": "2019-08-24",
  • "items": [
    • {
      • "id": "INV-1000-12",
      • "image": "1000-345",
      • "scanCode": "123456789012",
      • "name": "Test Item Name",
      • "alternateName": "Alternate Name",
      • "suggestedPrice": 1.99,
      • "actualPriceDivider": 2,
      • "actualPrice": 4,
      • "autoDiscount": "10% Off 3 or more.",
      • "promo": "Sunday Special",
      • "buyDown": "Test Buydown",
      • "weightProfile": {
        • "abbrv": "lb",
        • "decimals": 2,
        • "selectCount": 15,
        • "selectMinimum": 0.5,
        • "selectIncrement": 0.25,
        • "allowWeightedQuantity": false
        },
      • "baseItem": "INV-1000-5",
      • "ascQuantity": 0,
      • "maxQuantity": 50,
      • "maxBaseQuantity": 0,
      • "quantityLimitData": {
        • "vendorGroup": "RJ",
        • "quantityLimit": 20,
        • "comboPackAmount": 3
        },
      • "attributes": [
        • {
          • "image": "string",
          • "name": "Organic"
          }
        ],
      • "itemGroups": [
        • "string"
        ],
      • "specialTenders": [
        • {
          • "id": "WPM-1000-3",
          • "name": "EBT SNAP Online",
          • "tenderType": 4
          }
        ],
      • "coupons": [
        • {
          • "id": "gc:0100037-00004",
          • "name": "FIJI: $1.00 off",
          • "requirements": null,
          • "description": "$1.00 off select Fiji products",
          • "category": null,
          • "brand": "FIJI",
          • "startDate": "2024-04-05",
          • "endDate": "2034-04-05",
          • "redeemLimit": "1",
          • "requirementUpcs": [
            • "00632565000012"
            ],
          • "rewardUpcs": [ ],
          • "targeted": false,
          • "featured": false,
          • "enabled": false,
          • "sortOrder": 1,
          • "validBanners": null,
          • "validLocations": null,
          • "validForStore": true
          }
        ],
      • "outOfStock": false,
      • "sellOutOfStock": false,
      • "brandId": "1000-12",
      • "brand": "Maria's",
      • "size": "12oz",
      • "shelfSequence": 123,
      • "location": "Aisle 3, Section 5, Shelf 1",
      • "hasModifiers": false,
      • "hasLinkedItems": true,
      • "averageWeight": 0.34,
      • "hasRestriction": false,
      • "hasAgeRestriction": true,
      • "cashierApprovalRequired": true,
      • "hasTimeRestrictions": true,
      • "excludeFromCombos": true,
      • "prohibitedSalesScheduleNames": [
        • "string"
        ],
      • "departmentId": "1000-6",
      • "department": "Grocery",
      • "discountType": "override",
      • "discontinued": true
      }
    ]
}

Item detail by typed item ID

Returns detailed item data given the item's typed ID.
This is an expansion on the item summary data returned by the /i/q and /i/summaries endpoints.
This response is traditionally used to populate the item detail page using the item's scancode.
Note that only non-empty fields will be returned in the ItemDetail response object.

path Parameters
id
required
string
Example: INV-1000-12

The typed unique ID of the requested item

Responses

Response Schema: application/json
id
string

The unique ID of the item

image
string

The id of the image of an item

scanCode
string

The scancode for the item

name
string

The name of the item

alternateName
string

The alternate name of an item, if available. This is used to present items in different languages.This is the Receipt Alias field from the Additional Receipt Alias tab in the Marketing section of Web Office.

suggestedPrice
number

The suggested or pre-sale price of the item

actualPriceDivider
integer <int32>

If a price divider is in effect this contains the divider

actualPrice
number

The actual price of the item. This is typically the base price but can take into account special pricing.

autoDiscount
string

If an auto-discount applies to an item it is named here

promo
string

If the item is on any type of promotion the name of that promotion is indicated

buyDown
string

If a buydown is active for the given item it is named here

object (WeightProfileDto)

If the item is sold by weight this object describes the weight parameters

baseItem
string

If this item is an additional scan code (alternate ID) then this is the ID of its base item

ascQuantity
number

If this item is an additional scan code (alternate ID) then this is the ASC quantity of the item

maxQuantity
number

The max number of this item that can be purchased or added to the cart in a single transaction

maxBaseQuantity
number

The maximum base quantity that should be set for this item taking into account on-hands. That is, the shopper should not be allowed to add more than this quantity to their cart.

object (QuantityLimitDataDescription)

Quantity limits as given by RACS (Retail Access Control Standards).

Array of objects (ItemAttributeDto)

The list of health attributes which apply to this item

itemGroups
Array of strings

The list of item groups to which this item belongs

Array of objects (WebPaymentMethodDto)

Special tenders that this item is eligible for, such as EBT or Loyalty

Array of objects (ExternalCoupon)

The list of external/digital coupons which apply to this item

outOfStock
boolean

Indicates if this item is currently out of stock

sellOutOfStock
boolean

Indicates if this item can be sold while out of stock. Based on global and item-level settings

object (brandId)

The id of this item's brand

brand
string

The name of this item's brand

size
string

The description of this item's size

shelfSequence
integer <int32>

The number of this item's shelf sequence

location
string

The description of this item's location within the store

hasModifiers
boolean

Indicates whether the item has modifiers which require variation ID before they can be added to the cart.

hasLinkedItems
boolean

Indicates if an item has linked items, such as made-to-order items

averageWeight
number

If a weighted item should be sold by average weight, the average weight will be indicated here

hasRestriction
boolean

Indicates if a sales restriction is applied to an item that would require cashier involvement when order is fulfilled (e.g. a check ID requirement).

hasAgeRestriction
boolean

Indicates if an item has an age restriction and the shopper's age should be verified on pickup or delivery.

cashierApprovalRequired
boolean

Indicates if an item must be approved by a cashier at the POS, and thus should not be used for pay-now

hasTimeRestrictions
boolean

Indicates if an item has time restrictions and cannot be purchased at certain times.

excludeFromCombos
boolean

Indicates if this item should be excluded from dynamic promotions.

prohibitedSalesScheduleNames
Array of strings

Names of the Prohibited Sales Schedules that currently apply to this item.

object (departmentId)

ID of the department this item belongs to

department
string

Name of the department this item belongs to

discountType
string
Enum: "override" "dollar" "percent"

If this item has an Auto Discount, this is the type of discount

loyalty
number

Estimated loyalty points to be accrued on this item. This is calculated based on the actual price and the loyalty multiplier.

availability
string
Enum: "out" "low" "high" "order" "showQuantity"

Item availability status.

onHand
number

Estimated quantity on hand. This is only set if the 'Display item quantity' setting is enabled in Web Office. If the 'Display item quantity' setting is enabled and the 'Limited availability quantity' is greater than 0, then the on hand will only be returned if the 'Limited availability quantity' is greater than the on hand. If the 'Limited availability quantity' is zero, then the on hand will be returned as long as it is greater than 0.

servingsPerContainer
string

Servings Per Container entered in the Nutrition Facts field in Web Office.

servingSize
string

Serving size entered in the Nutrition Facts field in Web Office.

Array of objects (Nutrition)

Nutrition fact key/value pairs from the Nutrition Facts field in Web Office.

ingredients
string

Ingredients field from the Health & Nutrition section in Web Office

local
boolean

True if the local checkbox is checked in Web Office for the current store on the inventory page. This field is used to indicate if the item is sourced locally.

regionalDescriptor
string

Regional Descriptor field from the Marketing section in Web Office

productionMethod
string

Production Method from the Health & Nutrition section in Web Office

Array of objects (CustomSource)

List of custom sources linked to this item that have the type ITEM_TAB_HTML.This is populated from the Description Tabs field inside of the WebCart section for an item in Web Office.

Array of objects (ItemSummary)

List of alternate IDs for this item. This is populated from the Alternate ID section in Web Office.

Array of objects (Image)

List of item images. This is populated from the Product Images input in Web Office.

discontinued
boolean

Response samples

Content type
application/json
{
  • "id": "INV-1000-12",
  • "image": "1000-345",
  • "scanCode": "123456789012",
  • "name": "Test Item Name",
  • "alternateName": "Alternate Name",
  • "suggestedPrice": 1.99,
  • "actualPriceDivider": 2,
  • "actualPrice": 4,
  • "autoDiscount": "10% Off 3 or more.",
  • "promo": "Sunday Special",
  • "buyDown": "Test Buydown",
  • "weightProfile": {
    • "abbrv": "lb",
    • "decimals": 2,
    • "selectCount": 15,
    • "selectMinimum": 0.5,
    • "selectIncrement": 0.25,
    • "allowWeightedQuantity": false
    },
  • "baseItem": "INV-1000-5",
  • "ascQuantity": 0,
  • "maxQuantity": 50,
  • "maxBaseQuantity": 0,
  • "quantityLimitData": {
    • "vendorGroup": "RJ",
    • "quantityLimit": 20,
    • "comboPackAmount": 3
    },
  • "attributes": [
    • {
      • "image": "string",
      • "name": "Organic"
      }
    ],
  • "itemGroups": [
    • "string"
    ],
  • "specialTenders": [
    • {
      • "id": "WPM-1000-3",
      • "name": "EBT SNAP Online",
      • "tenderType": 4
      }
    ],
  • "coupons": [
    • {
      • "id": "gc:0100037-00004",
      • "name": "FIJI: $1.00 off",
      • "requirements": null,
      • "description": "$1.00 off select Fiji products",
      • "category": null,
      • "brand": "FIJI",
      • "startDate": "2024-04-05",
      • "endDate": "2034-04-05",
      • "redeemLimit": "1",
      • "requirementUpcs": [
        • "00632565000012"
        ],
      • "rewardUpcs": [ ],
      • "targeted": false,
      • "featured": false,
      • "enabled": false,
      • "sortOrder": 1,
      • "validBanners": null,
      • "validLocations": null,
      • "validForStore": true
      }
    ],
  • "outOfStock": false,
  • "sellOutOfStock": false,
  • "brandId": "1000-12",
  • "brand": "Maria's",
  • "size": "12oz",
  • "shelfSequence": 123,
  • "location": "Aisle 3, Section 5, Shelf 1",
  • "hasModifiers": false,
  • "hasLinkedItems": true,
  • "averageWeight": 0.34,
  • "hasRestriction": false,
  • "hasAgeRestriction": true,
  • "cashierApprovalRequired": true,
  • "hasTimeRestrictions": true,
  • "excludeFromCombos": true,
  • "prohibitedSalesScheduleNames": [
    • "string"
    ],
  • "departmentId": "1000-6",
  • "department": "Grocery",
  • "discountType": "override",
  • "loyalty": 12,
  • "availability": "low",
  • "onHand": 13,
  • "servingsPerContainer": "10",
  • "servingSize": "1 CONE (4 g)",
  • "nutrition": [
    • {
      • "id": 27,
      • "name": "Calories",
      • "value": 11,
      • "unit": null,
      • "percent": 0,
      • "parent": 0,
      • "order": 0,
      • "depth": 0
      }
    ],
  • "ingredients": "POTATO STARCH, TAPIOCA STARCH, PALM OIL (GMO FREE), SUGAR, DIETARY FIBERS, EMUSLIFIER (LECITHIN), COCOA POWDER, XANTHAN GUM, SALT, BAKING SODA, NATURAL VANILLA.",
  • "local": true,
  • "regionalDescriptor": "United States of America",
  • "productionMethod": "Bottled by Machines",
  • "customSources": [
    • {
      • "id": "1000-133079",
      • "label": "Custom Source",
      • "content": "Custom Source"
      }
    ],
  • "alternateItems": [
    • {
      • "id": "INV-1000-12",
      • "image": "1000-345",
      • "scanCode": "123456789012",
      • "name": "Test Item Name",
      • "alternateName": "Alternate Name",
      • "suggestedPrice": 1.99,
      • "actualPriceDivider": 2,
      • "actualPrice": 4,
      • "autoDiscount": "10% Off 3 or more.",
      • "promo": "Sunday Special",
      • "buyDown": "Test Buydown",
      • "weightProfile": {
        • "abbrv": "lb",
        • "decimals": 2,
        • "selectCount": 15,
        • "selectMinimum": 0.5,
        • "selectIncrement": 0.25,
        • "allowWeightedQuantity": false
        },
      • "baseItem": "INV-1000-5",
      • "ascQuantity": 0,
      • "maxQuantity": 50,
      • "maxBaseQuantity": 0,
      • "quantityLimitData": {
        • "vendorGroup": "RJ",
        • "quantityLimit": 20,
        • "comboPackAmount": 3
        },
      • "attributes": [
        • {
          • "image": "string",
          • "name": "Organic"
          }
        ],
      • "itemGroups": [
        • "string"
        ],
      • "specialTenders": [
        • {
          • "id": "WPM-1000-3",
          • "name": "EBT SNAP Online",
          • "tenderType": 4
          }
        ],
      • "coupons": [
        • {
          • "id": "gc:0100037-00004",
          • "name": "FIJI: $1.00 off",
          • "requirements": null,
          • "description": "$1.00 off select Fiji products",
          • "category": null,
          • "brand": "FIJI",
          • "startDate": "2024-04-05",
          • "endDate": "2034-04-05",
          • "redeemLimit": "1",
          • "requirementUpcs": [
            • "00632565000012"
            ],
          • "rewardUpcs": [ ],
          • "targeted": false,
          • "featured": false,
          • "enabled": false,
          • "sortOrder": 1,
          • "validBanners": null,
          • "validLocations": null,
          • "validForStore": true
          }
        ],
      • "outOfStock": false,
      • "sellOutOfStock": false,
      • "brandId": "1000-12",
      • "brand": "Maria's",
      • "size": "12oz",
      • "shelfSequence": 123,
      • "location": "Aisle 3, Section 5, Shelf 1",
      • "hasModifiers": false,
      • "hasLinkedItems": true,
      • "averageWeight": 0.34,
      • "hasRestriction": false,
      • "hasAgeRestriction": true,
      • "cashierApprovalRequired": true,
      • "hasTimeRestrictions": true,
      • "excludeFromCombos": true,
      • "prohibitedSalesScheduleNames": [
        • "string"
        ],
      • "departmentId": "1000-6",
      • "department": "Grocery",
      • "discountType": "override",
      • "discontinued": true
      }
    ],
  • "images": [
    • {
      • "id": "1000-133079",
      • "caption": "string"
      }
    ],
  • "discontinued": true
}

Fetch item by typed ID and variation.

Typically used for MTO items. Once an MTO item has been modified and a variation created, this endpoint will return the item with the selected modifier selections using the variation.

path Parameters
id
required
string
Example: INV-1000-12

The typed unique ID of the requested item

Request Body schema: application/json
variation
string

The requested variation string.

Responses

Response Schema: application/json
terminalGroup
string

Unique identifier for the terminal group associated with this Item Modifier

object (ItemModifierCategoryTree)

Linked items associated with this item.

Array of objects (ItemModifierCategoryTree)

List of item modifier categories.

object

Map of item modifier answers, where the key is a identifier for the item modifier category item and the value is an object describing the answer.

Request samples

Content type
application/json
{
  • "variation": "string"
}

Response samples

Content type
application/json
{
  • "terminalGroup": "1000-345",
  • "linkedItems": {
    • "id": "string",
    • "name": "string",
    • "min": 0,
    • "max": 0,
    • "autoDoneOnMax": true,
    • "scoBackground": "1000-194959",
    • "scoWidth": 0,
    • "scoHeight": 0,
    • "items": [
      • {
        • "id": "[1000-5573]",
        • "order": 0,
        • "inv": "1000-78",
        • "quantities": {
          • "id": "1002-1259",
          • "price": 0.5,
          • "name": "A little",
          • "defaultItem": true,
          • "quantity": 1,
          • "scoSelectedImage": "string"
          },
        • "minimum": 0,
        • "maximum": 0,
        • "increment": 0,
        • "price": 0,
        • "freeQuantity": 0,
        • "countTowardsMaxSelections": true,
        • "subTree": { },
        • "name": "string",
        • "image": "1000-194959",
        • "scoUnselectedImage": "1000-194959",
        • "scoSelectedImage": "1000-194959"
        }
      ],
    • "prohibitAlterations": true
    },
  • "categories": [
    • {
      • "id": "string",
      • "name": "string",
      • "min": 0,
      • "max": 0,
      • "autoDoneOnMax": true,
      • "scoBackground": "1000-194959",
      • "scoWidth": 0,
      • "scoHeight": 0,
      • "items": [
        • {
          • "id": "[1000-5573]",
          • "order": 0,
          • "inv": "1000-78",
          • "quantities": {
            • "id": "1002-1259",
            • "price": 0.5,
            • "name": "A little",
            • "defaultItem": true,
            • "quantity": 1,
            • "scoSelectedImage": "string"
            },
          • "minimum": 0,
          • "maximum": 0,
          • "increment": 0,
          • "price": 0,
          • "freeQuantity": 0,
          • "countTowardsMaxSelections": true,
          • "subTree": { },
          • "name": "string",
          • "image": "1000-194959",
          • "scoUnselectedImage": "1000-194959",
          • "scoSelectedImage": "1000-194959"
          }
        ],
      • "prohibitAlterations": true
      }
    ],
  • "answers": {
    • "[1000-6630]": {
      • "id": "[1000-6630]",
      • "quantity": 1
      },
    • "[1000-6609]": {
      • "id": "[1000-6609]",
      • "quantity": 1
      }
    }
}

Item summaries for list of scan codes

Given a comma delimited list of scan codes, a list of item summaries will be returned.
This is a convenience method for getting multiple item summaries in a single request.
Note that this endpoint does not return detailed item data. For that, use the /i/detail or /i/ endpoints.

query Parameters
scanCodes
required
string
Example: scanCodes=049000000276,018775121196

List of scancodes to look up

Responses

Response Schema: application/json
Array
id
string

The unique ID of the item

image
string

The id of the image of an item

scanCode
string

The scancode for the item

name
string

The name of the item

alternateName
string

The alternate name of an item, if available. This is used to present items in different languages.This is the Receipt Alias field from the Additional Receipt Alias tab in the Marketing section of Web Office.

suggestedPrice
number

The suggested or pre-sale price of the item

actualPriceDivider
integer <int32>

If a price divider is in effect this contains the divider

actualPrice
number

The actual price of the item. This is typically the base price but can take into account special pricing.

autoDiscount
string

If an auto-discount applies to an item it is named here

promo
string

If the item is on any type of promotion the name of that promotion is indicated

buyDown
string

If a buydown is active for the given item it is named here

object (WeightProfileDto)

If the item is sold by weight this object describes the weight parameters

baseItem
string

If this item is an additional scan code (alternate ID) then this is the ID of its base item

ascQuantity
number

If this item is an additional scan code (alternate ID) then this is the ASC quantity of the item

maxQuantity
number

The max number of this item that can be purchased or added to the cart in a single transaction

maxBaseQuantity
number

The maximum base quantity that should be set for this item taking into account on-hands. That is, the shopper should not be allowed to add more than this quantity to their cart.

object (QuantityLimitDataDescription)

Quantity limits as given by RACS (Retail Access Control Standards).

Array of objects (ItemAttributeDto)

The list of health attributes which apply to this item

itemGroups
Array of strings

The list of item groups to which this item belongs

Array of objects (WebPaymentMethodDto)

Special tenders that this item is eligible for, such as EBT or Loyalty

Array of objects (ExternalCoupon)

The list of external/digital coupons which apply to this item

outOfStock
boolean

Indicates if this item is currently out of stock

sellOutOfStock
boolean

Indicates if this item can be sold while out of stock. Based on global and item-level settings

object (brandId)

The id of this item's brand

brand
string

The name of this item's brand

size
string

The description of this item's size

shelfSequence
integer <int32>

The number of this item's shelf sequence

location
string

The description of this item's location within the store

hasModifiers
boolean

Indicates whether the item has modifiers which require variation ID before they can be added to the cart.

hasLinkedItems
boolean

Indicates if an item has linked items, such as made-to-order items

averageWeight
number

If a weighted item should be sold by average weight, the average weight will be indicated here

hasRestriction
boolean

Indicates if a sales restriction is applied to an item that would require cashier involvement when order is fulfilled (e.g. a check ID requirement).

hasAgeRestriction
boolean

Indicates if an item has an age restriction and the shopper's age should be verified on pickup or delivery.

cashierApprovalRequired
boolean

Indicates if an item must be approved by a cashier at the POS, and thus should not be used for pay-now

hasTimeRestrictions
boolean

Indicates if an item has time restrictions and cannot be purchased at certain times.

excludeFromCombos
boolean

Indicates if this item should be excluded from dynamic promotions.

prohibitedSalesScheduleNames
Array of strings

Names of the Prohibited Sales Schedules that currently apply to this item.

object (departmentId)

ID of the department this item belongs to

department
string

Name of the department this item belongs to

discountType
string
Enum: "override" "dollar" "percent"

If this item has an Auto Discount, this is the type of discount

discontinued
boolean

Response samples

Content type
application/json
[
  • {
    • "id": "INV-1000-12",
    • "image": "1000-345",
    • "scanCode": "123456789012",
    • "name": "Test Item Name",
    • "alternateName": "Alternate Name",
    • "suggestedPrice": 1.99,
    • "actualPriceDivider": 2,
    • "actualPrice": 4,
    • "autoDiscount": "10% Off 3 or more.",
    • "promo": "Sunday Special",
    • "buyDown": "Test Buydown",
    • "weightProfile": {
      • "abbrv": "lb",
      • "decimals": 2,
      • "selectCount": 15,
      • "selectMinimum": 0.5,
      • "selectIncrement": 0.25,
      • "allowWeightedQuantity": false
      },
    • "baseItem": "INV-1000-5",
    • "ascQuantity": 0,
    • "maxQuantity": 50,
    • "maxBaseQuantity": 0,
    • "quantityLimitData": {
      • "vendorGroup": "RJ",
      • "quantityLimit": 20,
      • "comboPackAmount": 3
      },
    • "attributes": [
      • {
        • "image": "string",
        • "name": "Organic"
        }
      ],
    • "itemGroups": [
      • "string"
      ],
    • "specialTenders": [
      • {
        • "id": "WPM-1000-3",
        • "name": "EBT SNAP Online",
        • "tenderType": 4
        }
      ],
    • "coupons": [
      • {
        • "id": "gc:0100037-00004",
        • "name": "FIJI: $1.00 off",
        • "requirements": null,
        • "description": "$1.00 off select Fiji products",
        • "category": null,
        • "brand": "FIJI",
        • "startDate": "2024-04-05",
        • "endDate": "2034-04-05",
        • "redeemLimit": "1",
        • "requirementUpcs": [
          • "00632565000012"
          ],
        • "rewardUpcs": [ ],
        • "targeted": false,
        • "featured": false,
        • "enabled": false,
        • "sortOrder": 1,
        • "validBanners": null,
        • "validLocations": null,
        • "validForStore": true
        }
      ],
    • "outOfStock": false,
    • "sellOutOfStock": false,
    • "brandId": "1000-12",
    • "brand": "Maria's",
    • "size": "12oz",
    • "shelfSequence": 123,
    • "location": "Aisle 3, Section 5, Shelf 1",
    • "hasModifiers": false,
    • "hasLinkedItems": true,
    • "averageWeight": 0.34,
    • "hasRestriction": false,
    • "hasAgeRestriction": true,
    • "cashierApprovalRequired": true,
    • "hasTimeRestrictions": true,
    • "excludeFromCombos": true,
    • "prohibitedSalesScheduleNames": [
      • "string"
      ],
    • "departmentId": "1000-6",
    • "department": "Grocery",
    • "discountType": "override",
    • "discontinued": true
    }
]

Lists

The endpoints in this group facilitate queries for, and changes to, lists. Use the endpoints in this group to control:

  • List Creation
  • List Management (includes viewing, modifying, and syncing lists)
  • List Deletion

Get List

Returns the requested list for the associated customer.

path Parameters
id
required
string
Example: 1002-1350700

Unique ID for the requested list.

Responses

Response Schema: application/json
id
string

The unique ID of the list.

name
string

The name of the list

type
string
Enum: "CUSTOM" "FAVORITES" "SAVE_FOR_LATER" "CUSTOM" "FAVORITES" "SAVE_FOR_LATER"

The type of the list. This is used to determine the list's purpose. For example, a save for later, custom, or favorites list.

detail
boolean

Value used to denote that this response contains list details. Always true.

Array of objects (ListItemDetail)

The items in the list. This is a detailed view of the items in the list.

count
number

The number of items in the list. This is influenced by the quantity of each item in the list.

Response samples

Content type
application/json
{
  • "id": "1000-345",
  • "name": "Favorites",
  • "type": "CUSTOM",
  • "detail": true,
  • "items": [
    • {
      • "item": {
        • "id": "INV-1000-12",
        • "image": "1000-345",
        • "scanCode": "123456789012",
        • "name": "Test Item Name",
        • "alternateName": "Alternate Name",
        • "suggestedPrice": 1.99,
        • "actualPriceDivider": 2,
        • "actualPrice": 4,
        • "autoDiscount": "10% Off 3 or more.",
        • "promo": "Sunday Special",
        • "buyDown": "Test Buydown",
        • "weightProfile": {
          • "abbrv": "lb",
          • "decimals": 2,
          • "selectCount": 15,
          • "selectMinimum": 0.5,
          • "selectIncrement": 0.25,
          • "allowWeightedQuantity": false
          },
        • "baseItem": "INV-1000-5",
        • "ascQuantity": 0,
        • "maxQuantity": 50,
        • "maxBaseQuantity": 0,
        • "quantityLimitData": {
          • "vendorGroup": "RJ",
          • "quantityLimit": 20,
          • "comboPackAmount": 3
          },
        • "attributes": [
          • {
            • "image": "string",
            • "name": "Organic"
            }
          ],
        • "itemGroups": [
          • "string"
          ],
        • "specialTenders": [
          • {
            • "id": "WPM-1000-3",
            • "name": "EBT SNAP Online",
            • "tenderType": 4
            }
          ],
        • "coupons": [
          • {
            • "id": "gc:0100037-00004",
            • "name": "FIJI: $1.00 off",
            • "requirements": null,
            • "description": "$1.00 off select Fiji products",
            • "category": null,
            • "brand": "FIJI",
            • "startDate": "2024-04-05",
            • "endDate": "2034-04-05",
            • "redeemLimit": "1",
            • "requirementUpcs": [
              • "00632565000012"
              ],
            • "rewardUpcs": [ ],
            • "targeted": false,
            • "featured": false,
            • "enabled": false,
            • "sortOrder": 1,
            • "validBanners": null,
            • "validLocations": null,
            • "validForStore": true
            }
          ],
        • "outOfStock": false,
        • "sellOutOfStock": false,
        • "brandId": "1000-12",
        • "brand": "Maria's",
        • "size": "12oz",
        • "shelfSequence": 123,
        • "location": "Aisle 3, Section 5, Shelf 1",
        • "hasModifiers": false,
        • "hasLinkedItems": true,
        • "averageWeight": 0.34,
        • "hasRestriction": false,
        • "hasAgeRestriction": true,
        • "cashierApprovalRequired": true,
        • "hasTimeRestrictions": true,
        • "excludeFromCombos": true,
        • "prohibitedSalesScheduleNames": [
          • "string"
          ],
        • "departmentId": "1000-6",
        • "department": "Grocery",
        • "discountType": "override",
        • "discontinued": true
        },
      • "variation": {
        • "id": "YLMfH9nO9RVY6zpGlSIFlgIrBeMQIh+/skdSdjyKw38=",
        • "priceOfModifiers": 4.55,
        • "modifiers": [
          • {
            • "type": "link",
            • "name": "string",
            • "quantity": 0,
            • "descriptor": "string",
            • "priceOfModifier": 0
            }
          ]
        },
      • "quantity": 2,
      • "weightedItemQuantity": 3,
      • "listItemSelected": false
      }
    ],
  • "count": 5
}

Delete List

Deletes the requested list for the associated customer. Connection to the remote database is required.

path Parameters
id
required
string
Example: 1002-1350700

Unique ID for the list to delete.

Responses

Lists

Returns all lists saved for the associated customer.
If the customer is not logged in or lists are disabled, an empty list will be returned.
If the customer is logged in and has lists, a list of lists will be returned.

Responses

Response Schema: application/json
Array
id
string

The unique ID of the list.

name
string

The name of the list

type
string
Enum: "CUSTOM" "FAVORITES" "SAVE_FOR_LATER" "CUSTOM" "FAVORITES" "SAVE_FOR_LATER"

The type of the list. This is used to determine the list's purpose. For example, a save for later, custom, or favorites list.

Array of objects (ListItemBasic)

The items in the list.

count
number

The number of items in the list. This is influenced by the quantity of each item in the list.

Response samples

Content type
application/json
[
  • {
    • "id": "1000-345",
    • "name": "Favorites",
    • "type": "CUSTOM",
    • "items": [
      • {
        • "id": "INV-1000-12",
        • "listItemId": "1000-12",
        • "name": "Spring Water",
        • "variation": "T1PNoYwrqgwDVLtfmj7L5e0Sq02OEbqHPC8RFhICuUU=",
        • "quantity": 2,
        • "weightedItemQuantity": 3,
        • "sumQuantity": 0,
        • "image": "1000-12",
        • "listItemSelected": false
        }
      ],
    • "count": 5
    }
]

Create or update list

Creates a new list or updates an existing list.
If the list already exists, it will be updated with the new items and/or list name.
If the list does not exist, it will be created with the provided items.
The new or updated list is then returned.

Request Body schema: application/json

Required object for creating or update a customer's list.

id
string

The unique ID of the list.

name
string

The name of the list

type
string
Enum: "CUSTOM" "FAVORITES" "SAVE_FOR_LATER" "CUSTOM" "FAVORITES" "SAVE_FOR_LATER"

The type of the list. This is used to determine the list's purpose. For example, a save for later, custom, or favorites list.

Array of objects (ListItemBasic)

The items in the list.

count
number

The number of items in the list. This is influenced by the quantity of each item in the list.

Responses

Response Schema: application/json
id
string

The unique ID of the list.

name
string

The name of the list

type
string
Enum: "CUSTOM" "FAVORITES" "SAVE_FOR_LATER" "CUSTOM" "FAVORITES" "SAVE_FOR_LATER"

The type of the list. This is used to determine the list's purpose. For example, a save for later, custom, or favorites list.

Array of objects (ListItemBasic)

The items in the list.

count
number

The number of items in the list. This is influenced by the quantity of each item in the list.

Request samples

Content type
application/json

List Sync Request

{
  • "id": "1000-10000103",
  • "name": "List Name",
  • "type": "CUSTOM",
  • "items": [
    • {
      • "id": "INV-1000-19343",
      • "quantity": 1,
      • "weightedItemQuantity": 0
      }
    ],
  • "count": 1
}

Response samples

Content type
application/json
{
  • "id": "1000-345",
  • "name": "Favorites",
  • "type": "CUSTOM",
  • "items": [
    • {
      • "id": "INV-1000-12",
      • "listItemId": "1000-12",
      • "name": "Spring Water",
      • "variation": "T1PNoYwrqgwDVLtfmj7L5e0Sq02OEbqHPC8RFhICuUU=",
      • "quantity": 2,
      • "weightedItemQuantity": 3,
      • "sumQuantity": 0,
      • "image": "1000-12",
      • "listItemSelected": false
      }
    ],
  • "count": 5
}

Cart

The endpoints in this group control the management and processing of user transactions within a shopper’s cart. Use the endpoints in this group to:

  • Retrieve the current state of the shopping cart and update it with changes.
  • Finalize the checkout process, retrieve available payment methods, and use functionalities like Line Bust and Pay Now to facilitate a faster checkout process.

Cart

Returns the user's current cart.

Responses

Response Schema: application/json
object (id)

ID of this store

version
integer <int64>

The version number of the transaction

subTotal
number

The subtotal of the cart

rawSubTotal
number

The subtotal of the cart without a discount

deliveryTotal
number

The delivery total for the cart

shippingTotal
number

The shipping total for the cart

taxTotal
number

The tax total of the cart

tipTotal
number

The tip total of the cart

roundUpTotal
number

The Round Up total of the cart

grandTotal
number

The grand total of the cart

dueTotal
number

The unpaid amount on the cart

tenderedTotal
number

The total of all tenders on the transaction

ebtSnapEligibleTotal
number

Total amount of the transaction that is eligible for EBT SNAP

ebtTanfEligibleTotal
number

Total amount of the transaction that is eligible for EBT TANF / EBT Cash

payLater
boolean

If a pay later tender has been selected for this transaction

instructions
string

If there are any transaction level customer instructions attached to this transaction then they are stored here

Array of objects (CartLineDto)

The list of line items in the cart

Array of objects (GiftCardLineDto)

The list of gift card items in the cart

Array of objects (CartCouponDto)

The list of coupons used on this transaction

Array of objects (CartDeferrableComboDto)

The list of deferrable discounts used on this transaction

object (CheckoutResponseData)

Object describing the current status of the checkout sequence for this cart

inStore
boolean

Returns true if the cart is being shopped in-store, in Accelerated Checkout

object (orderType)

Returns the ID for the cart's order type, if Multiple Order Types is enabled

online
boolean

Returns true if replication with the store is online, for the purposes of notifying the user that they may not be able to place their order.

lastSyncTime
string <date-time>

Timestamp of the last time this cart was synced. To be sent with CartRequest. Prevents syncing with an out of date cart.

addedCouponValid
boolean

Response samples

Content type
application/json
{
  • "id": "1000-10",
  • "version": 0,
  • "subTotal": 1.27,
  • "rawSubTotal": 1.27,
  • "deliveryTotal": 1,
  • "shippingTotal": 1,
  • "taxTotal": 1,
  • "tipTotal": 1,
  • "roundUpTotal": 0.37,
  • "grandTotal": 10,
  • "dueTotal": 10,
  • "tenderedTotal": 0,
  • "ebtSnapEligibleTotal": 3,
  • "ebtTanfEligibleTotal": 10,
  • "payLater": true,
  • "instructions": "Please take extra care of my order!",
  • "lineItems": [
    • {
      • "id": 1,
      • "order": 1,
      • "scancode": "3283",
      • "detail": "Apples Honeycrisp",
      • "quantity": 1,
      • "weightedItemQuantity": 2,
      • "amountDivider": 2,
      • "amount": 2,
      • "extended": 4,
      • "substitutable": true,
      • "instructions": "Please make sure these are ripe!",
      • "type": 0,
      • "item": {
        • "id": "INV-1000-12",
        • "image": "1000-345",
        • "scanCode": "123456789012",
        • "name": "Test Item Name",
        • "alternateName": "Alternate Name",
        • "suggestedPrice": 1.99,
        • "actualPriceDivider": 2,
        • "actualPrice": 4,
        • "autoDiscount": "10% Off 3 or more.",
        • "promo": "Sunday Special",
        • "buyDown": "Test Buydown",
        • "weightProfile": {
          • "abbrv": "lb",
          • "decimals": 2,
          • "selectCount": 15,
          • "selectMinimum": 0.5,
          • "selectIncrement": 0.25,
          • "allowWeightedQuantity": false
          },
        • "baseItem": "INV-1000-5",
        • "ascQuantity": 0,
        • "maxQuantity": 50,
        • "maxBaseQuantity": 0,
        • "quantityLimitData": {
          • "vendorGroup": "RJ",
          • "quantityLimit": 20,
          • "comboPackAmount": 3
          },
        • "attributes": [
          • {
            • "image": "string",
            • "name": "Organic"
            }
          ],
        • "itemGroups": [
          • "string"
          ],
        • "specialTenders": [
          • {
            • "id": "WPM-1000-3",
            • "name": "EBT SNAP Online",
            • "tenderType": 4
            }
          ],
        • "coupons": [
          • {
            • "id": "gc:0100037-00004",
            • "name": "FIJI: $1.00 off",
            • "requirements": null,
            • "description": "$1.00 off select Fiji products",
            • "category": null,
            • "brand": "FIJI",
            • "startDate": "2024-04-05",
            • "endDate": "2034-04-05",
            • "redeemLimit": "1",
            • "requirementUpcs": [
              • "00632565000012"
              ],
            • "rewardUpcs": [ ],
            • "targeted": false,
            • "featured": false,
            • "enabled": false,
            • "sortOrder": 1,
            • "validBanners": null,
            • "validLocations": null,
            • "validForStore": true
            }
          ],
        • "outOfStock": false,
        • "sellOutOfStock": false,
        • "brandId": "1000-12",
        • "brand": "Maria's",
        • "size": "12oz",
        • "shelfSequence": 123,
        • "location": "Aisle 3, Section 5, Shelf 1",
        • "hasModifiers": false,
        • "hasLinkedItems": true,
        • "averageWeight": 0.34,
        • "hasRestriction": false,
        • "hasAgeRestriction": true,
        • "cashierApprovalRequired": true,
        • "hasTimeRestrictions": true,
        • "excludeFromCombos": true,
        • "prohibitedSalesScheduleNames": [
          • "string"
          ],
        • "departmentId": "1000-6",
        • "department": "Grocery",
        • "discountType": "override",
        • "discontinued": true
        },
      • "variation": "T1PNoYwrqgwDVLtfmj7L5e0Sq02OEbqHPC8RFhICuUU=",
      • "linkType": "link",
      • "linkedItems": [
        • { }
        ],
      • "embeddedPrice": 1.5,
      • "embeddedDiscount": 0.5,
      • "roudUpId": "1000-3",
      • "tipProfileId": 1,
      • "tipOptionId": 3,
      • "tipAmount": 3,
      • "couponProviderId": "6",
      • "couponItemScanCodes": [
        • "string"
        ]
      }
    ],
  • "giftCardItems": [
    • {
      • "id": 1,
      • "order": 1,
      • "code": "EGC",
      • "account": "LJ4BEI2AFKLRNSAR",
      • "detail": "E-Gift Card",
      • "amount": 100,
      • "quantity": 2,
      • "design": {
        • "id": "1000-20",
        • "image": "1000-25"
        },
      • "recipientName": "Bob & Alice",
      • "senderName": "Joe Schmo",
      • "message": "Congratulations! Get something delivered on me!",
      • "recipientEmail": "test@ecrs.com",
      • "recipientPhoneNumber": "(828) 265-2907",
      • "print": true,
      • "sendDate": "2024-05-19T16:00:00Z"
      }
    ],
  • "coupons": [
    • {
      • "id": "1000-10",
      • "name": "10% Off!",
      • "code": "V8<6",
      • "valid": true
      }
    ],
  • "deferrableCombos": [
    • {
      • "id": "1000-10",
      • "name": "Happy Birthday! 20% Off",
      • "couponExpiration": "2024-05-31",
      • "periodExpiration": "2024-06-07",
      • "uses": 3,
      • "deferred": true,
      • "costs": [
        • {
          • "name": "string",
          • "showDecimal": true,
          • "value": 0
          }
        ],
      • "rewards": [
        • {
          • "type": "DISCOUNT",
          • "name": "string",
          • "showDecimal": true,
          • "value": 0
          }
        ]
      }
    ],
  • "checkout": {
    • "stage": 1,
    • "maxStage": 3,
    • "maxStageReached": 3,
    • "emails": [
      • {
        • "id": "string",
        • "name": "string",
        • "email": "string",
        • "billTo": true,
        • "shipTo": true,
        • "marketing": true,
        • "ereceipt": true,
        • "did": "string"
        }
      ],
    • "phones": [
      • {
        • "id": "string",
        • "name": "string",
        • "phone": "string",
        • "billToPhone": true,
        • "billToFax": true,
        • "shipToPhone": true,
        • "shipToFax": true,
        • "fax": true,
        • "did": "string"
        }
      ],
    • "addresses": [
      • {
        • "id": "string",
        • "name": "string",
        • "street1": "string",
        • "street2": "string",
        • "city": "string",
        • "state": "string",
        • "postal": "string",
        • "country": "string",
        • "shipTo": true,
        • "billTo": true,
        • "location": true,
        • "webcart": true,
        • "did": "string"
        }
      ],
    • "billing": {
      • "firstName": "ECR",
      • "lastName": "Software",
      • "email": "test@ecrs.com",
      • "phone": "(828) 265-2907",
      • "street1": "277 Howard Street",
      • "street2": "Suite 1",
      • "postal": "28607",
      • "city": "Boone",
      • "country": 15,
      • "state": 34,
      • "latitude": 36.217646,
      • "longitude": -81.684149
      },
    • "shipping": {
      • "firstName": "ECR",
      • "lastName": "Software",
      • "email": "test@ecrs.com",
      • "phone": "(828) 265-2907",
      • "street1": "277 Howard Street",
      • "street2": "Suite 1",
      • "postal": "28607",
      • "city": "Boone",
      • "country": 15,
      • "state": 34,
      • "latitude": 36.217646,
      • "longitude": -81.684149
      },
    • "shippingMethod": {
      • "id": "string",
      • "name": "string",
      • "cost": 0,
      • "addressRequired": true,
      • "reservationRequired": true,
      • "status": "string",
      • "memo": "string",
      • "reservationDates": [
        • {
          • "date": "2019-08-24",
          • "times": [
            • {
              • "start": "13:35:00",
              • "end": "13:35:00",
              • "available": true
              }
            ]
          }
        ],
      • "tipProfiles": [
        • {
          • "id": {
            • "pk": 0,
            • "urlString": "string",
            • "littleCpk": 0,
            • "littlePk": 0
            },
          • "name": "string",
          • "displayName": "string",
          • "allowCustomAmount": true,
          • "tipOptions": [
            • {
              • "id": {
                • "pk": 0,
                • "urlString": "string",
                • "littleCpk": 0,
                • "littlePk": 0
                },
              • "type": 0,
              • "value": 0,
              • "default": true
              }
            ]
          }
        ],
      • "thirdPartyServiceProfile": {
        • "id": 0,
        • "name": "string",
        • "thirdPartyServiceProvider": {
          • "id": 0,
          • "name": "string",
          • "type": 0
          }
        },
      • "reason": "string"
      },
    • "thirdPartyShipping": {
      • "carrierCode": "string",
      • "serviceCode": "string",
      • "packageCode": "string",
      • "serviceName": "string",
      • "cost": 0
      },
    • "giftMessage": "string",
    • "availableRoundups": [
      • {
        • "id": "1000-10",
        • "name": "Round Up for charity",
        • "selected": true
        }
      ],
    • "reservationDate": "2024-05-12",
    • "reservationTime": "13:35:00",
    • "reservationExpiration": "2019-08-24T14:15:22Z",
    • "shippingRequired": true,
    • "shippingMethods": [
      • {
        • "id": "string",
        • "name": "string",
        • "cost": 0,
        • "addressRequired": true,
        • "reservationRequired": true,
        • "status": "string",
        • "memo": "string",
        • "reservationDates": [
          • {
            • "date": "2019-08-24",
            • "times": [
              • {
                • "start": "13:35:00",
                • "end": "13:35:00",
                • "available": true
                }
              ]
            }
          ],
        • "tipProfiles": [
          • {
            • "id": {
              • "pk": 0,
              • "urlString": "string",
              • "littleCpk": 0,
              • "littlePk": 0
              },
            • "name": "string",
            • "displayName": "string",
            • "allowCustomAmount": true,
            • "tipOptions": [
              • {
                • "id": {
                  • "pk": 0,
                  • "urlString": "string",
                  • "littleCpk": 0,
                  • "littlePk": 0
                  },
                • "type": 0,
                • "value": 0,
                • "default": true
                }
              ]
            }
          ],
        • "thirdPartyServiceProfile": {
          • "id": 0,
          • "name": "string",
          • "thirdPartyServiceProvider": {
            • "id": 0,
            • "name": "string",
            • "type": 0
            }
          },
        • "reason": "string"
        }
      ],
    • "paymentMethods": [
      • {
        • "pmId": "1000-27966",
        • "methodId": "1000-27966",
        • "name": "Pay Online",
        • "available": true,
        • "type": 0,
        • "testing": true,
        • "balance": 0,
        • "eligible": 0,
        • "minimum": 0,
        • "maximum": 0,
        • "token": {
          • "cardId": "string",
          • "defaultToken": true,
          • "brand": "Visa",
          • "finalDigits": "1234",
          • "expiration": "1225",
          • "authFk": "1000-21",
          • "tenderType": 4
          },
        • "provider": "ecrs-charge",
        • "iframePath": "string",
        • "clientKey": "string",
        • "accessBlock": "string",
        • "serverPath": "string",
        • "iframePropertyQueryCount": 0,
        • "merchantId": "string",
        • "countryCode": "string",
        • "currencyCode": "string",
        • "applePayMerchantIdentifier": "string",
        • "googlePayMerchantId": "string"
        }
      ],
    • "isGift": true
    },
  • "inStore": true,
  • "orderType": "1000-2",
  • "online": true,
  • "lastSyncTime": "2019-08-24T14:15:22Z",
  • "addedCouponValid": true
}

Sync Cart

Synchronizes the requested changes with the transaction backing the cart.

Request Body schema: application/json
object (transaction)

If the client knows about a transaction that backs it's current cart then it can provide the id here, otherwise a new transaction will be created to back the cart

instructions
string

Sends the desired instructional text for the transaction to the server

Array of objects (CartSyncItem)

The list of items that should be on the backing transaction

Array of objects (CartSyncSpecialOrderItem)

The list of special order items that should be on the backing transaction. Special Order items are items the shopper wants but could not find on the site.

Array of objects (CartSyncCoupon)

The list of coupons that should be on the backing transaction

Array of objects (CartSyncDeferrableCombo)

The list of deferrable coupons that should be on the backing transaction

Array of objects (CartSyncGiftCardItem)

The list of gift card items that should be on the backing transaction

object (CheckoutRequestData)

Checkout data that should be on the backing transaction

inStore
boolean

Indicates whether the customer is shopping in-store (via Accelerated Checkout)

deliveryTotal
number

The delivery total that should be on the backing transaction

object (orderTypeId)

If Multiple Order Types is enabled, this ID is used during the cart sync to associate the transaction with an order type

lastSyncTime
string <date-time>

Timestamp of the last time this cart was synced. Returned by CartResponse. Prevents syncing with an out of date cart.

Responses

Response Schema: application/vnd.ecrs.webcart-2.0+json;q=1.0, application/json;q=0.9
object (id)

ID of this store

version
integer <int64>

The version number of the transaction

subTotal
number

The subtotal of the cart

rawSubTotal
number

The subtotal of the cart without a discount

deliveryTotal
number

The delivery total for the cart

shippingTotal
number

The shipping total for the cart

taxTotal
number

The tax total of the cart

tipTotal
number

The tip total of the cart

roundUpTotal
number

The Round Up total of the cart

grandTotal
number

The grand total of the cart

dueTotal
number

The unpaid amount on the cart

tenderedTotal
number

The total of all tenders on the transaction

ebtSnapEligibleTotal
number

Total amount of the transaction that is eligible for EBT SNAP

ebtTanfEligibleTotal
number

Total amount of the transaction that is eligible for EBT TANF / EBT Cash

payLater
boolean

If a pay later tender has been selected for this transaction

instructions
string

If there are any transaction level customer instructions attached to this transaction then they are stored here

Array of objects (CartLineDto)

The list of line items in the cart

Array of objects (GiftCardLineDto)

The list of gift card items in the cart

Array of objects (CartCouponDto)

The list of coupons used on this transaction

Array of objects (CartDeferrableComboDto)

The list of deferrable discounts used on this transaction

object (CheckoutResponseData)

Object describing the current status of the checkout sequence for this cart

inStore
boolean

Returns true if the cart is being shopped in-store, in Accelerated Checkout

object (orderType)

Returns the ID for the cart's order type, if Multiple Order Types is enabled

online
boolean

Returns true if replication with the store is online, for the purposes of notifying the user that they may not be able to place their order.

lastSyncTime
string <date-time>

Timestamp of the last time this cart was synced. To be sent with CartRequest. Prevents syncing with an out of date cart.

addedCouponValid
boolean

Request samples

Content type
application/json
{
  • "transaction": "1000-1",
  • "instructions": "string",
  • "items": [
    • {
      • "id": 1,
      • "item": "INV-1000-1",
      • "variation": "T1PNoYwrqgwDVLtfmj7L5e0Sq02OEbqHPC8RFhICuUU=",
      • "quantity": 3,
      • "substitutable": true,
      • "instructions": "Please make sure these are ripe!",
      • "weightedItemQuantity": 2,
      • "embeddedPrice": 2,
      • "originalPrice": 5,
      • "embeddedDiscount": 1,
      • "expiration": "2024-05-12",
      • "order": 1,
      • "type": 1,
      • "tipProfileId": 1,
      • "tipOptionId": 3,
      • "tipAmount": 5,
      • "roundUpId": "1000-9",
      • "roundUpAmount": 0.73,
      • "entryMethod": "RECOMMENDATION_HOME_PAGE"
      }
    ],
  • "specialOrderItems": [
    • {
      • "id": 1,
      • "description": "I couldn't find strawberry short cake from the deli, but I would like that please",
      • "quantity": 1
      }
    ],
  • "coupons": [
    • {
      • "code": "V<X9",
      • "remove": true
      }
    ],
  • "deferrableCombos": [
    • {
      • "id": "1000-10",
      • "deferred": true
      }
    ],
  • "giftCardItems": [
    • {
      • "id": 3,
      • "amount": 100,
      • "quantity": 2,
      • "design": "1000-8",
      • "recipientName": "Robert & Alice",
      • "senderName": "Joesph Schmo",
      • "message": "You are the best! Get some groceries on me!",
      • "recipientEmail": "test@ecrs.com",
      • "recipientPhoneNumber": "(828) 265-2907",
      • "print": true,
      • "sendDate": "2025-05-19T16:00:00Z"
      }
    ],
  • "checkout": {
    • "stage": 1,
    • "maxStageReached": 3,
    • "billing": {
      • "firstName": "ECR",
      • "lastName": "Software",
      • "email": "test@ecrs.com",
      • "phone": "(828) 265-2907",
      • "street1": "277 Howard Street",
      • "street2": "Suite 1",
      • "postal": "28607",
      • "city": "Boone",
      • "country": 15,
      • "state": 34,
      • "latitude": 36.217646,
      • "longitude": -81.684149
      },
    • "shipping": {
      • "firstName": "ECR",
      • "lastName": "Software",
      • "email": "test@ecrs.com",
      • "phone": "(828) 265-2907",
      • "street1": "277 Howard Street",
      • "street2": "Suite 1",
      • "postal": "28607",
      • "city": "Boone",
      • "country": 15,
      • "state": 34,
      • "latitude": 36.217646,
      • "longitude": -81.684149
      },
    • "shippingMethod": {
      • "id": "string",
      • "name": "string",
      • "cost": 0,
      • "addressRequired": true,
      • "reservationRequired": true,
      • "status": "string",
      • "memo": "string",
      • "reservationDates": [
        • {
          • "date": "2019-08-24",
          • "times": [
            • {
              • "start": "13:35:00",
              • "end": "13:35:00",
              • "available": true
              }
            ]
          }
        ],
      • "tipProfiles": [
        • {
          • "id": {
            • "pk": 0,
            • "urlString": "string",
            • "littleCpk": 0,
            • "littlePk": 0
            },
          • "name": "string",
          • "displayName": "string",
          • "allowCustomAmount": true,
          • "tipOptions": [
            • {
              • "id": {
                • "pk": 0,
                • "urlString": "string",
                • "littleCpk": 0,
                • "littlePk": 0
                },
              • "type": 0,
              • "value": 0,
              • "default": true
              }
            ]
          }
        ],
      • "thirdPartyServiceProfile": {
        • "id": 0,
        • "name": "string",
        • "thirdPartyServiceProvider": {
          • "id": 0,
          • "name": "string",
          • "type": 0
          }
        },
      • "reason": "string"
      },
    • "thirdPartyShipping": {
      • "carrierCode": "string",
      • "serviceCode": "string",
      • "packageCode": "string"
      },
    • "giftMessage": "string",
    • "reservationDate": "2024-05-31",
    • "reservationTime": "13:35:00",
    • "isGift": true
    },
  • "inStore": true,
  • "deliveryTotal": 0,
  • "orderTypeId": "1000-3",
  • "lastSyncTime": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/vnd.ecrs.webcart-2.0+json;q=1.0, application/json;q=0.9
{
  • "id": "1000-10",
  • "version": 0,
  • "subTotal": 1.27,
  • "rawSubTotal": 1.27,
  • "deliveryTotal": 1,
  • "shippingTotal": 1,
  • "taxTotal": 1,
  • "tipTotal": 1,
  • "roundUpTotal": 0.37,
  • "grandTotal": 10,
  • "dueTotal": 10,
  • "tenderedTotal": 0,
  • "ebtSnapEligibleTotal": 3,
  • "ebtTanfEligibleTotal": 10,
  • "payLater": true,
  • "instructions": "Please take extra care of my order!",
  • "lineItems": [
    • {
      • "id": 1,
      • "order": 1,
      • "scancode": "3283",
      • "detail": "Apples Honeycrisp",
      • "quantity": 1,
      • "weightedItemQuantity": 2,
      • "amountDivider": 2,
      • "amount": 2,
      • "extended": 4,
      • "substitutable": true,
      • "instructions": "Please make sure these are ripe!",
      • "type": 0,
      • "item": {
        • "id": "INV-1000-12",
        • "image": "1000-345",
        • "scanCode": "123456789012",
        • "name": "Test Item Name",
        • "alternateName": "Alternate Name",
        • "suggestedPrice": 1.99,
        • "actualPriceDivider": 2,
        • "actualPrice": 4,
        • "autoDiscount": "10% Off 3 or more.",
        • "promo": "Sunday Special",
        • "buyDown": "Test Buydown",
        • "weightProfile": {
          • "abbrv": "lb",
          • "decimals": 2,
          • "selectCount": 15,
          • "selectMinimum": 0.5,
          • "selectIncrement": 0.25,
          • "allowWeightedQuantity": false
          },
        • "baseItem": "INV-1000-5",
        • "ascQuantity": 0,
        • "maxQuantity": 50,
        • "maxBaseQuantity": 0,
        • "quantityLimitData": {
          • "vendorGroup": "RJ",
          • "quantityLimit": 20,
          • "comboPackAmount": 3
          },
        • "attributes": [
          • {
            • "image": "string",
            • "name": "Organic"
            }
          ],
        • "itemGroups": [
          • "string"
          ],
        • "specialTenders": [
          • {
            • "id": "WPM-1000-3",
            • "name": "EBT SNAP Online",
            • "tenderType": 4
            }
          ],
        • "coupons": [
          • {
            • "id": "gc:0100037-00004",
            • "name": "FIJI: $1.00 off",
            • "requirements": null,
            • "description": "$1.00 off select Fiji products",
            • "category": null,
            • "brand": "FIJI",
            • "startDate": "2024-04-05",
            • "endDate": "2034-04-05",
            • "redeemLimit": "1",
            • "requirementUpcs": [
              • "00632565000012"
              ],
            • "rewardUpcs": [ ],
            • "targeted": false,
            • "featured": false,
            • "enabled": false,
            • "sortOrder": 1,
            • "validBanners": null,
            • "validLocations": null,
            • "validForStore": true
            }
          ],
        • "outOfStock": false,
        • "sellOutOfStock": false,
        • "brandId": "1000-12",
        • "brand": "Maria's",
        • "size": "12oz",
        • "shelfSequence": 123,
        • "location": "Aisle 3, Section 5, Shelf 1",
        • "hasModifiers": false,
        • "hasLinkedItems": true,
        • "averageWeight": 0.34,
        • "hasRestriction": false,
        • "hasAgeRestriction": true,
        • "cashierApprovalRequired": true,
        • "hasTimeRestrictions": true,
        • "excludeFromCombos": true,
        • "prohibitedSalesScheduleNames": [
          • "string"
          ],
        • "departmentId": "1000-6",
        • "department": "Grocery",
        • "discountType": "override",
        • "discontinued": true
        },
      • "variation": "T1PNoYwrqgwDVLtfmj7L5e0Sq02OEbqHPC8RFhICuUU=",
      • "linkType": "link",
      • "linkedItems": [
        • { }
        ],
      • "embeddedPrice": 1.5,
      • "embeddedDiscount": 0.5,
      • "roudUpId": "1000-3",
      • "tipProfileId": 1,
      • "tipOptionId": 3,
      • "tipAmount": 3,
      • "couponProviderId": "6",
      • "couponItemScanCodes": [
        • "string"
        ]
      }
    ],
  • "giftCardItems": [
    • {
      • "id": 1,
      • "order": 1,
      • "code": "EGC",
      • "account": "LJ4BEI2AFKLRNSAR",
      • "detail": "E-Gift Card",
      • "amount": 100,
      • "quantity": 2,
      • "design": {
        • "id": "1000-20",
        • "image": "1000-25"
        },
      • "recipientName": "Bob & Alice",
      • "senderName": "Joe Schmo",
      • "message": "Congratulations! Get something delivered on me!",
      • "recipientEmail": "test@ecrs.com",
      • "recipientPhoneNumber": "(828) 265-2907",
      • "print": true,
      • "sendDate": "2024-05-19T16:00:00Z"
      }
    ],
  • "coupons": [
    • {
      • "id": "1000-10",
      • "name": "10% Off!",
      • "code": "V8<6",
      • "valid": true
      }
    ],
  • "deferrableCombos": [
    • {
      • "id": "1000-10",
      • "name": "Happy Birthday! 20% Off",
      • "couponExpiration": "2024-05-31",
      • "periodExpiration": "2024-06-07",
      • "uses": 3,
      • "deferred": true,
      • "costs": [
        • {
          • "name": "string",
          • "showDecimal": true,
          • "value": 0
          }
        ],
      • "rewards": [
        • {
          • "type": "DISCOUNT",
          • "name": "string",
          • "showDecimal": true,
          • "value": 0
          }
        ]
      }
    ],
  • "checkout": {
    • "stage": 1,
    • "maxStage": 3,
    • "maxStageReached": 3,
    • "emails": [
      • {
        • "id": "string",
        • "name": "string",
        • "email": "string",
        • "billTo": true,
        • "shipTo": true,
        • "marketing": true,
        • "ereceipt": true,
        • "did": "string"
        }
      ],
    • "phones": [
      • {
        • "id": "string",
        • "name": "string",
        • "phone": "string",
        • "billToPhone": true,
        • "billToFax": true,
        • "shipToPhone": true,
        • "shipToFax": true,
        • "fax": true,
        • "did": "string"
        }
      ],
    • "addresses": [
      • {
        • "id": "string",
        • "name": "string",
        • "street1": "string",
        • "street2": "string",
        • "city": "string",
        • "state": "string",
        • "postal": "string",
        • "country": "string",
        • "shipTo": true,
        • "billTo": true,
        • "location": true,
        • "webcart": true,
        • "did": "string"
        }
      ],
    • "billing": {
      • "firstName": "ECR",
      • "lastName": "Software",
      • "email": "test@ecrs.com",
      • "phone": "(828) 265-2907",
      • "street1": "277 Howard Street",
      • "street2": "Suite 1",
      • "postal": "28607",
      • "city": "Boone",
      • "country": 15,
      • "state": 34,
      • "latitude": 36.217646,
      • "longitude": -81.684149
      },
    • "shipping": {
      • "firstName": "ECR",
      • "lastName": "Software",
      • "email": "test@ecrs.com",
      • "phone": "(828) 265-2907",
      • "street1": "277 Howard Street",
      • "street2": "Suite 1",
      • "postal": "28607",
      • "city": "Boone",
      • "country": 15,
      • "state": 34,
      • "latitude": 36.217646,
      • "longitude": -81.684149
      },
    • "shippingMethod": {
      • "id": "string",
      • "name": "string",
      • "cost": 0,
      • "addressRequired": true,
      • "reservationRequired": true,
      • "status": "string",
      • "memo": "string",
      • "reservationDates": [
        • {
          • "date": "2019-08-24",
          • "times": [
            • {
              • "start": "13:35:00",
              • "end": "13:35:00",
              • "available": true
              }
            ]
          }
        ],
      • "tipProfiles": [
        • {
          • "id": {
            • "pk": 0,
            • "urlString": "string",
            • "littleCpk": 0,
            • "littlePk": 0
            },
          • "name": "string",
          • "displayName": "string",
          • "allowCustomAmount": true,
          • "tipOptions": [
            • {
              • "id": {
                • "pk": 0,
                • "urlString": "string",
                • "littleCpk": 0,
                • "littlePk": 0
                },
              • "type": 0,
              • "value": 0,
              • "default": true
              }
            ]
          }
        ],
      • "thirdPartyServiceProfile": {
        • "id": 0,
        • "name": "string",
        • "thirdPartyServiceProvider": {
          • "id": 0,
          • "name": "string",
          • "type": 0
          }
        },
      • "reason": "string"
      },
    • "thirdPartyShipping": {
      • "carrierCode": "string",
      • "serviceCode": "string",
      • "packageCode": "string",
      • "serviceName": "string",
      • "cost": 0
      },
    • "giftMessage": "string",
    • "availableRoundups": [
      • {
        • "id": "1000-10",
        • "name": "Round Up for charity",
        • "selected": true
        }
      ],
    • "reservationDate": "2024-05-12",
    • "reservationTime": "13:35:00",
    • "reservationExpiration": "2019-08-24T14:15:22Z",
    • "shippingRequired": true,
    • "shippingMethods": [
      • {
        • "id": "string",
        • "name": "string",
        • "cost": 0,
        • "addressRequired": true,
        • "reservationRequired": true,
        • "status": "string",
        • "memo": "string",
        • "reservationDates": [
          • {
            • "date": "2019-08-24",
            • "times": [
              • {
                • "start": "13:35:00",
                • "end": "13:35:00",
                • "available": true
                }
              ]
            }
          ],
        • "tipProfiles": [
          • {
            • "id": {
              • "pk": 0,
              • "urlString": "string",
              • "littleCpk": 0,
              • "littlePk": 0
              },
            • "name": "string",
            • "displayName": "string",
            • "allowCustomAmount": true,
            • "tipOptions": [
              • {
                • "id": {
                  • "pk": 0,
                  • "urlString": "string",
                  • "littleCpk": 0,
                  • "littlePk": 0
                  },
                • "type": 0,
                • "value": 0,
                • "default": true
                }
              ]
            }
          ],
        • "thirdPartyServiceProfile": {
          • "id": 0,
          • "name": "string",
          • "thirdPartyServiceProvider": {
            • "id": 0,
            • "name": "string",
            • "type": 0
            }
          },
        • "reason": "string"
        }
      ],
    • "paymentMethods": [
      • {
        • "pmId": "1000-27966",
        • "methodId": "1000-27966",
        • "name": "Pay Online",
        • "available": true,
        • "type": 0,
        • "testing": true,
        • "balance": 0,
        • "eligible": 0,
        • "minimum": 0,
        • "maximum": 0,
        • "token": {
          • "cardId": "string",
          • "defaultToken": true,
          • "brand": "Visa",
          • "finalDigits": "1234",
          • "expiration": "1225",
          • "authFk": "1000-21",
          • "tenderType": 4
          },
        • "provider": "ecrs-charge",
        • "iframePath": "string",
        • "clientKey": "string",
        • "accessBlock": "string",
        • "serverPath": "string",
        • "iframePropertyQueryCount": 0,
        • "merchantId": "string",
        • "countryCode": "string",
        • "currencyCode": "string",
        • "applePayMerchantIdentifier": "string",
        • "googlePayMerchantId": "string"
        }
      ],
    • "isGift": true
    },
  • "inStore": true,
  • "orderType": "1000-2",
  • "online": true,
  • "lastSyncTime": "2019-08-24T14:15:22Z",
  • "addedCouponValid": true
}

Confirm Checkout

Check out the current transaction.
Checking out using this method will send the transaction to the Web Orders queue.

Responses

Response Schema: application/vnd.ecrs.webcart-2.0+json;q=1.0, application/json;q=0.9
complete
boolean

If the current payment completed the order.

object (GoodbyeData)

Data used to display the goodbye / thank you screen

Response samples

Content type
application/vnd.ecrs.webcart-2.0+json;q=1.0, application/json;q=0.9
{
  • "complete": true,
  • "goodbyeData": {
    • "orderId": "1000-1",
    • "scanCode": "5R945K75X771BN",
    • "orderDate": "2024-05-09",
    • "orderTotal": 22.42,
    • "taxTotal": 1,
    • "shippingTotal": 7,
    • "shippingMethod": "Pickup",
    • "reservationDate": "2019-08-24T14:15:22Z",
    • "chargeBalance": 10,
    • "chargeLimit": 500,
    • "loyaltyAccruals": [
      • {
        • "loyaltyName": "Healthy Rewards",
        • "loyaltyMinimumAmount": 5,
        • "loyaltyMinimumBalance": 1,
        • "loyaltyRedeemed": 0.5,
        • "loyaltyProjectedBalance": 10,
        • "loyaltyAccrual": 0.1,
        • "loyaltyExpiring": 2,
        • "loyaltyExpirationDate": "2024-05-09",
        • "showDecimal": true
        }
      ],
    • "coupons": [
      • {
        • "name": "string",
        • "code": "string"
        }
      ],
    • "punchCards": [
      • {
        • "name": "string",
        • "loyaltyRule": "string",
        • "complete": 0,
        • "currentPunches": 0,
        • "requiredPunches": 0,
        • "accrued": 0,
        • "redeemed": 0,
        • "inactive": true,
        • "expiration": "2019-08-24"
        }
      ],
    • "printableGiftCards": [
      • {
        • "id": 1,
        • "order": 1,
        • "code": "EGC",
        • "account": "LJ4BEI2AFKLRNSAR",
        • "detail": "E-Gift Card",
        • "amount": 100,
        • "quantity": 2,
        • "design": {
          • "id": "1000-20",
          • "image": "1000-25"
          },
        • "recipientName": "Bob & Alice",
        • "senderName": "Joe Schmo",
        • "message": "Congratulations! Get something delivered on me!",
        • "recipientEmail": "test@ecrs.com",
        • "recipientPhoneNumber": "(828) 265-2907",
        • "print": true,
        • "sendDate": "2024-05-19T16:00:00Z"
        }
      ],
    • "savings": 2.6
    }
}

Pay Now Payment Methods

Returns the payment methods that the merchant has configured eligible for Pay Now.

Responses

Response Schema: application/vnd.ecrs.webcart-2.0+json;q=1.0, application/json;q=0.9
Array
pmId
string

A unique identifier for the method and token combination.

methodId
string

A unique identifier for the payment method.

name
string

The display name for the payment method.

available
boolean

Indicates if this payment method is eligible for the current transaction.

type
integer <int32>

If this payment method has a tender attached, this is the tender type of the attached tender. 4 for Credit, 6 for EBT SNAP, 8 for Debit, 12 for EBT Cash, 14 for Gift Card, 23 for Tokenization.

testing
boolean

If true, this payment method is configured with test environment credentials. In other words, this is not a production configuration.

balance
number

The current balance available on the given payment method if one is valid. This is only available for payment methods that support balance checking. For example, EBT SNAP, EBT Cash, Loyalty, and charge accounts.

eligible
number

The amount of this transaction that is eligible for the given tender.

minimum
number

The minimum balance required to redeem using this tender. Null if not configured.

maximum
number

The maximum redeemable balance for this tender. Null if not configured.

object (TokenInfo)

If this is a token tender then this contains the token specific data.

provider
string
Enum: "ecrs-charge" "ecrs-loyalty" "ecrs-gift-card" "dwolla" "paypal" "tokenization" "cardpointe" "stripe" "shiftfour" "cardknox-ebt"

The provider associated with the payment method.

iframePath
string

The iframe URL used to render a payment processor's iframe. This is only applicable for CardConnect and ShiftFour.

clientKey
string

Key used by the payment processor to accept digital payments. This is only applicable for Stripe and ShiftFour.

accessBlock
string

Access block used by the payment processor to accept digital payments. This is only applicable for ShiftFour.

serverPath
string

Server path URL used by the payment processor to accept digital payments. This is only applicable for ShiftFour.

iframePropertyQueryCount
integer <int32>

Testing variable used to count the number of times an initiate request was made to the digital payment processor. This is only applicable for ShiftFour test configurations.

merchantId
string

Merchant ID used by the payment processor to accept digital payments. This is only applicable for CardConnect.

countryCode
string

Country code used by the payment processor to accept digital payments. This is only applicable for CardConnect.

currencyCode
string

Currency code used by the payment processor to accept digital payments. This is only applicable for CardConnect.

applePayMerchantIdentifier
string

Apple pay merchant identifier used by the digital payment processor to accept Apple Pay. This is only applicable for CardConnect.

googlePayMerchantId
string

Google Pay merchant ID used by the digital payment processor to accept Google Pay. This is only applicable for CardConnect.

Response samples

Content type
application/vnd.ecrs.webcart-2.0+json;q=1.0, application/json;q=0.9
[
  • {
    • "pmId": "1000-27966",
    • "methodId": "1000-27966",
    • "name": "Pay Online",
    • "available": true,
    • "type": 0,
    • "testing": true,
    • "balance": 0,
    • "eligible": 0,
    • "minimum": 0,
    • "maximum": 0,
    • "token": {
      • "cardId": "string",
      • "defaultToken": true,
      • "brand": "Visa",
      • "finalDigits": "1234",
      • "expiration": "1225",
      • "authFk": "1000-21",
      • "tenderType": 4
      },
    • "provider": "ecrs-charge",
    • "iframePath": "string",
    • "clientKey": "string",
    • "accessBlock": "string",
    • "serverPath": "string",
    • "iframePropertyQueryCount": 0,
    • "merchantId": "string",
    • "countryCode": "string",
    • "currencyCode": "string",
    • "applePayMerchantIdentifier": "string",
    • "googlePayMerchantId": "string"
    }
]

Line Bust

Check out the current transaction for in-store line-busting.
Checking out using this method will send the transaction the normal in-store suspend queue (not the Web Orders queue).

Responses

Response Schema: application/vnd.ecrs.webcart-2.0+json;q=1.0, application/json;q=0.9
complete
boolean

If the current payment completed the order.

object (GoodbyeData)

Data used to display the goodbye / thank you screen

Response samples

Content type
application/vnd.ecrs.webcart-2.0+json;q=1.0, application/json;q=0.9
{
  • "complete": true,
  • "goodbyeData": {
    • "orderId": "1000-1",
    • "scanCode": "5R945K75X771BN",
    • "orderDate": "2024-05-09",
    • "orderTotal": 22.42,
    • "taxTotal": 1,
    • "shippingTotal": 7,
    • "shippingMethod": "Pickup",
    • "reservationDate": "2019-08-24T14:15:22Z",
    • "chargeBalance": 10,
    • "chargeLimit": 500,
    • "loyaltyAccruals": [
      • {
        • "loyaltyName": "Healthy Rewards",
        • "loyaltyMinimumAmount": 5,
        • "loyaltyMinimumBalance": 1,
        • "loyaltyRedeemed": 0.5,
        • "loyaltyProjectedBalance": 10,
        • "loyaltyAccrual": 0.1,
        • "loyaltyExpiring": 2,
        • "loyaltyExpirationDate": "2024-05-09",
        • "showDecimal": true
        }
      ],
    • "coupons": [
      • {
        • "name": "string",
        • "code": "string"
        }
      ],
    • "punchCards": [
      • {
        • "name": "string",
        • "loyaltyRule": "string",
        • "complete": 0,
        • "currentPunches": 0,
        • "requiredPunches": 0,
        • "accrued": 0,
        • "redeemed": 0,
        • "inactive": true,
        • "expiration": "2019-08-24"
        }
      ],
    • "printableGiftCards": [
      • {
        • "id": 1,
        • "order": 1,
        • "code": "EGC",
        • "account": "LJ4BEI2AFKLRNSAR",
        • "detail": "E-Gift Card",
        • "amount": 100,
        • "quantity": 2,
        • "design": {
          • "id": "1000-20",
          • "image": "1000-25"
          },
        • "recipientName": "Bob & Alice",
        • "senderName": "Joe Schmo",
        • "message": "Congratulations! Get something delivered on me!",
        • "recipientEmail": "test@ecrs.com",
        • "recipientPhoneNumber": "(828) 265-2907",
        • "print": true,
        • "sendDate": "2024-05-19T16:00:00Z"
        }
      ],
    • "savings": 2.6
    }
}

Pay Now

Check out the current transaction and complete it immediately.
Checking out using this method will bypass the picking process.

Responses

Response Schema: application/vnd.ecrs.webcart-2.0+json;q=1.0, application/json;q=0.9
complete
boolean

If the current payment completed the order.

object (GoodbyeData)

Data used to display the goodbye / thank you screen

Response samples

Content type
application/vnd.ecrs.webcart-2.0+json;q=1.0, application/json;q=0.9
{
  • "complete": true,
  • "goodbyeData": {
    • "orderId": "1000-1",
    • "scanCode": "5R945K75X771BN",
    • "orderDate": "2024-05-09",
    • "orderTotal": 22.42,
    • "taxTotal": 1,
    • "shippingTotal": 7,
    • "shippingMethod": "Pickup",
    • "reservationDate": "2019-08-24T14:15:22Z",
    • "chargeBalance": 10,
    • "chargeLimit": 500,
    • "loyaltyAccruals": [
      • {
        • "loyaltyName": "Healthy Rewards",
        • "loyaltyMinimumAmount": 5,
        • "loyaltyMinimumBalance": 1,
        • "loyaltyRedeemed": 0.5,
        • "loyaltyProjectedBalance": 10,
        • "loyaltyAccrual": 0.1,
        • "loyaltyExpiring": 2,
        • "loyaltyExpirationDate": "2024-05-09",
        • "showDecimal": true
        }
      ],
    • "coupons": [
      • {
        • "name": "string",
        • "code": "string"
        }
      ],
    • "punchCards": [
      • {
        • "name": "string",
        • "loyaltyRule": "string",
        • "complete": 0,
        • "currentPunches": 0,
        • "requiredPunches": 0,
        • "accrued": 0,
        • "redeemed": 0,
        • "inactive": true,
        • "expiration": "2019-08-24"
        }
      ],
    • "printableGiftCards": [
      • {
        • "id": 1,
        • "order": 1,
        • "code": "EGC",
        • "account": "LJ4BEI2AFKLRNSAR",
        • "detail": "E-Gift Card",
        • "amount": 100,
        • "quantity": 2,
        • "design": {
          • "id": "1000-20",
          • "image": "1000-25"
          },
        • "recipientName": "Bob & Alice",
        • "senderName": "Joe Schmo",
        • "message": "Congratulations! Get something delivered on me!",
        • "recipientEmail": "test@ecrs.com",
        • "recipientPhoneNumber": "(828) 265-2907",
        • "print": true,
        • "sendDate": "2024-05-19T16:00:00Z"
        }
      ],
    • "savings": 2.6
    }
}

Order Types

The endpoints in this group control the management of order type carts. Use these endpoints in conjunction with CATAPULT WebCart’s Multiple Order Type functionality to offer more than one type of order such as delivery and pickup. If you are a CATAPULT retailer who would like to learn more about Multiple Order Types in WebCart, see this related documentation in the OLM. Use these endpoints to retrieve and synchronize order type carts and retrieve detailed information about a specific order type.

getCartForOrderType

path Parameters
id
required
string

Responses

syncOrderTypeCart

path Parameters
id
required
string
Request Body schema: application/json
object (transaction)

If the client knows about a transaction that backs it's current cart then it can provide the id here, otherwise a new transaction will be created to back the cart

instructions
string

Sends the desired instructional text for the transaction to the server

Array of objects (CartSyncItem)

The list of items that should be on the backing transaction

Array of objects (CartSyncSpecialOrderItem)

The list of special order items that should be on the backing transaction. Special Order items are items the shopper wants but could not find on the site.

Array of objects (CartSyncCoupon)

The list of coupons that should be on the backing transaction

Array of objects (CartSyncDeferrableCombo)

The list of deferrable coupons that should be on the backing transaction

Array of objects (CartSyncGiftCardItem)

The list of gift card items that should be on the backing transaction

object (CheckoutRequestData)

Checkout data that should be on the backing transaction

inStore
boolean

Indicates whether the customer is shopping in-store (via Accelerated Checkout)

deliveryTotal
number

The delivery total that should be on the backing transaction

object (orderTypeId)

If Multiple Order Types is enabled, this ID is used during the cart sync to associate the transaction with an order type

lastSyncTime
string <date-time>

Timestamp of the last time this cart was synced. Returned by CartResponse. Prevents syncing with an out of date cart.

Responses

Request samples

Content type
application/json
{
  • "transaction": "1000-1",
  • "instructions": "string",
  • "items": [
    • {
      • "id": 1,
      • "item": "INV-1000-1",
      • "variation": "T1PNoYwrqgwDVLtfmj7L5e0Sq02OEbqHPC8RFhICuUU=",
      • "quantity": 3,
      • "substitutable": true,
      • "instructions": "Please make sure these are ripe!",
      • "weightedItemQuantity": 2,
      • "embeddedPrice": 2,
      • "originalPrice": 5,
      • "embeddedDiscount": 1,
      • "expiration": "2024-05-12",
      • "order": 1,
      • "type": 1,
      • "tipProfileId": 1,
      • "tipOptionId": 3,
      • "tipAmount": 5,
      • "roundUpId": "1000-9",
      • "roundUpAmount": 0.73,
      • "entryMethod": "RECOMMENDATION_HOME_PAGE"
      }
    ],
  • "specialOrderItems": [
    • {
      • "id": 1,
      • "description": "I couldn't find strawberry short cake from the deli, but I would like that please",
      • "quantity": 1
      }
    ],
  • "coupons": [
    • {
      • "code": "V<X9",
      • "remove": true
      }
    ],
  • "deferrableCombos": [
    • {
      • "id": "1000-10",
      • "deferred": true
      }
    ],
  • "giftCardItems": [
    • {
      • "id": 3,
      • "amount": 100,
      • "quantity": 2,
      • "design": "1000-8",
      • "recipientName": "Robert & Alice",
      • "senderName": "Joesph Schmo",
      • "message": "You are the best! Get some groceries on me!",
      • "recipientEmail": "test@ecrs.com",
      • "recipientPhoneNumber": "(828) 265-2907",
      • "print": true,
      • "sendDate": "2025-05-19T16:00:00Z"
      }
    ],
  • "checkout": {
    • "stage": 1,
    • "maxStageReached": 3,
    • "billing": {
      • "firstName": "ECR",
      • "lastName": "Software",
      • "email": "test@ecrs.com",
      • "phone": "(828) 265-2907",
      • "street1": "277 Howard Street",
      • "street2": "Suite 1",
      • "postal": "28607",
      • "city": "Boone",
      • "country": 15,
      • "state": 34,
      • "latitude": 36.217646,
      • "longitude": -81.684149
      },
    • "shipping": {
      • "firstName": "ECR",
      • "lastName": "Software",
      • "email": "test@ecrs.com",
      • "phone": "(828) 265-2907",
      • "street1": "277 Howard Street",
      • "street2": "Suite 1",
      • "postal": "28607",
      • "city": "Boone",
      • "country": 15,
      • "state": 34,
      • "latitude": 36.217646,
      • "longitude": -81.684149
      },
    • "shippingMethod": {
      • "id": "string",
      • "name": "string",
      • "cost": 0,
      • "addressRequired": true,
      • "reservationRequired": true,
      • "status": "string",
      • "memo": "string",
      • "reservationDates": [
        • {
          • "date": "2019-08-24",
          • "times": [
            • {
              • "start": "13:35:00",
              • "end": "13:35:00",
              • "available": true
              }
            ]
          }
        ],
      • "tipProfiles": [
        • {
          • "id": {
            • "pk": 0,
            • "urlString": "string",
            • "littleCpk": 0,
            • "littlePk": 0
            },
          • "name": "string",
          • "displayName": "string",
          • "allowCustomAmount": true,
          • "tipOptions": [
            • {
              • "id": {
                • "pk": 0,
                • "urlString": "string",
                • "littleCpk": 0,
                • "littlePk": 0
                },
              • "type": 0,
              • "value": 0,
              • "default": true
              }
            ]
          }
        ],
      • "thirdPartyServiceProfile": {
        • "id": 0,
        • "name": "string",
        • "thirdPartyServiceProvider": {
          • "id": 0,
          • "name": "string",
          • "type": 0
          }
        },
      • "reason": "string"
      },
    • "thirdPartyShipping": {
      • "carrierCode": "string",
      • "serviceCode": "string",
      • "packageCode": "string"
      },
    • "giftMessage": "string",
    • "reservationDate": "2024-05-31",
    • "reservationTime": "13:35:00",
    • "isGift": true
    },
  • "inStore": true,
  • "deliveryTotal": 0,
  • "orderTypeId": "1000-3",
  • "lastSyncTime": "2019-08-24T14:15:22Z"
}

getOrderTypeCarts

Responses

syncOrderTypeCarts

Request Body schema: application/json
Array
object (transaction)

If the client knows about a transaction that backs it's current cart then it can provide the id here, otherwise a new transaction will be created to back the cart

instructions
string

Sends the desired instructional text for the transaction to the server

Array of objects (CartSyncItem)

The list of items that should be on the backing transaction

Array of objects (CartSyncSpecialOrderItem)

The list of special order items that should be on the backing transaction. Special Order items are items the shopper wants but could not find on the site.

Array of objects (CartSyncCoupon)

The list of coupons that should be on the backing transaction

Array of objects (CartSyncDeferrableCombo)

The list of deferrable coupons that should be on the backing transaction

Array of objects (CartSyncGiftCardItem)

The list of gift card items that should be on the backing transaction

object (CheckoutRequestData)

Checkout data that should be on the backing transaction

inStore
boolean

Indicates whether the customer is shopping in-store (via Accelerated Checkout)

deliveryTotal
number

The delivery total that should be on the backing transaction

object (orderTypeId)

If Multiple Order Types is enabled, this ID is used during the cart sync to associate the transaction with an order type

lastSyncTime
string <date-time>

Timestamp of the last time this cart was synced. Returned by CartResponse. Prevents syncing with an out of date cart.

Responses

Request samples

Content type
application/json
[
  • {
    • "transaction": "1000-1",
    • "instructions": "string",
    • "items": [
      • {
        • "id": 1,
        • "item": "INV-1000-1",
        • "variation": "T1PNoYwrqgwDVLtfmj7L5e0Sq02OEbqHPC8RFhICuUU=",
        • "quantity": 3,
        • "substitutable": true,
        • "instructions": "Please make sure these are ripe!",
        • "weightedItemQuantity": 2,
        • "embeddedPrice": 2,
        • "originalPrice": 5,
        • "embeddedDiscount": 1,
        • "expiration": "2024-05-12",
        • "order": 1,
        • "type": 1,
        • "tipProfileId": 1,
        • "tipOptionId": 3,
        • "tipAmount": 5,
        • "roundUpId": "1000-9",
        • "roundUpAmount": 0.73,
        • "entryMethod": "RECOMMENDATION_HOME_PAGE"
        }
      ],
    • "specialOrderItems": [
      • {
        • "id": 1,
        • "description": "I couldn't find strawberry short cake from the deli, but I would like that please",
        • "quantity": 1
        }
      ],
    • "coupons": [
      • {
        • "code": "V<X9",
        • "remove": true
        }
      ],
    • "deferrableCombos": [
      • {
        • "id": "1000-10",
        • "deferred": true
        }
      ],
    • "giftCardItems": [
      • {
        • "id": 3,
        • "amount": 100,
        • "quantity": 2,
        • "design": "1000-8",
        • "recipientName": "Robert & Alice",
        • "senderName": "Joesph Schmo",
        • "message": "You are the best! Get some groceries on me!",
        • "recipientEmail": "test@ecrs.com",
        • "recipientPhoneNumber": "(828) 265-2907",
        • "print": true,
        • "sendDate": "2025-05-19T16:00:00Z"
        }
      ],
    • "checkout": {
      • "stage": 1,
      • "maxStageReached": 3,
      • "billing": {
        • "firstName": "ECR",
        • "lastName": "Software",
        • "email": "test@ecrs.com",
        • "phone": "(828) 265-2907",
        • "street1": "277 Howard Street",
        • "street2": "Suite 1",
        • "postal": "28607",
        • "city": "Boone",
        • "country": 15,
        • "state": 34,
        • "latitude": 36.217646,
        • "longitude": -81.684149
        },
      • "shipping": {
        • "firstName": "ECR",
        • "lastName": "Software",
        • "email": "test@ecrs.com",
        • "phone": "(828) 265-2907",
        • "street1": "277 Howard Street",
        • "street2": "Suite 1",
        • "postal": "28607",
        • "city": "Boone",
        • "country": 15,
        • "state": 34,
        • "latitude": 36.217646,
        • "longitude": -81.684149
        },
      • "shippingMethod": {
        • "id": "string",
        • "name": "string",
        • "cost": 0,
        • "addressRequired": true,
        • "reservationRequired": true,
        • "status": "string",
        • "memo": "string",
        • "reservationDates": [
          • {
            • "date": "2019-08-24",
            • "times": [
              • {
                • "start": "13:35:00",
                • "end": "13:35:00",
                • "available": true
                }
              ]
            }
          ],
        • "tipProfiles": [
          • {
            • "id": {
              • "pk": 0,
              • "urlString": "string",
              • "littleCpk": 0,
              • "littlePk": 0
              },
            • "name": "string",
            • "displayName": "string",
            • "allowCustomAmount": true,
            • "tipOptions": [
              • {
                • "id": {
                  • "pk": 0,
                  • "urlString": "string",
                  • "littleCpk": 0,
                  • "littlePk": 0
                  },
                • "type": 0,
                • "value": 0,
                • "default": true
                }
              ]
            }
          ],
        • "thirdPartyServiceProfile": {
          • "id": 0,
          • "name": "string",
          • "thirdPartyServiceProvider": {
            • "id": 0,
            • "name": "string",
            • "type": 0
            }
          },
        • "reason": "string"
        },
      • "thirdPartyShipping": {
        • "carrierCode": "string",
        • "serviceCode": "string",
        • "packageCode": "string"
        },
      • "giftMessage": "string",
      • "reservationDate": "2024-05-31",
      • "reservationTime": "13:35:00",
      • "isGift": true
      },
    • "inStore": true,
    • "deliveryTotal": 0,
    • "orderTypeId": "1000-3",
    • "lastSyncTime": "2019-08-24T14:15:22Z"
    }
]

getOrderTypeDetail

path Parameters
id
required
string

Responses

Checkin

The endpoints in this group facilitate check-in. WebCart's check-in functionality allows customers to signify they have arrived at the store to pick-up an order. Use the endpoints in this group to:

checkin

path Parameters
token
required
string

Responses

checkin_1

path Parameters
token
required
string
Request Body schema: application/json
message
string

Responses

Request samples

Content type
application/json
{
  • "message": "string"
}

Charge Account

The endpoints in this group facilitate queries and updates to charge accounts. Use endpoints in this group to:

  • Add funds to a charge account
  • Retrieve the current details of a charge account
  • Retrieve available payment methods for reloading the account

addToBalance

path Parameters
id
required
string
Request Body schema: application/json
method
string
object
amount
number
recaptcha
string

Responses

Request samples

Content type
application/json
{
  • "method": "string",
  • "info": {
    • "property1": "string",
    • "property2": "string"
    },
  • "amount": 0,
  • "recaptcha": "string"
}

getChargeAccount

path Parameters
id
required
string

Responses

getReloadPaymentMethods

Responses

Circulars

There is one endpoint in this group that facilitates querying for circulars. This only considers circulars created on active Price & Cost Change worksheets at this time. Items pulled from the circular will populate the “Current Specials” option that displays in the header of a WebCart site.

circulars

Responses

Membership

The endpoints in this group control the management of customer membership details and payments. The Online Manual (OLM) contains more information about CATAPULT Membership Server (CMS) and how to set it up in WebCart. Use the endpoints in this group to:

  • Retrieve detailed information about customer memberships
  • Retrieve available payment methods for membership-related transactions
  • Process payments for membership fees and equity

CMS Customer Membership Details

Provides membership details for a specific customer

Responses

Response Schema: application/json
object (CoopMemberInfoDto)
object (CoopMemberEquityDto)
object (CoopMemberFeesDto)
object (CoopMemberJoiningFeeDto)
Response Schema: application/json
code
required
integer <int32>
Enum: -1 -2

Refer to "Error Codes" in API Responses for a complete reference.

message
required
string

Summary of the error.

Response Schema: application/json
code
required
integer <int32>
Value: -29

Refer to "Error Codes" in API Responses for a complete reference.

message
required
string

Summary of the error.

Response samples

Content type
application/json
{
  • "memberInfo": {
    • "memberId": "string",
    • "program": "string",
    • "status": "string",
    • "memberJoined": "2019-08-24"
    },
  • "memberEquity": {
    • "equityTotal": 0,
    • "equityNeeded": 0,
    • "equityNextAmountDue": 0,
    • "equityNextDueDate": "2019-08-24",
    • "equityLastAmount": 0,
    • "equityLastDueDate": "2019-08-24",
    • "equityDue": true
    },
  • "memberFees": {
    • "feesTotal": 0,
    • "memberNextAmountDue": 0,
    • "membershipNextDueDate": "2019-08-24",
    • "feesLastAmount": 0,
    • "feesLastDueDate": "2019-08-24",
    • "feesDue": true
    },
  • "memberJoiningFee": {
    • "joiningFeePaid": true,
    • "joiningFeeAmount": 0
    }
}

CMS Payment Methods

Returns a list of payment methods that can be used to pay equity or fees.

Responses

Response Schema: application/json
object (CoopMemberInfoDto)
object (CoopMemberEquityDto)
object (CoopMemberFeesDto)
object (CoopMemberJoiningFeeDto)

Response samples

Content type
application/json
{
  • "memberInfo": {
    • "memberId": "string",
    • "program": "string",
    • "status": "string",
    • "memberJoined": "2019-08-24"
    },
  • "memberEquity": {
    • "equityTotal": 0,
    • "equityNeeded": 0,
    • "equityNextAmountDue": 0,
    • "equityNextDueDate": "2019-08-24",
    • "equityLastAmount": 0,
    • "equityLastDueDate": "2019-08-24",
    • "equityDue": true
    },
  • "memberFees": {
    • "feesTotal": 0,
    • "memberNextAmountDue": 0,
    • "membershipNextDueDate": "2019-08-24",
    • "feesLastAmount": 0,
    • "feesLastDueDate": "2019-08-24",
    • "feesDue": true
    },
  • "memberJoiningFee": {
    • "joiningFeePaid": true,
    • "joiningFeeAmount": 0
    }
}

CMS Membership Fee and equity Payment

Allows for a membership customer to pay their membership fee, pay equity, and returns the updated customer.

path Parameters
chargeTypeParam
required
string
Enum: "equityPayment" "membershipFee"

Determines where the payment is being made to

chargeType
required
string
query Parameters
required
object (CmsPaymentRequest)

Membership payment request including payment method, amount, form, and, conditionally, reCAPTCHA information.

Request Body schema: application/json
method
string
object
amount
number
recaptcha
string

Responses

Response Schema: application/json
object (CoopMemberInfoDto)
object (CoopMemberEquityDto)
object (CoopMemberFeesDto)
object (CoopMemberJoiningFeeDto)

Request samples

Content type
application/json
{
  • "method": "string",
  • "info": {
    • "property1": "string",
    • "property2": "string"
    },
  • "amount": 0,
  • "recaptcha": "string"
}

Response samples

Content type
application/json
{
  • "memberInfo": {
    • "memberId": "string",
    • "program": "string",
    • "status": "string",
    • "memberJoined": "2019-08-24"
    },
  • "memberEquity": {
    • "equityTotal": 0,
    • "equityNeeded": 0,
    • "equityNextAmountDue": 0,
    • "equityNextDueDate": "2019-08-24",
    • "equityLastAmount": 0,
    • "equityLastDueDate": "2019-08-24",
    • "equityDue": true
    },
  • "memberFees": {
    • "feesTotal": 0,
    • "memberNextAmountDue": 0,
    • "membershipNextDueDate": "2019-08-24",
    • "feesLastAmount": 0,
    • "feesLastDueDate": "2019-08-24",
    • "feesDue": true
    },
  • "memberJoiningFee": {
    • "joiningFeePaid": true,
    • "joiningFeeAmount": 0
    }
}

Coupons

The endpoints in this group allow you to offer digital coupons on your e-commerce site. Use the endpoints in this group to:

  • Retrieve recommended digital coupons and detailed information about coupons
  • Enable shoppers to clip coupons
  • Process coupons for use in an e-commerce order

coupons

Request Body schema: application/json
g
Array of strings

The group path in which to search, consists of the ids of departments, promotional sale worksheets, goes well with groups, substitution groups, brands, item groups, and/or menu groups.

q
required
string <= 64 characters

The query string that will be used to search for results

iq
Array of strings[ items [ 1 .. 64 ] characters ]

Minor text modifiers that are performed within (as an AND) with the main query

s
string
Enum: "NAZ" "NZA" "PLH" "PHL" "POP"

The sort to use when collecting search results. In addition to the default(relevance) sort, indicated by the absence of this parameter the following are available. NAZ - Alphabetical ascending NZA - Albhabetical descending PLH - Price, low to high PHL - Price, high to low POP - Popularity, high to low

ps
integer <int32> <= 128
Default: 8

The number of results per page of the request

pn
integer <int32> >= 1
Default: 1

The 1-based index of the requested page

object

A map from the facet category id to the requested facet value ids

Responses

Request samples

Content type
application/json
{
  • "g": "MGP-1000-20",
  • "q": "App",
  • "iq": [
    • "Red"
    ],
  • "s": "NAZ",
  • "ps": 16,
  • "pn": 2,
  • "facets": {
    • "property1": [
      • "string"
      ],
    • "property2": [
      • "string"
      ]
    }
}

Digital Coupon Recommendations

Returns digital coupon recommendations for a specific customer. Requires cognition coupon recommendations to be enabled.

Responses

Response Schema: application/json
Array
id
string

The identifier for this external coupon.

name
string

The name for this external coupon. This is the name that will be displayed to the customer.

requirements
string

Any requirements for the usage or redemption of this coupon. Often used to explain legal requirements.

description
string

The long form description of this coupon. This is often used to explain the coupon in detail.

category
string

The type of digital coupon.

brand
string

The brand of items relating to this digital coupon

startDate
string

The start date for redemption of this coupon.

endDate
string

The end date for redemption of this coupon.

imageUrl
string

The url of the image related to this coupon. This is often used to display the coupon in a digital wallet or app.

redeemLimit
string

The maximum number of times this coupon can be redeemed.

requirementUpcs
Array of strings

The list of item UPCs that can trigger this coupon. These are returned in GTIN-14 format.

rewardUpcs
Array of strings

The list of item UPCs that can trigger rewards for this coupon. These are returned in GTIN-14 format.

targeted
boolean

Indicates whether this coupon is targeted at specific customers or groups.

featured
boolean

Indicates whether this coupon should be featured/highlighted in search results. This is used to promote specific coupons.

enabled
boolean

Indicates whether this coupon is enabled and should be displayed to customers.

sortOrder
integer <int32>

The sort order for this coupon. This is used to determine the order in which coupons are displayed to customers. Lower numbers are displayed first.

validBanners
Array of strings

List of banners that can display this coupon. This is used to restrict coupon display to specific groups of stores.

validLocations
Array of strings

List of CATAPULT Store IDs that can display and redeem this coupon. This is used to restrict coupon display to specific stores.

validForStore
boolean

Indicates whether this coupon is valid for the current store. This is used to determine if the coupon should be displayed to the customer.

Response samples

Content type
application/json
[
  • {
    • "id": "gc:10101-1232",
    • "name": "FIJI: $1.00 off",
    • "requirements": "Limit of one coupon per household.",
    • "description": "Save $6.00 on ONE (1) Brand Item. This coupon is valid for one time use only.",
    • "category": "CENTS OFF",
    • "brand": "Gillette",
    • "startDate": "2025-04-01",
    • "endDate": "2025-04-02",
    • "redeemLimit": "3",
    • "requirementUpcs": [
      • "00047400689435",
      • "00047400685697"
      ],
    • "rewardUpcs": [
      • "00047400689435",
      • "00047400685697"
      ],
    • "targeted": true,
    • "featured": true,
    • "enabled": true,
    • "sortOrder": 3,
    • "validBanners": [
      • "Banner 1",
      • "Banner 2"
      ],
    • "validLocations": [
      • "123",
      • "124"
      ],
    • "validForStore": true
    }
]

clip

Request Body schema: application/json
coupons
Array of strings

Responses

Request samples

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

detail

path Parameters
id
required
string

Responses

EBT

The endpoints in this group allow you to accept EBT payments. Use the endpoints in this group to:

  • Start a new EBT transaction
  • Retrieve the current balance of an EBT account
  • Finalize the EBT transaction

completeInitiate

path Parameters
accuId
required
string

Responses

createInitiate

Request Body schema: application/json
ebtToken
string

Responses

Request samples

Content type
application/json
{
  • "ebtToken": "string"
}

getBalance

path Parameters
refNum
required
string

Responses

Gift Cards

The endpoints in this group facilitate querying and creating gift cards, including those requiring a PIN for additional security. Use these endpoints to:

  • Query existing gift cards to check their balances, etc.
  • Create new gift cards in the CATAPULT system

Retrieve Gift Card Information

Retrieves gift card details and balance by card identifier. Returns an error with code -22 if a PIN is required.

path Parameters
id
required
string

Gift card identifier

Responses

Response Schema: application/json
dynamic
required
boolean

Indicates if the gift card has dynamic balance

account
required
string

Gift card account number or identifier

balance
required
number

Current balance available on the gift card

status
required
string
Enum: "active" "inactive" "invalid"

Status of the gift card

object (GiftCardDesign)

Design information for the gift card

recipientName
string

Name of the gift card recipient

senderName
string

Name of the gift card sender

message
string

Personal message included with the gift card

egiftCard
boolean

Indicates if this is an electronic gift card

Response samples

Content type
application/json
{
  • "dynamic": false,
  • "account": "6123456789012345",
  • "balance": 50,
  • "status": "active",
  • "design": {
    • "id": "1000-20",
    • "image": "1000-25"
    },
  • "recipientName": "John Doe",
  • "senderName": "Jane Smith",
  • "message": "Happy Birthday!",
  • "egiftCard": true
}

Retrieve Gift Card Information with PIN

Retrieves gift card details and balance using the provided card identifier and PIN. Use this endpoint when PIN verification is required.

path Parameters
id
required
string

Gift card identifier

Request Body schema: application/json
pin
required
string

PIN for the gift card

Responses

Response Schema: application/json
dynamic
required
boolean

Indicates if the gift card has dynamic balance

account
required
string

Gift card account number or identifier

balance
required
number

Current balance available on the gift card

status
required
string
Enum: "active" "inactive" "invalid"

Status of the gift card

object (GiftCardDesign)

Design information for the gift card

recipientName
string

Name of the gift card recipient

senderName
string

Name of the gift card sender

message
string

Personal message included with the gift card

egiftCard
boolean

Indicates if this is an electronic gift card

Request samples

Content type
application/json
{
  • "pin": "123456"
}

Response samples

Content type
application/json
{
  • "dynamic": false,
  • "account": "6123456789012345",
  • "balance": 50,
  • "status": "active",
  • "design": {
    • "id": "1000-20",
    • "image": "1000-25"
    },
  • "recipientName": "John Doe",
  • "senderName": "Jane Smith",
  • "message": "Happy Birthday!",
  • "egiftCard": true
}

Payment

The endpoints in this group allow you to accepting payments on your e-commerce site. Use the endpoints in this group to:

  • Retrieve payment authorization details
  • Handle the cancellation of payment authorizations
  • Finalize payment authorization
  • Manage payment cancellations

Payment authorization can be collected in several different ways. Refer to the Authorize endpoint documentation (in this group) for more information about all available methods.

Cancel Authorization

Redirects to the Checkout page when the payment authorization is cancelled. Note that this method does not actually cancel the authorization; the POST endpoint can be used for that purpose.
This endpoint is typically called as a callback from the payment provider when a user decides to cancel the payment flow.

path Parameters
method
required
string
Example: 1000-20

ID of the payment method for which to cancel authorization

Responses

Cancel Authorization

Cancels an ongoing payment authorization process initiated by the payment provider. This endpoint is typically called as a callback from the payment provider when a user decides to cancel the payment flow.

path Parameters
method
required
string
Example: 1000-20

ID of the payment method for which to cancel authorization

Responses

Complete Authorization

Completes an authorization process initiated by the payment provider. This endpoint is typically called as a callback from the payment provider after the user has completed their part of the authorization flow.

path Parameters
method
required
string
Example: 1000-20

ID of the payment method to complete authorization

Request Body schema: application/json

Form data containing the authorization details

property name*
additional property
string

Responses

Response Schema: application/json
code
required
integer <int32>
Enum: -1 -12 -22

Refer to "Error Codes" in API Responses for a complete reference.

message
required
string

A more precise description of the error.

object

Map of additional errors.

Response Schema: application/json
code
required
integer <int32>
Enum: -1 -12 -22

Refer to "Error Codes" in API Responses for a complete reference.

message
required
string

A more precise description of the error.

object

Map of additional errors.

Request samples

Content type
application/json
{
  • "authFk": "1000-20",
  • "finalDigits": "4242",
  • "brand": "Visa"
}

Response samples

Content type
application/json
{
  • "code": -1,
  • "message": "string",
  • "errors": {
    • "property1": [
      • "string"
      ],
    • "property2": [
      • "string"
      ]
    }
}

Authorize

Perform a pre-authorization with a payment token for the shopper's current cart. Pre-authorization can be collected in several different ways.

After the Authorize call is complete, execute a Get Cart endpoint to get the updated due total.

Saved Credit / Debit Card

Use the ID of the Tokenized Card Payment Method for {method}. Its Tender must have the type "Tokenization".

Refer to the Add Token endpoint for more details.

Google Pay

Google Pay is only supported with Fiserv/CardPointe/CardConnect.

Use the ID of the Payment Method for adding a card for {method}. Its Tender must have the type "Credit Card", which is different from "Tokenization". This is the Method used to add new cards.

To pre-authorize with Google Pay, you need configure your CardConnect Electronic Tender Server to support it. Follow these steps to set it up:

  1. Set the advanced setting "com.ecrsoft.tserver.webcart.googlePay.enabled" to "true".
  2. Set a billing name for your store with the advanced setting "com.ecrsoft.tserver.webcart.storeBillingName". This will be shown to shoppers on the Google Pay form and is required for collecting payments outside the USA.
  3. Set the country code if not "US" using the advanced setting "com.ecrsoft.tserver.cardconnect.countryCode".
  4. Set the currency code if not "USD" using the advanced setting "com.ecrsoft.tserver.cardconnect.currency".

Apple Pay

Apple Pay is only supported with Fiserv/CardPointe/CardConnect.

Use the same {method} as Google Pay. Note that Apple Pay is currently experimental.

Gift Card

Use the ID of the Gift Card Payment Method for {method}. Its Tender must have the type "Gift Card".
path Parameters
method
required
string

The ID of the payment method to authorize.

Request Body schema: application/json

Method-specific data needed to complete authorization

Any of
amount
required
number

The amount to authorize.

authFk
required
string

The ID of the saved card.

finalDigits
required
string

The final digits (usually last four) of the saved card.

brand
required
string

The brand of the saved card.

Responses

Response Schema: application/json
code
required
integer <int32>
Value: 0
message
required
string
Value: "Success"
successful
required
boolean

Whether or not the authorization succeeded.

primaryCorrelation
required
string

The primary correlation of the authorization. This is not a token.

authorizedAmount
required
number

The amount that was authorized.

authorizationDate
required
string

Timestamp corresponding to the time that the authorization occurred.

Response Schema: application/json
code
required
integer <int32>
Enum: -1 -12 -22

Refer to "Error Codes" in API Responses for a complete reference.

message
required
string

A more precise description of the error.

object

Map of additional errors.

Request samples

Content type
application/json
Example

Saved Card

{
  • "amount": 101.23,
  • "authFk": "1000-20",
  • "finalDigits": "4242",
  • "brand": "Visa"
}

Response samples

Content type
application/json
{
  • "code": 0,
  • "message": "Success",
  • "successful": true,
  • "primaryCorrelation": "323120061480",
  • "authorizedAmount": 101.23,
  • "authorizationDate": "2024-11-18T17:04:40.8104213"
}

Cancel All Authorizations

Cancels all payment authorizations associated with the current transaction. This endpoint will void all existing authorizations and remove the pay-later property if it exists.

Responses

Response Schema: application/json
code
required
integer <int32>
Enum: -1 -12 -22

Refer to "Error Codes" in API Responses for a complete reference.

message
required
string

A more precise description of the error.

object

Map of additional errors.

Response samples

Content type
application/json
{
  • "code": -1,
  • "message": "string",
  • "errors": {
    • "property1": [
      • "string"
      ],
    • "property2": [
      • "string"
      ]
    }
}

Cancel Authorization

Cancels a specific payment authorization identified by the line item ID.

path Parameters
id
required
string
Example: 123

Line item ID of the authorization to cancel. Use -1 to remove the Pay Later property.

Responses

Response Schema: application/json
code
required
integer <int32>
Enum: -1 -12 -22

Refer to "Error Codes" in API Responses for a complete reference.

message
required
string

A more precise description of the error.

object

Map of additional errors.

Response samples

Content type
application/json
{
  • "code": -1,
  • "message": "string",
  • "errors": {
    • "property1": [
      • "string"
      ],
    • "property2": [
      • "string"
      ]
    }
}

Get Authorization Settings

Gets any settings necessary to perform an authorization using a given payment method provider.

This endpoint determines what information is needed based on the payment method type (deferred tender or online tender).

path Parameters
method
required
string
Example: 1000-20

ID of the payment method to get settings for

Responses

Validate Merchant

Validates merchant identity for payment processing. Currently only supports Apple Pay validation.

Request Body schema: application/json
merchantValidationSource
required
string (MerchantValidationSource)
Value: "APPLE_PAY"

Source of the request

validationUrl
string

Validation URL provided by the payment service

Responses

Response Schema: application/json
session
string

Opaque session object used to complete merchant validation which allows Apple Pay to interact with the payment processor.

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "session": "{\"obfuscated\":\"data\"}"
}

Accelerated Checkout

The endpoints in this group facilitate Accelerated Checkout. Use the endpoints in this group to:

  • Determine if a shopper is eligible for accelerated checkout
  • Process accelerated checkout orders

isCustomerInScanAndGo

Responses

processScanAndGoForm

Request Body schema: application/json
enterScanAndGo
boolean

Responses

Request samples

Content type
application/json
{
  • "enterScanAndGo": true
}

Delivery

The endpoints in this group control delivery options. Use the endpoints in this group to:

  • Allow shoppers to create a delivery order
  • Retrieve information about a delivery
  • Obtain a delivery quote
  • Verify the delivery details

Create Delivery

Finalizes a delivery using the most recently generated quote associated with the active user.
This is the third and final step in the order creation process.
It is recommended to validate the quote before finalizing.
Note: DoorDash requires validation prior to finalization.

Request Body schema: application/json
dropoffInstructions
string <= 1024 characters

Instructions for the drop-off location.

contactlessDropoff
boolean

Indicates if the drop-off should be contactless. Note that contactless delivery is not available if restricted items are in the cart.

sendNotifications
boolean

Indicates if notifications should be sent.

Responses

Request samples

Content type
application/json
{
  • "dropoffInstructions": "Leave at the front door, beware of dog.",
  • "contactlessDropoff": true,
  • "sendNotifications": true
}

Delivery Details

Returns delivery details based on the provided unique delivery ID.
Primarily used to check the current status of a delivery.

Request Body schema: application/json
shippingMethodPk
required
integer <int32>

The primary key of the shipping method.

shippingMethodCpk
required
integer <int32>

The composite key of the shipping method.

deliveryId
string

The unique identifier for the delivery.When using DoorDash, this is the DoorDash order ID.

Responses

Response Schema: application/json
requestStatus
string
Enum: "SUCCESS" "ERROR"

The status of the delivery request. Acceptable values here are SUCCESS or ERROR.

requestStatusMessage
string

A message providing additional information about the request status.

object (DeliveryStatus)

The detailed status of the delivery.

Request samples

Content type
application/json
{
  • "shippingMethodPk": 3,
  • "shippingMethodCpk": 1000,
  • "deliveryId": "DEL123456789"
}

Response samples

Content type
application/json
{
  • "requestStatus": "SUCCESS",
  • "requestStatusMessage": "Pending driver.",
  • "deliveryStatus": "SCHEDULED"
}

Request Quote

Initiates a delivery quote using the provided delivery and drop-off details.
This is the second step in the delivery request workflow.

Request Body schema: application/json
shippingMethod
required
string

The shipping method identifier.

required
object (CartAddress)

Shipping address details

dropoffPhone
required
string

The phone number for the drop-off location. Typically used to contact the recipient if needed during delivery.

amount
required
number

The total cost for the delivery itself.

dropoffDay
required
string

The drop-off day in YYYY-MM-DD format.

dropoffTime
required
string

The drop-off time in HH:mm:ss format.

dropoffInstructions
string <= 1024 characters

Special instructions for the drop-off.

contactlessDropoff
boolean

Indicates if the drop-off is contactless. Note that if a transaction has restricted items contactless delivery will not be allowed.

tip
number

The tip amount for the delivery.

Responses

Response Schema: application/json
status
string

The status of the delivery quote.

deliveryId
string

The unique identifier for the delivery.

message
string

A message providing additional details about the delivery quote.

dropoffPhone
string

The phone number for the drop-off location.

object (DeliveryAddress)

The address details for the drop-off location.

dropoffInstructions
string

Special instructions for the drop-off.

requestedDropoffDate
string <date>

The requested drop-off date.

object (LocalTime)

The current reservation time for this transaction

dropoffDate
string <date>

The actual drop-off date.

object (LocalTime)

The current reservation time for this transaction

fee
number

The fee for the delivery.

trackingUrl
string

The tracking URL for the delivery.

Request samples

Content type
application/json
{
  • "shippingMethod": "1000-1",
  • "dropoffAddress": {
    • "firstName": "ECR",
    • "lastName": "Software",
    • "email": "test@ecrs.com",
    • "phone": "(828) 265-2907",
    • "street1": "277 Howard Street",
    • "street2": "Suite 1",
    • "postal": "28607",
    • "city": "Boone",
    • "country": 15,
    • "state": 34,
    • "latitude": 36.217646,
    • "longitude": -81.684149
    },
  • "dropoffPhone": "8282652907",
  • "amount": 10,
  • "dropoffDay": "2022-03-03",
  • "dropoffTime": "12:34:56",
  • "dropoffInstructions": "Leave at the front door, no signature required.",
  • "contactlessDropoff": true,
  • "tip": 2.5
}

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "deliveryId": "DEL12345",
  • "message": "Delivery quote generated successfully.",
  • "dropoffPhone": "8282652907",
  • "dropoffAddress": {
    • "addressLine1": "123 Main St",
    • "addressLine2": "Apt 4B",
    • "city": "Boone",
    • "state": "NC",
    • "zipCode": "28607",
    • "latitude": 39.7817,
    • "longitude": -89.6501
    },
  • "dropoffInstructions": "Leave at the garage door.",
  • "requestedDropoffDate": "2022-03-03",
  • "requestedDropoffTime": "13:35:00",
  • "dropoffDate": "2022-03-03",
  • "dropoffTime": "13:35:00",
  • "fee": 10,
}

Validate Delivery Details

Validates that the provided delivery details correspond to an existing delivery.
This is the first step in the order creation process and ensures the order is valid.
This process will check if the delivery service can fulfill the request by sending a copy of the transaction to the provider.
This may fail if age restricted items are present in a restrictive State/province or if the delivery service is down.

Request Body schema: application/json
shippingMethod
required
string

The shipping method identifier.

required
object (CartAddress)

Shipping address details

dropoffPhone
required
string

The recipient phone number.

dropoffFirstName
required
string

The first name of the recipient.

dropoffLastName
required
string

The last name of the recipient.

dropoffEmail
required
string

The email address of the recipient.

amount
required
number

The total monetary amount for the delivery.

dropoffDay
required
string

The drop-off day in YYYY-MM-DD format.

dropoffTime
required
string

The drop-off time in HH:mm:ss format.

dropoffInstructions
string <= 1024 characters

Special instructions for the drop-off.

Responses

Response Schema: application/json
boolean

Indicates whether the delivery details are valid.

Request samples

Content type
application/json
{
  • "shippingMethod": "1000-1",
  • "dropoffAddress": {
    • "firstName": "ECR",
    • "lastName": "Software",
    • "email": "test@ecrs.com",
    • "phone": "(828) 265-2907",
    • "street1": "277 Howard Street",
    • "street2": "Suite 1",
    • "postal": "28607",
    • "city": "Boone",
    • "country": 15,
    • "state": 34,
    • "latitude": 36.217646,
    • "longitude": -81.684149
    },
  • "dropoffPhone": "8282652907",
  • "dropoffFirstName": "John",
  • "dropoffLastName": "Doe",
  • "dropoffEmail": "jdoe@mail.com",
  • "amount": 10,
  • "dropoffDay": "2022-03-03",
  • "dropoffTime": "12:34:56",
  • "dropoffInstructions": "Leave at the front door, no signature required."
}

Response samples

Content type
application/json
true

Shipping

This group consists of one endpoint which facilitates the acquisition of shipping rate estimates. Estimates are calculated based on the combination of the selected Shipping Method and the Shipping Address entered.

Third Party Shipping Rates

Provides a list of shipping rate estimates

Request Body schema: application/json
shippingMethodId
string
object (CartAddress)

Shipping address details

Responses

Response Schema: application/json
Array of objects (ShippingRate)

Request samples

Content type
application/json
{
  • "shippingMethodId": "string",
  • "shippingAddress": {
    • "firstName": "ECR",
    • "lastName": "Software",
    • "email": "test@ecrs.com",
    • "phone": "(828) 265-2907",
    • "street1": "277 Howard Street",
    • "street2": "Suite 1",
    • "postal": "28607",
    • "city": "Boone",
    • "country": 15,
    • "state": 34,
    • "latitude": 36.217646,
    • "longitude": -81.684149
    }
}

Response samples

Content type
application/json
{
  • "rates": [
    • {
      • "serviceName": "string",
      • "carrierCode": "string",
      • "serviceCode": "string",
      • "packageCode": "string",
      • "cost": 0
      }
    ]
}

Orders

The endpoints in this group facilitate the management of orders within the system. Use the endpoints in this group to:

  • Query Orders: Retrieve details of specific orders, including order status, items and receipts.
  • Edit Orders: Create new orders, cancel existing orders, and reopen previously cancelled orders.

Cancel Order

Cancels an existing order based on its scan code. Handles cancellation of delivery services and voids payment authorizations. Returns EBT tender information if applicable.

path Parameters
sc
required
string

The scan code of the order to cancel

Responses

Response Schema: application/json
isEbtSnap
boolean

Indicates if the tender is EBT SNAP.

isEbtCash
boolean

Indicates if the tender is EBT Cash.

lastFour
string

The last four digits of the EBT card number.

tenderAmount
number

The amount of the tender to be used in this action.

remainingBalance
number

The remaining balance on the EBT card.

Response samples

Content type
application/json
{
  • "isEbtSnap": true,
  • "isEbtCash": true,
  • "lastFour": "1234",
  • "tenderAmount": 100,
  • "remainingBalance": 100
}

Get Order Details

Retrieves detailed information for a specific order based on the scan code. Returns order details including shipping information, status, and line items.

path Parameters
sc
required
string

The scan code of the order to retrieve

Responses

Response Schema: application/json
id
string

Unique identifier for the order

endTime
string <date-time>

Timestamp when the order was completed

total
number

Total monetary amount of the order

scancode
string

Unique scan code for the order

object (CartAddress)

Shipping address details

source
string
Enum: "In Store" "In Store - Kiosk" "In Store - Self Checkout" "In Store - Kiosk" "Web Cart" "In Store - Attended Scale" "In Store - Self Service Scale" "In Store - Quick Service Kiosk" "In Store - Price Checker" "ECommerce" "Catapult OFS Pay at Pump"

Source system or terminal that created the order

object (HistoricalOrderStatus)

Status information for a historical order

shippingMethodDisplayName
string

Display name of the shipping method

shippingMinLeadTimeMinutes
integer <int32>

Minimum lead time for shipping in minutes

maxPrepTimeMinutes
integer <int32>

Maximum preparation time in minutes

reservationStart
string <date-time>

Start time of the reservation window

reservationEnd
string <date-time>

End time of the reservation window

shortEditThreshold
string <date-time>

Threshold time for the short edit window. This is the date and time by which any edits to an order must be completed to maintain the initial reservation time.

editTimeMinutes
integer <int32>

Standard edit time allowance in minutes

shortEditTimeMinutes
integer <int32>

The short edit time allowance in minutes. This specifies the duration within which any edits to an order must be made to retain the initial reservation time.

editable
boolean

Indicates whether the order is currently editable

Array of objects (HistoricalLineItem)

List of line items in the order

Array of objects (HistoricalGiftCard)

List of gift cards purchased in the order

Array of objects (HistoricalSpecialOrderItem)

List of special order items

Array of objects (HistoricalServiceFee)

List of service fees applied to the order

deliveryId
string

Third-party delivery service ID if applicable

shippingMethodPk
integer <int32>

Primary key of the shipping method

shippingMethodCpk
integer <int32>

Creator primary key of the shipping method

orderTypeId
string

Order type identifier

Array of objects (HistoricalEbtInfo)

List of EBT (Electronic Benefit Transfer) payment information

Response samples

Content type
application/json
{
  • "id": "1000-60",
  • "endTime": "2025-05-15T16:14:54.765-04:00",
  • "total": 59.99,
  • "scancode": "WB1234567890",
  • "shippingAddress": {
    • "firstName": "ECR",
    • "lastName": "Software",
    • "email": "test@ecrs.com",
    • "phone": "(828) 265-2907",
    • "street1": "277 Howard Street",
    • "street2": "Suite 1",
    • "postal": "28607",
    • "city": "Boone",
    • "country": 15,
    • "state": 34,
    • "latitude": 36.217646,
    • "longitude": -81.684149
    },
  • "source": "Web Cart",
  • "status": {
    • "stage": 3,
    • "label": "Order Complete",
    • "stages": [
      • "Web Order Received",
      • "In Progress",
      • "Ready",
      • "Complete"
      ]
    },
  • "shippingMethodDisplayName": "Pickup",
  • "shippingMinLeadTimeMinutes": 5,
  • "maxPrepTimeMinutes": 30,
  • "reservationStart": "2019-08-24T14:15:22Z",
  • "reservationEnd": "2019-08-24T14:15:22Z",
  • "shortEditThreshold": "2019-08-24T14:15:22Z",
  • "editTimeMinutes": 20,
  • "shortEditTimeMinutes": 10,
  • "editable": true,
  • "lineItems": [
    • {
      • "quantity": 2,
      • "price": 29.99,
      • "weightedItemQuantity": 1,
      • "item": {
        • "id": "INV-1000-12",
        • "image": "1000-345",
        • "scanCode": "123456789012",
        • "name": "Test Item Name",
        • "alternateName": "Alternate Name",
        • "suggestedPrice": 1.99,
        • "actualPriceDivider": 2,
        • "actualPrice": 4,
        • "autoDiscount": "10% Off 3 or more.",
        • "promo": "Sunday Special",
        • "buyDown": "Test Buydown",
        • "weightProfile": {
          • "abbrv": "lb",
          • "decimals": 2,
          • "selectCount": 15,
          • "selectMinimum": 0.5,
          • "selectIncrement": 0.25,
          • "allowWeightedQuantity": false
          },
        • "baseItem": "INV-1000-5",
        • "ascQuantity": 0,
        • "maxQuantity": 50,
        • "maxBaseQuantity": 0,
        • "quantityLimitData": {
          • "vendorGroup": "RJ",
          • "quantityLimit": 20,
          • "comboPackAmount": 3
          },
        • "attributes": [
          • {
            • "image": "string",
            • "name": "Organic"
            }
          ],
        • "itemGroups": [
          • "string"
          ],
        • "specialTenders": [
          • {
            • "id": "WPM-1000-3",
            • "name": "EBT SNAP Online",
            • "tenderType": 4
            }
          ],
        • "coupons": [
          • {
            • "id": "gc:0100037-00004",
            • "name": "FIJI: $1.00 off",
            • "requirements": null,
            • "description": "$1.00 off select Fiji products",
            • "category": null,
            • "brand": "FIJI",
            • "startDate": "2024-04-05",
            • "endDate": "2034-04-05",
            • "redeemLimit": "1",
            • "requirementUpcs": [
              • "00632565000012"
              ],
            • "rewardUpcs": [ ],
            • "targeted": false,
            • "featured": false,
            • "enabled": false,
            • "sortOrder": 1,
            • "validBanners": null,
            • "validLocations": null,
            • "validForStore": true
            }
          ],
        • "outOfStock": false,
        • "sellOutOfStock": false,
        • "brandId": "1000-12",
        • "brand": "Maria's",
        • "size": "12oz",
        • "shelfSequence": 123,
        • "location": "Aisle 3, Section 5, Shelf 1",
        • "hasModifiers": false,
        • "hasLinkedItems": true,
        • "averageWeight": 0.34,
        • "hasRestriction": false,
        • "hasAgeRestriction": true,
        • "cashierApprovalRequired": true,
        • "hasTimeRestrictions": true,
        • "excludeFromCombos": true,
        • "prohibitedSalesScheduleNames": [
          • "string"
          ],
        • "departmentId": "1000-6",
        • "department": "Grocery",
        • "discountType": "override",
        • "discontinued": true
        },
      • "variation": {
        • "id": "YLMfH9nO9RVY6zpGlSIFlgIrBeMQIh+/skdSdjyKw38=",
        • "priceOfModifiers": 4.55,
        • "modifiers": [
          • {
            • "type": "link",
            • "name": "string",
            • "quantity": 0,
            • "descriptor": "string",
            • "priceOfModifier": 0
            }
          ]
        }
      }
    ],
  • "giftCards": [
    • {
      • "amount": 100,
      • "recipientName": "John Doe",
      • "senderName": "Jane Smith",
      • "sendDate": "2024-05-19T16:00:00Z",
      • "design": {
        • "id": "1000-20",
        • "image": "1000-25"
        },
      • "code": "330",
      • "account": "4322000499",
      • "message": "Happy Birthday!"
      }
    ],
  • "specialOrderItems": [
    • {
      • "name": "Custom Cake",
      • "description": "Please write 'Happy Birthday' on the cake"
      }
    ],
  • "serviceFees": [
    • {
      • "quantity": 1,
      • "amount": 5,
      • "name": "Delivery Fee"
      }
    ],
  • "deliveryId": "1234567890",
  • "shippingMethodPk": 59,
  • "shippingMethodCpk": 1000,
  • "orderTypeId": "1000-3",
  • "historicalEbtInfo": [
    • {
      • "amount": 100,
      • "balance": 400,
      • "lastFour": "1234",
      • "ebtType": "SNAP",
      • "authorizationTime": "2024-05-19T16:00:00Z",
      • "isVoided": false
      }
    ]
}

Get Order History

Retrieves order history for the authenticated customer with optional status filtering and pagination.

Request Body schema: application/json
q
string <= 64 characters
Deprecated

The query string to filter results by. Limited to 64 characters. Unused.

ps
integer <int32> [ 1 .. 16 ]
Default: 4

The number of results to return on the requested page. Limited to 16

pn
integer <int32> >= 1
Default: 1

The page number to return. 1-based index.

filter
string
Default: "IN_PROGRESS"
Enum: "IN_PROGRESS" "COMPLETED" "CANCELLED"

Filter for orders based on their status.

Responses

Response Schema: application/json
count
integer <int32>

Total number of orders matching the query criteria

Array of objects (HistoricalOrder)

List of historical orders

Request samples

Content type
application/json
{
  • "q": "order123",
  • "ps": 4,
  • "pn": 1,
  • "filter": "IN_PROGRESS"
}

Response samples

Content type
application/json
{
  • "count": 6,
  • "orders": [
    • {
      • "id": "1000-60",
      • "endTime": "2025-05-15T16:14:54.765-04:00",
      • "total": 59.99,
      • "scancode": "WB1234567890",
      • "shippingAddress": {
        • "firstName": "ECR",
        • "lastName": "Software",
        • "email": "test@ecrs.com",
        • "phone": "(828) 265-2907",
        • "street1": "277 Howard Street",
        • "street2": "Suite 1",
        • "postal": "28607",
        • "city": "Boone",
        • "country": 15,
        • "state": 34,
        • "latitude": 36.217646,
        • "longitude": -81.684149
        },
      • "source": "Web Cart",
      • "status": {
        • "stage": 3,
        • "label": "Order Complete",
        • "stages": [
          • "Web Order Received",
          • "In Progress",
          • "Ready",
          • "Complete"
          ]
        },
      • "shippingMethodDisplayName": "Pickup",
      • "shippingMinLeadTimeMinutes": 5,
      • "maxPrepTimeMinutes": 30,
      • "reservationStart": "2019-08-24T14:15:22Z",
      • "reservationEnd": "2019-08-24T14:15:22Z",
      • "shortEditThreshold": "2019-08-24T14:15:22Z",
      • "editTimeMinutes": 20,
      • "shortEditTimeMinutes": 10,
      • "editable": true,
      • "lineItems": [
        • {
          • "quantity": 2,
          • "price": 29.99,
          • "weightedItemQuantity": 1,
          • "item": {
            • "id": "INV-1000-12",
            • "image": "1000-345",
            • "scanCode": "123456789012",
            • "name": "Test Item Name",
            • "alternateName": "Alternate Name",
            • "suggestedPrice": 1.99,
            • "actualPriceDivider": 2,
            • "actualPrice": 4,
            • "autoDiscount": "10% Off 3 or more.",
            • "promo": "Sunday Special",
            • "buyDown": "Test Buydown",
            • "weightProfile": {
              • "abbrv": "lb",
              • "decimals": 2,
              • "selectCount": 15,
              • "selectMinimum": 0.5,
              • "selectIncrement": 0.25,
              • "allowWeightedQuantity": false
              },
            • "baseItem": "INV-1000-5",
            • "ascQuantity": 0,
            • "maxQuantity": 50,
            • "maxBaseQuantity": 0,
            • "quantityLimitData": {
              • "vendorGroup": "RJ",
              • "quantityLimit": 20,
              • "comboPackAmount": 3
              },
            • "attributes": [
              • {
                • "image": "string",
                • "name": "Organic"
                }
              ],
            • "itemGroups": [
              • "string"
              ],
            • "specialTenders": [
              • {
                • "id": "WPM-1000-3",
                • "name": "EBT SNAP Online",
                • "tenderType": 4
                }
              ],
            • "coupons": [
              • {
                • "id": "gc:0100037-00004",
                • "name": "FIJI: $1.00 off",
                • "requirements": null,
                • "description": "$1.00 off select Fiji products",
                • "category": null,
                • "brand": "FIJI",
                • "startDate": "2024-04-05",
                • "endDate": "2034-04-05",
                • "redeemLimit": "1",
                • "requirementUpcs": [
                  • "00632565000012"
                  ],
                • "rewardUpcs": [ ],
                • "targeted": false,
                • "featured": false,
                • "enabled": false,
                • "sortOrder": 1,
                • "validBanners": null,
                • "validLocations": null,
                • "validForStore": true
                }
              ],
            • "outOfStock": false,
            • "sellOutOfStock": false,
            • "brandId": "1000-12",
            • "brand": "Maria's",
            • "size": "12oz",
            • "shelfSequence": 123,
            • "location": "Aisle 3, Section 5, Shelf 1",
            • "hasModifiers": false,
            • "hasLinkedItems": true,
            • "averageWeight": 0.34,
            • "hasRestriction": false,
            • "hasAgeRestriction": true,
            • "cashierApprovalRequired": true,
            • "hasTimeRestrictions": true,
            • "excludeFromCombos": true,
            • "prohibitedSalesScheduleNames": [
              • "string"
              ],
            • "departmentId": "1000-6",
            • "department": "Grocery",
            • "discountType": "override",
            • "discontinued": true
            },
          • "variation": {
            • "id": "YLMfH9nO9RVY6zpGlSIFlgIrBeMQIh+/skdSdjyKw38=",
            • "priceOfModifiers": 4.55,
            • "modifiers": [
              • {
                • "type": "link",
                • "name": "string",
                • "quantity": 0,
                • "descriptor": "string",
                • "priceOfModifier": 0
                }
              ]
            }
          }
        ],
      • "giftCards": [
        • {
          • "amount": 100,
          • "recipientName": "John Doe",
          • "senderName": "Jane Smith",
          • "sendDate": "2024-05-19T16:00:00Z",
          • "design": {
            • "id": "1000-20",
            • "image": "1000-25"
            },
          • "code": "330",
          • "account": "4322000499",
          • "message": "Happy Birthday!"
          }
        ],
      • "specialOrderItems": [
        • {
          • "name": "Custom Cake",
          • "description": "Please write 'Happy Birthday' on the cake"
          }
        ],
      • "serviceFees": [
        • {
          • "quantity": 1,
          • "amount": 5,
          • "name": "Delivery Fee"
          }
        ],
      • "deliveryId": "1234567890",
      • "shippingMethodPk": 59,
      • "shippingMethodCpk": 1000,
      • "orderTypeId": "1000-3",
      • "historicalEbtInfo": [
        • {
          • "amount": 100,
          • "balance": 400,
          • "lastFour": "1234",
          • "ebtType": "SNAP",
          • "authorizationTime": "2024-05-19T16:00:00Z",
          • "isVoided": false
          }
        ]
      }
    ]
}

Get Order Receipt

Retrieves the HTML receipt for a specific order based on its scan code. Returns the rendered receipt in HTML format that can be displayed to the customer.

path Parameters
sc
required
string

The scan code of the order to retrieve the receipt for

Responses

Edit Order

Reopens and prepares an existing order for editing. Returns EBT tender information if applicable. Only available when order editing is enabled.

path Parameters
sc
required
string

The scan code of the order to edit

Responses

Response Schema: application/json
isEbtSnap
boolean

Indicates if the tender is EBT SNAP.

isEbtCash
boolean

Indicates if the tender is EBT Cash.

lastFour
string

The last four digits of the EBT card number.

tenderAmount
number

The amount of the tender to be used in this action.

remainingBalance
number

The remaining balance on the EBT card.

Response samples

Content type
application/json
{
  • "isEbtSnap": true,
  • "isEbtCash": true,
  • "lastFour": "1234",
  • "tenderAmount": 100,
  • "remainingBalance": 100
}

Fraud

This group consists of one endpoint which facilitates the creation of fraud cases for investigation and resolution.

createCase

Responses

API Responses

Error Codes

CodeNameDescription
0CODE_SUCCESSSuccess response
-1CODE_GENERIC_ERRORGeneric error, something went wrong. The message field should have more detail
-2CODE_INVALID_CUSTOMERCustomer is not valid. Either a bad ID, or the customer is marked inactive in the system, or something wrong with the claims
-3CODE_CANNOT_REMOVE_PASSWORD_PROVIDERReturned when someone tries to unassociate an OAuth connected account and something went wrong with the account provider's password
-4CODE_CANNOT_REMOVE_LAST_PROVIDERReturned when someone tries to unassociate an OAuth connected account and something went wrong trying to delete the last provider
-5CODE_UNABLE_TO_DELETEReturned when a completed order is being edited, but the original order could not be found to delete
-6CODE_NO_WEBPROFILEWeb Profile is not attached in the store system, contact merchant
-7CODE_NO_REMOTEReturned when an operation requires a connection to the store's database, but the connection is presently broken. Can be thrown from the /api/me/orders/orders request
-8CODE_INVALID_ORDERReturned when the transaction we are trying to retrieve cannot be found (such as in the cart request)
-9CODE_NO_SUCH_ORDERUnused
-10CODE_INCORRECT_CUSTOMERReturned if we detect that the tranaction we are trying to retrieve does not belong to the associated customer
-11CODE_NO_RECEIPT_PROFILEReturned from the /api/me/orders/{sc}/receipt (Generate Receipt) request if there is no receipt profile in the store system, contact merchant
-12CODE_VALIDATION_ERRORReturned if something went wrong validating the request, e.g. an empty payload is sent to /api/items/summaries
-13CODE_INVALID_EMPLOYEEReturned if an Employee is required for the last action, but is not associated
-14CODE_TWO_FACTOR_REQUIREDReturned during a customer password login if we need to collect a second factor of auth
-15CODE_DISABLED_FEATUREReturned if the last action is not enabled in the store's system, contact merchant. Can be thrown during cart, list, and order operations
-16CODE_RATE_LIMITReturned if the rate limit has been exceeded for the last action
-17CODE_TOKEN_EXPIREDReturned if user is trying to reset their password but the token they used for verification is expired
-18CODE_TOKEN_FAILURES_EXCEEDEDReturned if user is trying to reset their password but has exceeded 10 failure attempts
-19CODE_INVALID_ORDER_STATUSReturned if the user is trying to cancel or edit a completed order but the order is not cancellabled
-20CODE_ALREADY_SUBMITTEDReturned if the user is trying to "check in" but they have already submitted the form
-21CODE_FRAUD_DETECTEDReturned during cart confirmation if the merchant has fraud checking enabled and it has detected fraud
-22CODE_GIFT_CARD_PIN_REQUIREDReturned in /api/gc/{id} if the gift card we find requires a PIN, and one was not sent
-23CODE_REPLICATION_OFFLINEReturned during cart confirmation / pay now / line busting if replication is currently offline. Transaction cannot be completed right now.
-24CODE_ORDER_TYPE_REMOVEDReturned during a cart request if the provided order type is not enabled
-25CODE_INACTIVE_MEMBERReturned during customer association if the store is using Membership and the customer is marked as an inactive member
-26CODE_WEBSERVICES_OFFLINEReturned during customer association is the store is using Membership and we cannot connect to the webservices at the HQ server
-27CODE_MEMBER_PAYMENT_DUEReturned during cart confirmation if the store is using Membership and the customer owes on their dues
-28CODE_CART_OUTDATEDReturned during a cart sync if the `lastSyncTime` sent in the request does not match what we have on the server. Issue a /api/cart GET to get the up-to-date sync time and cart information
-29CODE_INSUFFICIENT_PERMISSIONSReturned when the user does not have sufficient permissions to complete the request.
-30CODE_DUPLICATE_PUSH_NOTIFICATION_TOKENReturned when attempting to save a registration token that already exists for the associated customer.
-31CODE_MAX_PUSH_NOTIFICATION_TOKENSReturned when attempting to save a customer registration token and the customer is at the registration token limit.
-32CODE_PUSH_NOTIFICATION_TOKEN_NOT_FOUNDReturned when attempting to delete a customer registration token that is not saved.
-33CODE_INVALID_DELIVERY_SETTINGSReturned when the delivery request is invalid, such as containing contactless dropoff and restricted items.
-34CODE_VERIFICATION_REQUIREDReturned when further verification is required to complete the request, such as email verification.
-35CODE_OAUTH_ERRORReturned when third party has rejected a login request. See WebCart logs for exact message returned by third party.