← back to Shopify Sample Shipping
samples-profile.mjs
22 lines
import {query} from './query.mjs';
const q=`{deliveryProfile(id:"gid://shopify/DeliveryProfile/96764067891"){name default productVariantsCount{count}
profileLocationGroups{locationGroup{id locations(first:5){nodes{name}}}
locationGroupZones(first:30){nodes{zone{id name countries{code{countryCode}}}
methodDefinitions(first:40){nodes{id name active
rateProvider{__typename ... on DeliveryRateDefinition{price{amount currencyCode}}}
methodConditions{operator field conditionCriteria{__typename ... on MoneyV2{amount} ... on Weight{value unit}}}}}}}}}}`;
const d=await query(q);
const p=d.deliveryProfile;
console.log(`PROFILE "${p.name}" default:${p.default} variants:${p.productVariantsCount.count}`);
for(const g of p.profileLocationGroups){
console.log(` LG ${g.locationGroup.id.split('/').pop()} locs:[${g.locationGroup.locations.nodes.map(l=>l.name).join(', ')}]`);
for(const z of g.locationGroupZones.nodes){
console.log(` ZONE ${z.zone.id.split('/').pop()} ${z.zone.name} [${z.zone.countries.map(c=>c.code.countryCode).join(',')}]`);
for(const md of z.methodDefinitions.nodes){
const rp=md.rateProvider;const price=rp?.price?`$${rp.price.amount}`:rp?.__typename;
const conds=md.methodConditions.map(c=>{const cr=c.conditionCriteria;const v=cr?.amount!==undefined?`$${cr.amount}`:(cr?.value!==undefined?`${cr.value}${cr.unit}`:'?');return `${c.field} ${c.operator} ${v}`;}).join(' AND ')||'(none)';
console.log(` METHOD ${md.id.split('/').pop()} "${md.name}" [${md.active?'on':'OFF'}] ${price} {${conds}}`);
}
}
}