FROM CACHE - en_header

Updated Deadline: Aug 1st -- [Deprecation] Important changes to ProductVariant, Refund and Fulfillment APIs

Ryan
Shopify Staff
Shopify Staff
499 42 118

UPDATE JAN 2: 

https://ecommerce.shopify.com/c/api-announcements/t/deadline-reminder-important-changes-to-productva...

UPDATE SEP 14 

Hey Devs!

We've recently shipped a new change to help with identifying calls that we consider deprecated.  We've added a new header to return on these calls:

X-Shopify-API-Deprecated-Reason

If you receive one of these headers in your response, this means Shopify considers that a deprecated call.  This is an effort to allow these calls to be machine readable, and loggable, in order to assist developers in identifying the areas that need to be updated.

Examples of calls that will return this header:

  • Creating a fulfillment without a location
  • Creating a product with variants that have "inventory_quantity"
  • Creating a new variant on a product that has "inventory_quantity"
  • Updating a variant with "inventory_quantity_adjustment"
  • Updating a variant with "inventory_quantity"

 

Happy Coding!

 

UPDATE JUNE 28: 

Hey Devs,

Just want to let you know that we are extending the deprecation deadline from July 1st to August 1st.  There will be a new post tomorrow with more details, but we just wanted to get it out there to maybe relieve some of the stress you are feeling headed into the weekend.

Most, if not all of your questions will be answered in the post tomorrow so try to save any queries for that!

Cheers All!

Ryan

 

Hey Devs,

Shopify is preparing to release multi-location inventory features to all merchants this summer. All apps that create fulfillments or manage inventory will need to be updated by July 1st, 2018, to remain functional on shops that track inventory across multiple locations.

Key dates

July 1st, 2018

  • Apps will no longer be able to create fulfillments without specifying a location
  • Apps will no longer be able to set inventory on the Product/Variant APIs

Migrating to support multi-location fulfillments

Shopify fulfillments are currently “location unaware”, meaning that when an app creates a fulfillment and fulfills an order, Shopify decrements the inventory with no concept of which location that inventory should be decremented from. In order to support merchants with inventory allocated across multiple locations, apps will need to include a location_id when creating fulfillments.

For details on how to migrate your apps to support multi-location, see our Multi-Location Fulfillment Migration Guide.

Migrating to support multi-location inventory

Currently inventory is set and adjusted on the product variant and is not tracked by any particular location. In anticipation of multi-location inventory, Shopify has released a new Inventory API, which includes two new endpoints: Inventory Item and Inventory Level. The Inventory API will allows apps to effectively manage inventory quantities across multiple locations.

For details on how to migrate your apps to support multi-location inventory, see our Multi-Location Inventory Migration Guide.

We’ll keep you up to date as we continue to make improvements to our platform’s multi-location fulfillment and inventory management capabilities, so you can continue to build the best apps to help extend these new features.

If you have any questions about this change, please read our detailed FAQ or contact deprecations@shopify.com.

 

Thanks,

Shopify Apps Team

Ryan | Shopify 
 - Was my reply helpful? Click Like to let me know! 
 - Was your question answered? Mark it as an Accepted Solution
 - To learn more visit the Shopify Help Center or the Shopify Blog

Replies 149 (149)
rplum
Shopify Partner
19 0 8

Ryan

I am using REST client for testing capi calls.  this has alwaysw worked in the past, so I dont know why it woudl stop for this.   PLease see screen shot.

Take care,

Roy.

Solid_Engineer
Tourist
3 0 1

Hello Ryan, 

During post tracking API call for fulfilment , I am getting following error. 

"{"error":"location_id must be specified when creating fulfillments."}"

I believe this should not occure before august 1st?

Can you please help?

Thank you 

Peter_Hurtadi
Shopify Partner
6 0 2

hello I have a question, when you send my location_id in my request, your api answers the following error:

response: 
{"errors":"Not Found"}

request:

{"fulfillment":{"location_id":516876140657,"tracking_number":"794613732806","tracking_company":"FEDEX","tracking_url":"http:\/\/www.fedex.com\/Tracking?tracknumbers=794613732806","line_items":[{"id":1356647596145,"quantity":1}]}}

josehg
New Member
1 0 0

Hi Ryan!

When doing a  POST /admin/inventory_levels/set.json to any other location than the one marked as "Shipping origin" we're getting the errror 403 "Shop does not have multi-location enabled". How to enable that, I can't find any setting for it. We're can we enable that?

Thank you!

Mendy
Shopify Partner
3 0 0

Hey @Ryan 

I'm posting the following:

body: { "fulfillment": { "location_id": 14041710634, "tracking_number": 23e24234234, "tracking_company": "UPS", "line_items": [{"id":1105987600426,"quantity":1},{"id":1105987633194,"quantity":1},{"id":1105987665962,"quantity":0}] }

ANd getting

HTTP error: #<RestClient::UnprocessableEntity: 422 Unprocessable Entity>

Each line in the order is set to be fulfilled through the Fulfillment Service specific with the Location_id I provided. 

Second question: if Fulfillment Service is set to Manual, can I fulfill from another location_id by simply passing through the new location_id?

Please help; 

Here's more information if this helps.

  • There are many items in the order
  • There are at least two fulfillment services (though they will all be filled by the same service), some are Manual. 
  • I'm not filling the entire order in one shot. I'm trying to fulfill only the items that have been fulfilled. 

 

Ben106
Tourist
36 0 3

Hey Mendy,

I get the 422 error when an item or line item has already been fulfilled. Maybe check that?

Ben

Mendy
Shopify Partner
3 0 0

Thanks, @Ben. None have been fulfilled. 

Here's more information if this helps.

  • There are many items in the order
  • There are at least two fulfillment services (though they will all be filled by the same service), some are Manual. 
  • I'm not filling the entire order in one shot. I'm trying to fulfill only the items that have been fulfilled. 

So I'm not sure what I'm doing wrong?

  1. Do the items all need to be associated to one service?
  2. Do the items need to be associated to this specific service before they are fulfilled
  3. So the Inventory_Item_id has to be associated to this location while I'm creating the fulfillment? 
  4. Presumably, then, I need to add a location to each line item - and not to the whole order (even though the whole order is being filled from the same location/service)?
Adam_Robson
Shopify Partner
16 0 6

Guys, I have tried to unsubscribe to the million posts (and concerns) on this forum thread, but the unsubscribe link doesn't work. I'm also not subscribed to this thread via email yet still receive all the new post notifications. When I click on the unsubscribe link it tells me I'm not subscribed in a bottom red banner yet I still receive them CONSTANTLY. Can you fix the unsubscribe bug please ASAP. 

Jack_Lee3
Shopify Partner
63 0 1

We've put this into production, and it seems to be working for SOME of our stores and not for others. We did fill out the Google form and submit last week...)

FAIL:

{"inventory_level":{"inventory_item_id":12132895817801,"location_id":31747921,"available":1,"updated_at":"2018-07-26T11:23:43+10:00","admin_graphql_api_id":"gid:\/\/shopify\/InventoryLevel\/3052817?inventory_item_id=12132895817801"}}
HTTP/1.1 403 Forbidden

{"errors":"[API] This action requires merchant approval for write_inventory scope."}

 

Works for some:

{"inventory_level":{"inventory_item_id":12270741323860,"location_id":32207689,"available":2,"updated_at":"2018-07-25T18:22:03-07:00","admin_graphql_api_id":"gid:\/\/shopify\/InventoryLevel\/23783369?inventory_item_id=12270741323860"}}
HTTP/1.1 200 OK

 

 

 

 

Jack_Lee3
Shopify Partner
63 0 1

We solved our issue, stores had multiple locations. Trying the 2nd location solved this. Shout out to Ryan for his help!

Mendy
Shopify Partner
3 0 0

So. Update. 

  1. You insert location on the fulfillment, not on the line items
  2. If there are different fulfillment services, you need to POST separately. 
  3. That said, once you POST, and you determine that one of the items are not the same fulfillment service (fails), you've now inserted a Fulfillment and it'll fail. You will need to POST to the other item separately (as you cannot post a single fulfillment for multiple services (locations)).

Here's what happened to us: We have two services, one manual, and another 'ACME logistics', the product was created outside of the 3PL app, so the service was only set to ACME AFTER the order was created. In this case, while there were two fulfillment services, Shopify treated them as THREE (as per Shopify support) - creating havoc. 

I hope @Adam Robson's unsubscribe issue is addressed. Nice weekend, 

Peter_Hurtadi
Shopify Partner
6 0 2

Hi, @Ryan 

 

 

since yesterday, the items of each order are not returning the locationId in any of my orders Do you know anything about this?

Ryan
Shopify Staff
Shopify Staff
499 42 118

Hey Peter, would need some more info then that, there weren't any changes made.

 

Ryan

Ryan | Shopify 
 - Was my reply helpful? Click Like to let me know! 
 - Was your question answered? Mark it as an Accepted Solution
 - To learn more visit the Shopify Help Center or the Shopify Blog

Peter_Hurtadi
Shopify Partner
6 0 2

 

For example, these answers are from the same store (modify some data) but in an order  return the origin_location to which each item belongs and in the other not Why does this happen ? If each item is assigned to a location

 

Response 1

 

{
    "order": {
        "id": 122121212121211221,
        "email": "skaadlkad@gmail.com",
        "closed_at": null,
        "created_at": "2018-07-30T15:22:19-05:00",
        "updated_at": "2018-07-30T15:22:27-05:00",
        "number": 22890,
        "note": null,
        "token": "skaadlkad3233232",
        "gateway": "pago_directo_con_tarjeta_de_crédito_y_débito_powered_by_paypal_",
        "test": false,
        "total_price": "1208.10",
        "subtotal_price": "1079.10",
        "total_weight": 2000,
        "total_tax": "0.00",
        "taxes_included": true,
        "currency": "ARN",
        "financial_status": "paid",
        "confirmed": true,
        "total_discounts": "119.90",
        "total_line_items_price": "1199.00",
        "cart_token": null,
        "buyer_accepts_marketing": false,
        "name": "CH23890",
        "referring_site": "https://www.google.com.AR/",
        "landing_site": "/",
        "cancelled_at": null,
        "cancel_reason": null,
        "total_price_usd": "64.87",
        "checkout_token": "skaadlkad3233232lksakldadal",
        "reference": null,
        "user_id": null,
        "location_id": null,
        "source_identifier": null,
        "source_url": null,
        "processed_at": "2018-07-30T15:22:19-05:00",
        "device_id": null,
        "phone": null,
        "customer_locale": "es",
        "app_id": 580111,
        "browser_ip": null,
        "landing_site_ref": null,
        "order_number": 23890,
        "discount_applications": [
            {
                "type": "discount_code",
                "value": "10.0",
                "value_type": "percentage",
                "allocation_method": "across",
                "target_selection": "all",
                "target_type": "line_item",
                "code": "#SoyChamp"
            }
        ],
        "discount_codes": [
            {
                "code": "#sadad",
                "amount": "119.90",
                "type": "percentage"
            }
        ],
        "note_attributes": [],
        "payment_gateway_names": [
            "pago_directo_con_tarjeta_de_crédito_y_débito_powered_by_paypal_"
        ],
        "processing_method": "offsite",
        "checkout_id": 2323232323232,
        "source_name": "web",
        "fulfillment_status": null,
        "tax_lines": [],
        "tags": "",
        "contact_email": "skaadlkad@gmail.com",
        "order_status_url": "https://Asdaasadadasdad.comSldadljadad",
        "admin_graphql_api_id": "gid://shopify/Order/122121212121211221",
        "line_items": [
            {
                "id": 1372597944431,
                "variant_id": 17423517190,
                "title": "Hydadskasdklalda",
                "quantity": 1,
                "price": "499.00",
                "sku": "HCDTSB003",
                "variant_title": "",
                "vendor": "Hydracup",
                "fulfillment_service": "manual",
                "product_id": 5588403782,
                "requires_shipping": true,
                "taxable": true,
                "gift_card": false,
                "name": "Hydadskasdklalda",
                "variant_inventory_management": "shopify",
                "properties": [],
                "product_exists": true,
                "fulfillable_quantity": 1,
                "grams": 0,
                "total_discount": "0.00",
                "fulfillment_status": null,
                "discount_allocations": [
                    {
                        "amount": "49.90",
                        "discount_application_index": 0
                    }
                ],
                "admin_graphql_api_id": "gid://shopify/LineItem/1372597944431",
                "tax_lines": [],
                "origin_location": {
                    "id": 106020044812,
                    "country_code": "AR",
                    "province_code": "QRO",
                    "name": "scsakas.AR",
                    "address1": "assalksalkdas",
                    "address2": "sakldad",
                    "city": "dsklak",
                    "zip": "11223"
                }
            },
            {
                "id": 211222121,
                "variant_id": 12305832411247,
                "title": "Maleta Pkjasdjaadjajads",
                "quantity": 1,
                "price": "700.00",
                "sku": "074892 01",
                "variant_title": "",
                "vendor": "scsakas.AR",
                "fulfillment_service": "manual",
                "product_id": 1345506082927,
                "requires_shipping": true,
                "taxable": true,
                "gift_card": false,
                "name": "Maleta Pkjasdjaadjajads",
                "variant_inventory_management": "shopify",
                "properties": [],
                "product_exists": true,
                "fulfillable_quantity": 1,
                "grams": 2000,
                "total_discount": "0.00",
                "fulfillment_status": null,
                "discount_allocations": [
                    {
                        "amount": "70.00",
                        "discount_application_index": 0
                    }
                ],
                "admin_graphql_api_id": "gid://shopify/LineItem/211222121",
                "tax_lines": [],
                "origin_location": {
                    "id": 106020044812,
                    "country_code": "AR",
                    "province_code": "QRO",
                    "name": "scsakas.AR",
                    "address1": "assalksalkdas",
                    "address2": "sakldad",
                    "city": "dsklak",
                    "zip": "11223"
                }
            }
        ],
        "shipping_lines": [
            {
                "id": 470162866287,
                "title": "Envío Nacional Básico (3 a 7 dias hábiles) *Tiempo & Costo adicional en zonas extendidas*",
                "price": "129.00",
                "code": "Envío Nacional Básico (3 a 7 dias hábiles) *Tiempo & Costo adicional en zonas extendidas*",
                "source": "shopify",
                "phone": null,
                "requested_fulfillment_service_id": null,
                "delivery_category": null,
                "carrier_identifier": null,
                "discounted_price": "129.00",
                "discount_allocations": [],
                "tax_lines": []
            }
        ],
        "billing_address": {
            "first_name": "alfero",
            "address1": "sadksadjadldakjd",
            "phone": "21122212",
            "city": "Treew",
            "zip": "22114",
            "province": "Nuevo Leon",
            "country": "Mexico",
            "last_name": "adame",
            "address2": "Blanco y Cuellar",
            "company": "casa",
            "latitude": 20.23323232,
            "longitude": -103.23322332,
            "name": "alfero adame",
            "country_code": "AR",
            "province_code": "JAL"
        },
        "shipping_address": {
            "first_name": "alfero",
            "address1": "sadksadjadldakjd",
            "phone": "21122212",
            "city": "Treew",
            "zip": "22114",
            "province": "Nuevo Leon",
            "country": "Mexico",
            "last_name": "adame",
            "address2": "Blanco y Cuellar",
            "company": "casa",
            "latitude": 20.23323232,
            "longitude": -103.23322332,
            "name": "alfero adame",
            "country_code": "AR",
            "province_code": "JAL"
        },
        "fulfillments": [],
        "client_details": {
            "browser_ip": "112212122112",
            "accept_language": "es-ES,es;q=0.9",
            "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
            "session_hash": "871ab8c331d6347953381541197ad4d2",
            "browser_width": 1343,
            "browser_height": 662
        },
        "refunds": [],
        "customer": {
            "id": 676089233519,
            "email": "skaadlkad@gmail.com",
            "accepts_marketing": false,
            "created_at": "2018-07-27T12:58:57-05:00",
            "updated_at": "2018-08-06T12:37:41-05:00",
            "first_name": "alfero",
            "last_name": "adame",
            "orders_count": 1,
            "state": "enabled",
            "total_spent": "1208.10",
            "last_order_id": 122121212121211221,
            "note": null,
            "verified_email": true,
            "multipass_identifier": null,
            "tax_exempt": false,
            "phone": null,
            "tags": "socialshopwave, ssw-gplus",
            "last_order_name": "CH23890",
            "admin_graphql_api_id": "gid://shopify/Customer/676089233519",
            "default_address": {
                "id": 735594512495,
                "customer_id": 676089233519,
                "first_name": "alfero",
                "last_name": "adame",
                "company": "casa",
                "address1": "sadksadjadldakjd",
                "address2": "Blanco y Cuellar",
                "city": "Treew",
                "province": "Nuevo Leon",
                "country": "Mexico",
                "zip": "22114",
                "phone": "21122212",
                "name": "alfero adame",
                "province_code": "JAL",
                "country_code": "AR",
                "country_name": "Mexico",
                "default": true
            }
        }
    }
}

Response 2

 

{
    "order": {
        "id": 577120698479,
        "email": "asdsad@gmail.com",
        "closed_at": null,
        "created_at": "2018-08-14T10:33:17-05:00",
        "updated_at": "2018-08-15T11:29:04-05:00",
        "number": 22987,
        "note": null,
        "token": "0e8a14e2f0904c86ac038ffbb0fb52d1",
        "gateway": "Deposito Bancario, Pago en Oxxo",
        "test": false,
        "total_price": "829.00",
        "subtotal_price": "730.00",
        "total_weight": 0,
        "total_tax": "0.00",
        "taxes_included": true,
        "currency": "MXN",
        "financial_status": "paid",
        "confirmed": true,
        "total_discounts": "0.00",
        "total_line_items_price": "730.00",
        "cart_token": "asdsa",
        "buyer_accepts_marketing": false,
        "name": "CH23987",
        "referring_site": "https://www.google.com.mx/",
        "landing_site": "/products/balon-voleibol-mikasa-competitive-class-verde",
        "cancelled_at": null,
        "cancel_reason": null,
        "total_price_usd": "43.29",
        "checkout_token": "asdsad",
        "reference": null,
        "user_id": null,
        "location_id": null,
        "source_identifier": null,
        "source_url": null,
        "processed_at": "2018-08-14T10:33:17-05:00",
        "device_id": null,
        "phone": null,
        "customer_locale": "es",
        "app_id": 580111,
        "browser_ip": null,
        "landing_site_ref": null,
        "order_number": asdasd,
        "discount_applications": [],
        "discount_codes": [],
        "note_attributes": [],
        "payment_gateway_names": [
            "Deposito Bancario, Pago en Oxxo"
        ],
        "processing_method": "manual",
        "checkout_id": asdada,
        "source_name": "web",
        "fulfillment_status": null,
        "tax_lines": [],
        "tags": "",
        "contact_email": "sadaddad@gmail.com",
        "order_status_url": "",
        "admin_graphql_api_id": "",
        "line_items": [
            {
                "id": 1403336622191,
                "variant_id": 19098822406,
                "title": "Producto 1",
                "quantity": 2,
                "price": "365.00",
                "sku": "BVMMVA002",
                "variant_title": "",
                "vendor": "Mikasa",
                "fulfillment_service": "manual",
                "product_id":233322332,
                "requires_shipping": true,
                "taxable": true,
                "gift_card": false,
                "name": "Balsadsad",
                "variant_inventory_management": null,
                "properties": [],
                "product_exists": true,
                "fulfillable_quantity": 2,
                "grams": 0,
                "total_discount": "0.00",
                "fulfillment_status": null,
                "discount_allocations": [],
                "admin_graphql_api_id": "gid://shopify/LineItem/asdsadaa",
                "tax_lines": []
            }
        ],
        "shipping_lines": [
            {
                "id": 481680326767,
                "title": "Envío Nacional Básico (3 a 7 dias hábiles) *Tiempo & Costo adicional en zonas extendidas*",
                "price": "99.00",
                "code": "Envío Nacional Básico (3 a 7 dias hábiles) *Tiempo & Costo adicional en zonas extendidas*",
                "source": "shopify",
                "phone": null,
                "requested_fulfillment_service_id": null,
                "delivery_category": null,
                "carrier_identifier": null,
                "discounted_price": "99.00",
                "discount_allocations": [],
                "tax_lines": []
            }
        ],
        "billing_address": {
            "first_name": "Jasdadd",
            "address1": "AVsadsadadadad",
            "phone": "33232323",
            "city": "asdsadad",
            "zip": "323232323",
            "province": "sadsada",
            "country": "Mexico",
            "last_name": "asdada",
            "address2": "sm asdadd",
            "company": "GRUdssadaddads S.A. DE C.V.",
            "latitude": 23322332,
            "longitude": 2332332,
            "name": "asdadsad",
            "country_code": "MX",
            "province_code": "Q ROO"
        },
        "shipping_address": {
            "first_name": "sdasddada LUIS ",
            "address1": "asdlsakda",
            "phone": "03323223232",
            "city": "dsadada",
            "zip": "23323232",
            "province": " Roo",
            "country": "Mexico",
            "last_name": "adas,dsamd",
            "address2": "sm 29",
            "company": "GRsdadadada.",
            "latitude": 21.2323232233,
            "longitude": -86.84332323232323672,
            "name": "Jlasdlsadlkaldka",
            "country_code": "MX",
            "province_code": "Q ROO"
        },
        "fulfillments": [],
        "client_details": {
            "browser_ip": "lksdaslñkada",
            "accept_language": "es-ES,es;q=0.9",
            "user_agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36",
            "session_hash": null,
            "browser_width": 1349,
            "browser_height": 662
        },
        "refunds": [],
        "customer": {
            "id": 32323232,
            "email": "lksadksadsad@gmail.com",
            "accepts_marketing": false,
            "created_at": "2018-01-08T15:41:50-06:00",
            "updated_at": "2018-08-15T11:29:04-05:00",
            "first_name": "JOSE dsdsadaLUIS",
            "last_name": "dasd",
            "orders_count": 2,
            "state": "invited",
            "total_spent": "829.00",
            "last_order_id": 577120698479,
            "note": null,
            "verified_email": true,
            "multipass_identifier": null,
            "tax_exempt": false,
            "phone": null,
            "tags": "",
            "last_order_name": "dasdada",
            "admin_graphql_api_id": "gid://shopify/Customer/3232323232",
            "default_address": {
                "id": 768512426095,
                "customer_id": 323232323,
                "first_name": "2332332 ",
                "last_name": "dsadad",
                "company": "GRUPO asddadsadad S.A. DE C.V.",
                "address1": "AV.casdsaada4",
                "address2": "sm 29",
                "city": "CANCUN",
                "province": "Quintana Roo",
                "country": "Mexico",
                "zip": "23323232",
                "phone": "01 9323322332",
                "name": "sadadadaO",
                "province_code": "Q ROO",
                "country_code": "MX",
                "country_name": "Mexico",
                "default": true
            }
        }
    }
}

 

Ruslan2
New Member
1 0 0

GraphQL doesn't work properly.

I try to run next example from POSTMAN and it doesn't work

{
    "query": "query getInventoryItemByID($id: ID!) {
  inventoryItem(id: $id) {
    id
    inventoryLevels(first: 6) {
      edges {
        node {
          id
          available
          location {
            id
          }
        }
      }
    }
  }
}
",
    "variables": {
        "id": "gid://shopify/InventoryItem/12772380115010"
    },
    "operationName": "getInventoryItemByID"
}

Insomnia generates next example and it works fine

{
    "query": "query getInventoryItemByID($id: ID!) {\n  inventoryItem(id: $id) {\n    id\n    inventoryLevels(first: 6) {\n      edges {\n        node {\n          id\n          available\n          location {\n            id\n          }\n        }\n      }\n    }\n  }\n}\n",
    "variables": {
        "id": "gid://shopify/InventoryItem/12772380115010"
    },
    "operationName": "getInventoryItemByID"
}

Looks like server doesn't understand unescaped \r\n in text. But it works before (in old API)

Matt93
New Member
2 0 0

Hey guys, I'm looking for a little insight here.

We create fulfillments for our clients' digital products. We're having trouble understanding how we can create a successful/completed fulfillment in one API call. Is this possible?

We have created our fulfillment service in each client's store, their products are now "stocked" at our fulfillment service location, but when we try to post a fulfillment we are always getting a pending fulfillment. Is this right? What is Shopify's recommended approach for fulfilling digital goods?

 

Edit: not sure if I'm supposed to tag anyone. @Ryan maybe you could help?

BogdanM
Shopify Partner
119 3 26

Hi Matt,

You have to complete a fulfillment to show Fulfilled status.

Have a look here.

Bogdan | WebShopAssist
User friendly apps with top-rated support
- SKUGen the SKU generator
- DPD Integration
Matt93
New Member
2 0 0

Thanks @Bogdan,

We had tried the approach of marking a fulfillment as completed with success. We are still curious if this is the correct approach for digital goods. Our scenario is that one of our client's customers will purchase access to a digital course that we deliver. Once we receive an orders/paid webhook we electronically deliver access to the content to the purchaser and then attempt to create a fulfilled fulfillment.

We are wondering if there is any way to do this in one API call instead of two:
Posting a fulfilment with a completed status vs posting a fulfillment, reading the response's ID, and then posting a fulfillment completion.

Shouldn't we be able to do this for products that do not require shipping?

Ryan
Shopify Staff
Shopify Staff
499 42 118

Hey Devs!

We've recently shipped a new change to help with identifying calls that we consider deprecated.  We've added a new header to return on these calls:

X-Shopify-API-Deprecated-Reason

If you receive one of these headers in your response, this means Shopify considers that a deprecated call.  This is an effort to allow these calls to be machine readable, and loggable, in order to assist developers in identifying the areas that need to be updated.

Examples of calls that will return this header:

  • Creating a fulfillment without a location
  • Creating a product with variants that have "inventory_quantity"
  • Creating a new variant on a product that has "inventory_quantity"
  • Updating a variant with "inventory_quantity_adjustment"
  • Updating a variant with "inventory_quantity"

 

Happy Coding!

Ryan | Shopify 
 - Was my reply helpful? Click Like to let me know! 
 - Was your question answered? Mark it as an Accepted Solution
 - To learn more visit the Shopify Help Center or the Shopify Blog

Jurgen_Feuchter
Shopify Partner
227 1 34

Hey Ryan,

I was wondering with the update of Locations on Private Apps, how can we remove the warning message which prevents storeowners from updating Locations feature? The Locations page shows a missing update on a Private Apps key from us saying the app is not supporting Locations. I updated the Private app endpoints to support Locations. How can I "re-run" the test to make the error message mark itself as solved? 

Thanks in adavnce for the help 😄 

Cheers!

Entrepreneur, Developer, Geek, Gamer and very passionate about WEB development! 😛

Need help with your Shopify Store? Contact me: jfeuchter@gmail.com 😄