| Line 65... |
Line 65... |
| 65 |
<code>/categoryMaster</code>). Every feed and lookup only ever returns catalogs, SKUs and stock within
|
65 |
<code>/categoryMaster</code>). Every feed and lookup only ever returns catalogs, SKUs and stock within
|
| 66 |
those categories. <code>title</code> is present and non-empty on catalog, SKU and stock records — the
|
66 |
those categories. <code>title</code> is present and non-empty on catalog, SKU and stock records — the
|
| 67 |
same derived product title everywhere.
|
67 |
same derived product title everywhere.
|
| 68 |
</div>
|
68 |
</div>
|
| 69 |
|
69 |
|
| - |
|
70 |
<h2>Parameters at a glance</h2>
|
| - |
|
71 |
<table>
|
| - |
|
72 |
<tr><th>Endpoint</th><th>Required</th><th>Optional (default)</th></tr>
|
| - |
|
73 |
<tr><td><code>/categoryMaster</code></td><td>—</td><td>—</td></tr>
|
| - |
|
74 |
<tr><td><code>/catalogMaster</code></td><td>—</td><td><code>offset</code> (0), <code>limit</code> (100, max 100), <code>updatedSince</code></td></tr>
|
| - |
|
75 |
<tr><td><code>/catalogSkuMaster</code></td><td>—</td><td><code>offset</code> (0), <code>limit</code> (100, max 500), <code>updatedSince</code></td></tr>
|
| - |
|
76 |
<tr><td><code>/skuMaster</code></td><td>—</td><td><code>offset</code> (0), <code>limit</code> (100, max 500), <code>updatedSince</code>, <code>storeId</code></td></tr>
|
| - |
|
77 |
<tr><td><code>/storeMaster</code></td><td>—</td><td><code>offset</code> (0), <code>limit</code> (100, max 500)</td></tr>
|
| - |
|
78 |
<tr><td><code>/stock</code></td><td><code>storeId</code></td><td><code>itemIds</code> (≤100 ids); without it: <code>offset</code> (0), <code>limit</code> (100, max 500)</td></tr>
|
| - |
|
79 |
<tr><td><code>/catalogs</code></td><td><code>catalogIds</code> (≤50 ids)</td><td>—</td></tr>
|
| - |
|
80 |
<tr><td><code>/catalogSkus</code></td><td><code>catalogIds</code> (≤50 ids)</td><td>—</td></tr>
|
| - |
|
81 |
</table>
|
| - |
|
82 |
<p>Every optional parameter can simply be omitted. <code>updatedSince</code> is epoch
|
| - |
|
83 |
<strong>milliseconds</strong>; omit it for a full sync. <code>limit</code> above its maximum is
|
| - |
|
84 |
silently clamped; <code>limit</code> ≤ 0 falls back to the default.</p>
|
| - |
|
85 |
|
| 70 |
<h2>Master feeds (paginated sync)</h2>
|
86 |
<h2>Master feeds (paginated sync)</h2>
|
| 71 |
|
87 |
|
| 72 |
<h3><span class="method">GET</span>/categoryMaster</h3>
|
88 |
<h3><span class="method">GET</span>/categoryMaster</h3>
|
| 73 |
<p>The categories your key may access, each with its spec schema (the keys you will find in
|
89 |
<p>The categories your key may access, each with its spec schema (the keys you will find in
|
| 74 |
<code>categorySpecs</code> on catalog content). Full list, no pagination.</p>
|
90 |
<code>categorySpecs</code> on catalog content). Full list, no pagination, no parameters.</p>
|
| 75 |
<pre>GET /external/v1/categoryMaster
|
91 |
<pre>GET /external/v1/categoryMaster
|
| 76 |
→ [ { "categoryId": 10006, "label": "Mobile", "displayName": "Mobile Phones",
|
92 |
→ [ { "categoryId": 10006, "label": "Mobile", "displayName": "Mobile Phones",
|
| 77 |
"specs": [ { "key": "ram", "label": "RAM", "position": 1 },
|
93 |
"specs": [ { "key": "ram", "label": "RAM", "position": 1 },
|
| 78 |
{ "key": "memory", "label": "Internal Storage", "position": 2 } ] } ]</pre>
|
94 |
{ "key": "memory", "label": "Internal Storage", "position": 2 } ] } ]</pre>
|
| 79 |
<p>All feeds accept <code>offset</code> (default 0), <code>limit</code>, and optional
|
95 |
<p>All other feeds accept optional <code>offset</code>, <code>limit</code> and
|
| 80 |
<code>updatedSince</code> (epoch ms) and return:</p>
|
96 |
<code>updatedSince</code> (see table above) and return:</p>
|
| 81 |
<pre>{
|
97 |
<pre>{
|
| 82 |
"serverTime": 1753600000000, // pass back as next updatedSince
|
98 |
"serverTime": 1753600000000, // pass back as next updatedSince
|
| 83 |
"offset": 0, "limit": 100,
|
99 |
"offset": 0, "limit": 100,
|
| 84 |
"totalCount": 5321,
|
100 |
"totalCount": 5321,
|
| 85 |
"records": [ ... ]
|
101 |
"records": [ ... ]
|
| Line 110... |
Line 126... |
| 110 |
"mop": 14999.0, "mrp": 17999.0, "active": true,
|
126 |
"mop": 14999.0, "mrp": 17999.0, "active": true,
|
| 111 |
"updatedAt": 1753500000000, "addedOn": 1750000000000 } ]</pre>
|
127 |
"updatedAt": 1753500000000, "addedOn": 1750000000000 } ]</pre>
|
| 112 |
|
128 |
|
| 113 |
<h3><span class="method">GET</span>/skuMaster</h3>
|
129 |
<h3><span class="method">GET</span>/skuMaster</h3>
|
| 114 |
<p>Per-store stock + price rows for <em>your mapped stores</em>, with full item identity on every row.
|
130 |
<p>Per-store stock + price rows for <em>your mapped stores</em>, with full item identity on every row.
|
| 115 |
<code>limit</code> max 500. Optional <code>storeId</code> narrows to one store (must be mapped to you).</p>
|
131 |
<code>limit</code> max 500. Optional <code>storeId</code> narrows to one store (must be mapped to you;
|
| - |
|
132 |
an unmapped id → 403 <code>EXT_403</code>). Omitting <code>storeId</code> returns rows across all your
|
| - |
|
133 |
mapped stores.</p>
|
| 116 |
<pre>GET /external/v1/skuMaster?offset=0&limit=500
|
134 |
<pre>GET /external/v1/skuMaster?offset=0&limit=500
|
| 117 |
→ records: [ { "storeId": 2116665, "itemId": 101, "title": "Samsung Galaxy A15 SM-A155F",
|
135 |
→ records: [ { "storeId": 2116665, "itemId": 101, "title": "Samsung Galaxy A15 SM-A155F",
|
| 118 |
"brand": "Samsung", "modelName": "Galaxy A15", "modelNumber": "SM-A155F",
|
136 |
"brand": "Samsung", "modelName": "Galaxy A15", "modelNumber": "SM-A155F",
|
| 119 |
"color": "Blue", "brandIdentifier": "SM-A155FZKW", "availability": 7,
|
137 |
"color": "Blue", "brandIdentifier": "SM-A155FZKW", "availability": 7,
|
| 120 |
"mop": 14999.0, "mrp": 17999.0, "active": true, "updatedAt": 1753500000000 } ]</pre>
|
138 |
"mop": 14999.0, "mrp": 17999.0, "active": true, "updatedAt": 1753500000000 } ]</pre>
|
| Line 145... |
Line 163... |
| 145 |
</div>
|
163 |
</div>
|
| 146 |
|
164 |
|
| 147 |
<h2>Real-time lookups</h2>
|
165 |
<h2>Real-time lookups</h2>
|
| 148 |
|
166 |
|
| 149 |
<h3><span class="method">GET</span>/stock</h3>
|
167 |
<h3><span class="method">GET</span>/stock</h3>
|
| 150 |
<p>Live stock + price in one mapped store, with item identity on every row. Two modes:</p>
|
168 |
<p>Live stock + price in one mapped store, with item identity on every row. <code>storeId</code> is
|
| - |
|
169 |
required; <code>itemIds</code> is optional and selects the mode:</p>
|
| 151 |
<ul>
|
170 |
<ul>
|
| 152 |
<li><strong>By ids</strong> — pass <code>itemIds</code> (up to 100). Every requested <code>itemId</code> is
|
171 |
<li><strong>By ids</strong> — pass <code>itemIds</code> (up to 100). Every requested <code>itemId</code> is
|
| 153 |
returned; no stock row means <code>availability: 0</code>, no active listing means
|
172 |
returned; no stock row means <code>availability: 0</code>, no active listing means
|
| 154 |
<code>mop/mrp: null</code>. Ids outside your categories come back as id-only rows with
|
173 |
<code>mop/mrp: null</code>. Ids outside your categories come back as id-only rows with
|
| 155 |
<code>availability: 0</code>.</li>
|
174 |
<code>availability: 0</code>. <code>offset</code>/<code>limit</code> are ignored in this mode.</li>
|
| 156 |
<li><strong>Full store</strong> — omit <code>itemIds</code> to page through the store's entire stock with
|
175 |
<li><strong>Full store</strong> — omit <code>itemIds</code> to page through the store's entire stock with
|
| 157 |
<code>offset</code>/<code>limit</code> (max 500); the response is the standard paginated envelope
|
176 |
optional <code>offset</code> (default 0) / <code>limit</code> (default 100, max 500); the response is
|
| 158 |
(<code>serverTime</code>/<code>totalCount</code>/<code>records</code>). One loop replaces batching ids
|
177 |
the standard paginated envelope (<code>serverTime</code>/<code>totalCount</code>/<code>records</code>).
|
| 159 |
across many calls.</li>
|
178 |
One loop replaces batching ids across many calls.</li>
|
| 160 |
</ul>
|
179 |
</ul>
|
| 161 |
<pre>GET /external/v1/stock?storeId=2116665&itemIds=101,102
|
180 |
<pre>GET /external/v1/stock?storeId=2116665&itemIds=101,102
|
| 162 |
→ [ { "storeId": 2116665, "itemId": 101, "title": "Samsung Galaxy A15 SM-A155F",
|
181 |
→ [ { "storeId": 2116665, "itemId": 101, "title": "Samsung Galaxy A15 SM-A155F",
|
| 163 |
"brand": "Samsung", "modelName": "Galaxy A15", "modelNumber": "SM-A155F", "color": "Blue",
|
182 |
"brand": "Samsung", "modelName": "Galaxy A15", "modelNumber": "SM-A155F", "color": "Blue",
|
| 164 |
"brandIdentifier": "SM-A155FZKW", "availability": 7, "mop": 14999.0, "mrp": 17999.0, "active": true },
|
183 |
"brandIdentifier": "SM-A155FZKW", "availability": 7, "mop": 14999.0, "mrp": 17999.0, "active": true },
|