Get category trees for a channel
/multi-storefrontMulti-Storefront (MSF) enables merchants to manage multiple storefronts from a single BigCommerce backend. Each storefront can have its own branding, products, pricing, and domain while sharing invent
<overview> Multi-Storefront (MSF) enables merchants to manage multiple storefronts from a single BigCommerce backend. Each storefront can have its own branding, products, pricing, and domain while sharing inventory and order management. Understanding channels and site routing is essential for MSF integrations. </overview> <core_concepts> <channels> A channel represents a place where products are sold: - Storefronts (Stencil or headless) - Marketplaces (Amazon, eBay) - Point-of-sale systems - Marketing feeds Every BigCommerce store has a default channel with the ID 1. This channel cannot be deleted. </channels> <sites> A site links a channel to a domain: - Maps URL to the storefront channel - Enables proper routing - Configures SSL and domains </sites> <channelassignments> Products must be explicitly assigned to channels. Adding to a category ≠ making available on a channel. </channelassignments> </coreconcepts> <availability> | Plan | MSF Support | |------|-------------| | Enterprise | Full MSF features | | Pro | Limited MSF features | | Standard | No MSF | </availability> <channelsapi> <list_channels> ``bash GET /v3/channels Response: { "data": [ { "id": 1, "name": "Primary Storefront", "type": "storefront", "platform": "bigcommerce", "status": "active", "is_listable_from_ui": true, "is_visible": true, "date_created": "2024-01-01T00:00:00Z" }, { "id": 2, "name": "Wholesale Store", "type": "storefront", "platform": "bigcommerce", "status": "active" } ] } </list_channels> <create_channel> bash POST /v3/channels { "name": "EU Storefront", "type": "storefront", "platform": "bigcommerce", "status": "active", "is_listable_from_ui": true, "is_visible": true } </create_channel> <channel_types> - storefront - Web storefront - marketplace - Third-party marketplace - marketing - Marketing/advertising feed - pos - Point of sale </channel_types> </channels_api> <sites_api> <create_site> bash POST /v3/sites { "url": "https://eu.example.com", "channel_id": 2, "ssl": { "type": "bigcommerce_provided" } } </create_site> <get_sites> bash GET /v3/sites GET /v3/sites?channel_id=2 </get_sites> <site_routes> Configure URL routes for specific content: bash POST /v3/sites/{site_id}/routes { "type": "product", "matching": "/products/*", "route": "/eu-products/{slug}" } </site_routes> </sites_api> <product_channel_assignments> <assign_products> bash PUT /v3/catalog/products/channel-assignments { "assignments": [ {"product_id": 111, "channel_id": 1}, {"product_id": 111, "channel_id": 2}, {"product_id": 112, "channel_id": 2} ] } Product 111 appears on both channels. Product 112 only on channel 2. </assign_products> <get_assignments> bash GET /v3/catalog/products/channel-assignments?product_id:in=111,112 GET /v3/catalog/products/channel-assignments?channel_id=2 </get_assignments> <remove_assignment> bash DELETE /v3/catalog/products/channel-assignments?product_id:in=111&channel_id:in=2 </remove_assignment> <category_tree_assignment> Categories are also channel-specific via category trees: bash # Get category trees for a channel GET /v3/catalog/trees?channel_id=2 # Assign category tree to channel POST /v3/catalog/trees { "channel_id": 2, "name": "EU Category Tree" } </category_tree_assignment> </product_channel_assignments> <channel_specific_data> <localized_product_attributes> Override product attributes per channel locale: bash PUT /v3/catalog/products/{product_id}/channel/{channel_id} { "name": "Produit en Français", "description": "Description en français..." } Channel-specific overrides supersede global attributes. </localized_product_attributes> <channel_pricing> Set different prices per channel: bash PUT /v3/catalog/products/{product_id}/channel/{channel_id}/currency-assignments { "default_price": 49.99, "sale_price": 39.99, "currency_code": "EUR" } `` </channelpricing> </channelspecificdata> <ordersandcarts> <channelawareorders> Always specify channelid when creating