Tender CLI
A command line tool for interacting with ENTP's Tender API.
Features
- List and filter discussions from the command line
- Output discussion lists in a variety of formats, including JSON and CSV
- Show discussion details and comments
- Create and reply to discussions
- Resolve, acknowledge, queue and more actions are all supported
- Credentials can be stored in a local configuration file for ease of use
Installation
Install with npm:
$ npm install -g tender-cli
If you don't already have Node.js installed, download and install it first.
Usage
Usage: tender [options] [command]
Commands:
list [options] List discussions with optional filters
show [options] [id] Show single discussion with comments
create [options] Create a new discussion
reply [options] [id] Reply to an existing discussion
ack [id] Acknowledge a discussion
resolve [id] Close a discussion
reopen [id] Reopen a discussion
queue [options] [id] Assign a discussion to a queue
unqueue [options] [id] Remove a discussion from a queue
categorize [options] [id] Change a discussion's category
delete [id] Delete a discussion
restore [id] Restore a deleted discussion
toggle [id] Toggle a discussion from public to private
Options:
-h, --help output usage information
-V, --version output the version number
-u, --username <name> set Tender username
-p, --pass <password> set Tender password
-a, --api <token> set Tender API token
-d, --subdomain <subdomain> set Tender subdomain name
Basic example
$ tender list --state pending
┌──────────┬─────────────────────────────────────────────┬────────────────┬──────────┬──────────┐
│ Id │ Title │ Author │ State │ Age │
├──────────┼─────────────────────────────────────────────┼────────────────┼──────────┼──────────┤
│ 1234567 │ Login issue │ John Smith │ pending │ 1 hour │
├──────────┼─────────────────────────────────────────────┼────────────────┼──────────┼──────────┤
│ 1234567 │ All of my permissions are gone! │ Jane Smith │ pending │ 2 days │
└──────────┴─────────────────────────────────────────────┴────────────────┴──────────┴──────────┘
Authentication
Authentication via username/password or API token are both supported. These can either be specified on the command line itself or stored in a .tenderrc
file located in your home directory. The file should follow the below format, though note that only username/password or token are required, not both.
{
"subdomain": "your-sub-domain",
"username": "someone@somewhere.com",
"password": "supersecret",
"token": "your-api-token",
}
Example of command line auth:
$ tender list --subdomain your-sub-domain --token your-api-token
Listing discussions
Usage: list [options]
Options:
-h, --help output usage information
-q, --queue <name> filter by queue
-s, --state <name> filter by state
-c, --category <name> filter by category
-t, --title <pattern> filter by title pattern
-m, --max <number> max records to retrieve (defaults to 1000)
-r, --reporter <name> Specify the reporter to use
-o, --output <name> specify file name for csv reporters
--reporters List available reporters
Several filters and reporters are available for selecting discussions. Below are examples of some common filtering actions.
List all pending discussions
$ tender list -s pending
List all open discussions in "Test" queue
$ tender list -s open -q test
List discussions in the "Bar" queue with "Foo" in the title
$ tender list -t foo -q bar
List all assigned discussions in the "Problems" category
$ tender list -c problems -s assigned
Discussion details
Use the show
command to get additional details on a specific discussion, including the comments.
Usage: show [options] [id]
Options:
-h, --help output usage information
-r, --reporter <name> Specify the reporter to use
--reporters List available reporters
Example
$ tender show 1234567
Discussion #1234567
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Title : Login issue
Author : John Smith (john@smith.com)
Created : 11/15/2012 15:11 pm
URL : https://test.tenderapp.com/discussions/1234567
State : open
Comments : 1
Details : [acknowledged] [responded] [public] [via web]
Description:
I can't login to my account! Help!
Creating discussions
Usage: create [options]
Options:
-h, --help output usage information
-t, --title <name> title for the new discussion [required]
-c, --category <name> category to post under [required]
-b, --body <text> the body of the new discussion [required]
--private set discussion to private
-n, --name <name> Name to create discussion under
-e, --email <email> Email to create discussion under
Example
$ tender create -c 'Problems' -t 'Big issue' -b 'The sky is falling!'
Replying to discussions
Usage: reply [options] [id]
Options:
-h, --help output usage information
-b, --body <text> the body of the reply [required]
--internal set reply to internal
-n, --name <name> Name to reply from
-e, --email <email> Email to reply from
Example
$ tender reply 10672812 -b 'This is a public reply'
$ tender reply 10672812 -b 'This is an internal only reply' --internal
Discussion actions
All discussion actions are supported through individual subcommands. For more information on each action, please see the discussion API documentation
Examples
$ tender acknowledge 10672629
$ tender resolve 10672631
$ tender queue 10672632 -q critical
$ tender delete 10672633
Discussion list reporters
Table
This reporter displays discussions in a table format with a few key columns. This is the default reporter.
┌──────────┬─────────────────────────────────────────────┬────────────────┬──────────┬──────────┐
│ Id │ Title │ Author │ State │ Age │
├──────────┼─────────────────────────────────────────────┼────────────────┼──────────┼──────────┤
│ 1234567 │ Login issue │ John Smith │ pending │ 1 hour │
├──────────┼─────────────────────────────────────────────┼────────────────┼──────────┼──────────┤
│ 1234567 │ All of my permissions are gone! │ Jane Smith │ pending │ 2 days │
└──────────┴─────────────────────────────────────────────┴────────────────┴──────────┴──────────┘
Basic
This reporter displays a very simple list of discussion ids and titles.
(2) discussions:
#1234567: Login issue
#1234567: All of my permissions are gone!
List
This reporter outputs a vertical list of discussions with a few key fields.
Displaying (2) discussions:
Discussion #1234567
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Title : Login issue
State : pending
Author : John Smith
Age : 1 hour
Discussion #1234567
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Title : All of my permissions are gone!
State : pending
Author : Jane Smith
Age : 2 days
JSON
This reporter will output a JSON file with all available columns. The file name defaults
to tender_output.json
in the current working directory, but can be specified with the
--output
command line option.
CSV
This reporter will output a CSV file with the same columns as the default Table reporter.
The file name defaults to tender_output.csv
in the current working directory, but can be specified
with the --output
command line options.
CSVFull
Same as above, but will output all available columns.
Discussion detail reporters
Basic
This reporter will output the basic headers as well as the first comment on the discussion.
Thread
This is identical to the basic reporter but will show all comments on the discussion.
$ tender show 1234567
Discussion #1234567
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Title : Login issue
Author : John Smith (john@smith.com)
Created : 11/15/2012 15:11 pm
URL : https://test.tenderapp.com/discussions/1234567
State : open
Comments : 1
Details : [acknowledged] [responded] [public] [via web]
Description:
I can't login to my account! Help!
---------------------------------------------------------------------
Date: 11/15/2012 15:15 pm [internal]
From: Support One (support@company.com)
Can someone look at this please?
---------------------------------------------------------------------
Date: 11/15/2012 15:19 pm
From: Support Two (supportone@company.com)
Hi John, do you actually have an account here?
Running the tests
To run the test suite, invoke the following commands in the repository:
$ npm install
$ npm test