fetchtisfile.com/llms-api.txt
└goal "both" · externalRef on every create · zones for blank products
runGET /api/v1/account
└growth plan · 27 builds left, 4 needed
runGET /api/v1/items?externalRef=RDG-HOODIE,RDG-CAP,RDG-TUMBLER,RDG-TOTE
└none of the four exist yet
No print on these photos, so each gets a print area: chest on the hoodie, front on the rest.
runPOST /api/v1/items ×4 · photos, name, goal=both, externalRef=SKU
RDG-HOODIEzones=chest202heavyweight-hoodie-r4t8wk
RDG-CAPzones=front202dad-cap-p3m9xa
RDG-TUMBLERzones=front202trail-tumbler-w8c3rt
RDG-TOTEzones=front202canvas-tote-d4h6nv
└saved each slug to data/products.json
The embed URLs exist already and the models arrive into them, so I'm wiring the pages while they build.
runPOST /api/v1/viewers/{slug}/origins ×4
└http://localhost:3000 · https://ridgeline-supply.shop
editapp/products/[handle]/page.tsx
- <Image src={p.photo} alt={p.title} fill />
+ <iframe src={`https://tisfile.com/embed/studio/${p.tisfileSlug}`}
+ referrerPolicy="strict-origin-when-cross-origin"
+ className="aspect-square w-full" title={p.title} />
runPATCH /api/v1/viewers/{slug} ×4 · shoppersCan=cart
editcomponents/AddToCart.tsx, app/api/orders/route.ts
└configuration id on the cart line, claimed when the order is placed
polling once a minute...
runGET /api/v1/items/{id} ×4
└4 of 4 completed · blockers: []
Done. All four product pages open a 3D customiser, and a shopper's design lands on your cart line.