API reference / Inventory

Bulk update inventory levels

Bulk inventory updates are available with limited batch confirmation.

POST/open/v1/inventory/bulk-updateScope: inventory:write

Service Endpoint Seller token required

EnvironmentBase URL + Path
Productionhttps://open.mallplus.ph/open/v1/inventory/bulk-update
Sandboxhttps://sandbox.open.mallplus.ph/open/v1/inventory/bulk-update
Common Signing and Seller Headers
HeaderTypeRequiredRulesDescription
X-MallPlus-Partner-IdstringYesIssued client ID for the calling app.Identifies the partner app whose secret signs the request.
X-MallPlus-TimestampintegerYesUnix timestamp in seconds; default acceptance window is 90 seconds.Prevents replay outside the allowed signing window.
X-MallPlus-Signature-VersionstringYesUse 3 for HMAC v3.Selects the request signing algorithm.
X-MallPlus-NoncestringYes32-64 lowercase hexadecimal characters, unique per request.Replay-protection nonce included in the v3 signing base string.
X-MallPlus-SignaturestringYesHMAC-SHA256 over timestamp, client ID, method, path, canonical query, body hash, and nonce.Cryptographic proof that the request was signed with the app secret.
X-MallPlus-Access-TokenstringYesRequired when the operation says seller token required.Seller OAuth access token returned by the authorization flow.
X-MallPlus-Seller-IdstringYesRequired when X-MallPlus-Access-Token is required.Seller ID bound to the seller OAuth token.

Parameters

This operation does not define path or query parameters in OpenAPI.

Request Body required

FieldTypeRequiredRulesDescription
itemsarray<InventoryBulkUpdateItemRequest>YesMin items: 1; Max items: 5000Items associated with this request, response, or event.
items[]InventoryBulkUpdateItemRequestNoNo additional propertiesAn inventory quantity update included in a bulk inventory request.
items[].idstringYesMin length: 1Unique identifier for this resource.
items[].quantityintegerYesMinimum: 0; Maximum: 1000000000Quantity of units.
items[].expectedQuantityintegerYesMinimum: 0; Maximum: 1000000000Required compare-and-swap guard. This item update only applies if current stock matches this value.

Response Parameters

FieldTypeRulesDescription
successboolean-Whether the synchronous bulk inventory request completed.
dataInventoryBulkUpdateDataNo additional propertiesSynchronous bulk inventory update results.
data.updatedarray<InventoryItem>-Inventory items successfully updated by the synchronous bulk request.
data.updated[]InventoryItemNo additional propertiesSeller-owned inventory item returned by Inventory endpoints.
data.updated[].idstring-Inventory item identifier.
data.updated[].skustring-Seller SKU for the inventory item.
data.updated[].quantityinteger-Current available inventory quantity.
data.updated[].sellerIdstring-Seller identifier that owns the inventory item.
data.updated[].titlestring-Product title associated with the inventory item when available.
data.updated[].reserved_quantityinteger-Inventory quantity reserved for open orders.
data.updated[].incoming_quantityinteger-Inventory quantity expected from inbound stock.
data.updated[].variantIdstring-Product variant identifier associated with the inventory item when available.
data.updated[].created_atstring<date-time>Format: date-timeInventory item creation timestamp in ISO-8601 format.
data.updated[].updated_atstring<date-time>Format: date-timeInventory item update timestamp in ISO-8601 format.
data.errorsarray<InventoryBulkUpdateError>-Per-item failures returned by the synchronous bulk request.
data.errors[]InventoryBulkUpdateErrorNo additional propertiesPer-item inventory update failure in a synchronous bulk update response.
data.errors[].idstring-Inventory item identifier from the failed update request.
data.errors[].messagestring-Failure reason returned for this inventory item update.
data.summaryInventoryBulkUpdateSummaryNo additional propertiesAggregate result counts for the synchronous bulk request.
data.summary.totalinteger-Number of inventory updates submitted in the request.
data.summary.succeededinteger-Number of inventory updates that succeeded.
data.summary.failedinteger-Number of inventory updates that failed.

Error Codes

HTTP StatusSchemaDescription
400ErrorResponseValidation error, or a missing/malformed required signing header (BAD_REQUEST)
401ErrorResponseUnauthorized — invalid credentials, invalid signature, or expired timestamp (TIMESTAMP_EXPIRED)
403ErrorResponseForbidden — insufficient scope
409ErrorResponseThe request conflicts with the current resource state or reuses an idempotency key
413ErrorResponseThe request body exceeds the endpoint payload limit
429ErrorResponseThe partner or endpoint rate limit has been exceeded
502ErrorResponseThe upstream commerce service rejected the request or returned an invalid response
503ErrorResponseA required platform or upstream dependency is temporarily unavailable
504ErrorResponseThe upstream commerce service did not respond before the platform timeout

Machine-readable codes are returned in error.code: ACCOUNT_LOCKED, APPROVE_FAILED, APP_LIMIT_REACHED, APP_NOT_FOUND, AUTHORIZATION_CODE_EXPIRED, AUTHORIZATION_REVOKED, AUTH_CODE_EXPIRED, AUTH_CODE_USED, BAD_REQUEST, CANCELLATION_ALREADY_PROCESSED, CANCELLATION_DEADLINE_EXCEEDED, CANCEL_FAILED, CANNOT_DELETE_ACCOUNT_WITH_APPS, CONCURRENT_MODIFICATION, CONFLICT, CREATE_FAILED, DISPUTE_FAILED, DUPLICATE, EMAIL_ALREADY_EXISTS, EMAIL_NOT_VERIFIED, FILE_TOO_LARGE, FORBIDDEN, HMAC_VERSION_DEPRECATED, IDEMPOTENCY_KEY_IN_PROGRESS, IDEMPOTENCY_KEY_REQUIRED, IDEMPOTENCY_KEY_REUSED, INTERNAL_ERROR, INVALID_AUTHORIZATION_CODE, INVALID_CREDENTIALS, INVALID_DEVELOPER_TYPE, INVALID_FILE_CONTENT, INVALID_FILE_TYPE, INVALID_JSON, INVALID_NONCE, INVALID_PATH, INVALID_PICKUP_DATE, INVALID_REFRESH_TOKEN, INVALID_REQUEST, INVALID_SIGNATURE, INVALID_STATE, INVALID_TRANSITION, INVALID_VERIFICATION_TOKEN, MAINTENANCE, MEMBER_PERMISSION_DENIED, MISSING_NONCE, NONCE_REUSED, NOT_FOUND, NOT_IMPLEMENTED, ORDER_NOT_CANCELLABLE, PAYLOAD_TOO_LARGE, PICKUP_DATES_UNAVAILABLE, PRODUCT_HAS_ACTIVE_ORDERS, PRODUCT_UNDER_REVIEW, PROFILE_ALREADY_SUBMITTED, PROFILE_TYPE_MISMATCH, PROXY_ERROR, RATE_LIMITED, REDIRECT_URL_MISMATCH, REFRESH_TOKEN_EXPIRED, REFRESH_TOKEN_REUSED, REJECT_FAILED, RETURN_ALREADY_PROCESSED, RETURN_DEADLINE_EXCEEDED, RE_AUTHORIZATION_REQUIRED, SANDBOX_LIMIT_REACHED, SELLER_TOKEN_REQUIRED, SERVICE_UNAVAILABLE, SESSION_EXPIRED, SHIPMENT_ALREADY_ARRANGED, SHIPMENT_NOT_ARRANGED, SHIPPING_LABEL_UNAVAILABLE, SHIP_FAILED, SIGNATURE_REPLAYED, SSRF_CHECK_FAILED, TEST_SHOP_LIMIT_REACHED, TIMESTAMP_EXPIRED, TOKEN_REVOKED, TOO_MANY_REQUESTS, UNAUTHORIZED, UPLOAD_ERROR, UPLOAD_NOT_CONFIGURED, UPSTREAM_ERROR, UPSTREAM_TIMEOUT, VALIDATION_ERROR, VERIFICATION_LINK_USED, VERIFICATION_TOKEN_EXPIRED, WEBHOOK_SUBSCRIPTION_EXISTS

Examples

Executable examples are hidden for this endpoint until copy-paste guidance is published.