API reference / Sandbox

Re-seed default sandbox fixtures (1 seller, 1 buyer, 7 products) and return their ids. Idempotent — does not delete existing data.

POST/open/v1/sandbox/seedScope: No data scope

Service Endpoint Seller token not required

EnvironmentBase URL + Path
Productionhttps://open.mallplus.ph/open/v1/sandbox/seed
Sandboxhttps://sandbox.open.mallplus.ph/open/v1/sandbox/seed
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-TokenstringConditionalRequired when the operation says seller token required.Seller OAuth access token returned by the authorization flow.
X-MallPlus-Seller-IdstringConditionalRequired when X-MallPlus-Access-Token is required.Seller ID bound to the seller OAuth token.

Parameters

NameInTypeRequiredRulesDescription
Idempotency-KeyheaderstringNoMin length: 1Recommended UUID per logical operation. Retry with the same key and a byte-identical body. Omitting the header still runs the mutation and sets X-MallPlus-Idempotency: absent.

Request Body required

FieldTypeRequiredRulesDescription
sandboxIdstringNoMin length: 1; Max length: 64Owned sandbox shop to seed; optional only when the developer has exactly one shop.

Response Parameters

Success status: HTTP 200

FieldTypeRulesDescription
successboolean-Whether the sandbox seed request succeeded.
dataSandboxSeedDataNo additional propertiesResponse or event payload for this schema.
data.sellerSandboxSellerNo additional propertiesSeller details.
data.seller.idstring-Sandbox seller identifier used by sandbox order and seller OAuth flows.
data.seller.namestring-Display name of the test seller.
data.seller.emailstring<email>Format: emailEmail address assigned to the test seller.
data.seller.storeNamestring-Storefront name assigned to the test seller.
data.seller.statusenumAllowed: active, suspendedLifecycle status of the test seller within the sandbox.
data.seller.sandboxIdstring-Sandbox shop identifier linked to a seeded seller when the seller was created from a sandbox shop.
data.seller.oauthIdentifierstring-Identifier partners use for seller OAuth sandbox consent. Present only for sellers linked to a sandbox shop.
data.seller.createdAtstring<date-time>Format: date-timeISO-8601 UTC timestamp when the sandbox seller was created.
data.seller.updatedAtstring<date-time>Format: date-timeISO-8601 UTC timestamp when the sandbox seller was last updated.
data.buyerSandboxBuyerNo additional propertiesBuyer details.
data.buyer.idstring-Sandbox buyer identifier used by sandbox order flows.
data.buyer.namestring-Display name of the test buyer.
data.buyer.emailstring<email>Format: emailEmail address assigned to the test buyer.
data.buyer.phoneNumberstring-Phone number assigned to the test buyer.
data.buyer.shippingAddressSandboxBuyerShippingAddressNo additional propertiesShipping address details.
data.buyer.shippingAddress.idstring-Server-minted shipping-address identifier. Record this as ADDRESS-1; echoed on the order after place.
data.buyer.shippingAddress.line1string-Primary street address line.
data.buyer.shippingAddress.line2string-Optional secondary street address line such as unit or floor.
data.buyer.shippingAddress.citystring-PSGC-aligned Philippine city or municipality.
data.buyer.shippingAddress.regionstring-PSGC-aligned Philippine region.
data.buyer.shippingAddress.postalCodestring-Postal code for the sandbox buyer shipping address.
data.buyer.shippingAddress.countrystring-ISO 3166-1 alpha-2 country code for the shipping address.
data.buyer.createdAtstring<date-time>Format: date-timeISO-8601 UTC timestamp when the sandbox buyer was created.
data.buyer.updatedAtstring<date-time>Format: date-timeISO-8601 UTC timestamp when the sandbox buyer was last updated.
data.productsCountintegerMinimum: 0Number of sandbox products available after the seed operation.
data.productsarray<SandboxSeedProduct>Max items: 100The seeded seller's sandbox products, newly created or already present. Use id as items[].productId on POST /open/v1/sandbox/orders; only live products with stock above 0 can be ordered.
data.products[]SandboxSeedProductNo additional propertiesA sandbox product available to the seeded seller.
data.products[].idstring-Sandbox product id. Pass it as items[].productId on POST /open/v1/sandbox/orders.
data.products[].titlestring-Product title.
data.products[].skustring-Product SKU.
data.products[].priceintegerMinimum: 0; Maximum: 99999999Integer amount in PHP centavos.
data.products[].stockintegerMinimum: 0Units on hand.
data.products[].statusenumAllowed: live, unlisted, delisted, proposed, under_review, archivedProduct status. POST /open/v1/sandbox/orders accepts only live; any other status is refused with 400.

Error Codes

HTTP StatusSchemaDescription
400PlatformError400ResponseValidation error, or a missing/malformed required signing header (BAD_REQUEST)
401PlatformError401ResponseUnauthorized — invalid credentials, invalid signature, or expired timestamp (TIMESTAMP_EXPIRED)
403PlatformError403ResponseForbidden — insufficient scope
409Unenumerated409ErrorResponseThe request conflicts with the current resource state or reuses an idempotency key
413PlatformError413ResponseThe request body exceeds the endpoint payload limit
429PlatformError429ResponseThe partner or endpoint rate limit has been exceeded
503PlatformError503ResponseA required platform or upstream dependency is temporarily unavailable

This operation does not declare its own error.code list. Any operation can return the authentication, signing, scope, rate-limit and system codes listed in the Error code reference.

Request Example

curl -X POST "https://sandbox.open.mallplus.ph/open/v1/sandbox/seed" \
  -H "X-MallPlus-Partner-Id: mp_partner_123" \
  -H "X-MallPlus-Timestamp: 1786924800" \
  -H "X-MallPlus-Signature-Version: 3" \
  -H "X-MallPlus-Nonce: 4f8b9a0c4d5e6f708192a3b4c5d6e7f8" \
  -H "X-MallPlus-Signature: <hex_hmac_sha256>" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  --data '{
  "sandboxId": "sandboxId_123"
}'

Response Example

{
  "success": true,
  "data": {
    "seller": {
      "id": "sel_seeded_contract",
      "name": "Sandbox Seller",
      "email": "sandbox-seller@example.com",
      "storeName": "Sandbox Default Store",
      "status": "active",
      "sandboxId": "sandbox_response_contract",
      "oauthIdentifier": "sel_seeded_contract",
      "createdAt": "2026-08-26T04:00:00.000Z",
      "updatedAt": "2026-08-26T04:00:00.000Z"
    },
    "buyer": {
      "id": "buy_test_contract",
      "name": "Sandbox Buyer",
      "email": "sandbox-buyer@example.com",
      "phoneNumber": "+639001112233",
      "shippingAddress": {
        "id": "addr_test_contract",
        "line1": "1 Sandbox St",
        "city": "Manila",
        "region": "NCR",
        "postalCode": "1000",
        "country": "PH"
      },
      "createdAt": "2026-08-26T04:00:00.000Z",
      "updatedAt": "2026-08-26T04:00:00.000Z"
    },
    "productsCount": 7,
    "products": [
      {
        "id": "prod_Sp3kR8vQ2nXa",
        "title": "NovaTech Wireless Bluetooth Speaker Mini Portable Black Model S1",
        "sku": "ELEC-1001",
        "price": 129900,
        "stock": 54,
        "status": "live"
      },
      {
        "id": "prod_Wl7mT4cH9pBe",
        "title": "Premium Leather Bifold Wallet RFID Blocking Brown",
        "sku": "FASH-2001",
        "price": 89900,
        "stock": 120,
        "status": "live"
      },
      {
        "id": "prod_Mt2qZ6yN5rDk",
        "title": "Organic Green Tea Matcha Powder 100g",
        "sku": "FOOD-3001",
        "price": 34900,
        "stock": 200,
        "status": "live"
      },
      {
        "id": "prod_Cb9wF3jL7sGu",
        "title": "USB-C Fast Charging Cable 2m Braided Nylon",
        "sku": "ELEC-1002",
        "price": 24900,
        "stock": 340,
        "status": "live"
      },
      {
        "id": "prod_Bc4nV8xP1tHm",
        "title": "Bamboo Cutting Board Set 3pcs Eco-Friendly",
        "sku": "HOME-4001",
        "price": 59900,
        "stock": 75,
        "status": "unlisted"
      },
      {
        "id": "prod_Ld6rK2gW8vJq",
        "title": "LED Desk Lamp Touch Control Adjustable",
        "sku": "HOME-4002",
        "price": 149900,
        "stock": 42,
        "status": "live"
      },
      {
        "id": "prod_Tw1hY5mC3xLz",
        "title": "Cotton Bath Towel Set Premium Absorbent",
        "sku": "LIVE-5001",
        "price": 79900,
        "stock": 0,
        "status": "archived"
      }
    ]
  }
}