raxodus


Nameraxodus JSON
Version 0.1.3 PyPI version JSON
download
home_pageNone
SummaryEscape from Rackspace ticket hell - a minimal CLI for ticket management
upload_time2025-08-06 07:41:24
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT
keywords automation cli n8n rackspace tickets
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ๐Ÿ—ก๏ธ Raxodus

[![PyPI version](https://badge.fury.io/py/raxodus.svg)](https://badge.fury.io/py/raxodus)
[![Python versions](https://img.shields.io/pypi/pyversions/raxodus.svg)](https://pypi.org/project/raxodus/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Tests](https://github.com/bdmorin/raxodus/actions/workflows/test.yml/badge.svg)](https://github.com/bdmorin/raxodus/actions/workflows/test.yml)

> *"Neither demon nor machine, but something altogether different"* - Ultima III

**Raxodus** - Escape from Rackspace ticket hell. A minimal CLI for managing Rackspace support tickets, built specifically for automation and n8n workflow integration.

## ๐ŸŽฏ Why Raxodus?

The Rackspace ticket API is broken in numerous ways (30+ second response times, inconsistent field names, "demo" endpoints in production). This tool works around those issues to give you reliable ticket access.

## โœจ Features

- **๐ŸŽซ Read-Only Ticket Access** - List and view Rackspace support tickets
- **๐Ÿ“Š Multiple Output Formats** - JSON, table, or CSV output  
- **๐Ÿš€ Fast & Lightweight** - Minimal dependencies, quick responses (when API allows)
- **๐Ÿ” Secure by Design** - No CLI credential flags, environment variables only
- **โฑ๏ธ Debug Mode** - Track API performance with timing metadata
- **๐Ÿ”„ n8n Ready** - JSON output perfect for workflow automation
- **๐Ÿš Shell Completions** - Bash, Zsh, and Fish support
- **๐Ÿ’พ Smart Caching** - Work around slow API responses
- **๐Ÿ›ก๏ธ Type Safe** - Pydantic models handle API inconsistencies

## ๐Ÿ“ฆ Installation

```bash
# Quick run without installation (recommended)
uvx raxodus --version

# Install with pip
pip install raxodus

# Install with uv
uv pip install raxodus
```

## ๐Ÿš€ Quick Start

### 1. Set Credentials

```bash
# Required environment variables
export RACKSPACE_USERNAME="your-username"
export RACKSPACE_API_KEY="your-api-key"
export RACKSPACE_ACCOUNT="123456"  # Optional default account
```

โš ๏ธ **Security Note**: Never pass credentials as command-line arguments. This is by design for security.

### 2. Test Authentication

```bash
# Verify your credentials work
raxodus auth test
```

### 3. List Tickets

```bash
# List all tickets (table format)
raxodus tickets list --format table

# List open tickets from last 7 days
raxodus tickets list --status open --days 7

# JSON output for automation
raxodus tickets list --format json

# CSV for spreadsheets
raxodus tickets list --format csv > tickets.csv

# With debug timing info
raxodus tickets list --debug --format json
```

### 4. Get Specific Ticket

```bash
# View single ticket
raxodus tickets get 250625-02866

# As JSON
raxodus tickets get 250625-02866 --format json
```

## ๐Ÿ“š Complete Command Reference

### Main Commands

```bash
raxodus --help                    # Show help
raxodus --version                  # Show version info
```

### Authentication Commands

```bash
# Test credentials
raxodus auth test

# Example output:
# โœ“ Authentication successful
# โœ“ Token expires: 2025-01-07 15:30:00
```

### Ticket Commands

```bash
# List tickets with ALL options
raxodus tickets list \
    --account 123456 \           # Specific account (overrides env)
    --status open \              # Filter: open, closed, pending
    --days 30 \                  # Tickets from last N days
    --page 1 \                   # Pagination
    --per-page 100 \             # Results per page (max 100)
    --format json \              # Output: json, table, csv
    --debug                      # Include timing metadata

# Get single ticket
raxodus tickets get TICKET-ID \
    --format json \              # Output: json, table
    --debug                      # Include timing metadata
```

### Shell Completions

```bash
# Install completions for your shell
raxodus completion install

# Or manually add to your shell config
raxodus completion show >> ~/.bashrc     # Bash
raxodus completion show >> ~/.zshrc      # Zsh
```

## ๐Ÿ”ง Configuration

### Environment Variables

```bash
# Required
RACKSPACE_USERNAME="your-username"       # Your Rackspace username
RACKSPACE_API_KEY="your-api-key"        # Your API key

# Optional
RACKSPACE_ACCOUNT="123456"               # Default account number
RACKSPACE_REGION="us"                    # API region (default: us)
RAXODUS_CACHE_DIR="~/.cache/raxodus"    # Cache directory
RAXODUS_CACHE_TTL="300"                 # Cache TTL in seconds
```

## ๐Ÿค– n8n Integration

### Execute Command Node

```json
{
  "nodes": [{
    "name": "List Tickets",
    "type": "n8n-nodes-base.executeCommand",
    "parameters": {
      "command": "raxodus tickets list --format json --debug",
      "env": {
        "RACKSPACE_USERNAME": "={{ $credentials.rackspace.username }}",
        "RACKSPACE_API_KEY": "={{ $credentials.rackspace.apiKey }}",
        "RACKSPACE_ACCOUNT": "={{ $credentials.rackspace.account }}"
      }
    }
  }]
}
```

### Process JSON Output

```javascript
// Code node to process tickets
const output = JSON.parse($input.item.json.stdout);
const openTickets = output.tickets.filter(t => t.status === 'open');

// Check performance
if (output.elapsed_seconds > 30) {
  console.warn(`Slow API response: ${output.elapsed_seconds}s`);
}

return openTickets;
```

### Complete n8n Workflow Example

```json
{
  "name": "Monitor Rackspace Tickets",
  "nodes": [
    {
      "name": "Every 15 minutes",
      "type": "n8n-nodes-base.scheduleTrigger",
      "parameters": {
        "rule": {
          "interval": [{"field": "minutes", "value": 15}]
        }
      }
    },
    {
      "name": "Get Open Tickets",
      "type": "n8n-nodes-base.executeCommand",
      "parameters": {
        "command": "uvx raxodus tickets list --status open --format json",
        "env": {
          "RACKSPACE_USERNAME": "={{ $credentials.rackspace.username }}",
          "RACKSPACE_API_KEY": "={{ $credentials.rackspace.apiKey }}"
        }
      }
    },
    {
      "name": "Parse and Filter",
      "type": "n8n-nodes-base.code",
      "parameters": {
        "code": "const data = JSON.parse($input.item.json.stdout);\nreturn data.tickets.filter(t => t.severity === 'urgent');"
      }
    },
    {
      "name": "Send Alert",
      "type": "n8n-nodes-base.slack",
      "parameters": {
        "channel": "#alerts",
        "text": "Urgent ticket: {{ $json.subject }}"
      }
    }
  ]
}
```

## ๐Ÿ“Š Output Format Examples

### JSON Format
```json
{
  "tickets": [
    {
      "ticketId": "250625-02866",
      "subject": "Server connectivity issue",
      "status": "open",
      "severity": "normal",
      "created": "2025-06-25T14:30:00Z",
      "modified": "2025-06-26T09:15:00Z"
    }
  ],
  "elapsed_seconds": 31.5,
  "from_cache": false
}
```

### Table Format
```
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Ticket ID    โ”ƒ Subject                 โ”ƒ Statusโ”ƒ Severity โ”ƒ Modified   โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 250625-02866 โ”‚ Server connectivity...  โ”‚ open  โ”‚ normal   โ”‚ 2025-06-26 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

### CSV Format
```csv
ticketId,subject,status,severity,created,modified
250625-02866,Server connectivity issue,open,normal,2025-06-25T14:30:00Z,2025-06-26T09:15:00Z
```

## โš ๏ธ Known Issues & Workarounds

### Rackspace API Problems

1. **30+ Second Response Times** - Use `--debug` to track performance
2. **Invalid Dates in Responses** - Pydantic models handle gracefully
3. **Inconsistent Field Names** - Abstracted in our models
4. **No Write Access** - API claims to support updates but returns 404

### Workarounds

```bash
# Use debug flag to track slow responses
raxodus tickets list --debug --format json

# Cache results to avoid repeated slow calls
export RAXODUS_CACHE_TTL=600  # 10 minute cache

# Use pagination for large result sets
raxodus tickets list --page 1 --per-page 50
```

## ๐Ÿ› ๏ธ Development

```bash
# Clone repository
git clone https://github.com/bdmorin/raxodus
cd raxodus

# Install for development
uv pip install -e ".[dev]"

# Run tests
pytest

# Check linting
ruff check src/

# Build package
uv build
```

## ๐ŸŽฎ Why "Raxodus"?

Like the villain Exodus from Ultima III - neither demon nor machine, but something altogether different - Rackspace tickets exist in a frustrating limbo between automated systems and human support. This tool helps you escape that hell.

Each release is named after an Ultima III character:
- v0.1.x - "Mondain" (The dark wizard)
- v0.2.x - "Minax" (The enchantress)
- v0.3.x - "Exodus" (Neither demon nor machine)

## ๐Ÿ“ License

MIT - See [LICENSE](LICENSE) file

## ๐Ÿค Contributing

Pull requests welcome! Please ensure:
- All tests pass
- Code follows existing style
- New features include tests
- API workarounds are documented

## โš–๏ธ Disclaimer

This is an **unofficial** tool and is not affiliated with or supported by Rackspace Technology. Use at your own risk.

## ๐Ÿ› Issues & Support

- **Bug Reports**: [GitHub Issues](https://github.com/bdmorin/raxodus/issues)
- **Feature Requests**: [GitHub Issues](https://github.com/bdmorin/raxodus/issues)
- **Security Issues**: Please email privately

## ๐Ÿ“ˆ Project Status

**Current Version**: v0.1.2 (Mondain)

The tool is functional but limited by Rackspace API issues. We maintain 0.x versioning to indicate these limitations. Version 1.0 will only be released when Rackspace fixes their API.

See [CLAUDE.md](CLAUDE.md) for v1.0 release criteria.
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "raxodus",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "automation, cli, n8n, rackspace, tickets",
    "author": null,
    "author_email": "Brian Morin <bdmorin@users.noreply.github.com>",
    "download_url": "https://files.pythonhosted.org/packages/d1/15/e293c5afc1b5f330e4c35d2f10e1d3ee08187c9c08bf9826ebfc8288f6d3/raxodus-0.1.3.tar.gz",
    "platform": null,
    "description": "# \ud83d\udde1\ufe0f Raxodus\n\n[![PyPI version](https://badge.fury.io/py/raxodus.svg)](https://badge.fury.io/py/raxodus)\n[![Python versions](https://img.shields.io/pypi/pyversions/raxodus.svg)](https://pypi.org/project/raxodus/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Tests](https://github.com/bdmorin/raxodus/actions/workflows/test.yml/badge.svg)](https://github.com/bdmorin/raxodus/actions/workflows/test.yml)\n\n> *\"Neither demon nor machine, but something altogether different\"* - Ultima III\n\n**Raxodus** - Escape from Rackspace ticket hell. A minimal CLI for managing Rackspace support tickets, built specifically for automation and n8n workflow integration.\n\n## \ud83c\udfaf Why Raxodus?\n\nThe Rackspace ticket API is broken in numerous ways (30+ second response times, inconsistent field names, \"demo\" endpoints in production). This tool works around those issues to give you reliable ticket access.\n\n## \u2728 Features\n\n- **\ud83c\udfab Read-Only Ticket Access** - List and view Rackspace support tickets\n- **\ud83d\udcca Multiple Output Formats** - JSON, table, or CSV output  \n- **\ud83d\ude80 Fast & Lightweight** - Minimal dependencies, quick responses (when API allows)\n- **\ud83d\udd10 Secure by Design** - No CLI credential flags, environment variables only\n- **\u23f1\ufe0f Debug Mode** - Track API performance with timing metadata\n- **\ud83d\udd04 n8n Ready** - JSON output perfect for workflow automation\n- **\ud83d\udc1a Shell Completions** - Bash, Zsh, and Fish support\n- **\ud83d\udcbe Smart Caching** - Work around slow API responses\n- **\ud83d\udee1\ufe0f Type Safe** - Pydantic models handle API inconsistencies\n\n## \ud83d\udce6 Installation\n\n```bash\n# Quick run without installation (recommended)\nuvx raxodus --version\n\n# Install with pip\npip install raxodus\n\n# Install with uv\nuv pip install raxodus\n```\n\n## \ud83d\ude80 Quick Start\n\n### 1. Set Credentials\n\n```bash\n# Required environment variables\nexport RACKSPACE_USERNAME=\"your-username\"\nexport RACKSPACE_API_KEY=\"your-api-key\"\nexport RACKSPACE_ACCOUNT=\"123456\"  # Optional default account\n```\n\n\u26a0\ufe0f **Security Note**: Never pass credentials as command-line arguments. This is by design for security.\n\n### 2. Test Authentication\n\n```bash\n# Verify your credentials work\nraxodus auth test\n```\n\n### 3. List Tickets\n\n```bash\n# List all tickets (table format)\nraxodus tickets list --format table\n\n# List open tickets from last 7 days\nraxodus tickets list --status open --days 7\n\n# JSON output for automation\nraxodus tickets list --format json\n\n# CSV for spreadsheets\nraxodus tickets list --format csv > tickets.csv\n\n# With debug timing info\nraxodus tickets list --debug --format json\n```\n\n### 4. Get Specific Ticket\n\n```bash\n# View single ticket\nraxodus tickets get 250625-02866\n\n# As JSON\nraxodus tickets get 250625-02866 --format json\n```\n\n## \ud83d\udcda Complete Command Reference\n\n### Main Commands\n\n```bash\nraxodus --help                    # Show help\nraxodus --version                  # Show version info\n```\n\n### Authentication Commands\n\n```bash\n# Test credentials\nraxodus auth test\n\n# Example output:\n# \u2713 Authentication successful\n# \u2713 Token expires: 2025-01-07 15:30:00\n```\n\n### Ticket Commands\n\n```bash\n# List tickets with ALL options\nraxodus tickets list \\\n    --account 123456 \\           # Specific account (overrides env)\n    --status open \\              # Filter: open, closed, pending\n    --days 30 \\                  # Tickets from last N days\n    --page 1 \\                   # Pagination\n    --per-page 100 \\             # Results per page (max 100)\n    --format json \\              # Output: json, table, csv\n    --debug                      # Include timing metadata\n\n# Get single ticket\nraxodus tickets get TICKET-ID \\\n    --format json \\              # Output: json, table\n    --debug                      # Include timing metadata\n```\n\n### Shell Completions\n\n```bash\n# Install completions for your shell\nraxodus completion install\n\n# Or manually add to your shell config\nraxodus completion show >> ~/.bashrc     # Bash\nraxodus completion show >> ~/.zshrc      # Zsh\n```\n\n## \ud83d\udd27 Configuration\n\n### Environment Variables\n\n```bash\n# Required\nRACKSPACE_USERNAME=\"your-username\"       # Your Rackspace username\nRACKSPACE_API_KEY=\"your-api-key\"        # Your API key\n\n# Optional\nRACKSPACE_ACCOUNT=\"123456\"               # Default account number\nRACKSPACE_REGION=\"us\"                    # API region (default: us)\nRAXODUS_CACHE_DIR=\"~/.cache/raxodus\"    # Cache directory\nRAXODUS_CACHE_TTL=\"300\"                 # Cache TTL in seconds\n```\n\n## \ud83e\udd16 n8n Integration\n\n### Execute Command Node\n\n```json\n{\n  \"nodes\": [{\n    \"name\": \"List Tickets\",\n    \"type\": \"n8n-nodes-base.executeCommand\",\n    \"parameters\": {\n      \"command\": \"raxodus tickets list --format json --debug\",\n      \"env\": {\n        \"RACKSPACE_USERNAME\": \"={{ $credentials.rackspace.username }}\",\n        \"RACKSPACE_API_KEY\": \"={{ $credentials.rackspace.apiKey }}\",\n        \"RACKSPACE_ACCOUNT\": \"={{ $credentials.rackspace.account }}\"\n      }\n    }\n  }]\n}\n```\n\n### Process JSON Output\n\n```javascript\n// Code node to process tickets\nconst output = JSON.parse($input.item.json.stdout);\nconst openTickets = output.tickets.filter(t => t.status === 'open');\n\n// Check performance\nif (output.elapsed_seconds > 30) {\n  console.warn(`Slow API response: ${output.elapsed_seconds}s`);\n}\n\nreturn openTickets;\n```\n\n### Complete n8n Workflow Example\n\n```json\n{\n  \"name\": \"Monitor Rackspace Tickets\",\n  \"nodes\": [\n    {\n      \"name\": \"Every 15 minutes\",\n      \"type\": \"n8n-nodes-base.scheduleTrigger\",\n      \"parameters\": {\n        \"rule\": {\n          \"interval\": [{\"field\": \"minutes\", \"value\": 15}]\n        }\n      }\n    },\n    {\n      \"name\": \"Get Open Tickets\",\n      \"type\": \"n8n-nodes-base.executeCommand\",\n      \"parameters\": {\n        \"command\": \"uvx raxodus tickets list --status open --format json\",\n        \"env\": {\n          \"RACKSPACE_USERNAME\": \"={{ $credentials.rackspace.username }}\",\n          \"RACKSPACE_API_KEY\": \"={{ $credentials.rackspace.apiKey }}\"\n        }\n      }\n    },\n    {\n      \"name\": \"Parse and Filter\",\n      \"type\": \"n8n-nodes-base.code\",\n      \"parameters\": {\n        \"code\": \"const data = JSON.parse($input.item.json.stdout);\\nreturn data.tickets.filter(t => t.severity === 'urgent');\"\n      }\n    },\n    {\n      \"name\": \"Send Alert\",\n      \"type\": \"n8n-nodes-base.slack\",\n      \"parameters\": {\n        \"channel\": \"#alerts\",\n        \"text\": \"Urgent ticket: {{ $json.subject }}\"\n      }\n    }\n  ]\n}\n```\n\n## \ud83d\udcca Output Format Examples\n\n### JSON Format\n```json\n{\n  \"tickets\": [\n    {\n      \"ticketId\": \"250625-02866\",\n      \"subject\": \"Server connectivity issue\",\n      \"status\": \"open\",\n      \"severity\": \"normal\",\n      \"created\": \"2025-06-25T14:30:00Z\",\n      \"modified\": \"2025-06-26T09:15:00Z\"\n    }\n  ],\n  \"elapsed_seconds\": 31.5,\n  \"from_cache\": false\n}\n```\n\n### Table Format\n```\n\u250f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n\u2503 Ticket ID    \u2503 Subject                 \u2503 Status\u2503 Severity \u2503 Modified   \u2503\n\u2521\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2529\n\u2502 250625-02866 \u2502 Server connectivity...  \u2502 open  \u2502 normal   \u2502 2025-06-26 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n### CSV Format\n```csv\nticketId,subject,status,severity,created,modified\n250625-02866,Server connectivity issue,open,normal,2025-06-25T14:30:00Z,2025-06-26T09:15:00Z\n```\n\n## \u26a0\ufe0f Known Issues & Workarounds\n\n### Rackspace API Problems\n\n1. **30+ Second Response Times** - Use `--debug` to track performance\n2. **Invalid Dates in Responses** - Pydantic models handle gracefully\n3. **Inconsistent Field Names** - Abstracted in our models\n4. **No Write Access** - API claims to support updates but returns 404\n\n### Workarounds\n\n```bash\n# Use debug flag to track slow responses\nraxodus tickets list --debug --format json\n\n# Cache results to avoid repeated slow calls\nexport RAXODUS_CACHE_TTL=600  # 10 minute cache\n\n# Use pagination for large result sets\nraxodus tickets list --page 1 --per-page 50\n```\n\n## \ud83d\udee0\ufe0f Development\n\n```bash\n# Clone repository\ngit clone https://github.com/bdmorin/raxodus\ncd raxodus\n\n# Install for development\nuv pip install -e \".[dev]\"\n\n# Run tests\npytest\n\n# Check linting\nruff check src/\n\n# Build package\nuv build\n```\n\n## \ud83c\udfae Why \"Raxodus\"?\n\nLike the villain Exodus from Ultima III - neither demon nor machine, but something altogether different - Rackspace tickets exist in a frustrating limbo between automated systems and human support. This tool helps you escape that hell.\n\nEach release is named after an Ultima III character:\n- v0.1.x - \"Mondain\" (The dark wizard)\n- v0.2.x - \"Minax\" (The enchantress)\n- v0.3.x - \"Exodus\" (Neither demon nor machine)\n\n## \ud83d\udcdd License\n\nMIT - See [LICENSE](LICENSE) file\n\n## \ud83e\udd1d Contributing\n\nPull requests welcome! Please ensure:\n- All tests pass\n- Code follows existing style\n- New features include tests\n- API workarounds are documented\n\n## \u2696\ufe0f Disclaimer\n\nThis is an **unofficial** tool and is not affiliated with or supported by Rackspace Technology. Use at your own risk.\n\n## \ud83d\udc1b Issues & Support\n\n- **Bug Reports**: [GitHub Issues](https://github.com/bdmorin/raxodus/issues)\n- **Feature Requests**: [GitHub Issues](https://github.com/bdmorin/raxodus/issues)\n- **Security Issues**: Please email privately\n\n## \ud83d\udcc8 Project Status\n\n**Current Version**: v0.1.2 (Mondain)\n\nThe tool is functional but limited by Rackspace API issues. We maintain 0.x versioning to indicate these limitations. Version 1.0 will only be released when Rackspace fixes their API.\n\nSee [CLAUDE.md](CLAUDE.md) for v1.0 release criteria.",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Escape from Rackspace ticket hell - a minimal CLI for ticket management",
    "version": "0.1.3",
    "project_urls": {
        "Homepage": "https://github.com/bdmorin/raxodus",
        "Issues": "https://github.com/bdmorin/raxodus/issues",
        "Repository": "https://github.com/bdmorin/raxodus"
    },
    "split_keywords": [
        "automation",
        " cli",
        " n8n",
        " rackspace",
        " tickets"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7055b48c5284e8a521de2fdb4ed9302bd97620223e09276a8c4f3b1951e62a73",
                "md5": "c17e479ca45964388cd8219d81250efc",
                "sha256": "5148238cdf9b18c5c1b6e232b940a979134c533b06f7baa4b15bc00ed6ea7c71"
            },
            "downloads": -1,
            "filename": "raxodus-0.1.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c17e479ca45964388cd8219d81250efc",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 16004,
            "upload_time": "2025-08-06T07:41:23",
            "upload_time_iso_8601": "2025-08-06T07:41:23.180462Z",
            "url": "https://files.pythonhosted.org/packages/70/55/b48c5284e8a521de2fdb4ed9302bd97620223e09276a8c4f3b1951e62a73/raxodus-0.1.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d115e293c5afc1b5f330e4c35d2f10e1d3ee08187c9c08bf9826ebfc8288f6d3",
                "md5": "f2180fa5a53227bb9c8917430f1acd41",
                "sha256": "ccc124344c05cea470ba5bdd6e1836714ea90e662545a2d7720dbc12024f4a2f"
            },
            "downloads": -1,
            "filename": "raxodus-0.1.3.tar.gz",
            "has_sig": false,
            "md5_digest": "f2180fa5a53227bb9c8917430f1acd41",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 44115,
            "upload_time": "2025-08-06T07:41:24",
            "upload_time_iso_8601": "2025-08-06T07:41:24.474788Z",
            "url": "https://files.pythonhosted.org/packages/d1/15/e293c5afc1b5f330e4c35d2f10e1d3ee08187c9c08bf9826ebfc8288f6d3/raxodus-0.1.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-06 07:41:24",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "bdmorin",
    "github_project": "raxodus",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "raxodus"
}
        
Elapsed time: 0.40389s