open-api icon indicating copy to clipboard operation
open-api copied to clipboard

[BUG]: The updateListing endpoint not changing materials for certain products

Open yovasx2 opened this issue 2 years ago • 4 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

Describe the bug

I am trying to set materials for a listing via updateListing endpoint but materials are not modified

Steps to reproduce

hit
https://openapi.etsy.com/v3/application/shops/10779725/listings/540678554 with

{ "materials": ["Gio"] }

The response is { ..., "materials": ["Ceramic"], ... }

Expected behavior

Modify materials with the value provided in the payload

Additional context

The same happens for a bunch of active listings belonging to this shop: 10779725

This is working via API: https://www.etsy.com/listing/532247579/dog-dad-fathers-day-gift-for-dog-dad?click_key=c2fe27a7a897be98bb30e7d11880194622fe8d00%3A532247579&click_sum=53baedac&ga_search_query=DOG%2BDAD%252C%2BFATHER%2526%252339%253BS%2BDay%2BGift%2Bfor%2BDog%2BDad%252C%2BFunny%2BDog%2BDad%2BMug&ref=shop_items_search_1

Seems to be random

yovasx2 avatar May 01 '22 22:05 yovasx2

We are looking into this. I am able to duplicate it with one listing but not with others. It's like it's locked to Ceramic on this one listing. Will let you know when we can figure it out.

etsyachristensen avatar May 02 '22 17:05 etsyachristensen

I am encountering this as well. When I submit new materials, the materials show up correctly in the Etsy admin UI, but the API still returns incorrect materials for the Listing->materials field. For my products, it appears to be somehow tied to the "General Material" property that is also attached to the listing. For products that have a "General Material" (property id 47626760362) specified, the API seems to be returning the "General Material" instead of the comma-delimited list of materials.

sowsinsk avatar Aug 12 '22 17:08 sowsinsk

@yovasx2 The taxonomy properties at least for category 1062 (mugs) are set to a specific list of materials. That taxonomy property is set to supports_variations as false. This means that for the property on the listing, you can only use the possible values.

@sowsinsk I'm not sure what taxonomy category you are using. I can't really look it up by a property value.

etsyachristensen avatar Aug 24 '22 21:08 etsyachristensen

@etsyachristensen I'll try and clarify what's happening on our end.

When we PUT to https://openapi.etsy.com/v3/application/shops/{{etsy_shop_id}}/listings/1257453708 with the payload "materials=stone,onyx", the update succeeds and our new materials list appears in Etsy's admin console:

Screen Shot 2022-08-25 at 3 22 26 PM

However, if we then GET https://openapi.etsy.com/v3/application/listings/1257453708 (to pull a fresh copy of the listing), the updated materials are not shown in the result. Instead, it shows a single "Gemstone" value:

Screen Shot 2022-08-25 at 3 24 22 PM

Other things to note:

  • this listing is taxonomy id 6238
  • the result of the update (PUT) operation shows the same incorrect listing object as the fresh GET request does.
  • taxonomy 6238 has a "General material" property with one of the possible_values being "Gemstone". This is the value that is currently selected for that property on the listing above. So one possibility is that the getListing call (and updateListing result) are showing the "General material" property where we would expect the array of Listing->materials to be.

Thanks for looking into it!

sowsinsk avatar Aug 25 '22 19:08 sowsinsk

@yovasx2 and @sowsinsk - Sorry it took so long to get to the bottom of this one. There was a change made some time back that added a new property to some taxonomies. the new property is "General Material". The intent was that this would replace the "materials" on the listing object, but instead it ended up becoming just another property. So if you want to manage the "General Material" you can do so with the updateListingProperty endpoint. We've now adjusted the get listing endpoints to return the materials as the array of strings as it should be.

etsyachristensen avatar Sep 13 '22 13:09 etsyachristensen

This is working perfectly, thx for fixing it, @etsyachristensen you are on a roll

yovasx2 avatar Sep 21 '22 01:09 yovasx2