// const axios = require('axios'); // const { log } = require('./logger'); // /** // * Logs messages with a shop context. // * @param {string} shop - Shopify store name. // * @param {string} message - Log message. // */ // /** // * Create a Shopify fulfillment service. // * @param {string} shop - The Shopify store domain (e.g., myshop.myshopify.com). // * @param {string} accessToken - The Shopify Admin API access token. // * @returns {Promise} The created fulfillment service or error details. // */ // async function createFulfillmentService(shop, accessToken) { // const client = axios.create({ // baseURL: `https://${shop}/admin/api/2024-01/graphql.json`, // headers: { // 'X-Shopify-Access-Token': accessToken, // 'Content-Type': 'application/json', // }, // }); // // const mutation = ` // // mutation { // // fulfillmentServiceCreate( // // name: "Data4Autos Distribution", // // callbackUrl: "https://backend.data4autos.com/fulfillment" // // ) { // // fulfillmentService { // // id // // serviceName // // callbackUrl // // handle // // location { // // id // // } // // } // // userErrors { // // field // // message // // } // // } // // } // // `; // const mutation = ` // mutation { // fulfillmentServiceCreate( // name: "Data4Autos Distribution", // callbackUrl: "https://backend.data4autos.com/fulfillment", // fulfillmentOrdersOptIn: true, // inventoryManagement: true, // trackingSupport: true, // requiresShippingMethod: true, // permitsSkuSharing: true // ) { // fulfillmentService { // id // serviceName // callbackUrl // handle // location { // id // } // } // userErrors { // field // message // } // } // } // `; // try { // log(shop, `🚀 Creating fulfillment service...`); // const response = await client.post('', { query: mutation }); // const data = response.data.data.fulfillmentServiceCreate; // if (data.userErrors && data.userErrors.length > 0) { // log(shop, `❌ User errors: ${JSON.stringify(data.userErrors)}`); // return { success: false, errors: data.userErrors }; // } // log(shop, `✅ Fulfillment Service created: ${JSON.stringify(data.fulfillmentService)}`); // return { success: true, fulfillmentService: data.fulfillmentService }; // } catch (error) { // log(shop, `💥 Request failed: ${error.response ? JSON.stringify(error.response.data) : error.message}`); // return { success: false, error: error.response ? error.response.data : error.message }; // } // } // module.exports = { createFulfillmentService }; const axios = require('axios'); const { log } = require('./logger'); /** * Create a Shopify fulfillment service. * @param {string} shop - The Shopify store domain (e.g., myshop.myshopify.com). * @param {string} accessToken - The Shopify Admin API access token. * @returns {Promise} The created fulfillment service or error details. */ async function createFulfillmentService(shop, accessToken) { const client = axios.create({ baseURL: `https://${shop}/admin/api/2024-01/graphql.json`, headers: { 'X-Shopify-Access-Token': accessToken, 'Content-Type': 'application/json', }, }); const mutation = ` mutation { fulfillmentServiceCreate( name: "Data4Autos Distribution", callbackUrl: "https://backend.data4autos.com/fulfillment", fulfillmentOrdersOptIn: true, inventoryManagement: true, trackingSupport: true, permitsSkuSharing: true ) { fulfillmentService { id serviceName callbackUrl handle location { id } } userErrors { field message } } } `; try { log(shop, `🚀 Creating fulfillment service...`); const response = await client.post('', { query: mutation }); console.log(`Response from Shopify: ${JSON.stringify(response.data, null, 2)}`); const data = response.data.data.fulfillmentServiceCreate; if (data.userErrors && data.userErrors.length > 0) { console.log(shop, `❌ User errors: ${JSON.stringify(data.userErrors)}`); return { success: false, errors: data.userErrors }; } log(shop, `✅ Fulfillment Service created: ${JSON.stringify(data.fulfillmentService)}`); return { success: true, fulfillmentService: data.fulfillmentService }; } catch (error) { log(shop, `💥 Request failed: ${error.response ? JSON.stringify(error.response.data) : error.message}`); return { success: false, error: error.response ? error.response.data : error.message }; } } module.exports = { createFulfillmentService }; // ------------------------------- // Test call (comment out later) // ------------------------------- // (async () => { // const shop = "veloxautomotive.myshopify.com"; // Replace with your shop domain // const accessToken = "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"; // Replace with your token // const result = await createFulfillmentService(shop, accessToken); // console.log("Result:", result); // })();