Files
nutcas3 9f51d6f20e feat: Add analytics, security, and currency SDK modules with comprehensive API endpoints across Elixir and Go SDKs
- Add AnalyticsAPI with churn prediction (predict, metrics, at-risk), market analytics (metrics, competitors, opportunities), predictive maintenance (metrics, assets, alerts, predict), and pricing optimization (metrics, optimize, elasticity) endpoints
- Add SecurityAPI with fraud detection (analyze, alerts, update status, metrics, patterns) and SIM swap protection (verify, history) endpoints
- Add CurrencyAPI with currency conversion (convert, exchange rates, rate
2026-05-03 13:29:44 +03:00

69 lines
2.6 KiB
Python

"""Currency and Billing API client."""
from typing import List, Optional, Dict, Any
from datetime import datetime
class CurrencyAPI:
"""Currency and Billing API client."""
def __init__(self, client):
self._client = client
def convert(self, from_currency: str, to_currency: str, amount: float) -> dict:
"""Convert currency."""
return self._client.post(
"/api/v1/currency/convert",
{"from": from_currency, "to": to_currency, "amount": amount},
)
def get_exchange_rate(self, from_currency: str, to_currency: str) -> dict:
"""Get exchange rate between currencies."""
return self._client.get(f"/api/v1/currency/exchange/{from_currency}/{to_currency}")
def get_exchange_rate_history(
self, from_currency: str, to_currency: str, days: int = 30
) -> dict:
"""Get exchange rate history."""
return self._client.get(
f"/api/v1/currency/exchange/{from_currency}/{to_currency}/history",
params={"days": str(days)},
)
def get_supported_currencies(self) -> dict:
"""Get list of supported currencies."""
return self._client.get("/api/v1/currency/currencies")
def refresh_exchange_rates(self) -> dict:
"""Refresh exchange rates from external sources."""
return self._client.post("/api/v1/currency/exchange/refresh", {})
def process_billing(self, billing_data: Dict[str, Any]) -> dict:
"""Process billing transaction."""
return self._client.post("/api/v1/currency/billing", billing_data)
def get_billing_history(self, profile_id: str, limit: int = 50) -> dict:
"""Get billing history for a profile."""
return self._client.get(
f"/api/v1/currency/billing/history/{profile_id}",
params={"limit": str(limit)},
)
def get_billing_summary(self, profile_id: str, period: str = "monthly") -> dict:
"""Get billing summary for a profile."""
return self._client.get(
f"/api/v1/currency/billing/summary/{profile_id}",
params={"period": period},
)
def process_refund(self, transaction_id: str, reason: str) -> dict:
"""Process a refund for a transaction."""
return self._client.post(
f"/api/v1/currency/billing/refund/{transaction_id}",
{"reason": reason},
)
def get_billing_analytics(self, period: str = "monthly") -> dict:
"""Get billing analytics."""
return self._client.get("/api/v1/currency/billing/analytics", params={"period": period})