CrystalCommerce CLI

This is a command line client for exploring CrystalCommerce APIs

Installation

Install it:

$ gem install cc-cli

Usage

To view help:

$ cc-cli

The license key pair <ssologin> and <key> are basically just basic auth username and password respectively. To obtain a license key, contact: Jerad Ellison or call (206) 274-7437 Ext. 3.

Add these lines in your ~/.bashrc (linux) or ~/.profile (mac) file:

export =<>
export CC_API_KEY=<key>

If you are working in a project, you can also install the dotenv gem and put a .env file in the working directory that looks like:

=<>
CC_API_KEY=<key>

You can then run the program with dotenv cc-cli. This approach will be advantageous if you don't want to edit your user's shell config to use this tool.

These are the available commands:

$ cc-cli catalog [products] | [product_types] | [stores] | [categories]
$ cc-cli help [COMMND]
$ cc-cli market_data [products --id <PRODUCT ID> --skus <PRODUCT SKUS separated by ','>] | [offers --id <PRODUCT ID> --skus <PRODUCT SKUS separated by ','>] | [stores]
$ cc-cli store [products --token <access token> --store <store name>]

To choose columns/json keys to display:

Display the available columns for a given command. Say for example $ cc-cli catalog products:

$ cc-cli catalog products --available-cols

available columns
====================
id
name
seoname
category_name
weight
description
asin
category_id
product_type_id
descriptors.*
photo.content_type
photo.urls.medium
photo.urls.thumb
photo.urls.large
photo.urls.ebay

USAGE:
--cols descriptors.Name,descriptors.Pow/Tgh,seoname

Then display the table

$ cc-cli catalog products --cols descriptors.Name,descriptors.Pow/Tgh,seoname
GET https://api.crystalcommerce.com/v1/catalog/products?page=1
response time: 2.091034343

When --cols is not used, the default --cols values will then be selected.

This is also capable of displaying values from arrays within the JSON object from the API response. For example let's first print $ cc-cli catalog product_types available columns:

$ cc-cli catalog product_types --available-cols
GET https://api.crystalcommerce.com/v1/catalog/product_types?page=1
response time: 1.654095542

available columns
====================
id
name
default_weight
amazon_search_index
variant_dimensions.<index>.name
variant_dimensions.<index>.product_type_id
variant_dimensions.<index>.default_option_id
variant_dimensions.<index>.options.<index>.value
variant_dimensions.<index>.options.<index>.code
descriptors.<index>.*

The <index> must be replaced by an integer:

$ cc-cli catalog product_types --cols name,variant_dimensions.0.name,variant_dimensions.0.default_option_id --colp 1
GET https://api.crystalcommerce.com/v1/catalog/product_types?page=1
response time: 1.389229104

Other available options:

[--offset=N]            # Offset of the starting row to be displayed. Nothing is displayed when out of bounds.
[--limit=N]             # Limit of rows to be displayed.
[--colw=N]              # Width of every column to be displayed.
[--colp=N]              # Padding of every cell to be displayed.
[--json]                # Prints the JSON response body instead.
[--page=N]              # Page number of the response.
[--csv=CSV_FILE_PATH]   # Print out the result into a csv file. Columns are separated by comma

ISSUES

There is going to be an issue when trying to include as a --cols value a 'available-cols' that has a whitespace within its string. E.g. "descriptors.Set Name" for $ cc-cli catalog products