read.bulk.product_paths
Every product this store publishes, reduced to what a link is made of: its handle and the ltree category_path of its canonical category (null when the product is in no category). It is read.products with everything a URL does not need removed — the same published set, about 1/100th of the bytes — for a caller that walks the whole catalog to build addresses (a sitemap, a shopping feed, a channel export). Paginated; at most 1000 per page, and over the ceiling is an error, never a truncated page. Served on the BULK face: the same published answer as the public read, charged to the caller’s own bulk budget instead of the shopper’s, and never to be reached by a browser.
- Surface:
GET /v1/read/bulk/product_paths - Auth: ★ Bulk read (machine) — a TENANT credential is REQUIRED (no credential is
unauthorized), andstoremust be a store of THAT tenant (another tenant’s isforbidden). The ANSWER is the public read’s, byte for byte: this store’s published assortment, no drafts, no actor. What the credential buys is the BUDGET — this face has its ownRateLimit-*bucket, so walking a whole catalogue here takes nothing from the ceiling a shopper’s browser shares.
Params (JSON Schema)
Section titled “Params (JSON Schema)”{ "properties": { "limit": { "default": 1000, "maximum": 1000, "minimum": 1, "type": "integer" }, "page": { "default": 1, "maximum": 9007199254740991, "minimum": 1, "type": "integer" }, "store": { "minLength": 1, "type": "string" } }, "required": [ "store" ], "type": "object"}Result (200)
Section titled “Result (200)”Open (unknown) — this capability does not declare an output schema.
Errors
Section titled “Errors”invalid_params (400) · not_found (404) · unauthorized (401) · forbidden (403)