# retrieve all items using chunking if necessary
import ultracart
from ultracart.rest import ApiException
from ultracart import ApiClient
from pprint import pprint
import time
config = ultracart.Configuration()
# this key is valid only in the UltraCart development system. You need to supply a valid simple key here.
config.api_key['x-ultracart-simple-key'] \
= '4256aaf6dfedfa01582fe9a961ab0100216d737b874a4801582fe9a961ab0100'
config.debug = True
config.verify_ssl = True # Development only. Set to True for production.
api_client = ApiClient(configuration=config, header_name='X-UltraCart-Api-Version', header_value='2017-03-01')
api_instance = ultracart.ItemApi(api_client)
# The item expansion is huge. Only use what you need.
# see https://www.ultracart.com/api/#resource_item.html
# see https://www.ultracart.com/api/#Topic3
expand = 'auto_order,auto_order_steps,checkout,kit_definition,options,physical,pricing,' \
'pricing.tiers,restriction,shipping,shipping.methods,tax,variations'
def get_items_chunk(offset=0, limit=200):
items_response = api_instance.get_items(offset=offset, limit=limit)
if items_response.success:
return items_response.items
# if unsuccessful, return empty array
return []
items = []
try:
iteration = 1
offset = 0
limit = 200
need_more_records = True
while need_more_records:
print("executing iteration " + str(iteration))
block_of_items = get_items_chunk(offset, limit)
items.extend(block_of_items)
offset = offset + limit
need_more_records = len(block_of_items) == limit
time.sleep(3) # pace your calls or the rate limiter was slam down on your script.
pprint(items)
except ApiException as e:
print("Exception when calling ItemApi->get_items: %s\n" % e)