Differences Between Bonapitit and the eBay API
Note that Bonanza is in no way affiliated with or endorsed by eBay.
When we were designing Bonapitit, a primary goal of ours was to embrace the reality that there are already hundreds of applications that work perfectly well with eBay's API. Rather than reinventing the wheel, we made the choice that, as much as possible, we would implement our API in a way that minimized the effort needed to make an eBay application become a Bonanza application.
As a base, you will notice that most all of our API calls have the same names and input parameters as calls that exist within the eBay API. While we have far fewer calls overall than they do, what we realized when examining their API was that many calls could be consolidated into far fewer calls with no loss in functionality. Our effort ultimately led us to the small collection of souped up API calls that you see in the Bonapitit today.
But enough philosophy, here are some of the concrete differences to keep in mind if you're translating an eBay application to work with Bonapitit:
Differences that potentially require code modifications
- The HTTP headers and URL you're submitting to are different. For nonsecure calls, we need only your Bonanza dev_id to be passed along in the HTTP headers (as opposed to dev id, cert id, and app id, like eBay).
- All Bonanza output is JSON formatted. There are two and a half reasons we made this choice. The first reason is that it is much faster to generate JSON data than XML, since its format is basically equivalent to an existing data structure -- the hash -- which is what most XML ends up being parsed into anyway. The second reason is that it is more arguably consistent (and thus, easier to parse) than XML, because nodes don't have an arbitrary number of potential attributes like XML. The last half reason is that, at this point, all modern computer languages have JSON libraries available that can convert between JSON and hashes with ease. That said, the Bonanza API can theoretically take XML as input, but you should keep in mind that 1) this is not "officially" supported and 2) our output will still be JSON, so you'll need to get JSON-compatible somewhere in your framework.
- Bonanza output/input does not use embedded attributes within nodes. As a result of the previous item, we don't do things like embed an item count in the SearchResult node, as the eBay API occasionally did. This isn't possible with JSON, since it is inconsistent with the simpler name/value design of JSON.
- Variable and method names consistently start lower-cased. eBay's older API calls started with UpperCaseVariableNames, whereas their newer API calls (like findItemsByKeywords) start lower-cased. For the sake of consistency, we opted to go with the newer convention for all API method calls. If this proves to be a big hassle for developers, we may allow a "compatibility-mode," where we allow variable names to start upper- or lower-cased.
- Error framework differences. Our error codes & categories are different than eBays, so if your code is built to expect/respond to certain types of errors, it will need to be revised.
Other differences
- In general, we have fewer parameters than eBay. We'll ignore any extra parameters you send us, so this shouldn't cause any incompatibility, but it may cause results that aren't what you expect. We also have some return values that eBay doesn't, such as Bonanza information and seller's real time chat availability.
- You'll probably find that 98% of our category IDs are similar to eBays, but there will be occasional differences. We hope to soon implement methods to retrieve our category and itemSpecifics information.