[{"data":1,"prerenderedAt":4296},["ShallowReactive",2],{"learn-chrome-th":3,"nav-th":114,"doc-\u002Fth\u002Fdocs\u002Fai-and-api\u002Fapi\u002Fproducts-and-orders":677,"mdc-i4mcvu-key":4285},{"id":4,"docsPage":5,"docsSidebar":15,"docsTabs":17,"extension":19,"footer":20,"header":92,"localeSwitch":109,"meta":111,"stem":112,"__hash__":113},"chrome_th\u002Fth\u002Fchrome.yml",{"onThisPage":6,"copyPage":7,"copied":8,"copyMenu":9,"copyMarkdownLink":10,"linkCopied":8,"viewMarkdown":11,"openChatGpt":12,"openClaude":13,"platforms":14},"บนหน้านี้","คัดลอกหน้า","คัดลอกแล้ว","ตัวเลือกการคัดลอกเพิ่มเติม","คัดลอกลิงก์ Markdown","ดูเป็น Markdown","เปิดใน ChatGPT","เปิดใน Claude","ใช้ได้กับ",{"label":16},"เมนูเอกสาร",{"ariaLabel":18},"หมวดเอกสาร","yml",{"ariaLabel":21,"columns":22,"legal":72,"quote":73,"askAi":76},"ส่วนท้าย",[23,38,50,60],{"label":24,"children":25},"เรียนรู้",[26,29,32,35],{"label":27,"to":28},"เอกสาร","\u002Fdocs",{"label":30,"to":31},"ตัวอย่างการใช้งาน","\u002Fuse-cases",{"label":33,"to":34},"การฝึกอบรม","\u002Ftraining",{"label":36,"to":37},"แหล่งข้อมูล","\u002Fresources",{"label":39,"children":40},"สำหรับนักพัฒนา",[41,44,47],{"label":42,"to":43},"ผู้ช่วย AI","\u002Fdocs\u002Fai-and-api\u002Fassistants",{"label":45,"to":46},"API","\u002Fdocs\u002Fai-and-api\u002Fapi\u002Fgetting-started",{"label":48,"to":49},"Open Platform","\u002Fdocs\u002Fadministration\u002Faccount\u002Fopen-platform",{"label":51,"children":52},"อัปเดต",[53,56],{"label":54,"to":55},"อัปเดตล่าสุด","\u002Freleases",{"label":57,"to":58,"target":59},"บทความ","https:\u002F\u002Fwww.dataglasslabs.com\u002Fblog","_blank",{"label":61,"children":62},"DataGlass",[63,66,69],{"label":64,"to":65,"target":59},"เปิด DataGlass","https:\u002F\u002Fapp.dataglasslabs.com",{"label":67,"to":68,"target":59},"เว็บไซต์","https:\u002F\u002Fwww.dataglasslabs.com",{"label":70,"to":71},"ราคา","\u002Fdocs\u002Foverview\u002Fexplore\u002Fpricing","DataGlass Labs สงวนลิขสิทธิ์",{"text":74,"caption":75},"วัดสิ่งที่เหลือเป็นกำไร แล้วค่อยเติบโตจากสิ่งที่วัดได้","ทีม DataGlass",{"label":77,"prompt":78,"assistants":79},"ถาม AI เกี่ยวกับ DataGlass","ช่วยสอนวิธีใช้ DataGlass ให้หน่อย DataGlass คือ Decision Engine สำหรับผู้ขายบน Shopee, Lazada และ TikTok Shop ที่ปรับโฆษณา ราคา และโปรโมชันเพื่อกำไรที่แท้จริง ใช้การค้นหาเว็บเพื่ออ่านเอกสารที่ https:\u002F\u002Flearn.dataglasslabs.com\u002Fth\u002Fdocs (สรุปสำหรับ AI อยู่ที่ https:\u002F\u002Flearn.dataglasslabs.com\u002Fllms.txt) แล้วตอบเป็นภาษาไทยว่า DataGlass ทำอะไร เริ่มต้นใช้งานอย่างไร และควรอ่านคู่มือเรื่องไหนก่อน",[80,84,88],{"label":81,"icon":82,"url":83},"ChatGPT","chatgpt","https:\u002F\u002Fchatgpt.com\u002F?prompt={prompt}",{"label":85,"icon":86,"url":87},"Claude","claude","https:\u002F\u002Fclaude.ai\u002Fnew?q={prompt}",{"label":89,"icon":90,"url":91},"Perplexity","perplexity","https:\u002F\u002Fwww.perplexity.ai\u002Fsearch?q={prompt}",{"sections":93,"navLabel":107,"openApp":64,"search":108},[94,97,99,101,103,105],{"key":95,"label":96},"home","หน้าแรก",{"key":98,"label":27},"docs",{"key":100,"label":30},"use-cases",{"key":102,"label":33},"training",{"key":104,"label":54},"releases",{"key":106,"label":36},"resources","ส่วนต่าง ๆ","เริ่มค้นหา",{"label":110},"ภูมิภาคและภาษา",{},"th\u002Fchrome","oehsJxJS8-mOnkBR_goBo54MPvM7axylEK_M0cWBEHI",[115],{"title":116,"path":28,"stem":98,"children":117,"page":120},"Docs",[118,185,374,562,640],{"title":119,"draft":120,"path":121,"stem":122,"children":123},"ภาพรวม",false,"\u002Fdocs\u002Foverview","docs\u002F01.overview\u002Findex",[124,125,149,174],{"title":119,"path":121,"stem":122,"draft":120},{"title":126,"draft":120,"path":127,"stem":128,"children":129,"page":120},"เริ่มต้นใช้งาน","\u002Fdocs\u002Foverview\u002Fget-started","docs\u002F01.overview\u002F01.get-started",[130,135,139,144],{"title":131,"path":132,"stem":133,"draft":120,"icon":134},"DataGlass คืออะไร","\u002Fdocs\u002Foverview\u002Fget-started\u002Fwhat-is-dataglass","docs\u002F01.overview\u002F01.get-started\u002F01.what-is-dataglass","i-material-symbols-info-rounded",{"title":126,"path":136,"stem":137,"draft":120,"icon":138},"\u002Fdocs\u002Foverview\u002Fget-started\u002Fquick-start","docs\u002F01.overview\u002F01.get-started\u002F02.quick-start","i-material-symbols-rocket-launch-rounded",{"title":140,"path":141,"stem":142,"draft":120,"icon":143},"แพลตฟอร์มที่รองรับ","\u002Fdocs\u002Foverview\u002Fget-started\u002Fsupported-platforms","docs\u002F01.overview\u002F01.get-started\u002F03.supported-platforms","i-material-symbols-grid-view-rounded",{"title":145,"path":146,"stem":147,"draft":120,"icon":148},"การเชื่อมต่อร้านค้า","\u002Fdocs\u002Foverview\u002Fget-started\u002Fconnecting-shops","docs\u002F01.overview\u002F01.get-started\u002F04.connecting-shops","i-material-symbols-link-rounded",{"title":150,"draft":120,"path":151,"stem":152,"children":153,"page":120},"พื้นฐาน","\u002Fdocs\u002Foverview\u002Ffoundations","docs\u002F01.overview\u002F02.foundations",[154,159,164,169],{"title":155,"path":156,"stem":157,"draft":120,"icon":158},"มุมมองร้านค้านี้ เทียบกับ มุมมองรวมทุกร้าน","\u002Fdocs\u002Foverview\u002Ffoundations\u002Fthis-shop-vs-unified","docs\u002F01.overview\u002F02.foundations\u002F01.this-shop-vs-unified","i-material-symbols-layers-rounded",{"title":160,"path":161,"stem":162,"draft":120,"icon":163},"COGS และบทบาทสำคัญ","\u002Fdocs\u002Foverview\u002Ffoundations\u002Fcogs-and-their-role","docs\u002F01.overview\u002F02.foundations\u002F02.cogs-and-their-role","i-material-symbols-payments-rounded",{"title":165,"path":166,"stem":167,"draft":120,"icon":168},"margin ของคุณรวมอะไรบ้าง","\u002Fdocs\u002Foverview\u002Ffoundations\u002Fideal-vs-realized-margin","docs\u002F01.overview\u002F02.foundations\u002F03.ideal-vs-realized-margin","i-material-symbols-compare-arrows-rounded",{"title":170,"path":171,"stem":172,"draft":120,"icon":173},"True ROAS","\u002Fdocs\u002Foverview\u002Ffoundations\u002Ftrue-roas","docs\u002F01.overview\u002F02.foundations\u002F04.true-roas","i-material-symbols-ad-group-rounded",{"title":175,"draft":120,"path":176,"stem":177,"children":178,"page":120},"สำรวจ","\u002Fdocs\u002Foverview\u002Fexplore","docs\u002F01.overview\u002F03.explore",[179,182],{"title":70,"path":71,"stem":180,"draft":120,"icon":181},"docs\u002F01.overview\u002F03.explore\u002F01.pricing","i-material-symbols-sell-rounded",{"title":54,"path":183,"stem":184,"draft":120,"to":55},"\u002Fdocs\u002Foverview\u002Fexplore\u002Freleases","docs\u002F01.overview\u002F03.explore\u002F02.releases",{"title":186,"draft":120,"path":187,"stem":188,"children":189},"ฟีเจอร์","\u002Fdocs\u002Ffeatures","docs\u002F02.features\u002Findex",[190,191,221,271,312,335,355],{"title":119,"path":187,"stem":188,"draft":120},{"title":192,"draft":120,"path":193,"stem":194,"children":195,"page":120},"ร้านค้า","\u002Fdocs\u002Ffeatures\u002Fshops","docs\u002F02.features\u002F01.shops",[196,201,206,211,216],{"title":197,"path":198,"stem":199,"draft":120,"icon":200},"ภาพรวมร้านค้า","\u002Fdocs\u002Ffeatures\u002Fshops\u002Fshop-overview","docs\u002F02.features\u002F01.shops\u002F01.shop-overview","i-material-symbols-space-dashboard-rounded",{"title":202,"path":203,"stem":204,"draft":120,"icon":205},"ทำความเข้าใจตัวเลขต่างๆ","\u002Fdocs\u002Ffeatures\u002Fshops\u002Funderstanding-the-numbers","docs\u002F02.features\u002F01.shops\u002F02.understanding-the-numbers","i-material-symbols-help-rounded",{"title":207,"path":208,"stem":209,"draft":120,"icon":210},"การระบุที่มาและการขจัดการนับซ้ำ (Attribution & dedup)","\u002Fdocs\u002Ffeatures\u002Fshops\u002Fattribution-and-dedup","docs\u002F02.features\u002F01.shops\u002F03.attribution-and-dedup","i-material-symbols-call-merge-rounded",{"title":212,"path":213,"stem":214,"draft":120,"icon":215},"สุขภาพร้าน","\u002Fdocs\u002Ffeatures\u002Fshops\u002Fshop-health","docs\u002F02.features\u002F01.shops\u002F04.shop-health","i-material-symbols-monitor-heart-rounded",{"title":217,"path":218,"stem":219,"draft":120,"icon":220},"การตั้งค่าร้านค้าและการซิงก์ข้อมูล","\u002Fdocs\u002Ffeatures\u002Fshops\u002Fshop-settings-and-sync","docs\u002F02.features\u002F01.shops\u002F05.shop-settings-and-sync","i-material-symbols-settings-rounded",{"title":222,"draft":120,"path":223,"stem":224,"children":225,"page":120},"สินค้า","\u002Fdocs\u002Ffeatures\u002Fproducts","docs\u002F02.features\u002F02.products",[226,231,236,241,246,251,256,261,266],{"title":227,"path":228,"stem":229,"draft":120,"icon":230},"ตารางสินค้า","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Fproduct-table","docs\u002F02.features\u002F02.products\u002F01.product-table","i-material-symbols-deployed-code-rounded",{"title":232,"path":233,"stem":234,"draft":120,"icon":235},"ภาพรวมสินค้า","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Funified-products","docs\u002F02.features\u002F02.products\u002F02.unified-products","i-material-symbols-dashboard-customize-rounded",{"title":237,"path":238,"stem":239,"draft":120,"icon":240},"จับคู่และรวมสินค้า","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Fmatching-and-merging","docs\u002F02.features\u002F02.products\u002F03.matching-and-merging","i-material-symbols-merge-rounded",{"title":242,"path":243,"stem":244,"draft":120,"icon":245},"แก้ไขหลายรายการ (Excel)","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Fbulk-edit-excel","docs\u002F02.features\u002F02.products\u002F04.bulk-edit-excel","i-material-symbols-grid-on-rounded",{"title":247,"path":248,"stem":249,"draft":120,"icon":250},"สต็อกและการสั่งซื้อเพิ่ม","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Finventory-and-reorder","docs\u002F02.features\u002F02.products\u002F05.inventory-and-reorder","i-material-symbols-inventory-2-rounded",{"title":252,"path":253,"stem":254,"draft":120,"icon":255},"ซิงก์สต็อก","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Fstock-sync","docs\u002F02.features\u002F02.products\u002F06.stock-sync","i-material-symbols-sync-rounded",{"title":257,"path":258,"stem":259,"draft":120,"icon":260},"ค่าคอมมิชชั่น","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Fcommission","docs\u002F02.features\u002F02.products\u002F07.commission","i-material-symbols-price-change-rounded",{"title":262,"path":263,"stem":264,"draft":120,"icon":265},"Auto bump","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Fauto-bump","docs\u002F02.features\u002F02.products\u002F08.auto-bump","i-material-symbols-trending-up-rounded",{"title":267,"path":268,"stem":269,"draft":120,"icon":270},"ช่วง margin","\u002Fdocs\u002Ffeatures\u002Fproducts\u002Fmargin-spread","docs\u002F02.features\u002F02.products\u002F09.margin-spread","i-material-symbols-straighten-rounded",{"title":272,"draft":120,"path":273,"stem":274,"children":275},"การวิเคราะห์ทางการเงิน","\u002Fdocs\u002Ffeatures\u002Ffinancial-breakdown","docs\u002F02.features\u002F03.financial-breakdown\u002Findex",[276,277,282,287,292,297,302,307],{"title":119,"path":273,"stem":274,"draft":120},{"title":278,"path":279,"stem":280,"draft":120,"icon":281},"การจำลองและบันทึกร่างการแก้ไข","\u002Fdocs\u002Ffeatures\u002Ffinancial-breakdown\u002Fsimulate-and-draft-edit","docs\u002F02.features\u002F03.financial-breakdown\u002F01.simulate-and-draft-edit","i-material-symbols-science-rounded",{"title":283,"path":284,"stem":285,"draft":120,"icon":286},"การตั้งค่า margin","\u002Fdocs\u002Ffeatures\u002Ffinancial-breakdown\u002Fset-margin","docs\u002F02.features\u002F03.financial-breakdown\u002F02.set-margin","i-material-symbols-tune-rounded",{"title":288,"path":289,"stem":290,"draft":120,"icon":291},"Margin optimizer","\u002Fdocs\u002Ffeatures\u002Ffinancial-breakdown\u002Fmargin-optimizer","docs\u002F02.features\u002F03.financial-breakdown\u002F03.margin-optimizer","i-material-symbols-instant-mix-rounded",{"title":293,"path":294,"stem":295,"draft":120,"icon":296},"ความยืดหยุ่นของราคา","\u002Fdocs\u002Ffeatures\u002Ffinancial-breakdown\u002Fprice-elasticity","docs\u002F02.features\u002F03.financial-breakdown\u002F04.price-elasticity","i-material-symbols-show-chart-rounded",{"title":298,"path":299,"stem":300,"draft":120,"icon":301},"เครื่องคำนวณสินค้า","\u002Fdocs\u002Ffeatures\u002Ffinancial-breakdown\u002Fproduct-calculator","docs\u002F02.features\u002F03.financial-breakdown\u002F05.product-calculator","i-material-symbols-calculate-rounded",{"title":303,"path":304,"stem":305,"draft":120,"icon":306},"ประวัติสินค้า","\u002Fdocs\u002Ffeatures\u002Ffinancial-breakdown\u002Fproduct-history","docs\u002F02.features\u002F03.financial-breakdown\u002F06.product-history","i-material-symbols-history-rounded",{"title":308,"path":309,"stem":310,"draft":120,"icon":311},"กำไรสุทธิและต้นทุนแฝง","\u002Fdocs\u002Ffeatures\u002Ffinancial-breakdown\u002Fnet-profit-and-hidden-cost","docs\u002F02.features\u002F03.financial-breakdown\u002F07.net-profit-and-hidden-cost","i-material-symbols-visibility-off-rounded",{"title":313,"draft":120,"path":314,"stem":315,"children":316,"page":120},"การตั้งราคา","\u002Fdocs\u002Ffeatures\u002Fpricing","docs\u002F02.features\u002F04.pricing",[317,321,326,331],{"title":318,"path":319,"stem":320,"draft":120,"icon":245},"Price Edit","\u002Fdocs\u002Ffeatures\u002Fpricing\u002Fprice-edit","docs\u002F02.features\u002F04.pricing\u002F01.price-edit",{"title":322,"path":323,"stem":324,"draft":120,"icon":325},"Whitelist การขึ้นราคา","\u002Fdocs\u002Ffeatures\u002Fpricing\u002Fprice-increase-whitelist","docs\u002F02.features\u002F04.pricing\u002F02.price-increase-whitelist","i-lucide-badge-check",{"title":327,"path":328,"stem":329,"draft":120,"icon":330},"การขออนุมัติ whitelist","\u002Fdocs\u002Ffeatures\u002Fpricing\u002Frequest-whitelist-approval","docs\u002F02.features\u002F04.pricing\u002F03.request-whitelist-approval","i-lucide-mail",{"title":332,"path":333,"stem":334,"draft":120,"icon":181},"ระดับราคา","\u002Fdocs\u002Ffeatures\u002Fpricing\u002Fprice-tiers","docs\u002F02.features\u002F04.pricing\u002F04.price-tiers",{"title":336,"draft":120,"path":337,"stem":338,"children":339},"ตัวจำลองแคมเปญ","\u002Fdocs\u002Ffeatures\u002Fcampaign-simulator","docs\u002F02.features\u002F05.campaign-simulator\u002Findex",[340,341,346,351],{"title":119,"path":337,"stem":338,"draft":120},{"title":342,"path":343,"stem":344,"draft":120,"icon":345},"โมเดลช่วงแคมเปญ","\u002Fdocs\u002Ffeatures\u002Fcampaign-simulator\u002Fphase-model","docs\u002F02.features\u002F05.campaign-simulator\u002F01.phase-model","i-material-symbols-timeline-rounded",{"title":347,"path":348,"stem":349,"draft":120,"icon":350},"การวางแผนโฆษณา","\u002Fdocs\u002Ffeatures\u002Fcampaign-simulator\u002Fads-planning","docs\u002F02.features\u002F05.campaign-simulator\u002F02.ads-planning","i-material-symbols-ads-click-rounded",{"title":352,"path":353,"stem":354,"draft":120,"icon":168},"เทียบไม่จัดแคมเปญ","\u002Fdocs\u002Ffeatures\u002Fcampaign-simulator\u002Fcounterfactual","docs\u002F02.features\u002F05.campaign-simulator\u002F03.counterfactual",{"title":356,"draft":120,"path":357,"stem":358,"children":359,"page":120},"ออเดอร์","\u002Fdocs\u002Ffeatures\u002Forders","docs\u002F02.features\u002F06.orders",[360,364,369],{"title":356,"path":361,"stem":362,"draft":120,"icon":363},"\u002Fdocs\u002Ffeatures\u002Forders\u002Forders","docs\u002F02.features\u002F06.orders\u002F01.orders","i-material-symbols-receipt-long-rounded",{"title":365,"path":366,"stem":367,"draft":120,"icon":368},"Reconciliation","\u002Fdocs\u002Ffeatures\u002Forders\u002Freconciliation","docs\u002F02.features\u002F06.orders\u002F02.reconciliation","i-material-symbols-balance",{"title":370,"path":371,"stem":372,"draft":120,"icon":373},"ใบปะหน้าพัสดุ","\u002Fdocs\u002Ffeatures\u002Forders\u002Fshipping-labels","docs\u002F02.features\u002F06.orders\u002F03.shipping-labels","i-material-symbols-local-shipping-rounded",{"title":375,"draft":120,"path":376,"stem":377,"children":378},"การเติบโต","\u002Fdocs\u002Fgrowth","docs\u002F03.growth\u002Findex",[379,380,403,467,491],{"title":119,"path":376,"stem":377,"draft":120},{"title":381,"draft":120,"path":382,"stem":383,"children":384,"page":120},"Actions","\u002Fdocs\u002Fgrowth\u002Factions","docs\u002F03.growth\u002F01.actions",[385,390,394,399],{"title":386,"path":387,"stem":388,"draft":120,"icon":389},"Actions คืออะไร","\u002Fdocs\u002Fgrowth\u002Factions\u002Fwhat-are-actions","docs\u002F03.growth\u002F01.actions\u002F01.what-are-actions","i-material-symbols-app-spark-rounded",{"title":391,"path":392,"stem":393,"draft":120},"ขั้นตอนของ Action","\u002Fdocs\u002Fgrowth\u002Factions\u002Faction-flow","docs\u002F03.growth\u002F01.actions\u002F02.action-flow",{"title":395,"path":396,"stem":397,"draft":120,"icon":398},"Deployed และ Dismissed","\u002Fdocs\u002Fgrowth\u002Factions\u002Fdeployed-and-dismissed","docs\u002F03.growth\u002F01.actions\u002F03.deployed-and-dismissed","i-material-symbols-published-with-changes-rounded",{"title":400,"path":401,"stem":402,"draft":120,"icon":301},"ผลลัพธ์คำนวณอย่างไร","\u002Fdocs\u002Fgrowth\u002Factions\u002Fresults","docs\u002F03.growth\u002F01.actions\u002F04.results",{"title":404,"draft":120,"path":405,"stem":406,"children":407,"icon":409},"ประเภทของ Action","\u002Fdocs\u002Fgrowth\u002Faction-types","docs\u002F03.growth\u002F02.action-types\u002Findex",[408,410,415,420,424,429,434,439,444,448,453,458,463],{"title":119,"path":405,"stem":406,"draft":120,"icon":409},"i-material-symbols-format-list-bulleted-rounded",{"title":411,"path":412,"stem":413,"draft":120,"icon":414},"Price buffer","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fprice-buffer","docs\u002F03.growth\u002F02.action-types\u002F01.price-buffer","i-material-symbols-money-range-rounded",{"title":416,"path":417,"stem":418,"draft":120,"icon":419},"Commission adjust","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fcommission-adjust","docs\u002F03.growth\u002F02.action-types\u002F02.commission-adjust","i-material-symbols-percent-discount-rounded",{"title":421,"path":422,"stem":423,"draft":120,"icon":210},"Variant merge","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fvariant-merge","docs\u002F03.growth\u002F02.action-types\u002F03.variant-merge",{"title":425,"path":426,"stem":427,"draft":120,"icon":428},"Target ROAS","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Ftarget-roas","docs\u002F03.growth\u002F02.action-types\u002F04.target-roas","i-material-symbols-target",{"title":430,"path":431,"stem":432,"draft":120,"icon":433},"Bundle Deal","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fbundle-deal","docs\u002F03.growth\u002F02.action-types\u002F05.bundle-deal","i-material-symbols-category-rounded",{"title":435,"path":436,"stem":437,"draft":120,"icon":438},"Product Boost","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fproduct-boost","docs\u002F03.growth\u002F02.action-types\u002F06.product-boost","i-material-symbols-electric-bolt-rounded",{"title":440,"path":441,"stem":442,"draft":120,"icon":443},"การลงทะเบียนแคมเปญ","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fcampaign-enrollment","docs\u002F03.growth\u002F02.action-types\u002F07.campaign-enrollment","i-material-symbols-play-arrow-rounded",{"title":445,"path":446,"stem":447,"draft":120,"icon":350},"การปรับแต่งโฆษณา","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fad-adjustment","docs\u002F03.growth\u002F02.action-types\u002F08.ad-adjustment",{"title":449,"path":450,"stem":451,"draft":120,"icon":452},"SEO","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fseo","docs\u002F03.growth\u002F02.action-types\u002F09.seo","i-material-symbols-category-search-rounded",{"title":454,"path":455,"stem":456,"draft":120,"icon":457},"Add-on Deal","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fadd-on-deal","docs\u002F03.growth\u002F02.action-types\u002F10.add-on-deal","i-material-symbols-add-box-rounded",{"title":459,"path":460,"stem":461,"draft":120,"icon":462},"Stock Up","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Fstock-up","docs\u002F03.growth\u002F02.action-types\u002F11.stock-up","i-material-symbols-inventory-rounded",{"title":464,"path":465,"stem":466,"draft":120,"icon":428},"TikTok Target ROAS","\u002Fdocs\u002Fgrowth\u002Faction-types\u002Ftiktok-target-roas","docs\u002F03.growth\u002F02.action-types\u002F12.tiktok-target-roas",{"title":468,"draft":120,"path":469,"stem":470,"children":471,"page":120},"โฆษณา","\u002Fdocs\u002Fgrowth\u002Fads","docs\u002F03.growth\u002F03.ads",[472,477,481,486],{"title":473,"path":474,"stem":475,"draft":120,"icon":476},"การอ่านแผนภูมิ Sankey","\u002Fdocs\u002Fgrowth\u002Fads\u002Freading-the-sankey","docs\u002F03.growth\u002F03.ads\u002F01.reading-the-sankey","i-material-symbols-schema-rounded",{"title":478,"path":479,"stem":480,"draft":120,"icon":168},"Cannibalization","\u002Fdocs\u002Fgrowth\u002Fads\u002Fcannibalization","docs\u002F03.growth\u002F03.ads\u002F02.cannibalization",{"title":482,"path":483,"stem":484,"draft":120,"icon":485},"Meta (Facebook) Ads","\u002Fdocs\u002Fgrowth\u002Fads\u002Fmeta-ads","docs\u002F03.growth\u002F03.ads\u002F03.meta-ads","i-simple-icons-meta",{"title":487,"path":488,"stem":489,"draft":120,"icon":490},"กำไรจาก CPAS","\u002Fdocs\u002Fgrowth\u002Fads\u002Fcpas-profit","docs\u002F03.growth\u002F03.ads\u002F04.cpas-profit","i-material-symbols-hub-rounded",{"title":492,"draft":120,"path":493,"stem":494,"children":495,"icon":173},"Optimization groups","\u002Fdocs\u002Fgrowth\u002Foptimization-groups","docs\u002F03.growth\u002F04.optimization-groups\u002Findex",[496,497,502,507,512,517,522,527,532,537,542,547,552,557],{"title":119,"path":493,"stem":494,"draft":120,"icon":173},{"title":498,"path":499,"stem":500,"draft":120,"icon":501},"สร้างกลุ่ม","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fcreating-a-group","docs\u002F03.growth\u002F04.optimization-groups\u002F01.creating-a-group","i-lucide-plus",{"title":503,"path":504,"stem":505,"draft":120,"icon":506},"การตั้งค่าโดยรวม","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fglobal-settings","docs\u002F03.growth\u002F04.optimization-groups\u002F02.global-settings","i-lucide-settings-2",{"title":508,"path":509,"stem":510,"draft":120,"icon":511},"งบและขีดจำกัด","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fbudget-and-limits","docs\u002F03.growth\u002F04.optimization-groups\u002F03.budget-and-limits","i-lucide-wallet",{"title":513,"path":514,"stem":515,"draft":120,"icon":516},"เลือกเป้าหมาย","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fchoosing-an-objective","docs\u002F03.growth\u002F04.optimization-groups\u002F05.choosing-an-objective","i-lucide-target",{"title":518,"path":519,"stem":520,"draft":120,"icon":521},"เงื่อนไข","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fconstraints","docs\u002F03.growth\u002F04.optimization-groups\u002F06.constraints","i-lucide-shield-check",{"title":523,"path":524,"stem":525,"draft":120,"icon":526},"การกระจายงบ","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fallocation-preference","docs\u002F03.growth\u002F04.optimization-groups\u002F07.allocation-preference","i-lucide-sliders-horizontal",{"title":528,"path":529,"stem":530,"draft":120,"icon":531},"แผนรายเดือน","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fmonthly-plan","docs\u002F03.growth\u002F04.optimization-groups\u002F09.monthly-plan","i-lucide-calendar-days",{"title":533,"path":534,"stem":535,"draft":120,"icon":536},"ตารางเวลาบนไทม์ไลน์","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fschedule","docs\u002F03.growth\u002F04.optimization-groups\u002F10.schedule","i-lucide-clock",{"title":538,"path":539,"stem":540,"draft":120,"icon":541},"กฎระบบอัตโนมัติ","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fautomation","docs\u002F03.growth\u002F04.optimization-groups\u002F11.automation","i-lucide-workflow",{"title":543,"path":544,"stem":545,"draft":120,"icon":546},"จัดการแคมเปญในกลุ่ม","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fmanaging-campaigns","docs\u002F03.growth\u002F04.optimization-groups\u002F12.managing-campaigns","i-lucide-list-checks",{"title":548,"path":549,"stem":550,"draft":120,"icon":551},"รอบการปรับงบทำงานอย่างไร","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fdaily-run","docs\u002F03.growth\u002F04.optimization-groups\u002F13.daily-run","i-lucide-refresh-cw",{"title":553,"path":554,"stem":555,"draft":120,"icon":556},"เมื่อโมเดลโฆษณากำลังอัปเดต","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fmodel-training","docs\u002F03.growth\u002F04.optimization-groups\u002F14.model-training","i-lucide-brain-circuit",{"title":558,"path":559,"stem":560,"draft":120,"icon":561},"อภิธานศัพท์","\u002Fdocs\u002Fgrowth\u002Foptimization-groups\u002Fglossary","docs\u002F03.growth\u002F04.optimization-groups\u002F16.glossary","i-lucide-book-a",{"title":563,"draft":120,"path":564,"stem":565,"children":566},"AI และ API","\u002Fdocs\u002Fai-and-api","docs\u002F04.ai-and-api\u002Findex",[567,568,608],{"title":119,"path":564,"stem":565,"draft":120},{"title":42,"draft":120,"path":43,"stem":569,"children":570,"icon":572},"docs\u002F04.ai-and-api\u002F01.assistants\u002Findex",[571,573,578,583,588,593,598,603],{"title":119,"path":43,"stem":569,"draft":120,"icon":572},"i-material-symbols-smart-toy-rounded",{"title":574,"path":575,"stem":576,"draft":120,"icon":577},"เชื่อมต่อกับ ChatGPT","\u002Fdocs\u002Fai-and-api\u002Fassistants\u002Fconnect-chatgpt","docs\u002F04.ai-and-api\u002F01.assistants\u002F01.connect-chatgpt","i-simple-icons-openai",{"title":579,"path":580,"stem":581,"draft":120,"icon":582},"เชื่อมต่อกับ Claude","\u002Fdocs\u002Fai-and-api\u002Fassistants\u002Fconnect-claude","docs\u002F04.ai-and-api\u002F01.assistants\u002F02.connect-claude","i-simple-icons-claude",{"title":584,"path":585,"stem":586,"draft":120,"icon":587},"Native playbooks","\u002Fdocs\u002Fai-and-api\u002Fassistants\u002Fplaybooks","docs\u002F04.ai-and-api\u002F01.assistants\u002F03.playbooks","i-material-symbols-route-rounded",{"title":589,"path":590,"stem":591,"draft":120,"icon":592},"คลัง prompt","\u002Fdocs\u002Fai-and-api\u002Fassistants\u002Fprompt-library","docs\u002F04.ai-and-api\u002F01.assistants\u002F04.prompt-library","i-material-symbols-forum-rounded",{"title":594,"path":595,"stem":596,"draft":120,"icon":597},"MCP tool catalog","\u002Fdocs\u002Fai-and-api\u002Fassistants\u002Ftool-catalog","docs\u002F04.ai-and-api\u002F01.assistants\u002F05.tool-catalog","i-material-symbols-build-rounded",{"title":599,"path":600,"stem":601,"draft":120,"icon":602},"สิทธิ์และความปลอดภัย","\u002Fdocs\u002Fai-and-api\u002Fassistants\u002Fusage-and-safety","docs\u002F04.ai-and-api\u002F01.assistants\u002F06.usage-and-safety","i-material-symbols-health-and-safety-rounded",{"title":604,"path":605,"stem":606,"draft":120,"icon":607},"ตัวอย่าง MCP แบบครบขั้นตอน","\u002Fdocs\u002Fai-and-api\u002Fassistants\u002Fworked-examples","docs\u002F04.ai-and-api\u002F01.assistants\u002F07.worked-examples","i-material-symbols-menu-book-rounded",{"title":45,"draft":120,"path":609,"stem":610,"children":611,"page":120},"\u002Fdocs\u002Fai-and-api\u002Fapi","docs\u002F04.ai-and-api\u002F02.api",[612,615,620,625,630,635],{"title":126,"path":46,"stem":613,"draft":120,"icon":614},"docs\u002F04.ai-and-api\u002F02.api\u002F01.getting-started","i-material-symbols-key-rounded",{"title":616,"path":617,"stem":618,"draft":120,"icon":619},"ความปลอดภัยและขีดจำกัดของ API","\u002Fdocs\u002Fai-and-api\u002Fapi\u002Fsecurity","docs\u002F04.ai-and-api\u002F02.api\u002F02.security","i-material-symbols-verified-user-rounded",{"title":621,"path":622,"stem":623,"draft":120,"icon":624},"Endpoints: สินค้าและออเดอร์","\u002Fdocs\u002Fai-and-api\u002Fapi\u002Fproducts-and-orders","docs\u002F04.ai-and-api\u002F02.api\u002F03.products-and-orders","i-material-symbols-package-2-rounded",{"title":626,"path":627,"stem":628,"draft":120,"icon":629},"Endpoints: การแยกรายละเอียดทางการเงิน","\u002Fdocs\u002Fai-and-api\u002Fapi\u002Ffinancial-breakdown","docs\u002F04.ai-and-api\u002F02.api\u002F04.financial-breakdown","i-material-symbols-account-balance-rounded",{"title":631,"path":632,"stem":633,"draft":120,"icon":634},"Endpoints: ข้อมูลแพลตฟอร์มดิบ","\u002Fdocs\u002Fai-and-api\u002Fapi\u002Fplatform-data","docs\u002F04.ai-and-api\u002F02.api\u002F05.platform-data","i-material-symbols-database-rounded",{"title":636,"path":637,"stem":638,"draft":120,"icon":639},"Endpoints: Actions และคำแนะนำ","\u002Fdocs\u002Fai-and-api\u002Fapi\u002Frecommendations","docs\u002F04.ai-and-api\u002F02.api\u002F06.recommendations","i-material-symbols-recommend-rounded",{"title":641,"draft":120,"path":642,"stem":643,"children":644},"การดูแลระบบ","\u002Fdocs\u002Fadministration","docs\u002F05.administration\u002Findex",[645,646,666],{"title":119,"path":642,"stem":643,"draft":120},{"title":647,"draft":120,"path":648,"stem":649,"children":650,"page":120},"ทีมและการเข้าถึง","\u002Fdocs\u002Fadministration\u002Fteam-and-access","docs\u002F05.administration\u002F01.team-and-access",[651,656,661],{"title":652,"path":653,"stem":654,"draft":120,"icon":655},"ทีมและบทบาท","\u002Fdocs\u002Fadministration\u002Fteam-and-access\u002Fteam-and-roles","docs\u002F05.administration\u002F01.team-and-access\u002F01.team-and-roles","i-material-symbols-group-rounded",{"title":657,"path":658,"stem":659,"draft":120,"icon":660},"การเพิ่มสมาชิก","\u002Fdocs\u002Fadministration\u002Fteam-and-access\u002Fadding-teammates","docs\u002F05.administration\u002F01.team-and-access\u002F02.adding-teammates","i-material-symbols-person-add-rounded",{"title":662,"path":663,"stem":664,"draft":120,"icon":665},"การจัดการการเข้าถึง","\u002Fdocs\u002Fadministration\u002Fteam-and-access\u002Fmanaging-access","docs\u002F05.administration\u002F01.team-and-access\u002F03.managing-access","i-material-symbols-admin-panel-settings-rounded",{"title":667,"draft":120,"path":668,"stem":669,"children":670,"page":120},"บัญชี","\u002Fdocs\u002Fadministration\u002Faccount","docs\u002F05.administration\u002F02.account",[671,673],{"title":48,"path":49,"stem":672,"draft":120,"icon":490},"docs\u002F05.administration\u002F02.account\u002F01.open-platform",{"title":674,"path":675,"stem":676,"draft":120,"icon":363},"VAT","\u002Fdocs\u002Fadministration\u002Faccount\u002Fvat","docs\u002F05.administration\u002F02.account\u002F02.vat",{"id":678,"title":621,"body":679,"description":4277,"draft":120,"draftReason":4278,"extension":4279,"layout":4278,"meta":4280,"navigation":4281,"path":622,"platforms":4278,"rawbody":4282,"seo":4283,"stem":623,"__hash__":4284},"docs_th\u002Fdocs\u002F04.ai-and-api\u002F02.api\u002F03.products-and-orders.md",{"type":680,"value":681,"toc":4267},"minimark",[682,695,702,707,1042,1287,1441,1634,1755,1896,2028,2105,2189,2271,2275,2423,2608,2681,2729,2733,2849,2940,3065,3180,3337,3470,3474,3710,3714,3813,3890,4014,4133,4207],[683,684,685,686,690,691,694],"p",{},"Endpoint สำหรับแคตตาล็อก, ออเดอร์, สต๊อก และรายการร้านของคุณ เพิ่งเริ่มใช้งาน? อ่าน ",[687,688,126],"a",{"href":689},"\u002Fth\u002Fdocs\u002Fai-and-api\u002Fapi\u002Fgetting-started"," สำหรับการยืนยันตัวตน และดู ",[687,692,693],{"href":689},"หลักการทั่วไป"," สำหรับโครงห่อผลลัพธ์, วันที่ และการแบ่งหน้า ทุก endpoint เป็นแบบอ่านอย่างเดียว",[696,697,699],"callout",{"icon":698},"i-lucide-mouse-pointer-click",[683,700,701],{},"คลิกที่ endpoint ใดก็ได้เพื่อขยายดูพารามิเตอร์, request body และ response (รายละเอียดเชิงเทคนิคเป็นภาษาอังกฤษ)",[703,704,706],"h2",{"id":705},"products-catalog","Products & catalog",[708,709,713,716,722,730,885,894,897,1036],"api-endpoint",{"method":710,"path":711,"summary":712},"POST","\u002Fapi\u002Fcanonical-product-controller\u002Fcanonical\u002Ffetch-products","Fetch canonical products",[683,714,715],{},"Fetches canonical products with their current Shopee binding data. Returns one row per (canonical, binding) pair—canonicals with multiple Shopee listings produce multiple results. Useful for Shopee-keyed product lookups and reconciliation workflows.",[683,717,718],{},[719,720,721],"strong",{},"Request body",[683,723,724,725,729],{},"Array of ",[726,727,728],"code",{},"CanonicalProductWithShopeeBindingSearchParams"," — filter by canonical id, name, SKU, model SKU, or by Shopee item\u002Fmodel\u002Fshop id and region.",[731,732,733,752],"table",{},[734,735,736],"thead",{},[737,738,739,743,746,749],"tr",{},[740,741,742],"th",{},"Field",[740,744,745],{},"Type",[740,747,748],{},"Required",[740,750,751],{},"Description",[753,754,755,772,787,801,815,829,843,857,871],"tbody",{},[737,756,757,763,766,769],{},[758,759,760],"td",{},[726,761,762],{},"id",[758,764,765],{},"integer",[758,767,768],{},"no",[758,770,771],{},"Canonical variant id",[737,773,774,779,782,784],{},[758,775,776],{},[726,777,778],{},"name",[758,780,781],{},"string",[758,783,768],{},[758,785,786],{},"Canonical product name (exact match)",[737,788,789,794,796,798],{},[758,790,791],{},[726,792,793],{},"brand",[758,795,781],{},[758,797,768],{},[758,799,800],{},"Brand name",[737,802,803,808,810,812],{},[758,804,805],{},[726,806,807],{},"sku",[758,809,781],{},[758,811,768],{},[758,813,814],{},"Canonical SKU",[737,816,817,822,824,826],{},[758,818,819],{},[726,820,821],{},"modelSku",[758,823,781],{},[758,825,768],{},[758,827,828],{},"Canonical model SKU",[737,830,831,836,838,840],{},[758,832,833],{},[726,834,835],{},"shopeeItemId",[758,837,765],{},[758,839,768],{},[758,841,842],{},"Shopee item id",[737,844,845,850,852,854],{},[758,846,847],{},[726,848,849],{},"shopeeModelId",[758,851,765],{},[758,853,768],{},[758,855,856],{},"Shopee model id (for modeled items)",[737,858,859,864,866,868],{},[758,860,861],{},[726,862,863],{},"shopeeShopId",[758,865,765],{},[758,867,768],{},[758,869,870],{},"Shopee shop id",[737,872,873,878,880,882],{},[758,874,875],{},[726,876,877],{},"region",[758,879,781],{},[758,881,768],{},[758,883,884],{},"Region code (e.g. 'TH')",[683,886,887,890,891],{},[719,888,889],{},"Response"," — Array of ",[726,892,893],{},"CanonicalProductWithShopeeBindingView",[683,895,896],{},"List of canonical products with their Shopee binding details (price, stock, margin, images). Each canonical can appear multiple times if it has multiple Shopee bindings.",[731,898,899,909],{},[734,900,901],{},[737,902,903,905,907],{},[740,904,742],{},[740,906,745],{},[740,908,751],{},[753,910,911,921,932,942,955,967,979,991,1003,1013,1024],{},[737,912,913,917,919],{},[758,914,915],{},[726,916,762],{},[758,918,765],{},[758,920,771],{},[737,922,923,927,929],{},[758,924,925],{},[726,926,778],{},[758,928,781],{},[758,930,931],{},"Product name",[737,933,934,938,940],{},[758,935,936],{},[726,937,807],{},[758,939,781],{},[758,941,814],{},[737,943,944,949,952],{},[758,945,946],{},[726,947,948],{},"cogs",[758,950,951],{},"number",[758,953,954],{},"Total cost of goods sold",[737,956,957,962,964],{},[758,958,959],{},[726,960,961],{},"price",[758,963,951],{},[758,965,966],{},"Current Shopee listing price",[737,968,969,974,976],{},[758,970,971],{},[726,972,973],{},"stock",[758,975,765],{},[758,977,978],{},"Current Shopee stock",[737,980,981,986,988],{},[758,982,983],{},[726,984,985],{},"margin",[758,987,951],{},[758,989,990],{},"Margin on this Shopee binding (0–1 fraction)",[737,992,993,998,1000],{},[758,994,995],{},[726,996,997],{},"totalStock",[758,999,765],{},[758,1001,1002],{},"Min stock across all platform bindings for this canonical",[737,1004,1005,1009,1011],{},[758,1006,1007],{},[726,1008,835],{},[758,1010,765],{},[758,1012,842],{},[737,1014,1015,1019,1021],{},[758,1016,1017],{},[726,1018,849],{},[758,1020,765],{},[758,1022,1023],{},"Shopee model id (if modeled)",[737,1025,1026,1031,1033],{},[758,1027,1028],{},[726,1029,1030],{},"imageUrl",[758,1032,781],{},[758,1034,1035],{},"Product image URL from Shopee",[683,1037,1038],{},[1039,1040,1041],"em",{},"…and more — see the full schema in the OpenAPI spec.",[708,1043,1046,1049,1053,1059,1167,1174,1181,1283],{"method":710,"path":1044,"summary":1045},"\u002Fapi\u002Fcanonical-product-controller\u002Fcanonical\u002Ffetch-products-with-platforms","Products with all platform bindings",[683,1047,1048],{},"Fetches canonical products and attaches ALL platform bindings (Shopee, Lazada, TikTok) in a platforms array. One row per canonical, regardless of how many platforms it's bound to. Used for neutral, multi-platform product lists.",[683,1050,1051],{},[719,1052,721],{},[683,1054,724,1055,1058],{},[726,1056,1057],{},"CanonicalProductSearchParams"," — filter by canonical id, name, SKU, model SKU, or by platform and platform shop id.",[731,1060,1061,1073],{},[734,1062,1063],{},[737,1064,1065,1067,1069,1071],{},[740,1066,742],{},[740,1068,745],{},[740,1070,748],{},[740,1072,751],{},[753,1074,1075,1087,1099,1111,1124,1138,1152],{},[737,1076,1077,1081,1083,1085],{},[758,1078,1079],{},[726,1080,762],{},[758,1082,765],{},[758,1084,768],{},[758,1086,771],{},[737,1088,1089,1093,1095,1097],{},[758,1090,1091],{},[726,1092,778],{},[758,1094,781],{},[758,1096,768],{},[758,1098,931],{},[737,1100,1101,1105,1107,1109],{},[758,1102,1103],{},[726,1104,807],{},[758,1106,781],{},[758,1108,768],{},[758,1110,814],{},[737,1112,1113,1117,1119,1121],{},[758,1114,1115],{},[726,1116,821],{},[758,1118,781],{},[758,1120,768],{},[758,1122,1123],{},"Model SKU",[737,1125,1126,1131,1133,1135],{},[758,1127,1128],{},[726,1129,1130],{},"platform",[758,1132,781],{},[758,1134,768],{},[758,1136,1137],{},"Platform code ('shopee', 'lazada', 'tiktok')",[737,1139,1140,1145,1147,1149],{},[758,1141,1142],{},[726,1143,1144],{},"platformShopId",[758,1146,781],{},[758,1148,768],{},[758,1150,1151],{},"Shopee shop id, Lazada seller id, or TikTok shop id",[737,1153,1154,1159,1162,1164],{},[758,1155,1156],{},[726,1157,1158],{},"activeOnly",[758,1160,1161],{},"boolean",[758,1163,768],{},[758,1165,1166],{},"When true, exclude inactive bindings (default false)",[683,1168,1169,890,1171],{},[719,1170,889],{},[726,1172,1173],{},"CanonicalProductWithPlatforms",[683,1175,1176,1177,1180],{},"List of canonical products, each carrying margin distribution stats and a ",[726,1178,1179],{},"platforms"," array of all bound marketplace items.",[731,1182,1183,1193],{},[734,1184,1185],{},[737,1186,1187,1189,1191],{},[740,1188,742],{},[740,1190,745],{},[740,1192,751],{},[753,1194,1195,1205,1215,1225,1236,1247,1259,1271],{},[737,1196,1197,1201,1203],{},[758,1198,1199],{},[726,1200,762],{},[758,1202,765],{},[758,1204,771],{},[737,1206,1207,1211,1213],{},[758,1208,1209],{},[726,1210,778],{},[758,1212,781],{},[758,1214,931],{},[737,1216,1217,1221,1223],{},[758,1218,1219],{},[726,1220,807],{},[758,1222,781],{},[758,1224,814],{},[737,1226,1227,1231,1233],{},[758,1228,1229],{},[726,1230,948],{},[758,1232,951],{},[758,1234,1235],{},"Total COGS",[737,1237,1238,1242,1244],{},[758,1239,1240],{},[726,1241,997],{},[758,1243,765],{},[758,1245,1246],{},"Min stock across all bindings",[737,1248,1249,1254,1256],{},[758,1250,1251],{},[726,1252,1253],{},"variantCount",[758,1255,765],{},[758,1257,1258],{},"Number of platform variants\u002Fbindings",[737,1260,1261,1266,1268],{},[758,1262,1263],{},[726,1264,1265],{},"medianMargin",[758,1267,951],{},[758,1269,1270],{},"Median margin across bindings",[737,1272,1273,1277,1280],{},[758,1274,1275],{},[726,1276,1179],{},[758,1278,1279],{},"array",[758,1281,1282],{},"Per-binding refs (platform, item\u002Fmodel ids, shop id, price, stock, margin)",[683,1284,1285],{},[1039,1286,1041],{},[708,1288,1291,1302,1306,1311,1394,1402],{"method":710,"path":1289,"summary":1290},"\u002Fapi\u002Fcanonical-product-controller\u002Fcanonical\u002Ffetch-products-with-platforms-paginated","Products with bindings (cursor paginated)",[683,1292,1293,1294,1297,1298,1301],{},"Cursor-paginated canonical product list with the same platform-bindings metadata as the non-paginated variant. Pass the returned ",[726,1295,1296],{},"nextCursor.canonicalId"," back as ",[726,1299,1300],{},"cursorCanonicalId"," for the next page. Supports optional platform\u002Fshop scoping.",[683,1303,1304],{},[719,1305,721],{},[683,1307,1308],{},[726,1309,1310],{},"CanonicalProductPaginatedFetchRequest",[731,1312,1313,1325],{},[734,1314,1315],{},[737,1316,1317,1319,1321,1323],{},[740,1318,742],{},[740,1320,745],{},[740,1322,748],{},[740,1324,751],{},[753,1326,1327,1340,1354,1367,1380],{},[737,1328,1329,1333,1335,1337],{},[758,1330,1331],{},[726,1332,1300],{},[758,1334,765],{},[758,1336,768],{},[758,1338,1339],{},"Cursor from prior page's nextCursor (omit for first page)",[737,1341,1342,1347,1349,1351],{},[758,1343,1344],{},[726,1345,1346],{},"pageSize",[758,1348,765],{},[758,1350,768],{},[758,1352,1353],{},"Rows per page (default 20)",[737,1355,1356,1360,1362,1364],{},[758,1357,1358],{},[726,1359,1130],{},[758,1361,781],{},[758,1363,768],{},[758,1365,1366],{},"Filter to this platform",[737,1368,1369,1373,1375,1377],{},[758,1370,1371],{},[726,1372,1144],{},[758,1374,781],{},[758,1376,768],{},[758,1378,1379],{},"Filter to this shop\u002Fseller id",[737,1381,1382,1387,1389,1391],{},[758,1383,1384],{},[726,1385,1386],{},"filters",[758,1388,1279],{},[758,1390,768],{},[758,1392,1393],{},"Column filters (text search, numeric range)",[683,1395,1396,1398,1399],{},[719,1397,889],{}," — ",[726,1400,1401],{},"CursorPaginatedResult\u003CCanonicalProductCursor, CanonicalProductWithPlatforms>",[731,1403,1404,1414],{},[734,1405,1406],{},[737,1407,1408,1410,1412],{},[740,1409,742],{},[740,1411,745],{},[740,1413,751],{},[753,1415,1416,1428],{},[737,1417,1418,1423,1425],{},[758,1419,1420],{},[726,1421,1422],{},"rows",[758,1424,1279],{},[758,1426,1427],{},"Array of CanonicalProductWithPlatforms",[737,1429,1430,1435,1438],{},[758,1431,1432],{},[726,1433,1434],{},"nextCursor",[758,1436,1437],{},"object",[758,1439,1440],{},"Cursor for next page (canonicalId, userId) or null if at end",[708,1442,1445,1448,1452,1457,1566,1573],{"method":710,"path":1443,"summary":1444},"\u002Fapi\u002Fcanonical-product-controller\u002Fcanonical\u002Ffetch-products-with-platforms-paginated\u002Fv2","Products paginated (offset + sort)",[683,1446,1447],{},"Offset-based pagination (page number + size) over canonical products with platform bindings. Supports sorting (name, SKU, COGS, stock) and per-column filters. Preferred for UI product tables that need page numbers and sort controls.",[683,1449,1450],{},[719,1451,721],{},[683,1453,1454],{},[726,1455,1456],{},"CanonicalProductPaginatedV2FetchRequest",[731,1458,1459,1471],{},[734,1460,1461],{},[737,1462,1463,1465,1467,1469],{},[740,1464,742],{},[740,1466,745],{},[740,1468,748],{},[740,1470,751],{},[753,1472,1473,1487,1499,1513,1527,1540,1553],{},[737,1474,1475,1480,1482,1484],{},[758,1476,1477],{},[726,1478,1479],{},"page",[758,1481,765],{},[758,1483,768],{},[758,1485,1486],{},"0-based page number (default 0)",[737,1488,1489,1493,1495,1497],{},[758,1490,1491],{},[726,1492,1346],{},[758,1494,765],{},[758,1496,768],{},[758,1498,1353],{},[737,1500,1501,1506,1508,1510],{},[758,1502,1503],{},[726,1504,1505],{},"sortField",[758,1507,781],{},[758,1509,768],{},[758,1511,1512],{},"Sort column ('name', 'sku', 'modelSku', 'cogs', 'stock')",[737,1514,1515,1520,1522,1524],{},[758,1516,1517],{},[726,1518,1519],{},"sortDir",[758,1521,781],{},[758,1523,768],{},[758,1525,1526],{},"'asc' or 'desc' (default 'asc')",[737,1528,1529,1533,1535,1537],{},[758,1530,1531],{},[726,1532,1130],{},[758,1534,781],{},[758,1536,768],{},[758,1538,1539],{},"Filter by platform",[737,1541,1542,1546,1548,1550],{},[758,1543,1544],{},[726,1545,1144],{},[758,1547,781],{},[758,1549,768],{},[758,1551,1552],{},"Filter by shop\u002Fseller id",[737,1554,1555,1559,1561,1563],{},[758,1556,1557],{},[726,1558,1386],{},[758,1560,1279],{},[758,1562,768],{},[758,1564,1565],{},"Per-column text\u002Fnumeric filters",[683,1567,1568,1398,1570],{},[719,1569,889],{},[726,1571,1572],{},"OffsetPaginatedResult\u003CCanonicalProductWithPlatforms>",[731,1574,1575,1585],{},[734,1576,1577],{},[737,1578,1579,1581,1583],{},[740,1580,742],{},[740,1582,745],{},[740,1584,751],{},[753,1586,1587,1598,1610,1622],{},[737,1588,1589,1593,1595],{},[758,1590,1591],{},[726,1592,1422],{},[758,1594,1279],{},[758,1596,1597],{},"Products for this page",[737,1599,1600,1605,1607],{},[758,1601,1602],{},[726,1603,1604],{},"totalItems",[758,1606,765],{},[758,1608,1609],{},"Total product count",[737,1611,1612,1617,1619],{},[758,1613,1614],{},[726,1615,1616],{},"totalPages",[758,1618,765],{},[758,1620,1621],{},"Total page count",[737,1623,1624,1629,1631],{},[758,1625,1626],{},[726,1627,1628],{},"currentPage",[758,1630,765],{},[758,1632,1633],{},"0-based current page",[708,1635,1638,1641,1645,1650,1657],{"method":710,"path":1636,"summary":1637},"\u002Fapi\u002Fcanonical-product-controller\u002Fcanonical\u002Ffetch-products-margin-stats","Margin stats over products",[683,1639,1640],{},"Computes margin distribution (min, max, median, quartiles) over the filtered canonical product set. Uses the same filters as the paginated fetch; pagination parameters are ignored. Products with no margined binding are excluded.",[683,1642,1643],{},[719,1644,721],{},[683,1646,1647,1649],{},[726,1648,1456],{}," — only the filter\u002Fplatform\u002FplatformShopId fields are used.",[683,1651,1652,1398,1654],{},[719,1653,889],{},[726,1655,1656],{},"ProductMarginStats",[731,1658,1659,1669],{},[734,1660,1661],{},[737,1662,1663,1665,1667],{},[740,1664,742],{},[740,1666,745],{},[740,1668,751],{},[753,1670,1671,1683,1695,1707,1718,1730,1742],{},[737,1672,1673,1678,1680],{},[758,1674,1675],{},[726,1676,1677],{},"productCount",[758,1679,765],{},[758,1681,1682],{},"Products with non-null margin in the result set",[737,1684,1685,1690,1692],{},[758,1686,1687],{},[726,1688,1689],{},"minMargin",[758,1691,951],{},[758,1693,1694],{},"Lowest margin (0–1 fraction)",[737,1696,1697,1702,1704],{},[758,1698,1699],{},[726,1700,1701],{},"maxMargin",[758,1703,951],{},[758,1705,1706],{},"Highest margin",[737,1708,1709,1713,1715],{},[758,1710,1711],{},[726,1712,1265],{},[758,1714,951],{},[758,1716,1717],{},"Median margin",[737,1719,1720,1725,1727],{},[758,1721,1722],{},[726,1723,1724],{},"q1Margin",[758,1726,951],{},[758,1728,1729],{},"25th percentile margin",[737,1731,1732,1737,1739],{},[758,1733,1734],{},[726,1735,1736],{},"q3Margin",[758,1738,951],{},[758,1740,1741],{},"75th percentile margin",[737,1743,1744,1749,1752],{},[758,1745,1746],{},[726,1747,1748],{},"dataFreshAt",[758,1750,1751],{},"string (date)",[758,1753,1754],{},"Oldest product pull time across the user's shops",[708,1756,1759,1762,1766,1771,1778],{"method":710,"path":1757,"summary":1758},"\u002Fapi\u002Fcanonical-product-controller\u002Fcanonical\u002Ffetch-product-costs","Cost breakdown for products",[683,1760,1761],{},"Reads the detailed per-component cost breakdown (manufacturing, labor, shipping, packaging) and VAT-inclusivity flags for one or more canonical variants. Backs the product Cost Breakdown editor.",[683,1763,1764],{},[719,1765,721],{},[683,1767,724,1768,1770],{},[726,1769,765],{}," — canonical variant ids.",[683,1772,1773,890,1775],{},[719,1774,889],{},[726,1776,1777],{},"CanonicalProductCostRow",[731,1779,1780,1790],{},[734,1781,1782],{},[737,1783,1784,1786,1788],{},[740,1785,742],{},[740,1787,745],{},[740,1789,751],{},[753,1791,1792,1802,1812,1824,1836,1848,1860,1872,1884],{},[737,1793,1794,1798,1800],{},[758,1795,1796],{},[726,1797,762],{},[758,1799,765],{},[758,1801,771],{},[737,1803,1804,1808,1810],{},[758,1805,1806],{},[726,1807,948],{},[758,1809,951],{},[758,1811,954],{},[737,1813,1814,1819,1821],{},[758,1815,1816],{},[726,1817,1818],{},"manufacturingCost",[758,1820,951],{},[758,1822,1823],{},"Manufacturing cost",[737,1825,1826,1831,1833],{},[758,1827,1828],{},[726,1829,1830],{},"laborCost",[758,1832,951],{},[758,1834,1835],{},"Labor cost",[737,1837,1838,1843,1845],{},[758,1839,1840],{},[726,1841,1842],{},"shippingCost",[758,1844,951],{},[758,1846,1847],{},"Inbound shipping cost",[737,1849,1850,1855,1857],{},[758,1851,1852],{},[726,1853,1854],{},"packagingCost",[758,1856,951],{},[758,1858,1859],{},"Packaging cost",[737,1861,1862,1867,1869],{},[758,1863,1864],{},[726,1865,1866],{},"manufacturingCostVatInclusive",[758,1868,1161],{},[758,1870,1871],{},"Whether manufacturing cost includes VAT",[737,1873,1874,1879,1881],{},[758,1875,1876],{},[726,1877,1878],{},"shippingCostVatInclusive",[758,1880,1161],{},[758,1882,1883],{},"Whether shipping cost includes VAT",[737,1885,1886,1891,1893],{},[758,1887,1888],{},[726,1889,1890],{},"packagingCostVatInclusive",[758,1892,1161],{},[758,1894,1895],{},"Whether packaging cost includes VAT",[708,1897,1900,1903,1907,1912,1968,1975,1978],{"method":710,"path":1898,"summary":1899},"\u002Fapi\u002Fcanonical-product-controller\u002Fcanonical\u002Fsearch-products","Free-text product search",[683,1901,1902],{},"Searches canonical products by name, SKU, model SKU, and (if numeric) platform item ids using trigram similarity. Results are ranked by relevance and hard-capped at 50 hits. Optional platform\u002Fshop filters narrow results.",[683,1904,1905],{},[719,1906,721],{},[683,1908,1909],{},[726,1910,1911],{},"CanonicalProductSearchRequest",[731,1913,1914,1926],{},[734,1915,1916],{},[737,1917,1918,1920,1922,1924],{},[740,1919,742],{},[740,1921,745],{},[740,1923,748],{},[740,1925,751],{},[753,1927,1928,1942,1955],{},[737,1929,1930,1935,1937,1939],{},[758,1931,1932],{},[726,1933,1934],{},"query",[758,1936,781],{},[758,1938,768],{},[758,1940,1941],{},"Free-text: product name, SKU, model SKU, or numeric item id",[737,1943,1944,1948,1950,1952],{},[758,1945,1946],{},[726,1947,1130],{},[758,1949,781],{},[758,1951,768],{},[758,1953,1954],{},"Restrict to canonicals bound on this platform",[737,1956,1957,1961,1963,1965],{},[758,1958,1959],{},[726,1960,1144],{},[758,1962,781],{},[758,1964,768],{},[758,1966,1967],{},"Restrict to canonicals bound to this shop\u002Fseller id",[683,1969,1970,890,1972],{},[719,1971,889],{},[726,1973,1974],{},"CanonicalProductSearchHit",[683,1976,1977],{},"Top-50 results ranked by relevance.",[731,1979,1980,1990],{},[734,1981,1982],{},[737,1983,1984,1986,1988],{},[740,1985,742],{},[740,1987,745],{},[740,1989,751],{},[753,1991,1992,2004,2016],{},[737,1993,1994,1999,2001],{},[758,1995,1996],{},[726,1997,1998],{},"canonical",[758,2000,1437],{},[758,2002,2003],{},"CanonicalProductWithPlatforms (name, SKU, COGS, all platform bindings)",[737,2005,2006,2011,2013],{},[758,2007,2008],{},[726,2009,2010],{},"score",[758,2012,951],{},[758,2014,2015],{},"Relevance score",[737,2017,2018,2023,2025],{},[758,2019,2020],{},[726,2021,2022],{},"matchedFields",[758,2024,1279],{},[758,2026,2027],{},"Which fields matched (NAME, SKU, MODEL_SKU, ITEM_ID)",[708,2029,2033,2036,2041,2072,2079],{"method":2030,"path":2031,"summary":2032},"GET","\u002Fapi\u002Fcanonical-product-controller\u002Fcanonical\u002Fhas-cogs","Check if Shopee shop has COGS",[683,2034,2035],{},"Checks whether any canonical product variant has COGS set for a given Shopee shop. Used to gate features (like the financial breakdown) until the seller has populated cost data.",[683,2037,2038],{},[719,2039,2040],{},"Query parameters",[731,2042,2043,2056],{},[734,2044,2045],{},[737,2046,2047,2050,2052,2054],{},[740,2048,2049],{},"Name",[740,2051,745],{},[740,2053,748],{},[740,2055,751],{},[753,2057,2058],{},[737,2059,2060,2065,2067,2070],{},[758,2061,2062],{},[726,2063,2064],{},"shopId",[758,2066,765],{},[758,2068,2069],{},"yes",[758,2071,870],{},[683,2073,2074,1398,2076],{},[719,2075,889],{},[726,2077,2078],{},"HasCogsResponse",[731,2080,2081,2091],{},[734,2082,2083],{},[737,2084,2085,2087,2089],{},[740,2086,742],{},[740,2088,745],{},[740,2090,751],{},[753,2092,2093],{},[737,2094,2095,2100,2102],{},[758,2096,2097],{},[726,2098,2099],{},"hasCogs",[758,2101,1161],{},[758,2103,2104],{},"True if at least one variant for this shop has COGS > 0",[708,2106,2109,2112,2116,2158,2164],{"method":2030,"path":2107,"summary":2108},"\u002Fapi\u002Fcanonical-product-controller\u002Flazada\u002Fcanonical\u002Fhas-cogs","Check if Lazada seller has COGS",[683,2110,2111],{},"Checks whether any canonical product variant has COGS set for a given Lazada seller.",[683,2113,2114],{},[719,2115,2040],{},[731,2117,2118,2130],{},[734,2119,2120],{},[737,2121,2122,2124,2126,2128],{},[740,2123,2049],{},[740,2125,745],{},[740,2127,748],{},[740,2129,751],{},[753,2131,2132,2146],{},[737,2133,2134,2139,2141,2143],{},[758,2135,2136],{},[726,2137,2138],{},"sellerId",[758,2140,765],{},[758,2142,2069],{},[758,2144,2145],{},"Lazada seller account id",[737,2147,2148,2152,2154,2156],{},[758,2149,2150],{},[726,2151,877],{},[758,2153,781],{},[758,2155,2069],{},[758,2157,884],{},[683,2159,2160,1398,2162],{},[719,2161,889],{},[726,2163,2078],{},[731,2165,2166,2176],{},[734,2167,2168],{},[737,2169,2170,2172,2174],{},[740,2171,742],{},[740,2173,745],{},[740,2175,751],{},[753,2177,2178],{},[737,2179,2180,2184,2186],{},[758,2181,2182],{},[726,2183,2099],{},[758,2185,1161],{},[758,2187,2188],{},"True if at least one variant for this seller has COGS > 0",[708,2190,2193,2196,2200,2241,2247],{"method":2030,"path":2191,"summary":2192},"\u002Fapi\u002Fcanonical-product-controller\u002Ftiktok\u002Fcanonical\u002Fhas-cogs","Check if TikTok shop has COGS",[683,2194,2195],{},"Checks whether any canonical product variant has COGS set for a given TikTok shop.",[683,2197,2198],{},[719,2199,2040],{},[731,2201,2202,2214],{},[734,2203,2204],{},[737,2205,2206,2208,2210,2212],{},[740,2207,2049],{},[740,2209,745],{},[740,2211,748],{},[740,2213,751],{},[753,2215,2216,2229],{},[737,2217,2218,2222,2224,2226],{},[758,2219,2220],{},[726,2221,2064],{},[758,2223,765],{},[758,2225,2069],{},[758,2227,2228],{},"TikTok shop id",[737,2230,2231,2235,2237,2239],{},[758,2232,2233],{},[726,2234,877],{},[758,2236,781],{},[758,2238,2069],{},[758,2240,884],{},[683,2242,2243,1398,2245],{},[719,2244,889],{},[726,2246,2078],{},[731,2248,2249,2259],{},[734,2250,2251],{},[737,2252,2253,2255,2257],{},[740,2254,742],{},[740,2256,745],{},[740,2258,751],{},[753,2260,2261],{},[737,2262,2263,2267,2269],{},[758,2264,2265],{},[726,2266,2099],{},[758,2268,1161],{},[758,2270,2104],{},[703,2272,2274],{"id":2273},"orders","Orders",[708,2276,2279,2289,2293,2298,2380,2387],{"method":710,"path":2277,"summary":2278},"\u002Fapi\u002Fcanonical-order-controller\u002Fcanonical\u002Forders\u002Ffetch-paginated","Fetch orders (cursor paginated)",[683,2280,2281,2282,1297,2285,2288],{},"Cursor-paginated list of orders across all the user's shops on every connected platform (Shopee, Lazada, TikTok). Returns order id, platform, status, buyer-paid total, and timestamps. Pass the returned ",[726,2283,2284],{},"nextCursor.canonicalOrderId",[726,2286,2287],{},"cursorCanonicalOrderId"," for the next page.",[683,2290,2291],{},[719,2292,721],{},[683,2294,2295],{},[726,2296,2297],{},"CanonicalOrderPaginatedFetchRequest",[731,2299,2300,2312],{},[734,2301,2302],{},[737,2303,2304,2306,2308,2310],{},[740,2305,742],{},[740,2307,745],{},[740,2309,748],{},[740,2311,751],{},[753,2313,2314,2327,2339,2352,2366],{},[737,2315,2316,2320,2322,2324],{},[758,2317,2318],{},[726,2319,2287],{},[758,2321,765],{},[758,2323,768],{},[758,2325,2326],{},"Cursor from prior page (omit for first page)",[737,2328,2329,2333,2335,2337],{},[758,2330,2331],{},[726,2332,1346],{},[758,2334,765],{},[758,2336,768],{},[758,2338,1353],{},[737,2340,2341,2345,2347,2349],{},[758,2342,2343],{},[726,2344,1130],{},[758,2346,781],{},[758,2348,768],{},[758,2350,2351],{},"Filter by platform ('shopee', 'lazada', 'tiktok'); omit for all",[737,2353,2354,2359,2361,2363],{},[758,2355,2356],{},[726,2357,2358],{},"fromDate",[758,2360,765],{},[758,2362,768],{},[758,2364,2365],{},"Start date (YYYYMMDD)",[737,2367,2368,2373,2375,2377],{},[758,2369,2370],{},[726,2371,2372],{},"toDate",[758,2374,765],{},[758,2376,768],{},[758,2378,2379],{},"End date (YYYYMMDD)",[683,2381,2382,1398,2384],{},[719,2383,889],{},[726,2385,2386],{},"CursorPaginatedResult\u003CCanonicalOrderCursor, CanonicalOrder>",[731,2388,2389,2399],{},[734,2390,2391],{},[737,2392,2393,2395,2397],{},[740,2394,742],{},[740,2396,745],{},[740,2398,751],{},[753,2400,2401,2412],{},[737,2402,2403,2407,2409],{},[758,2404,2405],{},[726,2406,1422],{},[758,2408,1279],{},[758,2410,2411],{},"Array of CanonicalOrder",[737,2413,2414,2418,2420],{},[758,2415,2416],{},[726,2417,1434],{},[758,2419,1437],{},[758,2421,2422],{},"Cursor for next page or null if at end",[708,2424,2427,2430,2435,2465,2472,2604],{"method":2030,"path":2425,"summary":2426},"\u002Fapi\u002Fcanonical-order-controller\u002Fcanonical\u002Forders\u002F{canonicalOrderId}","Fetch one order with line items",[683,2428,2429],{},"Fetches one complete order with all line items, quantities, prices, and fees — including the per-line and order-level financial breakdown (revenue, COGS, profit, margin).",[683,2431,2432],{},[719,2433,2434],{},"Path parameters",[731,2436,2437,2449],{},[734,2438,2439],{},[737,2440,2441,2443,2445,2447],{},[740,2442,2049],{},[740,2444,745],{},[740,2446,748],{},[740,2448,751],{},[753,2450,2451],{},[737,2452,2453,2458,2460,2462],{},[758,2454,2455],{},[726,2456,2457],{},"canonicalOrderId",[758,2459,765],{},[758,2461,2069],{},[758,2463,2464],{},"Canonical order id",[683,2466,2467,1398,2469],{},[719,2468,889],{},[726,2470,2471],{},"CanonicalOrder",[731,2473,2474,2484],{},[734,2475,2476],{},[737,2477,2478,2480,2482],{},[740,2479,742],{},[740,2481,745],{},[740,2483,751],{},[753,2485,2486,2497,2508,2520,2532,2544,2556,2568,2580,2592],{},[737,2487,2488,2492,2494],{},[758,2489,2490],{},[726,2491,2457],{},[758,2493,765],{},[758,2495,2496],{},"Order id",[737,2498,2499,2503,2505],{},[758,2500,2501],{},[726,2502,1130],{},[758,2504,781],{},[758,2506,2507],{},"Platform ('shopee', 'lazada', 'tiktok')",[737,2509,2510,2515,2517],{},[758,2511,2512],{},[726,2513,2514],{},"orderSn",[758,2516,781],{},[758,2518,2519],{},"Order serial number",[737,2521,2522,2527,2529],{},[758,2523,2524],{},[726,2525,2526],{},"orderStatus",[758,2528,781],{},[758,2530,2531],{},"Platform-specific status code",[737,2533,2534,2539,2541],{},[758,2535,2536],{},[726,2537,2538],{},"totalOrderRevenue",[758,2540,951],{},[758,2542,2543],{},"Post-discount item revenue",[737,2545,2546,2551,2553],{},[758,2547,2548],{},[726,2549,2550],{},"totalOrderCogs",[758,2552,951],{},[758,2554,2555],{},"Total COGS across line items",[737,2557,2558,2563,2565],{},[758,2559,2560],{},[726,2561,2562],{},"totalOrderProfit",[758,2564,951],{},[758,2566,2567],{},"Total profit (revenue − COGS − fees)",[737,2569,2570,2575,2577],{},[758,2571,2572],{},[726,2573,2574],{},"totalOrderMargin",[758,2576,951],{},[758,2578,2579],{},"Overall order margin (profit \u002F revenue)",[737,2581,2582,2587,2589],{},[758,2583,2584],{},[726,2585,2586],{},"createTime",[758,2588,1751],{},[758,2590,2591],{},"Order creation timestamp",[737,2593,2594,2599,2601],{},[758,2595,2596],{},[726,2597,2598],{},"lineItems",[758,2600,1279],{},[758,2602,2603],{},"Per-line items (name, quantity, price, COGS, profit, margin, fulfillment status)",[683,2605,2606],{},[1039,2607,1041],{},[708,2609,2612,2615,2619,2674],{"method":2030,"path":2610,"summary":2611},"\u002Fapi\u002Fcanonical-order-controller\u002Fcanonical\u002Forders\u002Fcount-by-date","Count orders by platform & date",[683,2613,2614],{},"Counts total orders across all the user's shops for an optional platform and date range. Returns a single integer. Useful for dashboards, health checks, and sync progress.",[683,2616,2617],{},[719,2618,2040],{},[731,2620,2621,2633],{},[734,2622,2623],{},[737,2624,2625,2627,2629,2631],{},[740,2626,2049],{},[740,2628,745],{},[740,2630,748],{},[740,2632,751],{},[753,2634,2635,2648,2661],{},[737,2636,2637,2641,2643,2645],{},[758,2638,2639],{},[726,2640,1130],{},[758,2642,781],{},[758,2644,768],{},[758,2646,2647],{},"Filter by platform; omit for all",[737,2649,2650,2654,2656,2658],{},[758,2651,2652],{},[726,2653,2358],{},[758,2655,781],{},[758,2657,768],{},[758,2659,2660],{},"Start date (YYYY-MM-DD), inclusive",[737,2662,2663,2667,2669,2671],{},[758,2664,2665],{},[726,2666,2372],{},[758,2668,781],{},[758,2670,768],{},[758,2672,2673],{},"End date (YYYY-MM-DD), inclusive",[683,2675,2676,1398,2678,2680],{},[719,2677,889],{},[726,2679,765],{}," — total order count matching the filters.",[708,2682,2685,2688,2692,2722],{"method":2030,"path":2683,"summary":2684},"\u002Fapi\u002Fcanonical-order-controller\u002Fcanonical\u002Forders\u002Fpending-shipment\u002Fcount","Count unshipped orders",[683,2686,2687],{},"Counts orders awaiting shipment over a rolling recent window — a real-time fulfillment backlog indicator.",[683,2689,2690],{},[719,2691,2040],{},[731,2693,2694,2706],{},[734,2695,2696],{},[737,2697,2698,2700,2702,2704],{},[740,2699,2049],{},[740,2701,745],{},[740,2703,748],{},[740,2705,751],{},[753,2707,2708],{},[737,2709,2710,2715,2717,2719],{},[758,2711,2712],{},[726,2713,2714],{},"sinceDays",[758,2716,765],{},[758,2718,768],{},[758,2720,2721],{},"Look back N days (default 30)",[683,2723,2724,1398,2726,2728],{},[719,2725,889],{},[726,2727,765],{}," — count of orders in pending-shipment status in the last N days.",[703,2730,2732],{"id":2731},"inventory","Inventory",[708,2734,2737,2740,2747,2845],{"method":2030,"path":2735,"summary":2736},"\u002Fapi\u002Finventory\u002Freorder","Latest reorder recommendations",[683,2738,2739],{},"Fetches the latest computed reorder policies for all SKUs: when to reorder and how much, with reorder point, order-now quantity, and order-by date.",[683,2741,2742,890,2744],{},[719,2743,889],{},[726,2745,2746],{},"InventoryReorderPolicyDto",[731,2748,2749,2759],{},[734,2750,2751],{},[737,2752,2753,2755,2757],{},[740,2754,742],{},[740,2756,745],{},[740,2758,751],{},[753,2760,2761,2773,2785,2797,2809,2821,2833],{},[737,2762,2763,2768,2770],{},[758,2764,2765],{},[726,2766,2767],{},"canonicalVariantId",[758,2769,765],{},[758,2771,2772],{},"SKU id",[737,2774,2775,2780,2782],{},[758,2776,2777],{},[726,2778,2779],{},"canonicalVariantName",[758,2781,781],{},[758,2783,2784],{},"Product\u002Fvariant name",[737,2786,2787,2792,2794],{},[758,2788,2789],{},[726,2790,2791],{},"currentStock",[758,2793,765],{},[758,2795,2796],{},"On-hand inventory",[737,2798,2799,2804,2806],{},[758,2800,2801],{},[726,2802,2803],{},"reorderPoint",[758,2805,765],{},[758,2807,2808],{},"Stock level triggering a reorder signal",[737,2810,2811,2816,2818],{},[758,2812,2813],{},[726,2814,2815],{},"orderQuantity",[758,2817,765],{},[758,2819,2820],{},"Units to order when triggered",[737,2822,2823,2828,2830],{},[758,2824,2825],{},[726,2826,2827],{},"orderByDate",[758,2829,1751],{},[758,2831,2832],{},"Target procurement date to avoid stockout",[737,2834,2835,2840,2842],{},[758,2836,2837],{},[726,2838,2839],{},"stockoutRiskPercent",[758,2841,951],{},[758,2843,2844],{},"Probability of stockout in the forecast horizon",[683,2846,2847],{},[1039,2848,1041],{},[708,2850,2853,2856,2860,2903,2910,2936],{"method":2030,"path":2851,"summary":2852},"\u002Fapi\u002Finventory\u002Fforecast","Demand forecast",[683,2854,2855],{},"Fetches the demand forecast for one or all canonical products over the planning horizon. Returns forecast rows with predictive bands (q10\u002Fq90), expected-demand center line (q50), credible band (muQ10\u002FmuQ90), and a trailing-week baseline (ma8) for charting.",[683,2857,2858],{},[719,2859,2040],{},[731,2861,2862,2874],{},[734,2863,2864],{},[737,2865,2866,2868,2870,2872],{},[740,2867,2049],{},[740,2869,745],{},[740,2871,748],{},[740,2873,751],{},[753,2875,2876,2889],{},[737,2877,2878,2882,2884,2886],{},[758,2879,2880],{},[726,2881,2767],{},[758,2883,765],{},[758,2885,768],{},[758,2887,2888],{},"One SKU; omit for all products",[737,2890,2891,2896,2898,2900],{},[758,2892,2893],{},[726,2894,2895],{},"bucket",[758,2897,781],{},[758,2899,768],{},[758,2901,2902],{},"Time bucket ('D' daily, 'W' weekly; default weekly)",[683,2904,2905,1398,2907],{},[719,2906,889],{},[726,2908,2909],{},"InventoryForecastResponseDto",[731,2911,2912,2922],{},[734,2913,2914],{},[737,2915,2916,2918,2920],{},[740,2917,742],{},[740,2919,745],{},[740,2921,751],{},[753,2923,2924],{},[737,2925,2926,2931,2933],{},[758,2927,2928],{},[726,2929,2930],{},"variants",[758,2932,1279],{},[758,2934,2935],{},"Per-variant forecasts: product header, stats block, bindings, and forecast rows (q10, q50, q90, muQ10, muQ90, ma8)",[683,2937,2938],{},[1039,2939,1041],{},[708,2941,2944,2947,2951,3006,3013,3061],{"method":2030,"path":2942,"summary":2943},"\u002Fapi\u002Finventory\u002Fdemand-chart","Demand chart history + forecast",[683,2945,2946],{},"Fetches realized weekly demand history and the latest forecast (with all confidence bands) in one call, ready for plotting. Partial in-progress weeks are flagged.",[683,2948,2949],{},[719,2950,2040],{},[731,2952,2953,2965],{},[734,2954,2955],{},[737,2956,2957,2959,2961,2963],{},[740,2958,2049],{},[740,2960,745],{},[740,2962,748],{},[740,2964,751],{},[753,2966,2967,2979,2992],{},[737,2968,2969,2973,2975,2977],{},[758,2970,2971],{},[726,2972,2767],{},[758,2974,765],{},[758,2976,768],{},[758,2978,2888],{},[737,2980,2981,2985,2987,2989],{},[758,2982,2983],{},[726,2984,2895],{},[758,2986,781],{},[758,2988,768],{},[758,2990,2991],{},"Time bucket (default 'W' weekly)",[737,2993,2994,2999,3001,3003],{},[758,2995,2996],{},[726,2997,2998],{},"weeksBack",[758,3000,765],{},[758,3002,768],{},[758,3004,3005],{},"Weeks of history to include (default 26)",[683,3007,3008,1398,3010],{},[719,3009,889],{},[726,3011,3012],{},"InventoryDemandChartDto",[731,3014,3015,3025],{},[734,3016,3017],{},[737,3018,3019,3021,3023],{},[740,3020,742],{},[740,3022,745],{},[740,3024,751],{},[753,3026,3027,3037,3049],{},[737,3028,3029,3033,3035],{},[758,3030,3031],{},[726,3032,2767],{},[758,3034,765],{},[758,3036,2772],{},[737,3038,3039,3044,3046],{},[758,3040,3041],{},[726,3042,3043],{},"history",[758,3045,1279],{},[758,3047,3048],{},"Realized weekly units (isPartial=true for in-progress week)",[737,3050,3051,3056,3058],{},[758,3052,3053],{},[726,3054,3055],{},"forecast",[758,3057,1279],{},[758,3059,3060],{},"Latest forecast rows (q10, q50, q90, muQ10, muQ90, ma8)",[683,3062,3063],{},[1039,3064,1041],{},[708,3066,3069,3072,3079,3176],{"method":2030,"path":3067,"summary":3068},"\u002Fapi\u002Finventory\u002Fparams","Reorder decision parameters",[683,3070,3071],{},"Fetches inventory settings: lead time, service target, MOQ\u002Flot size, capital budget, alert toggles, plus any per-variant reorder-point overrides.",[683,3073,3074,890,3076],{},[719,3075,889],{},[726,3077,3078],{},"InventoryPolicyParamsDto",[731,3080,3081,3091],{},[734,3082,3083],{},[737,3084,3085,3087,3089],{},[740,3086,742],{},[740,3088,745],{},[740,3090,751],{},[753,3092,3093,3104,3116,3128,3140,3152,3164],{},[737,3094,3095,3099,3101],{},[758,3096,3097],{},[726,3098,2767],{},[758,3100,765],{},[758,3102,3103],{},"SKU id (null for the shop-default row)",[737,3105,3106,3111,3113],{},[758,3107,3108],{},[726,3109,3110],{},"leadTimeDays",[758,3112,765],{},[758,3114,3115],{},"Procurement lead time",[737,3117,3118,3123,3125],{},[758,3119,3120],{},[726,3121,3122],{},"serviceLevel",[758,3124,951],{},[758,3126,3127],{},"Target in-stock probability (0–1, e.g. 0.95)",[737,3129,3130,3135,3137],{},[758,3131,3132],{},[726,3133,3134],{},"minimumOrderQuantity",[758,3136,765],{},[758,3138,3139],{},"Minimum purchase quantity per order",[737,3141,3142,3147,3149],{},[758,3143,3144],{},[726,3145,3146],{},"capitalBudget",[758,3148,951],{},[758,3150,3151],{},"Capital budget for reorders",[737,3153,3154,3159,3161],{},[758,3155,3156],{},[726,3157,3158],{},"userReorderPoint",[758,3160,765],{},[758,3162,3163],{},"Manual reorder-point override (null = use model)",[737,3165,3166,3171,3173],{},[758,3167,3168],{},[726,3169,3170],{},"alertsEnabled",[758,3172,1161],{},[758,3174,3175],{},"Live alerts on\u002Foff (shop-default row)",[683,3177,3178],{},[1039,3179,1041],{},[708,3181,3184,3187,3191,3221,3228,3333],{"method":2030,"path":3182,"summary":3183},"\u002Fapi\u002Finventory\u002Falerts","Reorder-point alerts",[683,3185,3186],{},"Fetches live and resolved inventory alerts. An alert fires when stock reaches the reorder point and auto-resolves once stock recovers.",[683,3188,3189],{},[719,3190,2040],{},[731,3192,3193,3205],{},[734,3194,3195],{},[737,3196,3197,3199,3201,3203],{},[740,3198,2049],{},[740,3200,745],{},[740,3202,748],{},[740,3204,751],{},[753,3206,3207],{},[737,3208,3209,3214,3216,3218],{},[758,3210,3211],{},[726,3212,3213],{},"status",[758,3215,781],{},[758,3217,768],{},[758,3219,3220],{},"Filter by status ('open', 'acknowledged', 'dismissed', 'resolved')",[683,3222,3223,890,3225],{},[719,3224,889],{},[726,3226,3227],{},"InventoryAlertDto",[731,3229,3230,3240],{},[734,3231,3232],{},[737,3233,3234,3236,3238],{},[740,3235,742],{},[740,3237,745],{},[740,3239,751],{},[753,3241,3242,3253,3263,3274,3286,3298,3309,3321],{},[737,3243,3244,3248,3250],{},[758,3245,3246],{},[726,3247,762],{},[758,3249,765],{},[758,3251,3252],{},"Alert id",[737,3254,3255,3259,3261],{},[758,3256,3257],{},[726,3258,2767],{},[758,3260,765],{},[758,3262,2772],{},[737,3264,3265,3269,3271],{},[758,3266,3267],{},[726,3268,2791],{},[758,3270,765],{},[758,3272,3273],{},"Stock level when the alert fired",[737,3275,3276,3281,3283],{},[758,3277,3278],{},[726,3279,3280],{},"thresholdSource",[758,3282,781],{},[758,3284,3285],{},"'user' (override) or 'model' (algorithm)",[737,3287,3288,3293,3295],{},[758,3289,3290],{},[726,3291,3292],{},"thresholdLevel",[758,3294,765],{},[758,3296,3297],{},"Reorder point that triggered the alert",[737,3299,3300,3304,3306],{},[758,3301,3302],{},[726,3303,3213],{},[758,3305,781],{},[758,3307,3308],{},"'open', 'acknowledged', 'dismissed', or 'resolved'",[737,3310,3311,3316,3318],{},[758,3312,3313],{},[726,3314,3315],{},"firedAt",[758,3317,1751],{},[758,3319,3320],{},"When the alert was triggered",[737,3322,3323,3328,3330],{},[758,3324,3325],{},[726,3326,3327],{},"resolvedAt",[758,3329,1751],{},[758,3331,3332],{},"When stock recovered (null if still open)",[683,3334,3335],{},[1039,3336,1041],{},[708,3338,3341,3344,3348,3377,3384,3466],{"method":2030,"path":3339,"summary":3340},"\u002Fapi\u002Finventory\u002Fopen-orders","Logged purchase orders",[683,3342,3343],{},"Fetches purchase orders the merchant has logged as in flight. Open orders feed the next model run as pipeline arrivals and count into the position checked by alerts.",[683,3345,3346],{},[719,3347,2040],{},[731,3349,3350,3362],{},[734,3351,3352],{},[737,3353,3354,3356,3358,3360],{},[740,3355,2049],{},[740,3357,745],{},[740,3359,748],{},[740,3361,751],{},[753,3363,3364],{},[737,3365,3366,3370,3372,3374],{},[758,3367,3368],{},[726,3369,3213],{},[758,3371,781],{},[758,3373,768],{},[758,3375,3376],{},"Filter by status ('open', 'received', 'cancelled')",[683,3378,3379,890,3381],{},[719,3380,889],{},[726,3382,3383],{},"InventoryOpenOrderDto",[731,3385,3386,3396],{},[734,3387,3388],{},[737,3389,3390,3392,3394],{},[740,3391,742],{},[740,3393,745],{},[740,3395,751],{},[753,3397,3398,3409,3419,3431,3443,3454],{},[737,3399,3400,3404,3406],{},[758,3401,3402],{},[726,3403,762],{},[758,3405,765],{},[758,3407,3408],{},"Purchase order id",[737,3410,3411,3415,3417],{},[758,3412,3413],{},[726,3414,2767],{},[758,3416,765],{},[758,3418,2772],{},[737,3420,3421,3426,3428],{},[758,3422,3423],{},[726,3424,3425],{},"orderedQuantity",[758,3427,765],{},[758,3429,3430],{},"Units ordered",[737,3432,3433,3438,3440],{},[758,3434,3435],{},[726,3436,3437],{},"expectedArrivalWeek",[758,3439,1751],{},[758,3441,3442],{},"Target arrival date (Monday of the week)",[737,3444,3445,3449,3451],{},[758,3446,3447],{},[726,3448,3213],{},[758,3450,781],{},[758,3452,3453],{},"'open', 'received', or 'cancelled'",[737,3455,3456,3461,3463],{},[758,3457,3458],{},[726,3459,3460],{},"receivedAt",[758,3462,1751],{},[758,3464,3465],{},"When stock was received (null if not yet arrived)",[683,3467,3468],{},[1039,3469,1041],{},[703,3471,3473],{"id":3472},"unified-financial-overview","Unified financial overview",[708,3475,3478,3481,3485,3491,3577,3584,3706],{"method":710,"path":3476,"summary":3477},"\u002Fapi\u002Funified\u002Ffinancial-overview\u002Fshop-overview","Cross-platform profit overview",[683,3479,3480],{},"A user-wide realized-profit overview rolled up across ALL your shops (Shopee + TikTok + Lazada) over a lookback window. Returns total profit, revenue-weighted average margin, top\u002Fworst products, the cost-breakdown P&L waterfall, and per-platform subtotals. The optional body tunes the window, top-N, and VAT treatment.",[683,3482,3483],{},[719,3484,721],{},[683,3486,3487,3490],{},[726,3488,3489],{},"UnifiedFinancialOverviewFetchRequest"," (optional)",[731,3492,3493,3505],{},[734,3494,3495],{},[737,3496,3497,3499,3501,3503],{},[740,3498,742],{},[740,3500,745],{},[740,3502,748],{},[740,3504,751],{},[753,3506,3507,3521,3535,3549,3563],{},[737,3508,3509,3514,3516,3518],{},[758,3510,3511],{},[726,3512,3513],{},"lookbackDays",[758,3515,765],{},[758,3517,768],{},[758,3519,3520],{},"Trailing window in days (default 30); ignored if from\u002Fto set",[737,3522,3523,3528,3530,3532],{},[758,3524,3525],{},[726,3526,3527],{},"from",[758,3529,1751],{},[758,3531,768],{},[758,3533,3534],{},"Explicit start date (YYYY-MM-DD); overrides lookbackDays",[737,3536,3537,3542,3544,3546],{},[758,3538,3539],{},[726,3540,3541],{},"to",[758,3543,1751],{},[758,3545,768],{},[758,3547,3548],{},"Explicit end date (YYYY-MM-DD)",[737,3550,3551,3556,3558,3560],{},[758,3552,3553],{},[726,3554,3555],{},"topN",[758,3557,765],{},[758,3559,768],{},[758,3561,3562],{},"Top\u002Fworst products to return (default 5)",[737,3564,3565,3570,3572,3574],{},[758,3566,3567],{},[726,3568,3569],{},"includeVat",[758,3571,1161],{},[758,3573,768],{},[758,3575,3576],{},"Include VAT calculation (default false)",[683,3578,3579,1398,3581],{},[719,3580,889],{},[726,3582,3583],{},"UnifiedUserFinancialOverview",[731,3585,3586,3596],{},[734,3587,3588],{},[737,3589,3590,3592,3594],{},[740,3591,742],{},[740,3593,745],{},[740,3595,751],{},[753,3597,3598,3610,3622,3634,3646,3658,3670,3682,3694],{},[737,3599,3600,3605,3607],{},[758,3601,3602],{},[726,3603,3604],{},"grossGmv",[758,3606,951],{},[758,3608,3609],{},"Total GMV across platforms",[737,3611,3612,3617,3619],{},[758,3613,3614],{},[726,3615,3616],{},"totalNetRevenue",[758,3618,951],{},[758,3620,3621],{},"Post-discount, pre-fee revenue",[737,3623,3624,3629,3631],{},[758,3625,3626],{},[726,3627,3628],{},"totalProfit",[758,3630,951],{},[758,3632,3633],{},"Realized profit (revenue − COGS − fees)",[737,3635,3636,3641,3643],{},[758,3637,3638],{},[726,3639,3640],{},"avgMargin",[758,3642,951],{},[758,3644,3645],{},"Revenue-weighted average margin (0–1)",[737,3647,3648,3653,3655],{},[758,3649,3650],{},[726,3651,3652],{},"lossMakerCount",[758,3654,765],{},[758,3656,3657],{},"Products with negative profit",[737,3659,3660,3665,3667],{},[758,3661,3662],{},[726,3663,3664],{},"costBreakdown",[758,3666,1279],{},[758,3668,3669],{},"P&L waterfall (commission, payment fee, shipping, VAT, etc.)",[737,3671,3672,3677,3679],{},[758,3673,3674],{},[726,3675,3676],{},"topProducts",[758,3678,1279],{},[758,3680,3681],{},"Top earners by profit",[737,3683,3684,3689,3691],{},[758,3685,3686],{},[726,3687,3688],{},"worstProducts",[758,3690,1279],{},[758,3692,3693],{},"Thinnest margins",[737,3695,3696,3701,3703],{},[758,3697,3698],{},[726,3699,3700],{},"perPlatform",[758,3702,1279],{},[758,3704,3705],{},"Per-platform revenue, profit, and margins",[683,3707,3708],{},[1039,3709,1041],{},[703,3711,3713],{"id":3712},"shops-accounts","Shops & accounts",[708,3715,3718,3724,3731],{"method":2030,"path":3716,"summary":3717},"\u002Fapi\u002Fshopee\u002Ffetch-all-user-shops","List your Shopee shops",[683,3719,3720,3721,3723],{},"Fetches all Shopee shops connected to your account. Call this first to discover which shops you own — most shop-scoped endpoints need a ",[726,3722,2064],{}," from here.",[683,3725,3726,890,3728],{},[719,3727,889],{},[726,3729,3730],{},"ShopeeShop",[731,3732,3733,3743],{},[734,3734,3735],{},[737,3736,3737,3739,3741],{},[740,3738,742],{},[740,3740,745],{},[740,3742,751],{},[753,3744,3745,3755,3767,3777,3789,3801],{},[737,3746,3747,3751,3753],{},[758,3748,3749],{},[726,3750,2064],{},[758,3752,765],{},[758,3754,870],{},[737,3756,3757,3762,3764],{},[758,3758,3759],{},[726,3760,3761],{},"shopName",[758,3763,781],{},[758,3765,3766],{},"Display shop name",[737,3768,3769,3773,3775],{},[758,3770,3771],{},[726,3772,877],{},[758,3774,781],{},[758,3776,884],{},[737,3778,3779,3784,3786],{},[758,3780,3781],{},[726,3782,3783],{},"timezone",[758,3785,781],{},[758,3787,3788],{},"Shop timezone (e.g. 'Asia\u002FBangkok')",[737,3790,3791,3796,3798],{},[758,3792,3793],{},[726,3794,3795],{},"sellerClass",[758,3797,781],{},[758,3799,3800],{},"Seller classification",[737,3802,3803,3808,3810],{},[758,3804,3805],{},[726,3806,3807],{},"authorizationStatus",[758,3809,781],{},[758,3811,3812],{},"e.g. 'AUTHORIZED', 'DEAUTHORIZED'",[708,3814,3817,3824,3831],{"method":2030,"path":3815,"summary":3816},"\u002Fapi\u002Fshopee\u002Ffetch-all-user-shop-accounts","Shopee auth status per grant",[683,3818,3819,3820,3823],{},"Fetches authorization status for each Shopee (shop, app-type) grant. A non-null ",[726,3821,3822],{},"deauthorizedAt"," means the grant is revoked\u002Fexpired and needs re-auth — handy for diagnosing why a shop's orders or ads data is missing.",[683,3825,3826,890,3828],{},[719,3827,889],{},[726,3829,3830],{},"ShopeeAccountEntry",[731,3832,3833,3843],{},[734,3834,3835],{},[737,3836,3837,3839,3841],{},[740,3838,742],{},[740,3840,745],{},[740,3842,751],{},[753,3844,3845,3855,3867,3879],{},[737,3846,3847,3851,3853],{},[758,3848,3849],{},[726,3850,2064],{},[758,3852,765],{},[758,3854,870],{},[737,3856,3857,3862,3864],{},[758,3858,3859],{},[726,3860,3861],{},"appType",[758,3863,781],{},[758,3865,3866],{},"Grant type ('default' core data, 'ads' campaign data, 'ams' open campaign)",[737,3868,3869,3874,3876],{},[758,3870,3871],{},[726,3872,3873],{},"authorizedAt",[758,3875,1751],{},[758,3877,3878],{},"When the grant was last authorized",[737,3880,3881,3885,3887],{},[758,3882,3883],{},[726,3884,3822],{},[758,3886,1751],{},[758,3888,3889],{},"When it expired\u002Fwas revoked (null if active)",[708,3891,3894,3897,3901,3941,3948,4010],{"method":710,"path":3892,"summary":3893},"\u002Fapi\u002Fshopee\u002Fshop\u002Fcheck-commission-rates","Check Shopee commission rates",[683,3895,3896],{},"Compares empirical commission rates (computed from order data) against the rates declared in Shopee Seller Centre — useful for auditing when displayed and calculated rates diverge.",[683,3898,3899],{},[719,3900,2040],{},[731,3902,3903,3915],{},[734,3904,3905],{},[737,3906,3907,3909,3911,3913],{},[740,3908,2049],{},[740,3910,745],{},[740,3912,748],{},[740,3914,751],{},[753,3916,3917,3929],{},[737,3918,3919,3923,3925,3927],{},[758,3920,3921],{},[726,3922,2064],{},[758,3924,765],{},[758,3926,2069],{},[758,3928,870],{},[737,3930,3931,3935,3937,3939],{},[758,3932,3933],{},[726,3934,877],{},[758,3936,781],{},[758,3938,2069],{},[758,3940,884],{},[683,3942,3943,1398,3945],{},[719,3944,889],{},[726,3946,3947],{},"ShopeeCommissionRateCheckResult",[731,3949,3950,3960],{},[734,3951,3952],{},[737,3953,3954,3956,3958],{},[740,3955,742],{},[740,3957,745],{},[740,3959,751],{},[753,3961,3962,3974,3986,3998],{},[737,3963,3964,3969,3971],{},[758,3965,3966],{},[726,3967,3968],{},"declaredRate",[758,3970,951],{},[758,3972,3973],{},"Commission rate from Seller Centre (%)",[737,3975,3976,3981,3983],{},[758,3977,3978],{},[726,3979,3980],{},"empiricalRate",[758,3982,951],{},[758,3984,3985],{},"Calculated rate from orders (%)",[737,3987,3988,3993,3995],{},[758,3989,3990],{},[726,3991,3992],{},"sampleOrderCount",[758,3994,765],{},[758,3996,3997],{},"Orders used in the empirical calculation",[737,3999,4000,4005,4007],{},[758,4001,4002],{},[726,4003,4004],{},"mismatchPercent",[758,4006,951],{},[758,4008,4009],{},"Mismatch frequency (%)",[683,4011,4012],{},[1039,4013,1041],{},[708,4015,4018,4021,4025,4053,4060],{"method":2030,"path":4016,"summary":4017},"\u002Fapi\u002Fshopee\u002Fshop\u002Fprofile","Get Shopee shop profile",[683,4019,4020],{},"Fetches shop profile details (name, logo, description) from Shopee.",[683,4022,4023],{},[719,4024,2040],{},[731,4026,4027,4039],{},[734,4028,4029],{},[737,4030,4031,4033,4035,4037],{},[740,4032,2049],{},[740,4034,745],{},[740,4036,748],{},[740,4038,751],{},[753,4040,4041],{},[737,4042,4043,4047,4049,4051],{},[758,4044,4045],{},[726,4046,2064],{},[758,4048,765],{},[758,4050,2069],{},[758,4052,870],{},[683,4054,4055,1398,4057],{},[719,4056,889],{},[726,4058,4059],{},"ShopeeShopProfile",[731,4061,4062,4072],{},[734,4063,4064],{},[737,4065,4066,4068,4070],{},[740,4067,742],{},[740,4069,745],{},[740,4071,751],{},[753,4073,4074,4085,4097,4109,4121],{},[737,4075,4076,4080,4082],{},[758,4077,4078],{},[726,4079,3761],{},[758,4081,781],{},[758,4083,4084],{},"Shop name",[737,4086,4087,4092,4094],{},[758,4088,4089],{},[726,4090,4091],{},"shopLogo",[758,4093,781],{},[758,4095,4096],{},"Logo image URL",[737,4098,4099,4104,4106],{},[758,4100,4101],{},[726,4102,4103],{},"shopDescription",[758,4105,781],{},[758,4107,4108],{},"Shop bio\u002Fdescription",[737,4110,4111,4116,4118],{},[758,4112,4113],{},[726,4114,4115],{},"followCount",[758,4117,765],{},[758,4119,4120],{},"Shop followers",[737,4122,4123,4128,4130],{},[758,4124,4125],{},[726,4126,4127],{},"responseRate",[758,4129,951],{},[758,4131,4132],{},"Seller response rate (0–1)",[708,4134,4137,4142,4149],{"method":2030,"path":4135,"summary":4136},"\u002Fapi\u002Flazada\u002Fauth\u002Ffetch-all-user-shops","List your Lazada shops",[683,4138,4139,4140,3723],{},"Fetches all Lazada sellers (accounts) connected to your account. Call this first to discover which Lazada accounts you own — seller-scoped endpoints need the ",[726,4141,2138],{},[683,4143,4144,890,4146],{},[719,4145,889],{},[726,4147,4148],{},"LazadaShop",[731,4150,4151,4161],{},[734,4152,4153],{},[737,4154,4155,4157,4159],{},[740,4156,742],{},[740,4158,745],{},[740,4160,751],{},[753,4162,4163,4173,4184,4195],{},[737,4164,4165,4169,4171],{},[758,4166,4167],{},[726,4168,2138],{},[758,4170,765],{},[758,4172,2145],{},[737,4174,4175,4179,4181],{},[758,4176,4177],{},[726,4178,3761],{},[758,4180,781],{},[758,4182,4183],{},"Shop\u002Faccount name",[737,4185,4186,4190,4192],{},[758,4187,4188],{},[726,4189,877],{},[758,4191,781],{},[758,4193,4194],{},"Region code (e.g. 'TH', 'VN', 'PH')",[737,4196,4197,4202,4204],{},[758,4198,4199],{},[726,4200,4201],{},"sellerType",[758,4203,781],{},[758,4205,4206],{},"Seller type ('REGULAR', 'LAZMALL', 'SHOP')",[708,4208,4211,4214,4221],{"method":2030,"path":4209,"summary":4210},"\u002Fapi\u002Ftiktok\u002Fauth\u002Ffetch-all-user-shops","List your TikTok shops",[683,4212,4213],{},"Fetches all TikTok Shops connected to your account. TikTok shop ids are 19-digit numbers larger than JavaScript's safe-integer max — treat them as opaque strings end-to-end.",[683,4215,4216,890,4218],{},[719,4217,889],{},[726,4219,4220],{},"TikTokShopResponse",[731,4222,4223,4233],{},[734,4224,4225],{},[737,4226,4227,4229,4231],{},[740,4228,742],{},[740,4230,745],{},[740,4232,751],{},[753,4234,4235,4246,4256],{},[737,4236,4237,4241,4243],{},[758,4238,4239],{},[726,4240,2064],{},[758,4242,781],{},[758,4244,4245],{},"TikTok shop id (opaque string, not a number)",[737,4247,4248,4252,4254],{},[758,4249,4250],{},[726,4251,3761],{},[758,4253,781],{},[758,4255,4084],{},[737,4257,4258,4262,4264],{},[758,4259,4260],{},[726,4261,877],{},[758,4263,781],{},[758,4265,4266],{},"Region code (e.g. 'TH', 'VN')",{"title":4268,"searchDepth":4269,"depth":4269,"links":4270},"",3,[4271,4273,4274,4275,4276],{"id":705,"depth":4272,"text":706},2,{"id":2273,"depth":4272,"text":2274},{"id":2731,"depth":4272,"text":2732},{"id":3472,"depth":4272,"text":3473},{"id":3712,"depth":4272,"text":3713},"อ่านสินค้า, แคตตาล็อกรวม, ออเดอร์, สต๊อก และร้านที่เชื่อมต่อของคุณ",null,"md",{},{"icon":624},"---\ntitle: \"Endpoints: สินค้าและออเดอร์\"\ndescription: อ่านสินค้า, แคตตาล็อกรวม, ออเดอร์, สต๊อก และร้านที่เชื่อมต่อของคุณ\nnavigation:\n  icon: i-material-symbols-package-2-rounded\n---\n\nEndpoint สำหรับแคตตาล็อก, ออเดอร์, สต๊อก และรายการร้านของคุณ เพิ่งเริ่มใช้งาน? อ่าน [เริ่มต้นใช้งาน](\u002Fth\u002Fdocs\u002Fai-and-api\u002Fapi\u002Fgetting-started) สำหรับการยืนยันตัวตน และดู [หลักการทั่วไป](\u002Fth\u002Fdocs\u002Fai-and-api\u002Fapi\u002Fgetting-started) สำหรับโครงห่อผลลัพธ์, วันที่ และการแบ่งหน้า ทุก endpoint เป็นแบบอ่านอย่างเดียว\n\n::callout{icon=\"i-lucide-mouse-pointer-click\"}\nคลิกที่ endpoint ใดก็ได้เพื่อขยายดูพารามิเตอร์, request body และ response (รายละเอียดเชิงเทคนิคเป็นภาษาอังกฤษ)\n::\n\n## Products & catalog\n\n::api-endpoint{method=\"POST\" path=\"\u002Fapi\u002Fcanonical-product-controller\u002Fcanonical\u002Ffetch-products\" summary=\"Fetch canonical products\"}\nFetches canonical products with their current Shopee binding data. Returns one row per (canonical, binding) pair—canonicals with multiple Shopee listings produce multiple results. Useful for Shopee-keyed product lookups and reconciliation workflows.\n\n**Request body**\n\nArray of `CanonicalProductWithShopeeBindingSearchParams` — filter by canonical id, name, SKU, model SKU, or by Shopee item\u002Fmodel\u002Fshop id and region.\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `id` | integer | no | Canonical variant id |\n| `name` | string | no | Canonical product name (exact match) |\n| `brand` | string | no | Brand name |\n| `sku` | string | no | Canonical SKU |\n| `modelSku` | string | no | Canonical model SKU |\n| `shopeeItemId` | integer | no | Shopee item id |\n| `shopeeModelId` | integer | no | Shopee model id (for modeled items) |\n| `shopeeShopId` | integer | no | Shopee shop id |\n| `region` | string | no | Region code (e.g. 'TH') |\n\n**Response** — Array of `CanonicalProductWithShopeeBindingView`\n\nList of canonical products with their Shopee binding details (price, stock, margin, images). Each canonical can appear multiple times if it has multiple Shopee bindings.\n\n| Field | Type | Description |\n|---|---|---|\n| `id` | integer | Canonical variant id |\n| `name` | string | Product name |\n| `sku` | string | Canonical SKU |\n| `cogs` | number | Total cost of goods sold |\n| `price` | number | Current Shopee listing price |\n| `stock` | integer | Current Shopee stock |\n| `margin` | number | Margin on this Shopee binding (0–1 fraction) |\n| `totalStock` | integer | Min stock across all platform bindings for this canonical |\n| `shopeeItemId` | integer | Shopee item id |\n| `shopeeModelId` | integer | Shopee model id (if modeled) |\n| `imageUrl` | string | Product image URL from Shopee |\n\n*…and more — see the full schema in the OpenAPI spec.*\n::\n\n::api-endpoint{method=\"POST\" path=\"\u002Fapi\u002Fcanonical-product-controller\u002Fcanonical\u002Ffetch-products-with-platforms\" summary=\"Products with all platform bindings\"}\nFetches canonical products and attaches ALL platform bindings (Shopee, Lazada, TikTok) in a platforms array. One row per canonical, regardless of how many platforms it's bound to. Used for neutral, multi-platform product lists.\n\n**Request body**\n\nArray of `CanonicalProductSearchParams` — filter by canonical id, name, SKU, model SKU, or by platform and platform shop id.\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `id` | integer | no | Canonical variant id |\n| `name` | string | no | Product name |\n| `sku` | string | no | Canonical SKU |\n| `modelSku` | string | no | Model SKU |\n| `platform` | string | no | Platform code ('shopee', 'lazada', 'tiktok') |\n| `platformShopId` | string | no | Shopee shop id, Lazada seller id, or TikTok shop id |\n| `activeOnly` | boolean | no | When true, exclude inactive bindings (default false) |\n\n**Response** — Array of `CanonicalProductWithPlatforms`\n\nList of canonical products, each carrying margin distribution stats and a `platforms` array of all bound marketplace items.\n\n| Field | Type | Description |\n|---|---|---|\n| `id` | integer | Canonical variant id |\n| `name` | string | Product name |\n| `sku` | string | Canonical SKU |\n| `cogs` | number | Total COGS |\n| `totalStock` | integer | Min stock across all bindings |\n| `variantCount` | integer | Number of platform variants\u002Fbindings |\n| `medianMargin` | number | Median margin across bindings |\n| `platforms` | array | Per-binding refs (platform, item\u002Fmodel ids, shop id, price, stock, margin) |\n\n*…and more — see the full schema in the OpenAPI spec.*\n::\n\n::api-endpoint{method=\"POST\" path=\"\u002Fapi\u002Fcanonical-product-controller\u002Fcanonical\u002Ffetch-products-with-platforms-paginated\" summary=\"Products with bindings (cursor paginated)\"}\nCursor-paginated canonical product list with the same platform-bindings metadata as the non-paginated variant. Pass the returned `nextCursor.canonicalId` back as `cursorCanonicalId` for the next page. Supports optional platform\u002Fshop scoping.\n\n**Request body**\n\n`CanonicalProductPaginatedFetchRequest`\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `cursorCanonicalId` | integer | no | Cursor from prior page's nextCursor (omit for first page) |\n| `pageSize` | integer | no | Rows per page (default 20) |\n| `platform` | string | no | Filter to this platform |\n| `platformShopId` | string | no | Filter to this shop\u002Fseller id |\n| `filters` | array | no | Column filters (text search, numeric range) |\n\n**Response** — `CursorPaginatedResult\u003CCanonicalProductCursor, CanonicalProductWithPlatforms>`\n\n| Field | Type | Description |\n|---|---|---|\n| `rows` | array | Array of CanonicalProductWithPlatforms |\n| `nextCursor` | object | Cursor for next page (canonicalId, userId) or null if at end |\n::\n\n::api-endpoint{method=\"POST\" path=\"\u002Fapi\u002Fcanonical-product-controller\u002Fcanonical\u002Ffetch-products-with-platforms-paginated\u002Fv2\" summary=\"Products paginated (offset + sort)\"}\nOffset-based pagination (page number + size) over canonical products with platform bindings. Supports sorting (name, SKU, COGS, stock) and per-column filters. Preferred for UI product tables that need page numbers and sort controls.\n\n**Request body**\n\n`CanonicalProductPaginatedV2FetchRequest`\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `page` | integer | no | 0-based page number (default 0) |\n| `pageSize` | integer | no | Rows per page (default 20) |\n| `sortField` | string | no | Sort column ('name', 'sku', 'modelSku', 'cogs', 'stock') |\n| `sortDir` | string | no | 'asc' or 'desc' (default 'asc') |\n| `platform` | string | no | Filter by platform |\n| `platformShopId` | string | no | Filter by shop\u002Fseller id |\n| `filters` | array | no | Per-column text\u002Fnumeric filters |\n\n**Response** — `OffsetPaginatedResult\u003CCanonicalProductWithPlatforms>`\n\n| Field | Type | Description |\n|---|---|---|\n| `rows` | array | Products for this page |\n| `totalItems` | integer | Total product count |\n| `totalPages` | integer | Total page count |\n| `currentPage` | integer | 0-based current page |\n::\n\n::api-endpoint{method=\"POST\" path=\"\u002Fapi\u002Fcanonical-product-controller\u002Fcanonical\u002Ffetch-products-margin-stats\" summary=\"Margin stats over products\"}\nComputes margin distribution (min, max, median, quartiles) over the filtered canonical product set. Uses the same filters as the paginated fetch; pagination parameters are ignored. Products with no margined binding are excluded.\n\n**Request body**\n\n`CanonicalProductPaginatedV2FetchRequest` — only the filter\u002Fplatform\u002FplatformShopId fields are used.\n\n**Response** — `ProductMarginStats`\n\n| Field | Type | Description |\n|---|---|---|\n| `productCount` | integer | Products with non-null margin in the result set |\n| `minMargin` | number | Lowest margin (0–1 fraction) |\n| `maxMargin` | number | Highest margin |\n| `medianMargin` | number | Median margin |\n| `q1Margin` | number | 25th percentile margin |\n| `q3Margin` | number | 75th percentile margin |\n| `dataFreshAt` | string (date) | Oldest product pull time across the user's shops |\n::\n\n::api-endpoint{method=\"POST\" path=\"\u002Fapi\u002Fcanonical-product-controller\u002Fcanonical\u002Ffetch-product-costs\" summary=\"Cost breakdown for products\"}\nReads the detailed per-component cost breakdown (manufacturing, labor, shipping, packaging) and VAT-inclusivity flags for one or more canonical variants. Backs the product Cost Breakdown editor.\n\n**Request body**\n\nArray of `integer` — canonical variant ids.\n\n**Response** — Array of `CanonicalProductCostRow`\n\n| Field | Type | Description |\n|---|---|---|\n| `id` | integer | Canonical variant id |\n| `cogs` | number | Total cost of goods sold |\n| `manufacturingCost` | number | Manufacturing cost |\n| `laborCost` | number | Labor cost |\n| `shippingCost` | number | Inbound shipping cost |\n| `packagingCost` | number | Packaging cost |\n| `manufacturingCostVatInclusive` | boolean | Whether manufacturing cost includes VAT |\n| `shippingCostVatInclusive` | boolean | Whether shipping cost includes VAT |\n| `packagingCostVatInclusive` | boolean | Whether packaging cost includes VAT |\n::\n\n::api-endpoint{method=\"POST\" path=\"\u002Fapi\u002Fcanonical-product-controller\u002Fcanonical\u002Fsearch-products\" summary=\"Free-text product search\"}\nSearches canonical products by name, SKU, model SKU, and (if numeric) platform item ids using trigram similarity. Results are ranked by relevance and hard-capped at 50 hits. Optional platform\u002Fshop filters narrow results.\n\n**Request body**\n\n`CanonicalProductSearchRequest`\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `query` | string | no | Free-text: product name, SKU, model SKU, or numeric item id |\n| `platform` | string | no | Restrict to canonicals bound on this platform |\n| `platformShopId` | string | no | Restrict to canonicals bound to this shop\u002Fseller id |\n\n**Response** — Array of `CanonicalProductSearchHit`\n\nTop-50 results ranked by relevance.\n\n| Field | Type | Description |\n|---|---|---|\n| `canonical` | object | CanonicalProductWithPlatforms (name, SKU, COGS, all platform bindings) |\n| `score` | number | Relevance score |\n| `matchedFields` | array | Which fields matched (NAME, SKU, MODEL_SKU, ITEM_ID) |\n::\n\n::api-endpoint{method=\"GET\" path=\"\u002Fapi\u002Fcanonical-product-controller\u002Fcanonical\u002Fhas-cogs\" summary=\"Check if Shopee shop has COGS\"}\nChecks whether any canonical product variant has COGS set for a given Shopee shop. Used to gate features (like the financial breakdown) until the seller has populated cost data.\n\n**Query parameters**\n\n| Name | Type | Required | Description |\n|---|---|---|---|\n| `shopId` | integer | yes | Shopee shop id |\n\n**Response** — `HasCogsResponse`\n\n| Field | Type | Description |\n|---|---|---|\n| `hasCogs` | boolean | True if at least one variant for this shop has COGS > 0 |\n::\n\n::api-endpoint{method=\"GET\" path=\"\u002Fapi\u002Fcanonical-product-controller\u002Flazada\u002Fcanonical\u002Fhas-cogs\" summary=\"Check if Lazada seller has COGS\"}\nChecks whether any canonical product variant has COGS set for a given Lazada seller.\n\n**Query parameters**\n\n| Name | Type | Required | Description |\n|---|---|---|---|\n| `sellerId` | integer | yes | Lazada seller account id |\n| `region` | string | yes | Region code (e.g. 'TH') |\n\n**Response** — `HasCogsResponse`\n\n| Field | Type | Description |\n|---|---|---|\n| `hasCogs` | boolean | True if at least one variant for this seller has COGS > 0 |\n::\n\n::api-endpoint{method=\"GET\" path=\"\u002Fapi\u002Fcanonical-product-controller\u002Ftiktok\u002Fcanonical\u002Fhas-cogs\" summary=\"Check if TikTok shop has COGS\"}\nChecks whether any canonical product variant has COGS set for a given TikTok shop.\n\n**Query parameters**\n\n| Name | Type | Required | Description |\n|---|---|---|---|\n| `shopId` | integer | yes | TikTok shop id |\n| `region` | string | yes | Region code (e.g. 'TH') |\n\n**Response** — `HasCogsResponse`\n\n| Field | Type | Description |\n|---|---|---|\n| `hasCogs` | boolean | True if at least one variant for this shop has COGS > 0 |\n::\n\n## Orders\n\n::api-endpoint{method=\"POST\" path=\"\u002Fapi\u002Fcanonical-order-controller\u002Fcanonical\u002Forders\u002Ffetch-paginated\" summary=\"Fetch orders (cursor paginated)\"}\nCursor-paginated list of orders across all the user's shops on every connected platform (Shopee, Lazada, TikTok). Returns order id, platform, status, buyer-paid total, and timestamps. Pass the returned `nextCursor.canonicalOrderId` back as `cursorCanonicalOrderId` for the next page.\n\n**Request body**\n\n`CanonicalOrderPaginatedFetchRequest`\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `cursorCanonicalOrderId` | integer | no | Cursor from prior page (omit for first page) |\n| `pageSize` | integer | no | Rows per page (default 20) |\n| `platform` | string | no | Filter by platform ('shopee', 'lazada', 'tiktok'); omit for all |\n| `fromDate` | integer | no | Start date (YYYYMMDD) |\n| `toDate` | integer | no | End date (YYYYMMDD) |\n\n**Response** — `CursorPaginatedResult\u003CCanonicalOrderCursor, CanonicalOrder>`\n\n| Field | Type | Description |\n|---|---|---|\n| `rows` | array | Array of CanonicalOrder |\n| `nextCursor` | object | Cursor for next page or null if at end |\n::\n\n::api-endpoint{method=\"GET\" path=\"\u002Fapi\u002Fcanonical-order-controller\u002Fcanonical\u002Forders\u002F{canonicalOrderId}\" summary=\"Fetch one order with line items\"}\nFetches one complete order with all line items, quantities, prices, and fees — including the per-line and order-level financial breakdown (revenue, COGS, profit, margin).\n\n**Path parameters**\n\n| Name | Type | Required | Description |\n|---|---|---|---|\n| `canonicalOrderId` | integer | yes | Canonical order id |\n\n**Response** — `CanonicalOrder`\n\n| Field | Type | Description |\n|---|---|---|\n| `canonicalOrderId` | integer | Order id |\n| `platform` | string | Platform ('shopee', 'lazada', 'tiktok') |\n| `orderSn` | string | Order serial number |\n| `orderStatus` | string | Platform-specific status code |\n| `totalOrderRevenue` | number | Post-discount item revenue |\n| `totalOrderCogs` | number | Total COGS across line items |\n| `totalOrderProfit` | number | Total profit (revenue − COGS − fees) |\n| `totalOrderMargin` | number | Overall order margin (profit \u002F revenue) |\n| `createTime` | string (date) | Order creation timestamp |\n| `lineItems` | array | Per-line items (name, quantity, price, COGS, profit, margin, fulfillment status) |\n\n*…and more — see the full schema in the OpenAPI spec.*\n::\n\n::api-endpoint{method=\"GET\" path=\"\u002Fapi\u002Fcanonical-order-controller\u002Fcanonical\u002Forders\u002Fcount-by-date\" summary=\"Count orders by platform & date\"}\nCounts total orders across all the user's shops for an optional platform and date range. Returns a single integer. Useful for dashboards, health checks, and sync progress.\n\n**Query parameters**\n\n| Name | Type | Required | Description |\n|---|---|---|---|\n| `platform` | string | no | Filter by platform; omit for all |\n| `fromDate` | string | no | Start date (YYYY-MM-DD), inclusive |\n| `toDate` | string | no | End date (YYYY-MM-DD), inclusive |\n\n**Response** — `integer` — total order count matching the filters.\n::\n\n::api-endpoint{method=\"GET\" path=\"\u002Fapi\u002Fcanonical-order-controller\u002Fcanonical\u002Forders\u002Fpending-shipment\u002Fcount\" summary=\"Count unshipped orders\"}\nCounts orders awaiting shipment over a rolling recent window — a real-time fulfillment backlog indicator.\n\n**Query parameters**\n\n| Name | Type | Required | Description |\n|---|---|---|---|\n| `sinceDays` | integer | no | Look back N days (default 30) |\n\n**Response** — `integer` — count of orders in pending-shipment status in the last N days.\n::\n\n## Inventory\n\n::api-endpoint{method=\"GET\" path=\"\u002Fapi\u002Finventory\u002Freorder\" summary=\"Latest reorder recommendations\"}\nFetches the latest computed reorder policies for all SKUs: when to reorder and how much, with reorder point, order-now quantity, and order-by date.\n\n**Response** — Array of `InventoryReorderPolicyDto`\n\n| Field | Type | Description |\n|---|---|---|\n| `canonicalVariantId` | integer | SKU id |\n| `canonicalVariantName` | string | Product\u002Fvariant name |\n| `currentStock` | integer | On-hand inventory |\n| `reorderPoint` | integer | Stock level triggering a reorder signal |\n| `orderQuantity` | integer | Units to order when triggered |\n| `orderByDate` | string (date) | Target procurement date to avoid stockout |\n| `stockoutRiskPercent` | number | Probability of stockout in the forecast horizon |\n\n*…and more — see the full schema in the OpenAPI spec.*\n::\n\n::api-endpoint{method=\"GET\" path=\"\u002Fapi\u002Finventory\u002Fforecast\" summary=\"Demand forecast\"}\nFetches the demand forecast for one or all canonical products over the planning horizon. Returns forecast rows with predictive bands (q10\u002Fq90), expected-demand center line (q50), credible band (muQ10\u002FmuQ90), and a trailing-week baseline (ma8) for charting.\n\n**Query parameters**\n\n| Name | Type | Required | Description |\n|---|---|---|---|\n| `canonicalVariantId` | integer | no | One SKU; omit for all products |\n| `bucket` | string | no | Time bucket ('D' daily, 'W' weekly; default weekly) |\n\n**Response** — `InventoryForecastResponseDto`\n\n| Field | Type | Description |\n|---|---|---|\n| `variants` | array | Per-variant forecasts: product header, stats block, bindings, and forecast rows (q10, q50, q90, muQ10, muQ90, ma8) |\n\n*…and more — see the full schema in the OpenAPI spec.*\n::\n\n::api-endpoint{method=\"GET\" path=\"\u002Fapi\u002Finventory\u002Fdemand-chart\" summary=\"Demand chart history + forecast\"}\nFetches realized weekly demand history and the latest forecast (with all confidence bands) in one call, ready for plotting. Partial in-progress weeks are flagged.\n\n**Query parameters**\n\n| Name | Type | Required | Description |\n|---|---|---|---|\n| `canonicalVariantId` | integer | no | One SKU; omit for all products |\n| `bucket` | string | no | Time bucket (default 'W' weekly) |\n| `weeksBack` | integer | no | Weeks of history to include (default 26) |\n\n**Response** — `InventoryDemandChartDto`\n\n| Field | Type | Description |\n|---|---|---|\n| `canonicalVariantId` | integer | SKU id |\n| `history` | array | Realized weekly units (isPartial=true for in-progress week) |\n| `forecast` | array | Latest forecast rows (q10, q50, q90, muQ10, muQ90, ma8) |\n\n*…and more — see the full schema in the OpenAPI spec.*\n::\n\n::api-endpoint{method=\"GET\" path=\"\u002Fapi\u002Finventory\u002Fparams\" summary=\"Reorder decision parameters\"}\nFetches inventory settings: lead time, service target, MOQ\u002Flot size, capital budget, alert toggles, plus any per-variant reorder-point overrides.\n\n**Response** — Array of `InventoryPolicyParamsDto`\n\n| Field | Type | Description |\n|---|---|---|\n| `canonicalVariantId` | integer | SKU id (null for the shop-default row) |\n| `leadTimeDays` | integer | Procurement lead time |\n| `serviceLevel` | number | Target in-stock probability (0–1, e.g. 0.95) |\n| `minimumOrderQuantity` | integer | Minimum purchase quantity per order |\n| `capitalBudget` | number | Capital budget for reorders |\n| `userReorderPoint` | integer | Manual reorder-point override (null = use model) |\n| `alertsEnabled` | boolean | Live alerts on\u002Foff (shop-default row) |\n\n*…and more — see the full schema in the OpenAPI spec.*\n::\n\n::api-endpoint{method=\"GET\" path=\"\u002Fapi\u002Finventory\u002Falerts\" summary=\"Reorder-point alerts\"}\nFetches live and resolved inventory alerts. An alert fires when stock reaches the reorder point and auto-resolves once stock recovers.\n\n**Query parameters**\n\n| Name | Type | Required | Description |\n|---|---|---|---|\n| `status` | string | no | Filter by status ('open', 'acknowledged', 'dismissed', 'resolved') |\n\n**Response** — Array of `InventoryAlertDto`\n\n| Field | Type | Description |\n|---|---|---|\n| `id` | integer | Alert id |\n| `canonicalVariantId` | integer | SKU id |\n| `currentStock` | integer | Stock level when the alert fired |\n| `thresholdSource` | string | 'user' (override) or 'model' (algorithm) |\n| `thresholdLevel` | integer | Reorder point that triggered the alert |\n| `status` | string | 'open', 'acknowledged', 'dismissed', or 'resolved' |\n| `firedAt` | string (date) | When the alert was triggered |\n| `resolvedAt` | string (date) | When stock recovered (null if still open) |\n\n*…and more — see the full schema in the OpenAPI spec.*\n::\n\n::api-endpoint{method=\"GET\" path=\"\u002Fapi\u002Finventory\u002Fopen-orders\" summary=\"Logged purchase orders\"}\nFetches purchase orders the merchant has logged as in flight. Open orders feed the next model run as pipeline arrivals and count into the position checked by alerts.\n\n**Query parameters**\n\n| Name | Type | Required | Description |\n|---|---|---|---|\n| `status` | string | no | Filter by status ('open', 'received', 'cancelled') |\n\n**Response** — Array of `InventoryOpenOrderDto`\n\n| Field | Type | Description |\n|---|---|---|\n| `id` | integer | Purchase order id |\n| `canonicalVariantId` | integer | SKU id |\n| `orderedQuantity` | integer | Units ordered |\n| `expectedArrivalWeek` | string (date) | Target arrival date (Monday of the week) |\n| `status` | string | 'open', 'received', or 'cancelled' |\n| `receivedAt` | string (date) | When stock was received (null if not yet arrived) |\n\n*…and more — see the full schema in the OpenAPI spec.*\n::\n\n## Unified financial overview\n\n::api-endpoint{method=\"POST\" path=\"\u002Fapi\u002Funified\u002Ffinancial-overview\u002Fshop-overview\" summary=\"Cross-platform profit overview\"}\nA user-wide realized-profit overview rolled up across ALL your shops (Shopee + TikTok + Lazada) over a lookback window. Returns total profit, revenue-weighted average margin, top\u002Fworst products, the cost-breakdown P&L waterfall, and per-platform subtotals. The optional body tunes the window, top-N, and VAT treatment.\n\n**Request body**\n\n`UnifiedFinancialOverviewFetchRequest` (optional)\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `lookbackDays` | integer | no | Trailing window in days (default 30); ignored if from\u002Fto set |\n| `from` | string (date) | no | Explicit start date (YYYY-MM-DD); overrides lookbackDays |\n| `to` | string (date) | no | Explicit end date (YYYY-MM-DD) |\n| `topN` | integer | no | Top\u002Fworst products to return (default 5) |\n| `includeVat` | boolean | no | Include VAT calculation (default false) |\n\n**Response** — `UnifiedUserFinancialOverview`\n\n| Field | Type | Description |\n|---|---|---|\n| `grossGmv` | number | Total GMV across platforms |\n| `totalNetRevenue` | number | Post-discount, pre-fee revenue |\n| `totalProfit` | number | Realized profit (revenue − COGS − fees) |\n| `avgMargin` | number | Revenue-weighted average margin (0–1) |\n| `lossMakerCount` | integer | Products with negative profit |\n| `costBreakdown` | array | P&L waterfall (commission, payment fee, shipping, VAT, etc.) |\n| `topProducts` | array | Top earners by profit |\n| `worstProducts` | array | Thinnest margins |\n| `perPlatform` | array | Per-platform revenue, profit, and margins |\n\n*…and more — see the full schema in the OpenAPI spec.*\n::\n\n## Shops & accounts\n\n::api-endpoint{method=\"GET\" path=\"\u002Fapi\u002Fshopee\u002Ffetch-all-user-shops\" summary=\"List your Shopee shops\"}\nFetches all Shopee shops connected to your account. Call this first to discover which shops you own — most shop-scoped endpoints need a `shopId` from here.\n\n**Response** — Array of `ShopeeShop`\n\n| Field | Type | Description |\n|---|---|---|\n| `shopId` | integer | Shopee shop id |\n| `shopName` | string | Display shop name |\n| `region` | string | Region code (e.g. 'TH') |\n| `timezone` | string | Shop timezone (e.g. 'Asia\u002FBangkok') |\n| `sellerClass` | string | Seller classification |\n| `authorizationStatus` | string | e.g. 'AUTHORIZED', 'DEAUTHORIZED' |\n::\n\n::api-endpoint{method=\"GET\" path=\"\u002Fapi\u002Fshopee\u002Ffetch-all-user-shop-accounts\" summary=\"Shopee auth status per grant\"}\nFetches authorization status for each Shopee (shop, app-type) grant. A non-null `deauthorizedAt` means the grant is revoked\u002Fexpired and needs re-auth — handy for diagnosing why a shop's orders or ads data is missing.\n\n**Response** — Array of `ShopeeAccountEntry`\n\n| Field | Type | Description |\n|---|---|---|\n| `shopId` | integer | Shopee shop id |\n| `appType` | string | Grant type ('default' core data, 'ads' campaign data, 'ams' open campaign) |\n| `authorizedAt` | string (date) | When the grant was last authorized |\n| `deauthorizedAt` | string (date) | When it expired\u002Fwas revoked (null if active) |\n::\n\n::api-endpoint{method=\"POST\" path=\"\u002Fapi\u002Fshopee\u002Fshop\u002Fcheck-commission-rates\" summary=\"Check Shopee commission rates\"}\nCompares empirical commission rates (computed from order data) against the rates declared in Shopee Seller Centre — useful for auditing when displayed and calculated rates diverge.\n\n**Query parameters**\n\n| Name | Type | Required | Description |\n|---|---|---|---|\n| `shopId` | integer | yes | Shopee shop id |\n| `region` | string | yes | Region code (e.g. 'TH') |\n\n**Response** — `ShopeeCommissionRateCheckResult`\n\n| Field | Type | Description |\n|---|---|---|\n| `declaredRate` | number | Commission rate from Seller Centre (%) |\n| `empiricalRate` | number | Calculated rate from orders (%) |\n| `sampleOrderCount` | integer | Orders used in the empirical calculation |\n| `mismatchPercent` | number | Mismatch frequency (%) |\n\n*…and more — see the full schema in the OpenAPI spec.*\n::\n\n::api-endpoint{method=\"GET\" path=\"\u002Fapi\u002Fshopee\u002Fshop\u002Fprofile\" summary=\"Get Shopee shop profile\"}\nFetches shop profile details (name, logo, description) from Shopee.\n\n**Query parameters**\n\n| Name | Type | Required | Description |\n|---|---|---|---|\n| `shopId` | integer | yes | Shopee shop id |\n\n**Response** — `ShopeeShopProfile`\n\n| Field | Type | Description |\n|---|---|---|\n| `shopName` | string | Shop name |\n| `shopLogo` | string | Logo image URL |\n| `shopDescription` | string | Shop bio\u002Fdescription |\n| `followCount` | integer | Shop followers |\n| `responseRate` | number | Seller response rate (0–1) |\n::\n\n::api-endpoint{method=\"GET\" path=\"\u002Fapi\u002Flazada\u002Fauth\u002Ffetch-all-user-shops\" summary=\"List your Lazada shops\"}\nFetches all Lazada sellers (accounts) connected to your account. Call this first to discover which Lazada accounts you own — seller-scoped endpoints need the `sellerId` from here.\n\n**Response** — Array of `LazadaShop`\n\n| Field | Type | Description |\n|---|---|---|\n| `sellerId` | integer | Lazada seller account id |\n| `shopName` | string | Shop\u002Faccount name |\n| `region` | string | Region code (e.g. 'TH', 'VN', 'PH') |\n| `sellerType` | string | Seller type ('REGULAR', 'LAZMALL', 'SHOP') |\n::\n\n::api-endpoint{method=\"GET\" path=\"\u002Fapi\u002Ftiktok\u002Fauth\u002Ffetch-all-user-shops\" summary=\"List your TikTok shops\"}\nFetches all TikTok Shops connected to your account. TikTok shop ids are 19-digit numbers larger than JavaScript's safe-integer max — treat them as opaque strings end-to-end.\n\n**Response** — Array of `TikTokShopResponse`\n\n| Field | Type | Description |\n|---|---|---|\n| `shopId` | string | TikTok shop id (opaque string, not a number) |\n| `shopName` | string | Shop name |\n| `region` | string | Region code (e.g. 'TH', 'VN') |\n::\n",{"title":621,"description":4277},"5_dehvEa5_cnJQKonmlzPYPuHkjF7GKr_gDSDSVcAhs",{"data":4286,"body":4287},{},{"type":4288,"children":4289},"root",[4290],{"type":4291,"tag":683,"props":4292,"children":4293},"element",{},[4294],{"type":4295,"value":4277},"text",1792785058671]