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 CC_API_LOGIN=<login>
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_LOGIN=<login>
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>..<index>.value
variant_dimensions.<index>..<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