amzn / selling-partner-api-models

This repository contains OpenAPI models for developers to use when developing software to call Selling Partner APIs.
Apache License 2.0
579 stars 730 forks source link

I would just like to say that the Tech Arch for this SP-API should be sent out to space on the next Bezos space mission and to be left out there! #209

Closed nrogers805 closed 4 months ago

nrogers805 commented 2 years ago

This is the worst API I have ever had to deal with and I am sure most will agree

The documentation is the worst - abysmal!

Even the new videos are atrocious - repeat - repeat - repeat - just wasting everyone's time !!

Who is in charge of this bloody mess!!!

sungolivia commented 2 years ago

Hey @nrogers805 I would like to say thank you for taking the time to give us feedback! Now, was there anything in particular you would like to suggest that we can take action on? If the feedback can be bit more specific, it would be super helpful for us on what and where to improve.

Were you running into particular issue or an error when you were trying out the SP API? If so, can you describe them?

Also, we got new documentation websitewith easier navigation and discovery, check it out!

ericblade commented 2 years ago

It's a direct port of the old API, for the most part, to a new transport mech/protocol, so it's got a lot of baggage with it. The newer pieces of it (thank you for adding the new pieces that we have been begging for in the old API for years...) are in much better shape, and the Use Case documents are definitely an improvement.

My biggest complaint is mostly that while there are many examples for individual function usage, there's very little in the way of explaining common operations that would involve multiple API calls. Like, a big one, would be, what is, for example, the flow of calls that doing something like the existing SellerCentral workflow for putting together an Inbound FBA shipment, from start to end?

No clue. I've been using the previous API for years, and haven't managed to yet figure out what all is necessary to do that, and it hasn't really changed at all in the new API.

However, basically most of the documentation beyond "how do I get started?" seems to already assume that you know how to use all of it, and what it all does, and means. The documentation is, outside of the new Use Case documents, extremely thin in what it says.

chapmanjw commented 2 years ago

@ericblade My team focuses primarily on the listings and catalog related APIs. We are looking to build a more comprehensive guide on how to compose the various definitions, listings, catalog, etc., APIs to build complete listings workflows. We've held off somewhat on putting this out as we have been slowly launching all of the separate APIs needed to do that. From your perspective, are there common listings workflows that you think we should target first?

There are some obvious ones: "What are all the steps to create a listing for an item already in Amazon's catalog?", "What are the steps for creating a new item in Amazon's catalog?", etc. Are there any more niche workflows (listings-related) that we should focus on in our first go at that documentation?

ericblade commented 2 years ago

I honestly don't know the answer to that -- my applications currently use mws for catalog/pricing info and reports queries, and spapi for eligibility and restrictions info. I've not done anything with listings, due to the relatively complexity and difficulty in using MWS for that.

For listing, i literally have a button that opens the sellercentral page. Not ideal, especially since sellercentral's UI is pretty awful for adding things, but until the Listing Restrictions API was made available with SPAPI, it was basically the only way to work that I could find -- since the previous system would not present any difficulty with listing items that were restricted, and you'd only know when you looked in sellercentral and got notices that your items weren't available for sale. The only way to know that previously, was to pipe the user through sellercentral's listing process.

I just looked into updating my Reports flow to use SPAPI, and found it to be .. lacking. In MWS, you can get a listing of available reports with no limitations, to present to the user. In SPAPI, you have to select a maximum of 10 different kinds of reports of the available apparently dozens to hundreds of kinds of reports, so the app has to make some decisions or allow the user to make some decisions about what they want to see before we can even query w hat is available to see, which is far less than ideal. (it would be ok for a workflow where you want to request a specific kind of report, wait for it to exist, then go get it and display it, but there are plenty of auto-generated reports that exist that you might have an interest in seeing)

So, to answer the question -- again, I really don't know. I'd like to be able to support listing directly from my application, and I'd also like to be able to support creating FBA Inbound shipments from my application -- these are the two worst workflows on Seller Central (and unfortunately, the Inbound APIs appear to exist to support exactly the workflow that Seller Central presents, rather than allowing us to create a better implementation) and so I think myself and my users would welcome major improvements to that. There are other applications out there that have significantly improved FBA workflow, so it's definitely possible.

So, what I'd like to have answered -- how do we list an existing catalog item, how do we create a new catalog item, and how do we put together a FBA Inbound? Rather than just a summary of the various function calls, and their parameters, a document that shows how we actually use them together would be fantastic.

(also, a legit sandbox environment would be fantastic, i don't know if any work has been performed on that .. those of us building applications risk seriously messing up our own and our users inventories if we mess up a function call ... which is another reason why i've tended to keep my API calls to the "query" side rather than the "update" side)

ghaliano commented 2 years ago

@nrogers805 i managed to get it to work after reading the documentation, missing a single step can lead to a verbose access denied message, maybe errors should be more explicit,but regarding your message,blaming is easy, this api for me is an opportunity

nrogers805 commented 2 years ago

@nrogers805 i managed to get it to work after reading the documentation, missing a single step can lead to a verbose access denied message, maybe errors should be more explicit,but regarding your message,blaming is easy, this api for me is an opportunity

Yes, I have got it to work - but the point is how long did it take us all to get an API to 'work' !

Its the worst API I have worked with with the worst documentation and the worst support - simple :-)

Any other API take as long to get 'working' ? I bet the answer is no, most API's require simple OAuth protocol and you should be up and running with your first call in minutes - not weeks or months but not with stupid process though

GrzegorzRussek commented 1 year ago

I should add that there is no instruction what so ever how to set this up with dotnet.

smargoli2 commented 1 year ago

@chapmanjw , can you please update the catalog json model to reflect the expected input for get catalog items (/catalog/2022-04-01/items)? I am supplying all the documented request parameters but getting 'Input mismatch' error.

CreateWithCoding commented 1 year ago

I agree with the OP on this at least in regards to the Vendor Central Retail side of the API & Docs. It's been an absolute nightmare working with it the past 1 year. I should have already had this programmed for my long time friend and client, months ago.

(At least I do have the PO acceptance automated. But the Shipping Confirmation is a joke and a half in a bad way in my opinion)

The Docs will say one thing and in reality it isn't going to work. Check out the Docs, the error and my code below to see what I mean. The AMZNCC is supposed to be generated by Amazon not me. All I am supposed to provide is the fact I want to use the AMZNCC and then Amazon provides the number for it. That is how my friend has been doing it manually for years. (This type of thing constantly happens, causing months of delays. It shouldn't be this way. ):

AMZNCC = Amazon Container Code - a substitute for a SSCC that is generated by Amazon for small vendors and associated with a pallet/carton label. - https://developer-docs.amazon.com/sp-api/docs/vendor-shipments-api-v1-reference#submitshipmentconfirmationsrequest

Exception when calling VendorShippingV1Api->submitShipmentConfirmations: [400] {
  "errors": [
    {
      "code": "InvalidInput",
      "message": "The content of element \u0027cartonIdentifier\u0027 is not complete. One of \u0027{containerIdentificationNumber}\u0027 is expected.",
      "details": ""
    }
  ]
}
          "cartons" => [
            [
                  "cartonIdentifiers" => [
                    [
                      "containerIdentificationType" => "AMZNCC",
                    ] 
                  ],

                  "cartonSequenceNumber" => "001",
                  "items" => [
                    [
                      "itemReference" => "001",
                      "shippedQuantity" => [
                        "amount" => (int) 1,
                        "unitOfMeasure" => "Eaches",
                        'unitSize' => 1,

                      ],
                      'itemDetails' => [
                        'purchaseOrderNumber' => '' // po removed for this github post
                      ],
                    ]
                  ]
          ]
          ]
supoman-service commented 1 year ago

Amazon API programmers are the most garbage apes I've ever seen, a lot of idiots brain-dead write code and design, fucking brainless, many interfaces are the same as mentally retarded, even elementary school students are not as good as writing, fuck your mother, what a comparison

ericblade commented 1 year ago

@chapmanjw dunno if you're still out here... but...

something I'd really really like to get noticed, is that you should NEVER EVER work with money using floating point.

Most all of the Amazon calls return floating point data for money, and it's obvious because every now and then you'll receive things with prices that are like 10.000000000018 or some complete garbage like that. Also tends to affect several other fields that probably never should be floating point either.

But, doing anything with FINANCE the very first rule is you never EVER use floating point.

If that requires an overhaul on Amazon's end, it needs to be fixed.

nllllnn commented 8 months ago

I agree with the OP on this at least in regards to the Vendor Central Retail side of the API & Docs. It's been an absolute nightmare working with it the past 1 year. I should have already had this programmed for my long time friend and client, months ago.

(At least I do have the PO acceptance automated. But the Shipping Confirmation is a joke and a half in a bad way in my opinion)

The Docs will say one thing and in reality it isn't going to work. Check out the Docs, the error and my code below to see what I mean. The AMZNCC is supposed to be generated by Amazon not me. All I am supposed to provide is the fact I want to use the AMZNCC and then Amazon provides the number for it. That is how my friend has been doing it manually for years. (This type of thing constantly happens, causing months of delays. It shouldn't be this way. ):

AMZNCC = Amazon Container Code - a substitute for a SSCC that is generated by Amazon for small vendors and associated with a pallet/carton label. - https://developer-docs.amazon.com/sp-api/docs/vendor-shipments-api-v1-reference#submitshipmentconfirmationsrequest

Exception when calling VendorShippingV1Api->submitShipmentConfirmations: [400] {
  "errors": [
    {
      "code": "InvalidInput",
      "message": "The content of element \u0027cartonIdentifier\u0027 is not complete. One of \u0027{containerIdentificationNumber}\u0027 is expected.",
      "details": ""
    }
  ]
}
          "cartons" => [
            [
                  "cartonIdentifiers" => [
                    [
                      "containerIdentificationType" => "AMZNCC",
                    ] 
                  ],

                  "cartonSequenceNumber" => "001",
                  "items" => [
                    [
                      "itemReference" => "001",
                      "shippedQuantity" => [
                        "amount" => (int) 1,
                        "unitOfMeasure" => "Eaches",
                        'unitSize' => 1,

                      ],
                      'itemDetails' => [
                        'purchaseOrderNumber' => '' // po removed for this github post
                      ],
                    ]
                  ]
          ]
          ]

Hi @CreateWithCoding did you happen to figure out the correct way to generate AMZNCC to fill the request payload? thanks

CreateWithCoding commented 8 months ago

I agree with the OP on this at least in regards to the Vendor Central Retail side of the API & Docs. It's been an absolute nightmare working with it the past 1 year. I should have already had this programmed for my long time friend and client, months ago. (At least I do have the PO acceptance automated. But the Shipping Confirmation is a joke and a half in a bad way in my opinion) The Docs will say one thing and in reality it isn't going to work. Check out the Docs, the error and my code below to see what I mean. The AMZNCC is supposed to be generated by Amazon not me. All I am supposed to provide is the fact I want to use the AMZNCC and then Amazon provides the number for it. That is how my friend has been doing it manually for years. (This type of thing constantly happens, causing months of delays. It shouldn't be this way. ): AMZNCC = Amazon Container Code - a substitute for a SSCC that is generated by Amazon for small vendors and associated with a pallet/carton label. - https://developer-docs.amazon.com/sp-api/docs/vendor-shipments-api-v1-reference#submitshipmentconfirmationsrequest

Exception when calling VendorShippingV1Api->submitShipmentConfirmations: [400] {
  "errors": [
    {
      "code": "InvalidInput",
      "message": "The content of element \u0027cartonIdentifier\u0027 is not complete. One of \u0027{containerIdentificationNumber}\u0027 is expected.",
      "details": ""
    }
  ]
}
          "cartons" => [
            [
                  "cartonIdentifiers" => [
                    [
                      "containerIdentificationType" => "AMZNCC",
                    ] 
                  ],

                  "cartonSequenceNumber" => "001",
                  "items" => [
                    [
                      "itemReference" => "001",
                      "shippedQuantity" => [
                        "amount" => (int) 1,
                        "unitOfMeasure" => "Eaches",
                        'unitSize' => 1,

                      ],
                      'itemDetails' => [
                        'purchaseOrderNumber' => '' // po removed for this github post
                      ],
                    ]
                  ]
          ]
          ]

Hi @CreateWithCoding did you happen to figure out the correct way to generate AMZNCC to fill the request payload? thanks

Hi @nllllnn No I didn't. I stopped programming the Shipping and Invoicing. The PO acceptance works fine. I invested an unbelievable amount of time on this for Vendor. I think the Seller Central would be simple compared to Vendor as the Docs and internet content for it are vast compared to Vendor.

I wish you the best in figuring it out. I for one, am done with Vendor programming.

github-actions[bot] commented 4 months ago

This is a very old issue that is probably not getting as much attention as it deserves. We encourage you to check if this is still an issue after the latest release and if you find that this is still a problem, please feel free to open a new issue and make a reference to this one.

github-actions[bot] commented 4 months ago

closed for inactivity