Blog
Category: Developers
Developers API 2.0 Changes
In the coming weeks we will release version 2.0 of our API. Version 2.0 includes changes to the default behavior of our API. Developers please check our post on the changes: MerchantOS API Version 2.0.
If you don’t know what an API is; ignore this and carry on.
MerchantOS API Changes
It’s been one year since we first introduced our API. It’s taken a lot of work to get where we are and it will take even more to get where we want to go with our API. We’ve seen ever increasing use of our API for external integrations like Perkville and internal projects like adding new inventory and generating packing lists. We wouldn’t have been able to make many of the improvements listed below without the valuable feedback of our API users. Thank you for your feedback and suggestions.
We are proud to annouce some changes and improvements to our API that are coming in our next release. Here is a quick overview of what is coming.
API Errors Returned in the Requested Format
Now when the API encounters an error instead of returning an html error page it will return error information in the format that was selected in the request (XML or JSON). This should allow for better error handling by client applications.
Fixes to API Datetimes
There was a bug that was causing some datetimes in the API to be returned incorrectly. Datetimes are now returned as GMT corrected for the timezone set in account.
Add Category and Tags to Receipt Template Items
We had a request to load the Item Category and Tags on the XML returned in the receipt template. This change will give access to those values to people using custom receipt templates.
Load Customer and Employee on Workorders
Another request we had was to load Customer and Employee information on returned Workorder objects. This gives access to the Customer name and address and Employee details for a Workorder without having to make more requests.
Sale Write Access
The biggest change that we have made is open up write access to Sales via the API. This is an important step forward for our API as it exposes more of the functionality of our application via our API. There are some important caveats to the functionality that we have exposed:
- Refunds and Returns are not yet supported
- Sales can be Archived (using the Delete method) or Completed, but they cannot be Unarchived or Uncompleted
- We have made every effort to fully test Sale write access via the API, but proceed with caution. If you find an error or discrepancy please contact us and let us know so we can correct it.
We still have plenty of work to do to improve our point of sale software API, including improving performance and exposing write access to more objects. We’re excited about these changes as they allow us to make big improvements to our product in the future.
If you have an API question, comment, suggestion or issue feel free to contact Nate at nate@merchantos.com.
API Updates
We’ve been getting lots of great feed back about our API. There are several projects that have been using it and we’ve been working with them to answer their questions and solve some problems that they have been running into.
In our latest release we’ve made a few adjustments to how the API works. None of these changes should break compatibility.
Reduced API Rate Limit Penalty
We had a penalty included in our API for when an application went over their call limit. We had found that this penalty was too harsh and we’ve reworked it to allow applications using our API to hit the call limit occasionally without penalizing them.
Return 503 When Over Rate Limit
Previously we had been returning a 500 error when an application went over it’s call limit. We’ve changed that to a 503 Service Unavailable error as that better reflects the error.
JSON input and output
We’ve also been working on adding JSON input and output for requests. Previously we could output JSON, but now we can accept JSON for requests that require a request body.
Disabled WWW-Authenticate header for AJAX Requests
If you are sending an AJAX request we will no longer be sending the WWW-Authenticate header as this causes UI issues with browsers. All other clients will still receive the WWW-Authenticate header when their request could not be authenticated.
Setting a Default Limit on Listing Requests
Previously we did not page results by default. This was causing issues with very large result sets. Now listing requests (such as requesting all items) will by default return 100 objects per request. This behavior can be over-ridden using the limit and offset query parameters (see the API search manual page: https://manual.merchantos.com/index.php/API_Searching). We are also returning the total count of objects, the current offset and limit for a request as attributes on the outer object tag when we automatically limit a request.
Tagging
We have added the ability to write tags through our API. Objects supporting tags (currently only Items) will have a Tags element containing the tags on the object if there are any. The count of the tags will be returned as an attribute of the Tags element.
Tags can be added to an Object by adding xml similar to below:
<Tags>
<Tag>
<name>foobar</name>
</Tag>
</Tags>
The tag does not have to already exist in the account you are accessing, it will be generated when your object is submitted.
All Tags can be accesses through the new Account/<AccountNumber>/Tag endpoint. This will show you how many tags there are as well as what objects are associated with that tag.
Bug fix to IN queries
We fixed a bug that was preventing queries with the IN search operator from executing properly. Queries like the following should now execute:
https://api.merchantos.com/Account/<AccountNumber>/Item?itemID=IN,[2,4,6,8]
More Improvements to Come!
We’re open to your feed back. If you have any questions about the changes we’re introducing please feel free to contact us. If you are having a problem with our API let us know and we will work with you to resolve it. Thanks again to all of the developers using our API for their valuable feedback. We’re working on even more improvements and we will post again when they are released.
Developer Digest
Posted on September 1, 2011 at 5:53 pm by Justin Laing
This month we check in with Vice President of Engineering Nathan Horter. Nate’s primary job is to make sure that your vendors are seamlessly integrated with MerchantOS, so as to cause you as little pain as possible. Nate also works on the back end infrastructure of our software, ensuring that everything is running smoothly behind the scenes.
What are you working on lately that customers might be affected by?
I’m currently working on overhauling our Shopify integration to improve it’s efficiency and squash some bugs. There shouldn’t be a huge difference in functionality once this update is released, but we will have solved most of the bugs that people have reported to us about the Shopify integration.
I’m also working on fleshing out some missing functionality in our API and starting on implementing webhooks. This will add Sale write capability to our API, which is a much needed feature for several integrations people are working on. Webhooks will allow our users to send notifications from our system to other web based services when certain actions are taken (like when an item is saved, or a transaction is completed, etc).
What’s your big idea for the future (that you’re willing to share)?
The biggest thing we’re working toward right now is separating the backend data (the numbers, and information stored in our system) from the front end representation (the experience that our users have interacting with the system). This allows us to be more flexible in creating our front end design and gives our users the opportunity to adjust the front end to their needs more easily. It’s a slow process, but it means that our software will become more scalable, flexible, and robust.
What is one thing you want every customer to know about you?
I’m always interested in helping our users get their vendors integrated with our system. It usually works best if a retailer talks to the vendor about integrating with MerchantOS. It’s difficult for us to get our foot in the door and convince them that integrating is in everyone’s best interest. Having a retailer, who does business with them, ask them to integrate makes more of an impact. If you’ve talked with a vendor and they are interested in integrating, have them contact me at nate@merchantos.com or 866-554-2453 ext. 95.
Ivan the Developer
Posted on June 22, 2011 at 4:04 pm by Justin Laing
This month we catch up with founder and CEO, Ivan Stanojevic to get the inside scoop on the behind the scenes work he does to keep MerchantOS software ahead of the competition.
First off, what hats do you wear when it comes to software development?
IVAN: My two main roles with the product are making sure it’s always available to our customers, and keeping each new release in line with our vision. I don’t spend any time writing code directly used in our software.
We have a growing infrastructure of servers that provide our web based service to our customers. I keep that infrastructure healthy and get our content delivered to our customers reliably and fast. Most recently I have been working on adding in a new data center and preparing to use some newer technologies to speed up our systems. We’re also scaling up our infrastructure with more capacity.
When working on the actual point of sale system, I spend a lot of time reviewing support requests to see where our software can improve, help the developers decide what to do next, test out new features and fixes, and make sure those changes both meet our customer’s needs and are simple to use.
What have you got going on right now?
IVAN: Right now I’m working on adding in a new data center with Amazon Web Services. This will allow us to scale our infrastructure much more quickly and save us the hassle of managing our own hardware.
This change should have no effect on our customers at first, but will allow us to speed some things up later.
What’s your big idea for the future?
IVAN: I don’t really have any one big idea. There are tons of changes we have to make to keep our system innovative and further improve it’s simplicity. We’re going to just keep rolling out the improvements.
“I don’t think our software will ever reach a point where it couldn’t be better.”
There are many new technologies coming along that can change how retailers are able to serve their customers. Two active areas I see are with mobile and payment processing.
We’re definitely going to be spending more time on mobile devices and you’ll be seeing those changes coming along.
We’re also watching the payments industry closely. I am hoping for some disruptive technologies that can compete with and change the traditional credit card industry into something that better serves retailers. As we see great ideas emerge we want to be ready to jump in and use those technologies in our product.
Before we go, what is the one thing you want every customer to know about you?
IVAN: I’m willing to talk to any customer. Email me at ivan@merchantos.com or call at 866 554 2453 ext. 91. I can’t promise a quick response but I do eventually get to everyone.

