# 6. Get Product List

Retrieve the store’s catalog with optional search, filtering, and sorting, returning paginated results in the standard response envelope (list of products + pagination metadata).

Overview

Auth
HMAC Partner
Method
GET

# Path

https://partners-api.tocobagus.net/api/v1 /partner/stores/products

# Request

# Query Parameters

Name Type Required Description
q string Search Keyword
isArchived string Set to true to filter archived product
isAvailableStock boolean Set to true to filter product with available stock (Stock > 0)
isVerified boolean Set to true to filter verified product
isVariantActive boolean Set to true to filter product with active variants
sortBy string Sorting key
order string Sorting type
page integer Current Page
limit integer Limit per page

# Required Headers

Header Example Description
x-signature bdbb8833fe43671e058b56dace75763a78a2edf8de7365afb6f534d750056e80 HMAC signature of the request, computed with the partner secret and x-timestamp (auth integrity).
x-partner-client-id 2025112012475048491498 Partner identifier issued by Omni; used to locate the partner secret.
x-store-client-id 638765489981529612855 Target store identifier under the partner account.
x-store-token stkn__6AbJF05mjvxh7sh Store access token for store-level authorization.
x-timestamp 1758100350458 UNIX epoch timestamp used when computing x-signature (replay protection).

# Request Payload

Request payload: Not used for GET.

# Example Request

curl -X GET "http:///partner/stores/products?q=%3Cq%3E&isArchived=%3CisArchived%3E&isAvailableStock=%3CisAvailableStock%3E&isVerified=%3CisVerified%3E&sortBy=%3CsortBy%3E&order=%3Corder%3E&page=%3Cpage%3E&limit=%3Climit%3E" \
  -H "Content-Type: application/json" \
  -H "x-signature: bdbb8833fe43671e058b56dace75763a78a2edf8de7365afb6f534d750056e80" \
  -H "x-partner-client-id: 2025112012475048491498" \
  -H "x-store-client-id: 638765489981529612855" \
  -H "x-store-token: stkn__6AbJF05mjvxh7sh" \
  -H "x-timestamp: 1758100350458" \
const qs = new URLSearchParams({
  "q": "<q>",
  "isArchived": "<isArchived>",
  "isAvailableStock": "<isAvailableStock>",
  "isVerified": "<isVerified>",
  "sortBy": "<sortBy>",
  "order": "<order>",
  "page": "<page>",
  "limit": "<limit>"
});
const url = "http:///partner/stores/products" + (qs.toString() ? "?" + qs.toString() : "");
const res = await fetch(url, {
  method: "GET",
  headers: {
  "x-signature": "bdbb8833fe43671e058b56dace75763a78a2edf8de7365afb6f534d750056e80",
  "x-partner-client-id": "2025112012475048491498",
  "x-store-client-id": "638765489981529612855",
  "x-store-token": "stkn__6AbJF05mjvxh7sh",
  "x-timestamp": "1758100350458"
}
});
const json = await res.json();
console.log(json);
qs := url.Values{}
qs.Set("q", "<q>")
qs.Set("isArchived", "<isArchived>")
qs.Set("isAvailableStock", "<isAvailableStock>")
qs.Set("isVerified", "<isVerified>")
qs.Set("sortBy", "<sortBy>")
qs.Set("order", "<order>")
qs.Set("page", "<page>")
qs.Set("limit", "<limit>")
u := "http:///partner/stores/products"
if q := qs.Encode(); q != "" { u = u + "?" + q }
req, _ := http.NewRequest("GET", u, nil)
req.Header.Set("x-signature", "bdbb8833fe43671e058b56dace75763a78a2edf8de7365afb6f534d750056e80")
req.Header.Set("x-partner-client-id", "2025112012475048491498")
req.Header.Set("x-store-client-id", "638765489981529612855")
req.Header.Set("x-store-token", "stkn__6AbJF05mjvxh7sh")
req.Header.Set("x-timestamp", "1758100350458")
req.Header.Set("Content-Type","application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
b, _ := io.ReadAll(resp.Body)
fmt.Println(string(b))
var client = java.net.http.HttpClient.newHttpClient();
var req = java.net.http.HttpRequest.newBuilder()
    .uri(java.net.URI.create("http:///partner/stores/products?q=%3Cq%3E&isArchived=%3CisArchived%3E&isAvailableStock=%3CisAvailableStock%3E&isVerified=%3CisVerified%3E&sortBy=%3CsortBy%3E&order=%3Corder%3E&page=%3Cpage%3E&limit=%3Climit%3E"))
    .header("Content-Type","application/json")
    .header("x-signature", "bdbb8833fe43671e058b56dace75763a78a2edf8de7365afb6f534d750056e80")
    .header("x-partner-client-id", "2025112012475048491498")
    .header("x-store-client-id", "638765489981529612855")
    .header("x-store-token", "stkn__6AbJF05mjvxh7sh")
    .header("x-timestamp", "1758100350458")
    .method("GET", java.net.http.HttpRequest.BodyPublishers.noBody())
    .build();
var res = client.send(req, java.net.http.HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());

# Responses

# Example Responses

{
  "success": true,
  "message": "Store catalog retrieved successfully",
  "requestId": "5485559a-258d-4576-a8ec-1f29edca2aaf",
  "meta": {
    "timestamp": "2026-02-03T15:58:41.526Z"
  },
  "data": [
    {
      "id": "2f89be61-f614-4710-bbfd-7d0ed1fbe4d0",
      "externalId": "e4fd1621-5cbd-4bf6-b26d-2da7b677e775",
      "name": "Kacamata Hitam Stylish",
      "description": "Kacamata hitam dengan desain modern, melindungi dari sinar UV.",
      "sku": "SKU-KCM-HITAM-1",
      "price": 120000,
      "stock": 39,
      "weight": 200,
      "dimensions": {
        "length": 0,
        "width": 0,
        "height": 0
      },
      "minOrder": 1,
      "categoryId": "0e882586-c506-4792-a831-02767a68dae2",
      "departmentId": "2fde2994-28a8-4d09-a128-6d744b9e1323",
      "brandId": "b3f1a2c4-d5e6-7890-abcd-ef1234567890",
      "hashtags": [],
      "condition": "NEW",
      "photos": [
        "https://d13eru2cpf9i9v.cloudfront.net/toco/img/image-1769658210637.webp",
        "https://d13eru2cpf9i9v.cloudfront.net/toco/img/image-1769658210707.webp",
        "https://d13eru2cpf9i9v.cloudfront.net/toco/img/image-1769658210570.webp",
        "https://d13eru2cpf9i9v.cloudfront.net/toco/img/image-1769658210608.webp",
        "https://d13eru2cpf9i9v.cloudfront.net/toco/img/image-1769658210559.webp",
        "https://d13eru2cpf9i9v.cloudfront.net/toco/img/image-1769658210544.webp"
      ],
      "thumbnails": [
        "https://d13eru2cpf9i9v.cloudfront.net/toco/img/image-1769658210637-thumbnail.webp",
        "https://d13eru2cpf9i9v.cloudfront.net/toco/img/image-1769658210707-thumbnail.webp",
        "https://d13eru2cpf9i9v.cloudfront.net/toco/img/image-1769658210570-thumbnail.webp",
        "https://d13eru2cpf9i9v.cloudfront.net/toco/img/image-1769658210608-thumbnail.webp",
        "https://d13eru2cpf9i9v.cloudfront.net/toco/img/image-1769658210559-thumbnail.webp",
        "https://d13eru2cpf9i9v.cloudfront.net/toco/img/image-1769658210544-thumbnail.webp"
      ],
      "isPreorder": false,
      "preorderPeriod": 0,
      "hasVariant": true,
      "isArchived": false,
      "insuranceRequired": false,
      "codEnabled": false,
      "isVerified": true,
      "variants": {
        "items": [
          {
            "id": "cde66255-8f87-43f6-acbf-329515bd2283",
            "name": "Variant",
            "sku": "SKU-KCM-HITAM-1",
            "isActive": true,
            "price": 120000,
            "optionIndexes": [
              0
            ],
            "photos": [
              "https://img.freepik.com/free-vector/image-upload-concept-illustration_23-2148276163.jpg"
            ],
            "stock": 20,
            "warehouses": [
              {
                "id": "625d5773-6bb7-4ef8-8692-e44191dc53a7",
                "clientId": "2026012714314318226016",
                "stock": 20,
                "isActive": true
              }
            ]
          },
          {
            "id": "79d5cd58-e8b5-4227-b5ed-3d73bced3260",
            "name": "Variant",
            "sku": "SKU-KCM-HITAM-2",
            "isActive": true,
            "price": 125000,
            "optionIndexes": [
              1
            ],
            "photos": [
              "https://img.freepik.com/free-vector/image-upload-concept-illustration_23-2148276163.jpg"
            ],
            "stock": 19,
            "warehouses": [
              {
                "id": "625d5773-6bb7-4ef8-8692-e44191dc53a7",
                "clientId": "2026012714314318226016",
                "stock": 20,
                "isActive": true
              }
            ]
          }
        ],
        "optionGroups": [
          {
            "level": 1,
            "name": "Color",
            "values": [
              {
                "label": "Black"
              },
              {
                "label": "Brown"
              }
            ]
          }
        ]
      }
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}
{
  "success": false,
  "error": {
    "code": "AUTH_010",
    "message": "Invalid signature",
    "details": {
      "timestamp": "2025-08-27T13:47:12.030Z",
      "hint": "Invalid HMAC signature",
      "context": {
        "partnerClientId": "2025112512510620439726"
      }
    }
  },
  "requestId": "662a9593-33fc-44b3-8240-70ca4780b8f9"
}
{
  "success": false,
  "error": {
    "code": "AUTH_014",
    "message": "Access forbidden",
    "details": {
      "timestamp": "2025-08-27T15:59:20.686Z",
      "hint": "Store not found, access blocked, or invalid token",
      "context": {
        "storeClientId": "638765489981529612495"
      }
    }
  },
  "requestId": "f4462ee7-d1a2-4b9d-9ed3-4aa78756c427"
}
{
  "success": false,
  "error": {
    "code": "SYS_UPS_001",
    "message": "Failed getting response from upstream",
    "details": {
      "timestamp": "2025-08-27T13:38:06.227Z",
      "hint": "A required internal dependency is temporarily unavailable. Please retry.",
      "context": {
        "error": "read ETIMEDOUT",
        "category": "timeout",
        "retryable": true
      }
    }
  },
  "requestId": "e38559e6-6d6a-4591-a83b-d5a93807a204"
}

# Dictionary

None for this endpoint.

# Notes

None for this endpoint.