API Скрипт для Shopify
Необхідно зробити скрипт (js метод) який буде оновлювати кількість товарів по API
- підключення node adminClientAPI (офіційний пакет)
- оновлення чере mutation GraphQL (або ваш варіант)
- оновлення по delta (+1, -2 і тп)
По факту функція є але видає помилку що з Input має якись не такий формат, інші методи в проєкті працюють добре
Ось весь код який має запрацювати.
const client = createAdminApiClient({
storeDomain: process.env.SF_DOMAIN,
apiVersion: process.env.SF_API_VERSION,
accessToken: process.env.SF_ADMIN_ACCESS_TOKEN,
});
const mutateInventoryQuantity = async (inventoryItemId, delta) => {
const mutation = `
mutation inventoryAdjustQuantities($input: InventoryAdjustQuantitiesInput!) {
inventoryAdjustQuantities(input: $input) {
userErrors {
field
message
}
inventoryAdjustmentGroup {
createdAt
reason
referenceDocumentUri
changes {
name
delta
}
}
}
}
};
const input = {
reason: "correction",
changes: [
{
delta,
inventoryItemId,
locationId: process.env.SF_CONST_LOCATION_ID
}
]
};
console.log('DEBUG: payload', JSON.stringify({ input }, null, 2));
try {
return await client.request(mutation, { input });
} catch (error) {
console.error('Не вдалося змінити кількість запасів:', error);
throw error;
}
}
mutateInventoryQuantity(id, delta)
RESPONSE
Змінна $input типу InventoryAdjustQuantitiesInput! отримала недійсне значення {
value: null,
problems: [ { path: [], explanation: 'Очікуване значення не повинно бути null' } ]
}
Ось весь код який має запрацювати.
const client = createAdminApiClient({
storeDomain: process.env.SF_DOMAIN,
apiVersion: process.env.SF_API_VERSION,
accessToken: process.env.SF_ADMIN_ACCESS_TOKEN,
});
const mutateInventoryQuantity = async (inventoryItemId, delta) => {
const mutation = `
mutation inventoryAdjustQuantities($input: InventoryAdjustQuantitiesInput!) {
inventoryAdjustQuantities(input: $input) {
userErrors {
field
message
}
inventoryAdjustmentGroup {
createdAt
reason
referenceDocumentUri
changes {
name
delta
}
}
}
}
`;
const input = {
reason: "correction",
changes: [
{
delta,
inventoryItemId,
locationId: process.env.SF_CONST_LOCATION_ID
}
]
};
console.log('DEBUG: payload', JSON.stringify({ input }, null, 2));
try {
return await client.request(mutation, { input });
} catch (error) {
console.error('Failed to mutate inventory:', error);
throw error;
}
}
mutateInventoryQuantity(id, delta)
RESPONSE
Variable $input of type InventoryAdjustQuantitiesInput! was provided invalid value {
value: null,
problems: [ { path: [], explanation: 'Expected value to not be null' } ]
}
-
const mutateInventoryQuantity = async (inventoryItemId, delta) => {
const mutation = `
mutation inventoryAdjustQuantities($input: InventoryAdjustQuantitiesInput!) {
inventoryAdjustQuantities(input: $input) {
userErrors {
field
message
}
inventoryAdjustmentGroup {
createdAt
reason
referenceDocumentUri
changes {
name
delta
}
}
}
}
`;
const input = {
reason: "correction",
changes: [
{
delta,
inventoryItemId,
locationId: process.env.SF_CONST_LOCATION_ID
}
]
};
console.log('DEBUG: payload', JSON.stringify({ input }, null, 2));
try {
return await client.request(mutation, { input });
} catch (error) {
console.error('Failed to mutate inventory:', error);
throw error;
}
}
RESPONSE
Variable $input of type InventoryAdjustQuantitiesInput! was provided invalid value {
value: null,
problems: [ { path: [], explanation: 'Expected value to not be null' } ]
}
ось така відповідь з сервера -
Актуальні фриланс-проєкти в категорії Javascript та Typescript
Розробка повного стеку — Панель управління Amazon PPC (Етап 1)Потрібен full-stack розробник з досвідом роботи з Amazon API для реалізації Stage 1 внутрішнього PPC-дашборда. Проект реальний, дані живі, все готово до старту. Прототип фронтенда (5 сторінок, React + TypeScript): ЩО ВЖЕ ГОТОВО — Фронтенд-прототип на React 18 + TypeScript +… Javascript та Typescript, Веб-програмування ∙ 2 дні 5 годин тому ∙ 28 ставок |
Розробка сайту-конструктора фотокниг і фоторамокМета проекту Необхідно розробити сучасний веб-сайт для замовлення фотокниг, фоторамок та іншої персоналізованої фотопродукції. Головне завдання проекту — надати клієнту можливість самостійно створити готовий макет виробу без участі дизайнера безпосередньо на сайті.Основний… Javascript та Typescript, Веб-програмування ∙ 3 дні 21 година тому ∙ 96 ставок |
Команда для самописного маркетплейса ритуальних послуг.Шукаємо команду для запуску та розвитку самописного національного маркетплейсу ритуальних послуг. Одразу: не шукаємо одиночок, джунів і “збирачів сайтів”. Потрібна сильна продуктова команда рівня middle+/senior з реальними кейсами маркетплейсів/складних SaaS. Прошу не… Javascript та Typescript, Веб-програмування ∙ 4 дні 16 годин тому ∙ 27 ставок |
Доопрацювання існуючого проекту Next.js/Supabase: оффери, CRM, аналітика, AI-чатЄ діючий проект WatchGenius — платформа аналітики люксових годинників з каталогом моделей, ціновою аналітикою, зовнішніми офферами, формами заявок та AI-чатом. Проект вже частково розроблений. Потрібен не сайт з нуля, а досвідчений full-stack розробник, який зможе розібратися в… Javascript та Typescript, Веб-програмування ∙ 6 днів 17 годин тому ∙ 55 ставок |
Шукаю Senior Full-Stack розробника (Payload CMS) — міграція 2 сайтів готельної мережіМережа курортних готелів переходить з Webflow на власний headless-стек. Два корпоративні сайти (~140 сторінок разом), multi-tenant архітектура — один код обслуговує кілька готелів на різних доменах. Проєкт уже стартував: інфраструктура розгорнута, tenants налаштовані, базові… CMS, Javascript та Typescript ∙ 10 днів 15 годин тому ∙ 19 ставок |