Project

pike13-cli

0.0
No release in over 3 years
A powerful CLI tool for interacting with Pike13's Core and Reporting APIs
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Runtime

~> 1.1
~> 0.1
~> 1.3
 Project Readme

Pike13 CLI

CI

A command-line interface for interacting with the Pike13 API, supporting both:

  • Core API - CRUD operations for managing people, events, invoices, and more
  • Reporting API - Advanced analytics and reporting queries

Installation

gem install pike13-cli

Configuration

Set the following environment variables:

export PIKE13_ACCESS_TOKEN="your_access_token"
export PIKE13_BASE_URL="yourbusiness.pike13.com"

Usage

Command Structure

pike13 <namespace> <resource> <action> [options]

Namespaces:

  • desk - Staff interface (full read/write access)
  • front - Client interface (limited access for customer-facing apps)
  • account - Account-level operations (not scoped to business)
  • report - Reporting API (analytics and insights)

Account Namespace

Account-level operations:

# Get current account
pike13 account me

# List all businesses for the current account
pike13 account businesses list

# List all people in the account
pike13 account people list

# Request password reset
pike13 account password reset --email=user@example.com

# Create email confirmation
pike13 account confirmation create --email=user@example.com

Desk Namespace (Staff Interface)

Full staff interface with read/write access:

People

# List all people
pike13 desk people list
# or
pike13 desk people ls

See shortcuts for faster alternatives

# Find a person
pike13 desk people get 123

# Search for people
pike13 desk people search "John Doe"

# Get current authenticated user
pike13 desk people me

# Create a person
pike13 desk people create --first-name "John" --last-name "Doe" --email "john@example.com"

# Update a person
pike13 desk people update 123 --first-name "Jane"

# Delete a person
pike13 desk people delete 123

Advanced Filtering and Parameters

The CLI now supports comprehensive filtering and query parameters for major endpoints:

People List Parameters
# Filter people by membership status
pike13 desk people list --is-member=true
pike13 desk people list --is-member=false

# Filter by creation/update time
pike13 desk people list --created-since="2025-01-01T00:00:00Z"
pike13 desk people list --updated-since="2025-01-01T00:00:00Z"

# Include additional data
pike13 desk people list --include-relationships
pike13 desk people list --include-balances

# Sort results
pike13 desk people list --sort="updated_at"
pike13 desk people list --sort="-updated_at"  # descending
pike13 desk people list --sort="created_at"
pike13 desk people list --sort="id"

# Combine multiple filters
pike13 desk people list --is-member=true --sort="-updated_at" --include-relationships
Events List Parameters
# Filter by date range
pike13 desk events list --from="2025-01-01" --to="2025-01-31"

# Filter by specific IDs
pike13 desk events list --ids="123,456,789"
pike13 desk events list --service-ids="111,222"
Event Occurrences List Parameters
# Filter by date range
pike13 desk event_occurrences list --from="2025-01-01" --to="2025-01-31"

# Filter by state
pike13 desk event_occurrences list --state="active"
pike13 desk event_occurrences list --state="active,canceled"

# Filter by staff, services, events, or locations
pike13 desk event_occurrences list --staff-member-ids="111,222"
pike13 desk event_occurrences list --service-ids="333,444"
pike13 desk event_occurrences list --event-ids="555,666"
pike13 desk event_occurrences list --location-ids="777,888"

# Group results
pike13 desk event_occurrences list --group-by="day"
pike13 desk event_occurrences list --group-by="hour"
Person Visits Parameters
# Get visits for a specific person within date range
pike13 desk person_visits list 12345 --from="2025-01-01" --to="2025-01-31"

# Filter by specific event occurrence
pike13 desk person_visits list 12345 --event-occurrence-id=67890
Enrollment Eligibility Parameters
# Check eligibility for specific people
pike13 desk event_occurrences eligibilities 789 --person-ids="111,222,333"

Business

# Get business details
pike13 desk business find

Events & Event Occurrences

# List events
pike13 desk events list

# Get an event
pike13 desk events get 100

# List events with filtering
pike13 desk events list --from "2025-01-01" --to "2025-01-31"
pike13 desk events list --service-ids="123,456"

# Get an event
pike13 desk events get 100

# List event occurrences with advanced filtering
pike13 desk event_occurrences list --from "2025-01-01" --to "2025-01-31"
pike13 desk event_occurrences list --state="active" --service-ids="123"
pike13 desk event_occurrences list --staff-member-ids="456" --group-by="day"

# Get event occurrence
pike13 desk event_occurrences get 789

# Get enrollment eligibilities with person filtering
pike13 desk event_occurrences eligibilities 789
pike13 desk event_occurrences eligibilities 789 --person-ids="111,222,333"

Event Occurrence Notes

# List notes for an event occurrence
pike13 desk event_occurrence_notes list --event-occurrence-id 789

# Get specific note
pike13 desk event_occurrence_notes get 1 --event-occurrence-id 789

# Create note
pike13 desk event_occurrence_notes create \
  --event-occurrence-id 789 \
  --subject "Note Subject" \
  --note "This is a note"

# Update note
pike13 desk event_occurrence_notes update 1 \
  --event-occurrence-id 789 \
  --note "Updated note content"

# Delete note
pike13 desk event_occurrence_notes delete 1 --event-occurrence-id 789

Bookings

# Get booking
pike13 desk bookings get 123

# Create booking (requires idempotency token)
pike13 desk bookings create --event-occurrence-id 789 --person-id 123

# Update booking
pike13 desk bookings update 456 --state "completed"

# Delete booking
pike13 desk bookings delete 456

Appointments

# Find available slots
pike13 desk appointments available --service-id 100 --date "2025-01-15"

# Get availability summary
pike13 desk appointments summary --service-id 100 --from "2025-01-01" --to "2025-01-31"

Invoices & Payments

# List invoices
pike13 desk invoices list

# Get invoice
pike13 desk invoices get 700

# Get payment
pike13 desk payments get 800

# Void payment
pike13 desk payments void 800 --invoice-item-ids "1,2"

Pack Products

# List pack products
pike13 desk pack_products list

# Get specific pack product
pike13 desk pack_products get 123

# Create pack product
pike13 desk pack_products create \
  --name "10 Class Pack" \
  --price "200.00" \
  --visit-count 10

# Update pack product
pike13 desk pack_products update 123 --name "Updated Pack Name"

# Delete pack product
pike13 desk pack_products delete 123

# Create pack from product
pike13 desk pack_products create_pack \
  --product-id 123 \
  --person-id 456 \
  --quantity 5

Other Resources

# Locations
pike13 desk locations list
pike13 desk locations get 1

# Services
pike13 desk services list
pike13 desk services get 100

# Staff members
pike13 desk staff list
pike13 desk staff get 5
pike13 desk staff me

# Visits
pike13 desk visits list
pike13 desk visits get 456

# Plans
pike13 desk plans list
pike13 desk plans get 200

# Notes
pike13 desk notes list 123
pike13 desk notes get 123 456
pike13 desk notes create 123 --subject "Follow up" --note "Client requested callback"
pike13 desk notes update 123 456 --note "Updated note content"
pike13 desk notes delete 123 456

# Custom Fields
pike13 desk custom_fields list

# Forms of Payment
pike13 desk forms_of_payment list 123
pike13 desk forms_of_payment get 123 456
pike13 desk forms_of_payment create 123 --type "creditcard" --token "tok_xxx"
pike13 desk forms_of_payment update 123 456 --is-default
pike13 desk forms_of_payment delete 123 456

# Revenue Categories
pike13 desk revenue_categories list
pike13 desk revenue_categories get 138248

# Sales Taxes
pike13 desk sales_taxes list
pike13 desk sales_taxes get 1

# Make-Ups
pike13 desk make_ups reasons
pike13 desk make_ups generate 456 --make-up-reason-id 126989 --free-form-reason "Client was sick"

# Waitlist
pike13 desk waitlist_entry list
pike13 desk waitlist_entry get 789
pike13 desk waitlist_entry create --person-id 123 --event-id 100
pike13 desk waitlist_entry delete 789

# Person-related resources
pike13 desk person_visits list 123
pike13 desk person_plans list 123
pike13 desk person_waitlist list 123
pike13 desk person_waivers list 123

Front Namespace (Client Interface)

Client-facing interface with limited read-only access:

# Get authenticated client user (only)
pike13 front people me

# List events (client view) with filtering
pike13 front events list --from="2025-01-01" --to="2025-01-31"
pike13 front events list --service-ids="123,456"

# List event occurrences (client view) with filtering
pike13 front event_occurrences list --from="2025-01-01" --to="2025-01-31"
pike13 front event_occurrences list --state="active" --service-ids="123"

# List locations (client view)
pike13 front locations list

# List services (client view)
pike13 front services list

# Get business info
pike13 front business show

# Get branding
pike13 front branding show

# Find available appointment slots (client view)
pike13 front appointments available \
  --service-id 100 \
  --date "2025-01-15"

# Bookings (client view)
pike13 front bookings get 456
pike13 front bookings create --event-occurrence-id 789 --person-id 123
pike13 front bookings update 456 --state "completed"
pike13 front bookings delete 456

# Person-related resources (client view)
pike13 front person_visits list 123
pike13 front person_plans list 123
pike13 front person_waitlist list 123
pike13 front person_waivers list 123

# Forms of payment (client view)
pike13 front forms_of_payment list 123
pike13 front forms_of_payment get 123 456
pike13 front forms_of_payment find_me 456
pike13 front forms_of_payment create 123 --type "creditcard" --token "tok_xxx"
pike13 front forms_of_payment update 123 456 --is-default
pike13 front forms_of_payment delete 123 456

Report Namespace (Reporting API)

Advanced analytics and reporting:

# Monthly business metrics
pike13 report monthly_metrics query \
  --fields month_start_date,net_paid_amount,member_count

# Clients report
pike13 report clients query \
  --fields full_name,email,completed_visits,has_membership

# Transactions
pike13 report transactions query \
  --fields transaction_date,net_paid_amount,payment_method,invoice_payer_name

# Invoices
pike13 report invoices query \
  --fields invoice_number,expected_amount,outstanding_amount,invoice_state

# Enrollments (visits)
pike13 report enrollments query \
  --fields full_name,service_name,service_date,state

# Event occurrences
pike13 report event_occurrences query \
  --fields event_name,service_date,enrollment_count,capacity

# Event occurrence staff members
pike13 report event_occurrence_staff query \
  --fields full_name,event_name,service_date,enrollment_count

# Invoice items
pike13 report invoice_items query \
  --fields product_name,expected_amount,net_paid_amount

# Invoice item transactions
pike13 report invoice_item_transactions query \
  --fields transaction_date,payment_method,net_paid_amount

# Pays (staff compensation tracking)
pike13 report pays query \
  --fields staff_name,service_name,final_pay_amount,pay_state

# Person plans
pike13 report person_plans query \
  --fields full_name,plan_name,start_date,is_available

# Staff members
pike13 report staff_members query \
  --fields full_name,email,role,tenure

Report Options

# Filtering (use hash format - note: advanced filters may require API-specific syntax)
pike13 report clients query --filter has_membership:true
pike13 report transactions query --filter payment_method:cash

# Grouping
pike13 report clients query --group tenure_group
pike13 report transactions query --group payment_method

# Sorting (comma-separated fields, append - for descending)
pike13 report clients query --sort completed_visits-
pike13 report transactions query --sort transaction_date

# Pagination (use hash format)
pike13 report clients query --page size:50 --page number:2
pike13 report clients query --page size:100

# Include total count
pike13 report clients query --total-count

# Combine multiple options
pike13 report clients query \
  --fields full_name,email,completed_visits \
  --filter has_membership:true \
  --sort completed_visits- \
  --page size:50 \
  --total-count

Output Formats

# JSON output (default, pretty-printed)
pike13 desk people list

# Compact JSON
pike13 desk people list --compact

# Table output
pike13 desk people list --format table

# Table with color
pike13 desk people list --format table --color

# CSV output
pike13 report clients query --format csv

# Show progress indicator (useful for long-running reports)
pike13 report clients query --progress --format table

Common Options

# Help for any command
pike13 --help
pike13 -h

pike13 desk --help
pike13 desk -h

pike13 desk people --help
pike13 desk people -h

pike13 desk event_occurrences --help
pike13 desk event_occurrences -h

pike13 desk event_occurrence_notes --help
pike13 desk event_occurrence_notes -h

pike13 desk custom_fields --help
pike13 desk custom_fields -h

pike13 desk forms_of_payment --help
pike13 desk forms_of_payment -h

pike13 report --help
pike13 report -h

# Help for specific commands
pike13 desk people list --help
pike13 report clients query --help

# Verbose output (show HTTP requests and detailed debugging)
pike13 desk people list --verbose

# Quiet mode (suppress all output except errors)
pike13 desk people list --quiet

# Verbose mode with error details (useful for troubleshooting)
pike13 desk people get 999999 --verbose  # Shows full error trace

# Show version information
pike13 version

Examples

Staff Workflow Examples

# Find a client and view their details
pike13 desk people search "John Smith"

# Check upcoming classes
pike13 desk event_occurrences list \
  --from "$(date +%Y-%m-%d)" \
  --to "$(date -d '+7 days' +%Y-%m-%d)"

# Create a booking for a client
pike13 desk bookings create \
  --event-occurrence-id 789 \
  --person-id 123

# View client's visit history
pike13 desk visits list --person-id 123

Client-Facing Examples

# View available classes (client view)
pike13 front events list

# Find available appointment slots
pike13 front appointments available \
  --service-id 100 \
  --date "2025-01-15"

# Get my profile (as client)
pike13 front people me

Reporting Examples

# Monthly revenue summary
pike13 report monthly_metrics query \
  --fields month_start_date,net_paid_amount,member_count,new_client_count \
  --format table

# Active members report
pike13 report clients query \
  --fields full_name,email,tenure,completed_visits \
  --filter has_membership=true \
  --sort completed_visits- \
  --format csv > active_members.csv

# Payment method breakdown
pike13 report transactions query \
  --fields total_net_paid_amount,transaction_count \
  --group payment_method

# Class attendance report
pike13 report enrollments query \
  --fields service_name,completed_enrollment_count,noshowed_enrollment_count \
  --group service_name

Shell Integration

# Chain commands
CLIENT_ID=$(pike13 desk people search "John" --compact | jq -r '.people[0].id')
pike13 desk visits list --person-id $CLIENT_ID

# Export reports
pike13 report clients query \
  --fields full_name,email,phone,completed_visits \
  --format csv > clients_$(date +%Y%m%d).csv

# Monitor daily signups
watch -n 300 "pike13 report clients query \
  --fields full_name,email,client_since_date \
  --format table"

Shell Completion (Optional)

The CLI includes tab completion support for bash and zsh.

Bash:

# Copy the completion script
sudo cp completions/pike13.bash /etc/bash_completion.d/pike13

# Or source it in your ~/.bashrc
echo 'source /path/to/pike13-cli/completions/pike13.bash' >> ~/.bashrc
source ~/.bashrc

Zsh:

# Create completion directory if it doesn't exist
mkdir -p ~/.zsh/completion

# Copy the completion script
cp completions/_pike13 ~/.zsh/completion/

# Add to ~/.zshrc (if not already present)
echo 'fpath=(~/.zsh/completion $fpath)' >> ~/.zshrc
echo 'autoload -U compinit && compinit' >> ~/.zshrc
source ~/.zshrc

Tips and Tricks

Command Shortcuts

The CLI includes shortcuts for frequently used long commands to improve usability:

Desk Namespace Shortcuts

# Event Occurrences
pike13 desk eo list                    # Instead of: pike13 desk event_occurrences list
pike13 desk eo get 789                 # Instead of: pike13 desk event_occurrences get 789
pike13 desk eo ls                      # Also works with ls alias

# Event Occurrence Notes
pike13 desk eon list --event-occurrence-id 789  # Instead of: pike13 desk event_occurrence_notes list

# Forms of Payment
pike13 desk fop list 123               # Instead of: pike13 desk forms_of_payment list 123

# Person-related shortcuts
pike13 desk pv list 123                # person_visits
pike13 desk ppl list 123               # person_plans
pike13 desk pw list 123                # person_waivers
pike13 desk pwl list 123               # person_waitlist

# Management shortcuts
pike13 desk cf list                    # custom_fields
pike13 desk rc list                    # revenue_categories
pike13 desk st list                    # sales_taxes
pike13 desk mu reasons                 # make_ups

Account Namespace Shortcuts

# Account namespace
pike13 ac me                            # Instead of: pike13 account me
pike13 ac businesses list               # Instead of: pike13 account businesses list
pike13 ac people list                   # Instead of: pike13 account people list

Front Namespace Shortcuts

# Event Occurrences
pike13 front eo list                    # Instead of: pike13 front event_occurrences list

# Event Occurrence Notes
pike13 front eon list --event-occurrence-id 789

pike13 front eowe list --event-occurrence-id 789  # event_occurrence_waitlist_eligibilities (41→4 chars = 90% reduction)

# Client-facing resources
pike13 front pp list                    # plan_products
pike13 front pt list                    # plan_terms
pike13 front fop list 123               # forms_of_payment

# Person-related shortcuts (client view)
pike13 front pv list 123                # person_visits
pike13 front ppl list 123               # person_plans
pike13 front pw list 123                # person_waivers
pike13 front pwl list 123               # person_waitlist

Report Namespace Shortcuts

pike13 report tx query                 # transactions (daily financial reporting)
pike13 report mm query                 # monthly_metrics (business intelligence)

pike13 report eosm query               # event_occurrence_staff_members (31→4 chars = 87% reduction)
pike13 report iit query                # invoice_item_transactions (25→3 chars = 88% reduction)

pike13 report eo query                 # event_occurrences
pike13 report eos query                # event_occurrence_staff
pike13 report ii query                 # invoice_items
pike13 report sm query                 # staff_members

Colored Output

Enable colored tables for better readability:

pike13 desk people list --format table --color

Date Validation

Date parameters are validated automatically:

# ✗ Invalid - will show error
pike13 desk event_occurrences list --from "2025-11"

# ✓ Valid - YYYY-MM-DD format
pike13 desk event_occurrences list --from "2025-11-01"

Check Configuration

Use the version command to verify your environment:

pike13 version
# Shows: CLI version, SDK version, Ruby version, and env status

Progress Indicators

Show a spinner for long-running report queries:

pike13 report clients query --progress --format table
pike13 report transactions query --progress --format table

Note: Progress indicators only appear in TTY mode and are automatically disabled when piping.

Piping and Redirection

Colors and progress indicators are automatically disabled when piping:

# Save to file
pike13 report clients query --fields full_name,email --format csv > clients.csv

# Pipe to other commands
pike13 desk people list --format json | jq '.people[0]'

Troubleshooting

Environment Variables Not Set

# Error: PIKE13_ACCESS_TOKEN environment variable is required

# Solution: Set required environment variables
export PIKE13_ACCESS_TOKEN="your_access_token"
export PIKE13_BASE_URL="yourbusiness.pike13.com"

# Verify they're set
echo $PIKE13_ACCESS_TOKEN
echo $PIKE13_BASE_URL

# Or add to your shell profile for persistence
echo 'export PIKE13_ACCESS_TOKEN="your_token"' >> ~/.bashrc
echo 'export PIKE13_BASE_URL="yourbusiness.pike13.com"' >> ~/.bashrc

API Errors

The CLI provides detailed error messages with helpful suggestions:

Resource not found (404)

pike13 desk people get 999999
# Not Found: The requested resource does not exist
#
# Suggestions:
#   1. Verify the resource ID is correct
#   2. Check if the resource has been deleted
#   3. Ensure you have permission to access this resource

# Use --verbose for more details
pike13 desk people get 999999 --verbose

Authentication errors (401)

pike13 desk people list
# Authentication Error: Invalid or expired access token
#
# Suggestions:
#   1. Verify your PIKE13_ACCESS_TOKEN environment variable is set correctly
#   2. Check if your access token has expired
#   3. Generate a new access token from your Pike13 account settings
#
# Current token: eyJhbGciO...

Validation errors (422)

pike13 desk people create --first-name "John"
# Validation Error: The request contains invalid data
#
# Details: email is required, last_name is required
#
# Suggestions:
#   1. Check that all required fields are provided
#   2. Verify field formats (dates, emails, etc.)
#   3. Review the Pike13 API documentation for field requirements

Rate limit errors (429)

# Rate Limit Exceeded: Too many requests
#
# Rate limit will reset at: 2025-11-13T01:00:00Z
#
# Suggestions:
#   1. Wait a few minutes before retrying
#   2. Reduce the frequency of your requests
#   3. Consider batching operations when possible

Server errors (5xx)

# Server Error: Pike13 API is experiencing issues
#
# HTTP Status: 503
#
# Suggestions:
#   1. Wait a few minutes and try again
#   2. Check Pike13 status page for service updates
#   3. Contact Pike13 support if the issue persists

Connection errors

# Connection Error: Unable to connect to Pike13 API
#
# Error: Connection refused
#
# Suggestions:
#   1. Check your internet connection
#   2. Verify PIKE13_BASE_URL is set correctly: yourbusiness.pike13.com
#   3. Check if a firewall is blocking the connection
#   4. Verify the Pike13 service is available

Command Not Found

# pike13: command not found

# Solution: Ensure gem is installed and in PATH
gem install pike13-cli

# Check if gem bin directory is in PATH
gem environment

# Add to PATH if needed
export PATH="$PATH:$(gem environment gemdir)/bin"

Date Format Errors

# Error: Invalid date format for 'from'. Expected YYYY-MM-DD

# Solution: Use correct date format
pike13 desk event_occurrences list --from "2025-01-01" --to "2025-01-31"

# Not: --from "01/01/2025" or --from "2025-01"

Reporting Filter Syntax

# For hash options, use key:value format
pike13 report clients query --filter has_membership:true

# For multiple filters or complex conditions, consult Pike13 API documentation
# The CLI supports basic hash filters; advanced filters may require API-specific array syntax

Large Result Sets

# For large reports, use pagination
pike13 report clients query --page size:100 --page number:1

# Or save directly to file
pike13 report clients query --format csv > clients.csv

Getting Help

# View help for any command (use --help or -h flags)
pike13 --help
pike13 -h

pike13 desk --help
pike13 desk -h

pike13 desk people --help
pike13 desk people -h

pike13 desk event_occurrences --help
pike13 desk event_occurrences -h

pike13 desk custom_fields --help
pike13 desk custom_fields -h

pike13 desk forms_of_payment --help
pike13 desk forms_of_payment -h

# Check your environment
pike13 version

# List all available commands
pike13 --help | grep -A 100 "Commands:"

Development

# Clone the repository
git clone https://github.com/juanhuttemann/pike13-cli.git
cd pike13-cli

# Install dependencies
bundle install

# Build and install locally
gem build pike13-cli.gemspec
gem install pike13-cli-0.1.0.beta.gem

# Test the CLI
pike13 --help

# Run tests
bundle exec rspec

# Run rake tasks
rake console     # Open IRB with pike13-cli loaded
rake install_local  # Build and install locally
rake clean       # Remove build artifacts

Contributing

See CONTRIBUTING.md for guidelines on how to contribute to this project.

License

MIT License