Add stores in bulk

Create up to 50 stores in a single request.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Add stores in bulk

Create up to 50 stores in a single request. Each store is validated and persisted independently — a failure in one item doesn't block the others. The response reflects the outcome of each item individually, and the HTTP status reflects the overall result: 201 if all items succeeded, 207 if some failed, or 400 if all failed.

Note: Only users with the ADMIN_USER entity type can call this endpoint. Requests from non-admin users return HTTP 400 for every item.

Example request

curl -X POST "https://{host}/v2/locations/stores?inheritLocale=false" \
  -H "Authorization: Basic {base64-encoded-credentials}" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "code": "store-north-01",
      "name": "North Store 01",
      "areaParentCode": "zone-north",
      "groupParentCode": "concept-retail",
      "language": "en-IN",
      "currency": "INR",
      "timezone": "Asia/Kolkata",
      "description": "Flagship store in the north region",
      "isActive": true,
      "latitude": "28.6139",
      "longitude": "77.2090",
      "email": "[email protected]",
      "mobile": "9876543210",
      "externalId": ["EXT-001", "EXT-002"]
    }
  ]'

Note: The example response below is representative and has not been validated against a live API call.

Prerequisites

  • Authenticate using Basic authentication (Base64-encoded username:password).
  • The authenticated user must have the ADMIN_USER entity type.
  • The parent zone (areaParentCode) and parent concept (groupParentCode) must exist and be active in the org before creating stores.
  • When inheritLocale is false (the default), the org must have the specified language, currency, and timezone values configured.

Query parameters

FieldTypeRequiredDescription
inheritLocalebooleanOptionalWhen true, a store inherits language, currency, and timezone from its parent zone if those fields are not provided in the request. If the parent zone also lacks locale settings, the request fails. Defaults to false.

Body parameters

Pass a JSON array of store objects. Maximum 50 items per request.

FieldTypeRequiredDescription
codestringRequiredUnique code for the store in the org. Accepts lowercase letters, digits, periods (.), underscores (_), and hyphens (-). Must start with a lowercase letter or digit. Max 50 characters.
namestringRequiredDisplay name for the store. Accepts letters, digits, underscores, and spaces. Cannot be ROOT.
areaParentCodestringRequiredCode of the parent zone this store belongs to.
groupParentCodestringRequiredCode of the parent concept this store belongs to.
languagestringConditionalIETF BCP 47 language code for the store (for example, en-IN). Required when inheritLocale is false. Must be enabled for the org.
currencystringConditionalISO 4217 currency code for the store (for example, INR). Required when inheritLocale is false. Must be enabled for the org.
timezonestringConditionalIANA timezone name for the store (for example, Asia/Kolkata). Required when inheritLocale is false. Must be enabled for the org.
descriptionstringOptionalFree-text description of the store.
isActivebooleanOptionalWhether the store is active. Defaults to true. A warning is returned when this field is omitted.
isAdminbooleanOptionalWhether the store has admin access. Defaults to false.
latitudestringOptionalLatitude coordinate of the store.
longitudestringOptionalLongitude coordinate of the store.
emailstringOptionalContact email address for the store.
mobilestringOptionalContact mobile number for the store.
landlinestringOptionalContact landline number for the store.
externalIdarrayOptionalExternal IDs for the store. Max five entries. Each value must be non-blank, unique within the request, and not already assigned to another entity in the org.
attributesobjectOptionalCustom field values for the store. Keys must match fields configured for the org (matched case-insensitively).

Example response

{
  "response": [
    {
      "entityId": 10452,
      "result": {
        "code": "store-north-01",
        "name": "North Store 01",
        "areaParentCode": "zone-north",
        "groupParentCode": "concept-retail",
        "language": "en-IN",
        "currency": "INR",
        "timezone": "Asia/Kolkata"
      },
      "errors": [],
      "warnings": []
    }
  ],
  "totalCount": 1,
  "failureCount": 0
}

Partial failure example (HTTP 207):

{
  "response": [
    {
      "entityId": 10452,
      "result": null,
      "errors": [],
      "warnings": []
    },
    {
      "entityId": null,
      "result": {
        "code": "store-north-01",
        "name": "North Store 01"
      },
      "errors": [
        {
          "code": "CODE_ALREADY_EXISTS_ORG",
          "message": "code already exists in org"
        }
      ],
      "warnings": []
    }
  ],
  "totalCount": 2,
  "failureCount": 1
}

Response parameters

FieldTypeDescription
responsearrayOne entry per input item, in the same order as the request.
.entityIdintegerSystem-assigned ID of the created store. null if the item failed.
.resultobjectEcho of the submitted store object. Always present for all items, whether the item succeeded or failed.
.errorsarrayErrors for this item. Empty when the item succeeded.
..codestringSymbolic error code.
..messagestringError message.
.warningsarrayNon-fatal warnings for this item.
..codestringSymbolic warning code.
..messagestringWarning message.
totalCountintegerTotal number of items in the request.
failureCountintegerNumber of items that failed to create.

Error & warning codes

CodeError numberTypeDescription
NOT_AN_ADMIN_USER1209ErrorThe authenticated user is not an admin. HTTP 400.
BULK_REQUEST_LIMIT_EXCEEDED1246ErrorThe request contains more than 50 items. Maximum allowed is 50. HTTP 400.
CODE_NOT_SET1247Errorcode is missing or blank. HTTP 400.
NAME_NOT_SET1200Errorname is missing or blank. HTTP 400.
REGEX_MATCH_FAILED1219Errorcode or name failed format validation. HTTP 400.
NAME_LENGHT_NOT_VALID1218Errorcode exceeds 50 characters. HTTP 400.
NAME_ROOT_NOT_ALLOWED1210Errorname cannot be ROOT. HTTP 400.
CODE_ALREADY_EXISTS_ORG1220ErrorA store with this code already exists in the org, or a duplicate code appears in the same request. HTTP 400.
NAME_ALREADY_EXISTS_ORG1206ErrorA store with this name already exists in the org. HTTP 400.
GLOBAL_ERR_MISSING_MANDATORY_FIELD403ErrorA required field is missing. Applies to areaParentCode, groupParentCode, locale fields (when inheritLocale is false), and blank externalId entries. HTTP 400.
PARAM_TYPE_IS_NOT_VALID1217ErrorA field value is invalid. Applies to locale values not enabled for the org, invalid parent codes, and more than five externalId entries. HTTP 400.
EXTERNAL_ID_ALREADY_EXISTS_ORG1245ErrorOne or more externalId values are already assigned to another entity in the org. HTTP 400.
DUPLICATE_EXTERNAL_ID_IN_REQUEST1248ErrorDuplicate externalId values in the same request. HTTP 400.
ORG_ENTITY_TYPE_LIMIT_EXCEEDED1225ErrorThe org has reached its configured limit for stores. HTTP 400.
PARAM_TYPE_SET_TO_DEFAULT1215WarningisActive was not provided and defaulted to true.
Query Params
boolean
Defaults to false

When true, inherits missing locale fields from the parent zone.

Body Params
Headers
string
string
Responses
201

All stores created successfully.

207

Partial success — some stores created, some failed.

400

All items failed, non-admin user, batch size limit exceeded, or empty request body.

Language
Credentials
Basic
base64
:
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here!