This API is used for updating details in the purchasing section of the product details screen. It will update all products that have the supplier and the update's supplier product id.

POST url example

https://app.finaleinventory.com/{accountPathComponent}/api/product/supplierupdate

POST body example

{  
  "supplierPartyUrl":"/demo/api/partygroup/10001",  
  "update":[  
    {"supplierProductId":"123","price":1.55,"quantityAvailable":9001,"leadTime":1,"generalComments":"A commment"},  
    {"supplierProductId":"124","price":0.75,"quantityAvailable":9001,"leadTime":1},  
    {"supplierProductId":"125","price":19,"quantityAvailable":9001},  
    {"supplierProductId":"125","price":11.5},  
    {"supplierProductId":"127"},  
  ],  
}

POST body fields

  • supplierPartyUrl
    This is the url for your supplier. The start of the url is always the same and it ends with the supplier ID.
  • update
    This contains the array of updates you would like to apply to the supplier products. You apply at most 100 updates in a single HTTP POST request.

POST body update subfields

These fields are defined on each object in the array of updates to be applied. The supplierProductId field is required, the other fields are optional. Fields that are not included in the update will not be modified.

  • supplierProductId
    This is the supplier product id. If this does not match a supplier row on any product, the result for this row will be empty.
  • price
    This is the supplier price. This should be a number.
  • quantityAvailable
    This is the supplier quantity available. This should be an number.
  • leadTime
    This is the supplier lead days. It represents how many days it would take for the product to be delivered. This should be an number.
  • generalComments
    This is the supplier comments about the product.

POST response example

{  
  "supplierPartyUrl":"/demo/api/partygroup/10001",  
  "update":[  
    {"update":{"supplierProductId":"123","price":1.55,"quantityAvailable":9001,"leadTime":1,"generalComments":"A commment"},  
     "rslt":[{productUrl: "/demo/api/product/10000"}]},  
    {"update":{"supplierProductId":"124","price":0.75,"quantityAvailable":9001,"leadTime":1},  
     "rslt":[{productUrl: "/demo/api/product/10001"}, {productUrl: "/demo/api/product/10000"}]},  
    {"update":{"supplierProductId":"125","price":19,"quantityAvailable":9001},  
     "rslt":[]},  
    {"update":{"supplierProductId":"125","price":11.5},  
     "rslt":[{productUrl: "/demo/api/product/10001"}]},  
    {"update":{"supplierProductId":"127"},  
     "error":{"msg":"unknown error"}},  
  ],  
}

This is similar to the POST body except the updates are inside of a container object that has both an update and rslt.

The rslt is a list of finale product urls that had the supplier section updated by the update.

If there are mulitple updates with the same supplierProductId, they will all be applied in order.

If the rslt is empty, that means no products had the supplierProductId in their supplier section.

If the update only has the supplierProductId field, it will get an error instead of a rslt.

If the update has no fields, it will get an empty rslt.

Rate Limits

Each account has a quota of 1000 points/minute for product supplier updates. Quotas refresh every 30 seconds. Each product updated counts as 1 point towards your quota. For reference, the example shown in this help article would use 5 points of your quota (5 products updated in a single request). This allows roughly 16 products / second to be updated.

Any requests that would cause you to run out of points will be refused with an HTTP 429 error. The response body will contain information on how many points are available, how many points have been used, and when points are refreshed. Here is an example JSON response when you have run out of points for your quota:

{  
  X-RateLimit-Limit:500,  
  X-RateLimit-Remaining:0,  
  X-RateLimit-Reset: 1627966274374, // Unix timestamp in milliseconds  
}

To learn more about our rate limiting, see our rate limits documentation.