Skip to content

Working with resources

Create a new resource

To create a new resource inside a collection you can invoke the create() method on the corresponding Collection instance:

payload = {
    'name': 'My Awesome Product',
    'category': {
        'id': 'CAT-00000',

new_product = c.products.create(payload=payload)

This returns the newly created object json-decoded.

Access to a resource

To access a resource within a collection you can use the resource() method on the corresponding Collection instance:

product = client.products.resource('PRD-000-000-000')

The indexing operator allows to write the previous expression the following way:

product = client.products['PRD-000-000-000']

The previous expression returns a Resource object.

Retrieve a resource

To retrieve a resource from within a collection you have to invoke the get() method of the Resource object as shown below:

product = client.products['PRD-000-000-000'].get()

This call returns the json-decoded object or raise an exception if it does not exist.

Update a resource

To update a resource of the collection using its primary identifier, you can invoke the update() method as shown below:

payload = {
    'short_description': 'This is the short description',
    'detailed_description': 'This is the detailed description',

product = client.products['PRD-000-000-000'].update(payload=payload)

Delete a resource

To delete a resource the delete() method is exposed:


Access to an action

To access an action that can be performed on a resource you can use the action() method of the Resource object:

endsale_action = client.products['PRD-000-000-000'].action('endsale')

or directly using the call operator on the Resource class passing the name of the action:

endsale_action = client.products['PRD-000-000-000']('endsale')

This returns an Action object.

Execute an action on a resource

Depending on its nature, an action can be exposed using the HTTP method that best gives the sense of the action to perform. The Action object exposes the get(), post(), put(), and delete() methods.

For example, supose you want to execute the endsale action:

payload = {
    'replacement': {
        'id': 'PRD-111-111-111'
    'end_of_sale_notes': 'stopped manufacturing',

result = client.products['PRD-000-000-000']('endsale').post(payload=payload)