CLI Examples
This section provides practical examples of using the ABConnect command-line interface.
Quick Start Examples
Basic Commands
# Get your user profile
ab me
# Look up company types
ab lookup company-types
# Search for companies
ab api raw GET /companies/search --params '{"page": 1, "per_page": 20}'
# Get company by ID
ab company 12345
Working with Companies
Search and Filter
# Search companies by name
ab api raw GET /companies/search --params '{"name": "ABC Corp", "active": true}'
# Get company details
ab api raw GET /companies/12345/details
# Get company setup data
ab api raw GET /company/12345/setupdata
Managing Contacts
# Search contacts for a company
ab api raw GET /contacts/search --params '{"companyId": "12345"}'
# Create new contact
ab api raw POST /contacts --data '{
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@example.com",
"companyId": "12345"
}'
# Update contact
ab api raw PUT /contacts/67890 --data '{"phone": "+1-555-123-4567"}'
Working with Jobs
Job Operations
# Get job details
ab api raw GET /job/JOB-2024-001
# Get job timeline
ab api raw GET /job/JOB-2024-001/timeline
# Update job status
ab api raw POST /job/JOB-2024-001/status/quote --data '{"status": "Quoted"}'
Creating Jobs
# Create a new job (save data in a file for complex requests)
cat > job_data.json << EOF
{
"type": "Standard",
"customerId": "CUST123",
"origin": {
"address": "123 Main St",
"city": "New York",
"state": "NY",
"zip": "10001"
},
"destination": {
"address": "456 Oak Ave",
"city": "Los Angeles",
"state": "CA",
"zip": "90001"
}
}
EOF
ab api raw POST /job/save --data @job_data.json
Lookup Operations
Master Constants
# Get all available lookup types
ab endpoints --filter lookup
# Common lookup operations
ab lookup company-types
ab lookup job-status-types
ab lookup freight-types
ab lookup container-types
# Output as JSON for processing
ab lookup company-types --format json > company_types.json
# Pretty print JSON output
ab lookup company-types --format json | jq '.'
File Operations
Loading and Processing Files
# Load and display CSV file
ab load contacts.csv
# Load Excel file with specific sheet
ab load sales_report.xlsx --sheet "Q1 Sales"
# Convert CSV to JSON
ab load data.csv --format json > data.json
# Preview first few rows
ab load large_file.csv --limit 10
# Specify encoding for problematic files
ab load legacy_data.csv --encoding latin-1
Quote Operations
Getting Quotes
# Quick quote with basic parameters
ab quote qq \
--customer CUST123 \
--origin-zip 10001 \
--destination-zip 90001 \
--weight 1000 \
--pieces 5
# Quote request from file
cat > quote_request.json << EOF
{
"customerId": "CUST123",
"originZip": "10001",
"destinationZip": "90001",
"items": [
{"weight": 500, "class": "85"},
{"weight": 300, "class": "70"}
]
}
EOF
ab quote qr --file quote_request.json
Advanced Usage
Pagination
# Get first page of results
ab api raw GET /companies/search --params '{"page": 1, "per_page": 100}'
# Get specific page
ab api raw GET /companies/search --params '{"page": 5, "per_page": 100}'
# Script to get all pages
page=1
while true; do
result=$(ab api raw GET /companies/search --params "{\"page\": $page, \"per_page\": 100}")
if [ -z "$result" ] || [ "$result" = "[]" ]; then
break
fi
echo "$result"
((page++))
done
Filtering and Searching
# Complex search with multiple filters
ab api raw GET /jobs/search --params '{
"status": "active",
"createdAfter": "2024-01-01",
"customerId": "CUST123",
"sortBy": "createdAt",
"sortOrder": "desc",
"page": 1,
"per_page": 50
}'
Working with JSON Output
# Extract specific fields with jq
ab lookup company-types --format json | jq '.[] | {id: .id, name: .name}'
# Count results
ab api raw GET /companies/search --params '{"active": true}' | jq '. | length'
# Filter and format
ab api raw GET /contacts/search | jq '.[] | select(.email != null) | .email'
Environment Management
Switching Environments
# Check current configuration
ab config
# Use staging environment for a single command
ABC_ENVIRONMENT=staging ab me
# Use production environment
ABC_ENVIRONMENT=production ab company 12345
# Enable debug logging
ABC_LOG_LEVEL=DEBUG ab api raw GET /companies/search
Scripting Examples
Batch Processing
#!/bin/bash
# Process companies from a CSV file
while IFS=, read -r company_id company_name; do
echo "Processing $company_name (ID: $company_id)"
# Get company details
details=$(ab api raw GET /companies/$company_id/details)
# Save to file
echo "$details" > "company_${company_id}.json"
done < companies.csv
Export Data
#!/bin/bash
# Export all active companies to CSV
echo "ID,Name,Code,Type,Created" > active_companies.csv
page=1
while true; do
companies=$(ab api raw GET /companies/search --params "{\"active\": true, \"page\": $page}")
if [ -z "$companies" ] || [ "$companies" = "[]" ]; then
break
fi
echo "$companies" | jq -r '.[] | [.id, .name, .code, .type, .createdAt] | @csv' >> active_companies.csv
((page++))
done
echo "Export complete: active_companies.csv"
Error Handling
Checking Command Status
# Check if command succeeded
if ab company 12345; then
echo "Company found"
else
echo "Company not found or error occurred"
fi
# Capture output and errors
output=$(ab api raw GET /companies/invalid-id 2>&1)
if [ $? -ne 0 ]; then
echo "Error occurred: $output"
fi
Logging and Debugging
# Enable debug logging
ABC_LOG_LEVEL=DEBUG ab api raw GET /companies/search
# Save logs to file
ABC_LOG_LEVEL=DEBUG ab company 12345 2> debug.log
# Verbose output for troubleshooting
ab api raw GET /companies/search --verbose
Integration Examples
CI/CD Pipeline
#!/bin/bash
# Example CI/CD script
# Set environment
export ABC_ENVIRONMENT=staging
# Verify connection
if ! ab me > /dev/null 2>&1; then
echo "Failed to authenticate"
exit 1
fi
# Run data validation
ab api raw GET /companies/search --params '{"active": true}' | \
jq '.[] | select(.type == null)' > invalid_companies.json
if [ -s invalid_companies.json ]; then
echo "Found companies with missing type"
exit 1
fi
echo "Validation passed"
Monitoring Script
#!/bin/bash
# Monitor job statuses
while true; do
pending=$(ab api raw GET /jobs/search --params '{"status": "pending"}' | jq '. | length')
active=$(ab api raw GET /jobs/search --params '{"status": "active"}' | jq '. | length')
echo "$(date): Pending: $pending, Active: $active"
# Alert if too many pending
if [ "$pending" -gt 100 ]; then
echo "ALERT: Too many pending jobs!"
fi
sleep 300 # Check every 5 minutes
done
See Also
Command Line Interface - Complete CLI command reference
CLI Quick Start - Getting started with the CLI
Installation - Installation and setup instructions