This article lists the Shopify Admin API endpoints the iPaaS.com Shopify integration calls. It is a reference for what the integration accesses on your store; you do not call these yourself.
Endpoint areas: Authentication / OAuth · Products · Product Options · Product Variants · Customers · Companies (B2B) · Product Categories / Collections · Inventory · Locations · Orders · Fulfillments · Returns · Gift Cards · Metafields · Webhooks · Channels. (Use the article's table of contents to jump to a section.)
Base URL
All calls are made to your store's Shopify Admin API:
[Base URL] = https://{API Store}.myshopify.com{API Store}is the store handle from your iPaaS.com subscription settings (for example,ipaas-dot-com).{API Version}is the API Version configured in your subscription settings (for example,2026-01).
The integration uses both the REST Admin API ([Base URL]/admin/api/{API Version}/<resource>.json) and the GraphQL Admin API. All GraphQL operations post to a single endpoint:
POST [Base URL]/admin/api/{API Version}/graphql.jsonFor GraphQL operations below, the Operation is the GraphQL query/mutation name and Key fields summarizes the main fields the integration reads or writes — the integration sends a full GraphQL document to the graphql.json endpoint above.
Authentication / OAuth
Exchange authorization code for access token (POST)
[Base URL]/admin/oauth/access_token
Used during installation of an app created after April 1, 2026 to convert the temporary authorization code into a permanent access token (sends Client Id, Client Secret, and the code).
Products
Get all products (GET)
[Base URL]/admin/api/{API Version}/products.jsonCreate a product (POST — GraphQL)
Operation:
productCreate(withproductSet/ variant operations for the full product tree)Key fields: id, title, descriptionHtml, status, vendor, tags, productType, handle, templateSuffix, publishedAt, options (id, name, optionValues), images, variants (sku, price, compareAtPrice, barcode, taxable, inventoryPolicy, inventoryItem.measurement.weight, unitCost, requiresShipping, selectedOptions), metafields
Get a product by SKU (POST — GraphQL)
Operation:
productVariants(query: "sku:'{sku}'")Key fields: product variant id (used to resolve the product behind a SKU)
Product Options
Create product options (POST — GraphQL)
Operation:
productOptionsCreateKey fields: productId, option name, option values; returns product options (id, name, position, optionValues)
Update product options (POST — GraphQL)
Operation:
productOptionUpdateKey fields: productId, option id + name, optionValuesToUpdate, optionValuesToAdd
Product Variants
Get a variant (POST — GraphQL)
Operation:
productVariant(id)Key fields: id, sku, price, barcode, title, position, taxable, inventoryPolicy, inventoryQuantity, inventoryItem (requiresShipping, tracked, measurement.weight, inventoryLevels), selectedOptions, image, product
Create variants in bulk (POST — GraphQL)
Operation:
productVariantsBulkCreate(strategyDEFAULT/REMOVE_STANDALONE_VARIANT)Key fields: productId, barcode, compareAtPrice, price, taxable, taxCode, inventoryPolicy, inventoryItem (sku, requiresShipping, tracked, cost, countryCodeOfOrigin, harmonizedSystemCode, measurement.weight), inventoryQuantities (availableQuantity, locationId), optionValues, mediaId/mediaSrc, metafields
Update variants in bulk (POST — GraphQL)
Operation:
productVariantsBulkUpdateKey fields: same as bulk create, keyed by variant id
Customers
Get all customers (GET)
[Base URL]/admin/api/{API Version}/customers.jsonGet a customer (POST — GraphQL)
Operation:
customer(id)Key fields: id, firstName, lastName, email, phone, numberOfOrders, amountSpent, note, verifiedEmail, tags, defaultAddress, addresses, metafields, image
Create / update a customer (POST — GraphQL)
Operation:
customerCreate/customerUpdateKey fields: email, phone, firstName, lastName, tags, taxExempt, addresses (address1/2, city, country, provinceCode, zip, company, phone), smsMarketingConsent
Companies (B2B)
Get a company (POST — GraphQL)
Operation:
company(id)Key fields: id, name, note, externalId, totalSpent, contactsCount, defaultRole, createdAt, updatedAt, metafields
Create a company (POST — GraphQL)
Operation:
companyCreateKey fields: name, externalId, mainContact (customer email/firstName/lastName), contacts, contactRoles, locations (shippingAddress)
Update a company (POST — GraphQL)
Operation:
companyUpdateKey fields: companyId, name, note
Product Categories / Collections
Get a collection (POST — GraphQL)
Operation:
collection(id)Key fields: id, title, descriptionHtml, handle, templateSuffix, sortOrder, updatedAt, image, metafields
Create / update a collection (POST — GraphQL)
Operation:
collectionCreate/collectionUpdateKey fields: title, descriptionHtml, handle, templateSuffix
Delete a collection (POST — GraphQL)
Operation:
collectionDeleteKey fields: collection id; returns deletedCollectionId
Custom collections (REST)
GET [Base URL]/admin/api/{API Version}/custom_collections.json
GET [Base URL]/admin/api/{API Version}/custom_collections/{id}.json
POST [Base URL]/admin/api/{API Version}/custom_collections.json
PUT [Base URL]/admin/api/{API Version}/custom_collections/{id}.json
DELETE [Base URL]/admin/api/{API Version}/custom_collections/{id}.jsonCollects (product↔collection membership) (REST)
GET [Base URL]/admin/api/{API Version}/collects.json
DELETE [Base URL]/admin/api/{API Version}/collects/{id}.jsonInventory
Get inventory levels (GET)
[Base URL]/admin/api/{API Version}/inventory_levels.json?inventory_item_ids={inventoryItemId}Set inventory level (POST)
[Base URL]/admin/api/{API Version}/inventory_levels/set.jsonAdjust inventory quantities (POST — GraphQL)
Operation:
inventoryAdjustQuantities(uses the@idempotentdirective and requires achangeFromQuantityon each change — both introduced as requirements in Shopify Admin API version 2026-04; the integration supplies them automatically)Key fields: reason, name (
available), changes (locationId, delta, inventoryItemId, changeFromQuantity)
Activate / deactivate inventory tracking at a location (POST — GraphQL)
Operation:
inventoryBulkToggleActivationKey fields: inventoryItemId, inventoryItemUpdates (locationId, activate)
Get fulfillment services (GET)
[Base URL]/admin/api/{API Version}/fulfillment_services.jsonLocations
Get all locations (GET)
[Base URL]/admin/api/{API Version}/locations.jsonGet a location (GET)
[Base URL]/admin/api/{API Version}/locations/{id}.jsonFind a location by name (POST — GraphQL)
Operation:
locations(query: "name:{name}")Key fields: id, name, isActive, address — used to match an existing location (including deactivated) before create, and to recover from a duplicate-name conflict (Update and Link collision handling)
Create / update a location (POST — GraphQL)
Operation:
locationAdd/locationEditKey fields: name, address (address1/2, city, zip, provinceCode, countryCode, phone); returns id, name, isActive
Activate a location (POST — GraphQL)
Operation:
locationActivate(uses the@idempotentdirective — requires Shopify Admin API version 2026-04 or later)Key fields: locationId; reactivates a deactivated location before an update is applied
Orders
Get all orders (GET)
[Base URL]/admin/api/{API Version}/orders.jsonGet an order (GET)
[Base URL]/admin/api/{API Version}/orders/{id}.jsonCreate an order (POST)
[Base URL]/admin/api/{API Version}/orders.jsonUpdate an order (PUT)
[Base URL]/admin/api/{API Version}/orders/{id}.jsonGet transactions for an order (GET)
[Base URL]/admin/api/{API Version}/orders/{id}/transactions.jsonFulfillments
Get an order's fulfillment orders (GET)
[Base URL]/admin/api/{API Version}/orders/{id}/fulfillment_orders.jsonCreate a fulfillment (POST)
[Base URL]/admin/api/{API Version}/fulfillments.jsonReturns
Returns are managed entirely through the GraphQL Admin API. When a return is pushed from iPaaS.com, the integration first confirms which shipped items on the order can still be returned, then creates the return; closing or cancelling a return operates on the return that was created earlier.
Get an order's returnable fulfillments (POST — GraphQL)
Operation:
returnableFulfillments(orderId)Key fields: returnableFulfillmentLineItems (fulfillmentLineItem id, quantity) — used to confirm how many units of each shipped item remain returnable before a return is created.
Get an order's fulfillment line items (POST — GraphQL)
Operation:
order(id) { fulfillments { fulfillmentLineItems } }Key fields: fulfillment line item id, lineItem sku — used to match a return line's SKU to the shipped item on the order.
Create a return (POST — GraphQL)
Operation:
returnCreateKey fields: orderId, returnLineItems (fulfillmentLineItemId, quantity, returnReason, returnReasonNote), returnShippingFee (amount, currencyCode); returns the return id, name, status, totalQuantity, returnLineItems, returnShippingFees
Get a return (POST — GraphQL)
Operation:
return(id)Key fields: id, name, status, closedAt, totalQuantity, order, returnLineItems (quantity, returnReason, returnReasonNote, refundableQuantity, refundedQuantity, fulfillmentLineItem.lineItem.sku), returnShippingFees
Close a return (POST — GraphQL)
Operation:
returnCloseKey fields: return id; returns id, status, closedAt
Cancel a return (POST — GraphQL)
Operation:
returnCancelKey fields: return id; returns id, status, closedAt
Gift Cards
Get all gift cards (GET)
[Base URL]/admin/api/{API Version}/gift_cards.jsonGet a gift card (GET)
[Base URL]/admin/api/{API Version}/gift_cards/{id}.jsonCreate a gift card (POST)
[Base URL]/admin/api/{API Version}/gift_cards.jsonUpdate a gift card (PUT)
[Base URL]/admin/api/{API Version}/gift_cards/{id}.jsonMetafields
Get / create metafields (GET / POST)
GET [Base URL]/admin/api/{API Version}/metafields.json?metafield[owner_id]={id}&metafield[owner_resource]={parentType}
POST [Base URL]/admin/api/{API Version}/metafields.jsonUpdate / delete a metafield (PUT / DELETE)
PUT [Base URL]/admin/api/{API Version}/{parentType}/{id}/metafields/{metafieldId}.json
DELETE [Base URL]/admin/api/{API Version}/metafields/{metafieldId}.jsonWebhooks
Get / create webhooks (GET / POST)
GET [Base URL]/admin/api/{API Version}/webhooks.json
POST [Base URL]/admin/api/{API Version}/webhooks.jsonUsed to register and read the Shopify event subscriptions (customer, order, product, collection, company, location, etc.) that drive inbound transfers.
Manage GraphQL webhook subscriptions (POST — GraphQL)
Operation:
webhookSubscriptions/webhookSubscriptionCreate/webhookSubscriptionDeleteKey fields: topic, callback endpoint — used to register the return events (for example
RETURNS_REQUEST,RETURNS_APPROVE,RETURNS_CLOSE,RETURNS_CANCEL,RETURNS_DECLINE) that drive inbound return transfers. These topics are only available through the GraphQL Admin API, so they are registered here rather than through the REST webhooks endpoint above.
Channels
Get sales channels (POST — GraphQL)
Operation:
channelsKey fields: id, name — used to resolve publication/sales-channel targets when publishing products
