Skip to main content

API-ARM 🦾

Application Programming Interface with Automated Request Manipulator

API-ARM is a powerful Python tool that analyzes APIs, determines their usage patterns, and mimics secure requests to return anticipated results.

Python 3.10+ License: MIT

✨ Features

Feature Description
🔍 API Analysis Auto-discover endpoints, auth methods, and rate limits from OpenAPI/Swagger
🔐 Multi-Auth Support API Key, Bearer Token, Basic Auth, OAuth 2.0
📡 Smart Requests Make properly authenticated requests with retry logic
📊 Request Logging Track all requests with timing and statistics
⚡ Response Caching LRU cache with TTL for faster repeated requests
🖥️ Beautiful CLI Terminal interface with Rich formatting

🚀 Installation

# Clone the repository
git clone https://github.com/yourusername/apiarm.git
cd apiarm

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install in development mode
pip install -e ".[dev]"

📖 Quick Start

Python API

import asyncio
from apiarm import APIArm

async def main():
    async with APIArm("https://api.example.com") as arm:
        # Configure authentication
        arm.set_api_key("your-api-key")
        
        # Enable logging and caching
        arm.enable_logging(console=True)
        arm.enable_caching(max_size=100, default_ttl=300)
        
        # Analyze the API
        analysis = await arm.analyze()
        print(f"Found {analysis.endpoint_count} endpoints")
        
        # Make requests
        response = await arm.get("/users")
        print(response.data)
        
        # Print statistics
        arm.print_stats()

asyncio.run(main())

CLI Commands

# Analyze an API
apiarm analyze https://api.example.com

# Make a GET request
apiarm request https://api.example.com/users

# Make a POST request with data
apiarm request https://api.example.com/users -m POST -d '{"name": "John"}'

# With authentication
apiarm request https://api.example.com/users -k "your-api-key"
apiarm request https://api.example.com/users -b "your-bearer-token"

🏗️ Project Structure

apiarm/
├── apiarm/                    # Main package
│   ├── __init__.py
│   ├── cli.py                # Command-line interface
│   ├── core/
│   │   ├── analyzer.py       # API analysis engine
│   │   ├── requester.py      # Request handling
│   │   ├── security.py       # Authentication
│   │   ├── logger.py         # Request logging
│   │   ├── cache.py          # Response caching
│   │   └── arm.py            # Main unified interface
│   ├── models/
│   │   ├── endpoint.py       # Endpoint model
│   │   └── response.py       # Response model
│   └── utils/
│       └── helpers.py        # Utility functions
├── examples/
│   └── basic_usage.py
├── tests/
├── requirements.txt
└── pyproject.toml

🔐 Authentication Methods

from apiarm import APIArm
from apiarm.models import AuthMethod

async with APIArm("https://api.example.com") as arm:
    # API Key
    arm.set_api_key("your-key", header_name="X-API-Key")
    
    # Bearer Token
    arm.set_bearer_token("your-token")
    
    # Or use configure_auth for any method
    arm.configure_auth(
        AuthMethod.BASIC,
        username="user",
        password="pass"
    )
    
    arm.configure_auth(
        AuthMethod.OAUTH2,
        client_id="id",
        client_secret="secret",
        token="access-token"
    )

📊 Logging & Caching

from pathlib import Path

async with APIArm("https://api.example.com") as arm:
    # Enable console logging
    arm.enable_logging(console=True)
    
    # Log to file (JSON lines format)
    arm.enable_logging(console=True, file_path=Path("requests.log"))
    
    # Enable caching (5 minute TTL by default)
    arm.enable_caching(max_size=100, default_ttl=300)
    
    # Make requests...
    await arm.get("/users")
    await arm.get("/users")  # Cache hit!
    
    # View statistics
    arm.print_stats()
    
    # Access logger directly
    for log in arm.logger.get_logs():
        print(f"{log.method} {log.path} - {log.duration_ms}ms")

🧪 Running Tests

# Run all tests
pytest tests/ -v

# With coverage
pytest tests/ --cov=apiarm --cov-report=html

🛠️ Development

# Format code
black apiarm/ tests/
isort apiarm/ tests/

# Type checking
mypy apiarm/

📄 License

MIT License - See LICENSE file for details.

👤 Author

Rayen Bahroun - bahroun.me


Made with 🦾 by API-ARM

Metadata

Release files for apiarm 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for apiarm 0.1.1
File Size Uploaded
apiarm-0.1.1.tar.gz 31.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for apiarm 0.1.1
File Interpreter ABI Platform
apiarm-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 62.7 kB

Release files / apiarm-0.1.1.tar.gz

Download URL apiarm-0.1.1.tar.gz
Size 31.5 kB
Tags Source
SHA-256 checksum
How to use checksums
e2a61d91f68f994dccad440a38880af1d64e4f869d9257582086d0a4f3c3a195
BLAKE2b-256 checksum
How to use checksums
92ec59504c439f1ca12bb9eff8d4f0af32e69bc7d63176b0a5214c7030d9a877
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / apiarm-0.1.1-py3-none-any.whl

Download URL apiarm-0.1.1-py3-none-any.whl
Size 31.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c1a99e8943ca9ec9397f6860fd2415b14d32f54e40786d0915b19c729f6a3e71
BLAKE2b-256 checksum
How to use checksums
9af381f5ac47bcbd42a4019fdc5dcf1bdea6c309f6c059032480fd74f90bad97
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page