Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Shopify API deprecations warning on order resource #1187

Closed
ghulamali16 opened this issue Jul 26, 2023 · 10 comments
Closed

Shopify API deprecations warning on order resource #1187

ghulamali16 opened this issue Jul 26, 2023 · 10 comments

Comments

@ghulamali16
Copy link

Issue summary

  • shopify_api version: 2022-10
W, [2023-04-18T23:05:05.653588 #108]  WARN -- : Deprecated request to Shopify API at orders/[ID].json, received reason: https://shopify.dev/changelog/property-deprecations-in-the-admin-api-order-and-lineitem-resource

Expected behavior

No Deprecation warnings upon requesting order resources

Actual behavior

https://shopify.dev/changelog/property-deprecations-in-the-admin-api-order-and-lineitem-resource
But when I go to https://shopify.dev/changelog/property-deprecations-in-the-admin-api-order-and-lineitem-resource I'm not using any of the attributes here.

I'm guessing/hoping this is to do with the API wrapper itself requesting these fields when it sets data from the API, and triggering its own deprecations but it would be good to get confirmation of that as it's super confusing.

@macwilko
Copy link

macwilko commented Aug 3, 2023

I am getting this too

@ghulamali16
Copy link
Author

I am getting this too

@mattsrobot were you able to resolve this? or maybe find a workaround for this?

@jaspertandy
Copy link

I'm also still seeing this, and it's just coming from a pretty simple call to:

      response = ShopifyAPI::Order.all(
        session: session,
        financial_status: 'paid,partially_paid,partially_refunded',
        updated_at_min: after,
        status: fetch_status,
        test: ENV['ENVIRONMENT'] === 'development',
      )

Presumably Order.all is doing some stuff internally that is going to be deprecated but it would be nice to know that Shopify has this in-hand and this isn't just going to break at some point!

@link82
Copy link

link82 commented Nov 1, 2023

Does anybody found a solution?

@link82
Copy link

link82 commented Nov 1, 2023

Anyway it doesn't seems to be related to the gem.
I made a simple test using Faraday and I got the same issue.

    def api_rest_url
      "https://#{shop.shopify_domain}/admin/api/#{shop.api_version}" # using 2023/10 at the moment
    end

    def shopify_get(session, resource, id = nil, params = {})
      conn = Faraday.new(
        url: api_rest_url,
        headers: {
          'Content-Type' => 'application/json',
          'X-Shopify-Access-Token' => session.access_token
        }
      )
    
      response = conn.get("#{resource}/#{id}.json?fields=id,name")
    end

Output:

#<Faraday::Response:0x00000001111bc288 @env= #<struct Faraday::Env method=:get, request_body=nil, url=#<URI::HTTPS https://corrispettivi-dev-store.myshopify.com/admin/api/2023-10/orders/5296173809801.json?fields=id%2Cname>, request=#<struct Faraday::RequestOptions params_encoder=nil, proxy=nil, bind=nil, timeout=nil, open_timeout=nil, read_timeout=nil, write_timeout=nil, boundary=nil, oauth=nil, context=nil, on_data=nil>, request_headers={"Content-Type"=>"application/json", "X-Shopify-Access-Token"=>"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", "User-Agent"=>"Faraday v2.7.11"}, ssl= #<struct Faraday::SSLOptions verify=true, verify_hostname=nil, ca_file=nil, ca_path=nil, verify_mode=nil, cert_store=nil, client_cert=nil, client_key=nil, certificate=nil, private_key=nil, verify_depth=nil, version=nil, min_version=nil, max_version=nil>, parallel_manager=nil, params=nil, response=#<Faraday::Response:0x00000001111bc288 ...>, response_headers= {"date"=>"Wed, 01 Nov 2023 10:58:17 GMT", "content-type"=>"application/json; charset=utf-8", "transfer-encoding"=>"chunked", "connection"=>"keep-alive", "x-sorting-hat-podid"=>"136", "x-sorting-hat-shopid"=>"55695999113", "vary"=>"Accept-Encoding", "referrer-policy"=>"origin-when-cross-origin", "x-frame-options"=>"DENY", "x-shopid"=>"55695999113", "x-shardid"=>"136", "x-stats-userid"=>"", "x-stats-apiclientid"=>"6389815", "x-stats-apipermissionid"=>"383167398025", "x-shopify-api-version"=>"2023-10", "http_x_shopify_shop_api_call_limit"=>"1/40", "x-shopify-shop-api-call-limit"=>"1/40", "x-shopify-api-deprecated-reason"=>"https://shopify.dev/changelog/property-deprecations-in-the-admin-api-order-and-lineitem-resource", "strict-transport-security"=>"max-age=7889238", "server-timing"=>"processing;dur=89, cfRequestDuration;dur=230.000019", "x-shopify-stage"=>"production", "content-security-policy"=> "default-src 'self' data: blob: 'unsafe-inline' 'unsafe-eval' https://* shopify-pos://*; block-all-mixed-content; child-src 'self' https://* shopify-pos://*; connect-src 'self' wss://* https://*; frame-ancestors 'none'; img-src 'self' data: blob: https:; script-src https://cdn.shopify.com https://cdn.shopifycdn.net https://checkout.shopifycs.com https://api.stripe.com https://mpsnare.iesnare.com https://appcenter.intuit.com https://www.paypal.com https://js.braintreegateway.com https://c.paypal.com https://maps.googleapis.com https://www.google-analytics.com https://v.shopify.com 'self' 'unsafe-inline' 'unsafe-eval'; upgrade-insecure-requests; report-uri /csp-report?source%5Baction%5D=show&source%5Bapp%5D=Shopify&source%5Bcontroller%5D=admin%2Forders&source%5Bsection%5D=admin_api&source%5Buuid%5D=a86ae15c-12b0-4978-9f4a-016c8f8f99dd", "x-content-type-options"=>"nosniff", "x-download-options"=>"noopen", "x-permitted-cross-domain-policies"=>"none", "x-xss-protection"=> "1; mode=block; report=/xss-report?source%5Baction%5D=show&source%5Bapp%5D=Shopify&source%5Bcontroller%5D=admin%2Forders&source%5Bsection%5D=admin_api&source%5Buuid%5D=a86ae15c-12b0-4978-9f4a-016c8f8f99dd", "x-dc"=>"gcp-europe-west8,gcp-us-east1,gcp-us-east1", "content-encoding"=>"gzip", "x-request-id"=>"a86ae15c-12b0-4978-9f4a-016c8f8f99dd", "cf-cache-status"=>"DYNAMIC", "report-to"=> "{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v3?s=f4v4w54RvljMj99wfYeCcF7pELu1g97CehnjMWOTCr7YVVsCbhAFMp7kbrjRIXMyluqf8w3wHuRs5UNY8s1z8NBkkT9rs8y3XgJp1jD2Hh9zotCfENsY%2Fryq3lSv%2BgNrEABPniQ8JQTWWwQO2nkXSAnFOjxlb0I%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}", "nel"=>"{\"success_fraction\":0.01,\"report_to\":\"cf-nel\",\"max_age\":604800}", "server"=>"cloudflare", "cf-ray"=>"81f39f2c7852bad9-MXP", "alt-svc"=>"h3=\":443\"; ma=86400"}, status=200, reason_phrase="OK", response_body="{\"order\":{\"id\":5296173809801,\"name\":\"#1044\"}}">, @on_complete_callbacks=[]>

As you can see I received only id and name fields
response_body="{\"order\":{\"id\":5296173809801,\"name\":\"#1044\"}}"

But it keeps complaining that I am using deprecated API calls:
"x-shopify-shop-api-call-limit"=>"1/40", "x-shopify-api-deprecated-reason"=>"https://shopify.dev/changelog/property-deprecations-in-the-admin-api-order-and-lineitem-resource",

@tarun-pacifica
Copy link

Getting the same issue just FYI & it's March 2024, doesnt seem to have been addressed...

@lizkenyon
Copy link
Contributor

I am going to close this issue.

As @link82 pointed out this is not related to the gem specifically. If you make an API call to a REST resource with deprecated fields, it will return to you a warning about the deprecated fields.
This gem then forwards that error message.

If you are not using those fields then you can ignore the message.

@jaspertandy
Copy link

Personally I don't think that's a satisfactory result - on a sufficiently-sized codebase it results in way too many false-negatives. It would be far better to throw these deprecation errors from attribute getters, rather than just an API call that included them. It essentially makes deprecation errors absolutely useless - can we ignore them? Can't we? Who knows!

@lizkenyon
Copy link
Contributor

Hey @jaspertandy

I think that is very fair feedback.

I have brought this up with the API team, to resolve this at the API level, the API shouldn't return warnings if you are not affected but at this time I have no updates to pass along.

We don't really have a good way to solve this at the gem level at this time. As a we don't know what fields are deprecated. We would need to get that information into the library first. I will reflag with the product team about getting that information into the library, as this is something we have discussed in the past.

@jaspertandy
Copy link

Completely understand @lizkenyon - I wasn't expecting an immediate solution and I know it's not a simple problem (otherwise Shopify probably would have done it long ago!). I also appreciate that it's not a very glamourous problem to work on, but I do appreciate you and the team reconsidering it.

On another service it wouldn't be such a problem but Shopify's API moves very quickly and we need to be able to trust and react to those deprecations so we don't get stung by them!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants