mirror of
https://github.com/andwati/telecom-platform.git
synced 2026-10-18 02:52:53 +00:00
docs: Add comprehensive SDK documentation and API endpoint reference to README
- Add sdk/ directory structure with Go, Python, TypeScript, Kotlin, Ruby, Swift, Rust, and Elixir SDKs - Add docs/sdk-usage.md reference to documentation section - Add Analytics API endpoints table with churn prediction, market analysis, maintenance metrics, and pricing optimization - Add Security API endpoints table with fraud detection, alert management, and SIM swap protection - Add Currency & Billing API endpoints table with conversion
This commit is contained in:
@@ -213,6 +213,15 @@ telecom-platform/
|
||||
| |-- charging-engine/ # Rust: OCS Real-time Credit Control
|
||||
| |-- packet-gateway/ # Rust: eBPF UPF Data Plane
|
||||
| |-- web-dashboard/ # TypeScript: Next.js Frontend
|
||||
|-- sdk/
|
||||
| |-- go/ # Go SDK
|
||||
| |-- python/ # Python SDK
|
||||
| |-- typescript/ # TypeScript SDK
|
||||
| |-- kotlin/ # Kotlin SDK
|
||||
| |-- ruby/ # Ruby SDK
|
||||
| |-- swift/ # Swift SDK
|
||||
| |-- rust/ # Rust SDK
|
||||
| |-- elixir/ # Elixir SDK
|
||||
|-- libs/
|
||||
| |-- shared-ts-sdk/ # TypeScript: Drop-in Widget SDK
|
||||
| |-- proto/ # Shared Protobufs
|
||||
@@ -223,6 +232,7 @@ telecom-platform/
|
||||
| |-- traefik.yml # Static configuration
|
||||
| |-- dynamic/ # Dynamic middleware config
|
||||
|-- docs/ # Architecture & API docs
|
||||
| |-- sdk-usage.md # Multi-language SDK documentation
|
||||
| |-- gateway-quickstart.md # API Gateway guide
|
||||
| |-- api-gateway.md # Gateway implementation details
|
||||
|-- scripts/ # Automation scripts
|
||||
@@ -338,6 +348,53 @@ The API Gateway provides:
|
||||
|
||||
For detailed setup, see [Gateway Quickstart Guide](./docs/gateway-quickstart.md)
|
||||
|
||||
## API Endpoints
|
||||
|
||||
### Analytics API
|
||||
|
||||
| Method | Endpoint | Description |
|
||||
|--------|----------|-------------|
|
||||
| POST | `/api/v1/analytics/churn/predict` | Predict churn for a profile |
|
||||
| GET | `/api/v1/analytics/churn/metrics` | Get churn metrics |
|
||||
| GET | `/api/v1/analytics/churn/at-risk` | Get at-risk customers |
|
||||
| GET | `/api/v1/analytics/market/metrics` | Get market metrics |
|
||||
| GET | `/api/v1/analytics/market/competitors` | Get competitor analysis |
|
||||
| GET | `/api/v1/analytics/market/opportunities` | Get market opportunities |
|
||||
| GET | `/api/v1/analytics/maintenance/metrics` | Get maintenance metrics |
|
||||
| GET | `/api/v1/analytics/maintenance/assets` | Get assets health |
|
||||
| GET | `/api/v1/analytics/maintenance/alerts` | Get maintenance alerts |
|
||||
| POST | `/api/v1/analytics/maintenance/predict/:asset_id` | Predict asset failure |
|
||||
| GET | `/api/v1/analytics/pricing/metrics` | Get pricing metrics |
|
||||
| POST | `/api/v1/analytics/pricing/optimize` | Optimize pricing |
|
||||
| GET | `/api/v1/analytics/pricing/elasticity` | Get price elasticity |
|
||||
|
||||
### Security API
|
||||
|
||||
| Method | Endpoint | Description |
|
||||
|--------|----------|-------------|
|
||||
| POST | `/api/v1/security/fraud/analyze` | Analyze transaction for fraud |
|
||||
| POST | `/api/v1/security/fraud/alerts` | Get fraud alerts |
|
||||
| PUT | `/api/v1/security/fraud/alerts/:id` | Update alert status |
|
||||
| GET | `/api/v1/security/fraud/metrics` | Get fraud metrics |
|
||||
| GET | `/api/v1/security/fraud/patterns` | Get fraud patterns |
|
||||
| POST | `/api/v1/security/simswap/verify` | Verify SIM swap |
|
||||
| GET | `/api/v1/security/simswap/history/:profile_id` | Get SIM swap history |
|
||||
|
||||
### Currency & Billing API
|
||||
|
||||
| Method | Endpoint | Description |
|
||||
|--------|----------|-------------|
|
||||
| POST | `/api/v1/currency/convert` | Convert currency |
|
||||
| GET | `/api/v1/currency/exchange/:from/:to` | Get exchange rate |
|
||||
| GET | `/api/v1/currency/exchange/:from/:to/history` | Get exchange rate history |
|
||||
| GET | `/api/v1/currency/currencies` | List supported currencies |
|
||||
| POST | `/api/v1/currency/exchange/refresh` | Refresh exchange rates |
|
||||
| POST | `/api/v1/currency/billing` | Process billing |
|
||||
| GET | `/api/v1/currency/billing/history/:profile_id` | Get billing history |
|
||||
| GET | `/api/v1/currency/billing/summary/:profile_id` | Get billing summary |
|
||||
| POST | `/api/v1/currency/billing/refund/:transaction_id` | Process refund |
|
||||
| GET | `/api/v1/currency/billing/analytics` | Get billing analytics |
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Create `.env` files in each service directory:
|
||||
|
||||
@@ -0,0 +1,547 @@
|
||||
# TaaS Platform SDK Documentation
|
||||
|
||||
Multi-language SDK documentation for integrating with the Telecom-as-a-Service Platform.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Overview](#overview)
|
||||
- [Installation](#installation)
|
||||
- [Authentication](#authentication)
|
||||
- [Go SDK](#go-sdk)
|
||||
- [Python SDK](#python-sdk)
|
||||
- [TypeScript SDK](#typescript-sdk)
|
||||
- [Analytics API](#analytics-api)
|
||||
- [Security API](#security-api)
|
||||
- [Currency & Billing API](#currency--billing-api)
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
The TaaS Platform provides SDKs for multiple programming languages to simplify integration with platform services:
|
||||
|
||||
| Language | Package | Status |
|
||||
|----------|---------|--------|
|
||||
| Go | `github.com/nutcas3/telecom-platform/sdk/go` | ✅ Stable |
|
||||
| Python | `telecom-sdk` | ✅ Stable |
|
||||
| TypeScript | `@taas/sdk` | ✅ Stable |
|
||||
| Kotlin | `com.taas:sdk` | 🚧 Beta |
|
||||
| Ruby | `taas-sdk` | 🚧 Beta |
|
||||
| Swift | `TaaSSDK` | 🚧 Beta |
|
||||
| Rust | `taas-sdk` | 🚧 Beta |
|
||||
| Elixir | `taas_sdk` | 🚧 Beta |
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
|
||||
### Go
|
||||
|
||||
```bash
|
||||
go get github.com/nutcas3/telecom-platform/sdk/go
|
||||
```
|
||||
|
||||
### Python
|
||||
|
||||
```bash
|
||||
pip install telecom-sdk
|
||||
```
|
||||
|
||||
### TypeScript/JavaScript
|
||||
|
||||
```bash
|
||||
npm install @taas/sdk
|
||||
# or
|
||||
pnpm add @taas/sdk
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Authentication
|
||||
|
||||
All SDKs use JWT-based authentication. Obtain an API key from the dashboard or use username/password authentication.
|
||||
|
||||
### API Key Authentication
|
||||
|
||||
```go
|
||||
// Go
|
||||
client := taas.NewClient(taas.WithAPIKey("your-api-key"))
|
||||
```
|
||||
|
||||
```python
|
||||
# Python
|
||||
from telecom_sdk import TelecomClient
|
||||
client = TelecomClient(api_key="your-api-key")
|
||||
```
|
||||
|
||||
```typescript
|
||||
// TypeScript
|
||||
import { TelecomClient } from '@taas/sdk';
|
||||
const client = new TelecomClient({ apiKey: 'your-api-key' });
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Go SDK
|
||||
|
||||
### Basic Usage
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
taas "github.com/nutcas3/telecom-platform/sdk/go"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Initialize client
|
||||
client := taas.NewClient(
|
||||
taas.WithBaseURL("https://api.telecom.com"),
|
||||
taas.WithAPIKey("your-api-key"),
|
||||
)
|
||||
|
||||
// Create a subscriber
|
||||
subscriber, err := client.Subscribers.Create(context.Background(), &taas.CreateSubscriberRequest{
|
||||
MSISDN: "+1234567890",
|
||||
FirstName: "John",
|
||||
LastName: "Doe",
|
||||
Email: "[email protected]",
|
||||
PlanID: 1,
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
fmt.Printf("Created subscriber: %s\n", subscriber.ID)
|
||||
}
|
||||
```
|
||||
|
||||
### Analytics API
|
||||
|
||||
```go
|
||||
// Churn Prediction
|
||||
analyticsAPI := taas.NewAnalyticsAPI(client.HTTPClient)
|
||||
|
||||
// Predict churn for a profile
|
||||
prediction, err := analyticsAPI.PredictChurn(ctx, "profile-123")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
fmt.Printf("Churn Risk: %s (Score: %.2f)\n", prediction.RiskLevel, prediction.RiskScore)
|
||||
|
||||
// Get churn metrics
|
||||
metrics, err := analyticsAPI.GetChurnMetrics(ctx, "monthly")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
fmt.Printf("Monthly Churn Rate: %.2f%%\n", metrics.MonthlyChurnRate)
|
||||
|
||||
// Get at-risk customers
|
||||
atRisk, err := analyticsAPI.GetAtRiskCustomers(ctx, taas.ChurnRiskHigh, 100)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
fmt.Printf("Found %d high-risk customers\n", len(atRisk))
|
||||
|
||||
// Market metrics
|
||||
marketMetrics, err := analyticsAPI.GetMarketMetrics(ctx, "quarterly")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
fmt.Printf("Market Share: %.2f%%\n", marketMetrics.MarketShare)
|
||||
```
|
||||
|
||||
### Security API
|
||||
|
||||
```go
|
||||
// Fraud Detection
|
||||
securityAPI := taas.NewSecurityAPI(client.HTTPClient)
|
||||
|
||||
// Analyze a transaction
|
||||
alert, err := securityAPI.AnalyzeTransaction(ctx, map[string]interface{}{
|
||||
"profile_id": "profile-123",
|
||||
"amount": 99.99,
|
||||
"ip_address": "192.168.1.1",
|
||||
"device_id": "device-456",
|
||||
"transaction": "payment",
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
if alert != nil {
|
||||
fmt.Printf("Fraud Alert: %s (Severity: %s)\n", alert.Type, alert.Severity)
|
||||
}
|
||||
|
||||
// Get fraud alerts
|
||||
alerts, err := securityAPI.GetFraudAlerts(ctx, taas.FraudAlertFilter{
|
||||
Severity: taas.FraudSeverityHigh,
|
||||
Status: "new",
|
||||
Limit: 50,
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
fmt.Printf("Found %d fraud alerts\n", len(alerts))
|
||||
|
||||
// Get fraud metrics
|
||||
fraudMetrics, err := securityAPI.GetFraudMetrics(ctx, "monthly")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
fmt.Printf("Resolution Rate: %.2f%%\n", fraudMetrics.ResolutionRate)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Python SDK
|
||||
|
||||
### Basic Usage
|
||||
|
||||
```python
|
||||
from telecom_sdk import TelecomClient
|
||||
from telecom_sdk.types import CreateSubscriberRequest
|
||||
|
||||
# Initialize client
|
||||
client = TelecomClient(
|
||||
base_url="https://api.telecom.com",
|
||||
api_key="your-api-key"
|
||||
)
|
||||
|
||||
# Create a subscriber
|
||||
subscriber = client.subscribers.create(CreateSubscriberRequest(
|
||||
msisdn="+1234567890",
|
||||
first_name="John",
|
||||
last_name="Doe",
|
||||
email="[email protected]",
|
||||
plan_id=1
|
||||
))
|
||||
print(f"Created subscriber: {subscriber.id}")
|
||||
```
|
||||
|
||||
### Analytics API
|
||||
|
||||
```python
|
||||
from telecom_sdk import TelecomClient
|
||||
from telecom_sdk.types import ChurnRiskLevel
|
||||
|
||||
client = TelecomClient(api_key="your-api-key")
|
||||
|
||||
# Churn Prediction
|
||||
prediction = client.analytics.predict_churn("profile-123")
|
||||
print(f"Churn Risk: {prediction.risk_level} (Score: {prediction.risk_score:.2f})")
|
||||
|
||||
# Get churn metrics
|
||||
metrics = client.analytics.get_churn_metrics("monthly")
|
||||
print(f"Monthly Churn Rate: {metrics.monthly_churn_rate:.2f}%")
|
||||
|
||||
# Get at-risk customers
|
||||
at_risk = client.analytics.get_at_risk_customers(
|
||||
risk_level=ChurnRiskLevel.HIGH,
|
||||
limit=100
|
||||
)
|
||||
print(f"Found {len(at_risk)} high-risk customers")
|
||||
|
||||
# Market metrics
|
||||
market = client.analytics.get_market_metrics("quarterly")
|
||||
print(f"Market Share: {market.market_share_pct:.2f}%")
|
||||
```
|
||||
|
||||
### Security API
|
||||
|
||||
```python
|
||||
from telecom_sdk import TelecomClient
|
||||
from telecom_sdk.types import FraudType, FraudSeverity, FraudAlertFilter
|
||||
|
||||
client = TelecomClient(api_key="your-api-key")
|
||||
|
||||
# Analyze transaction
|
||||
alert = client.security.analyze_transaction({
|
||||
"profile_id": "profile-123",
|
||||
"amount": 99.99,
|
||||
"ip_address": "192.168.1.1",
|
||||
"device_id": "device-456",
|
||||
"transaction": "payment"
|
||||
})
|
||||
if alert:
|
||||
print(f"Fraud Alert: {alert.type} (Severity: {alert.severity})")
|
||||
|
||||
# Get fraud alerts
|
||||
alerts = client.security.get_fraud_alerts(FraudAlertFilter(
|
||||
severity=FraudSeverity.HIGH,
|
||||
status="new",
|
||||
limit=50
|
||||
))
|
||||
print(f"Found {len(alerts)} fraud alerts")
|
||||
|
||||
# Get fraud metrics
|
||||
fraud_metrics = client.security.get_fraud_metrics("monthly")
|
||||
print(f"Resolution Rate: {fraud_metrics.resolution_rate_pct:.2f}%")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## TypeScript SDK
|
||||
|
||||
### Basic Usage
|
||||
|
||||
```typescript
|
||||
import { TelecomClient, CreateSubscriberRequest } from '@taas/sdk';
|
||||
|
||||
// Initialize client
|
||||
const client = new TelecomClient({
|
||||
baseUrl: 'https://api.telecom.com',
|
||||
apiKey: 'your-api-key'
|
||||
});
|
||||
|
||||
// Create a subscriber
|
||||
const subscriber = await client.subscribers.create({
|
||||
msisdn: '+1234567890',
|
||||
firstName: 'John',
|
||||
lastName: 'Doe',
|
||||
email: '[email protected]',
|
||||
planId: 1
|
||||
});
|
||||
console.log(`Created subscriber: ${subscriber.id}`);
|
||||
```
|
||||
|
||||
### Analytics API
|
||||
|
||||
```typescript
|
||||
import { TelecomClient, ChurnRiskLevel } from '@taas/sdk';
|
||||
import { AnalyticsAPI } from '@taas/sdk/analytics';
|
||||
|
||||
const client = new TelecomClient({ apiKey: 'your-api-key' });
|
||||
const analytics = new AnalyticsAPI(client.httpClient);
|
||||
|
||||
// Churn Prediction
|
||||
const prediction = await analytics.predictChurn('profile-123');
|
||||
console.log(`Churn Risk: ${prediction.riskLevel} (Score: ${prediction.riskScore.toFixed(2)})`);
|
||||
|
||||
// Get churn metrics
|
||||
const metrics = await analytics.getChurnMetrics('monthly');
|
||||
console.log(`Monthly Churn Rate: ${metrics.monthlyChurnRate.toFixed(2)}%`);
|
||||
|
||||
// Get at-risk customers
|
||||
const atRisk = await analytics.getAtRiskCustomers(ChurnRiskLevel.High, 100);
|
||||
console.log(`Found ${atRisk.length} high-risk customers`);
|
||||
|
||||
// Market metrics
|
||||
const market = await analytics.getMarketMetrics('quarterly');
|
||||
console.log(`Market Share: ${market.marketSharePct.toFixed(2)}%`);
|
||||
```
|
||||
|
||||
### Security API
|
||||
|
||||
```typescript
|
||||
import { TelecomClient, FraudSeverity, FraudAlertFilter } from '@taas/sdk';
|
||||
import { SecurityAPI } from '@taas/sdk/security';
|
||||
|
||||
const client = new TelecomClient({ apiKey: 'your-api-key' });
|
||||
const security = new SecurityAPI(client.httpClient);
|
||||
|
||||
// Analyze transaction
|
||||
const alert = await security.analyzeTransaction({
|
||||
profileId: 'profile-123',
|
||||
amount: 99.99,
|
||||
ipAddress: '192.168.1.1',
|
||||
deviceId: 'device-456',
|
||||
transaction: 'payment'
|
||||
});
|
||||
if (alert) {
|
||||
console.log(`Fraud Alert: ${alert.type} (Severity: ${alert.severity})`);
|
||||
}
|
||||
|
||||
// Get fraud alerts
|
||||
const alerts = await security.getFraudAlerts({
|
||||
severity: FraudSeverity.High,
|
||||
status: 'new',
|
||||
limit: 50
|
||||
});
|
||||
console.log(`Found ${alerts.length} fraud alerts`);
|
||||
|
||||
// Get fraud metrics
|
||||
const fraudMetrics = await security.getFraudMetrics('monthly');
|
||||
console.log(`Resolution Rate: ${fraudMetrics.resolutionRatePct.toFixed(2)}%`);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Analytics API
|
||||
|
||||
### Endpoints
|
||||
|
||||
| Method | Endpoint | Description |
|
||||
|--------|----------|-------------|
|
||||
| POST | `/api/v1/analytics/churn/predict` | Predict churn for a profile |
|
||||
| GET | `/api/v1/analytics/churn/metrics` | Get churn metrics |
|
||||
| GET | `/api/v1/analytics/churn/at-risk` | Get at-risk customers |
|
||||
| GET | `/api/v1/analytics/market/metrics` | Get market metrics |
|
||||
| GET | `/api/v1/analytics/maintenance/metrics` | Get predictive maintenance metrics |
|
||||
| GET | `/api/v1/analytics/pricing/metrics` | Get pricing metrics |
|
||||
| POST | `/api/v1/analytics/pricing/optimize` | Optimize pricing for rate plans |
|
||||
|
||||
### Churn Risk Levels
|
||||
|
||||
- `low` - Low risk of churn (< 25% probability)
|
||||
- `medium` - Medium risk of churn (25-50% probability)
|
||||
- `high` - High risk of churn (50-75% probability)
|
||||
- `critical` - Critical risk of churn (> 75% probability)
|
||||
|
||||
---
|
||||
|
||||
## Security API
|
||||
|
||||
### Endpoints
|
||||
|
||||
| Method | Endpoint | Description |
|
||||
|--------|----------|-------------|
|
||||
| POST | `/api/v1/security/fraud/analyze` | Analyze transaction for fraud |
|
||||
| POST | `/api/v1/security/fraud/alerts` | Get fraud alerts with filters |
|
||||
| PUT | `/api/v1/security/fraud/alerts/:id` | Update alert status |
|
||||
| GET | `/api/v1/security/fraud/metrics` | Get fraud metrics |
|
||||
|
||||
### Fraud Types
|
||||
|
||||
- `account_takeover` - Unauthorized account access
|
||||
- `subscription_fraud` - Fraudulent subscription creation
|
||||
- `payment_fraud` - Fraudulent payment transactions
|
||||
- `usage_anomaly` - Abnormal usage patterns
|
||||
- `sim_swap` - Unauthorized SIM swap attempts
|
||||
|
||||
### Fraud Severity Levels
|
||||
|
||||
- `low` - Low severity, monitor only
|
||||
- `medium` - Medium severity, review required
|
||||
- `high` - High severity, immediate action needed
|
||||
- `critical` - Critical severity, block transaction
|
||||
|
||||
---
|
||||
|
||||
## Currency & Billing API
|
||||
|
||||
### Endpoints
|
||||
|
||||
| Method | Endpoint | Description |
|
||||
|--------|----------|-------------|
|
||||
| POST | `/api/v1/currency/convert` | Convert currency |
|
||||
| GET | `/api/v1/currency/exchange/:from/:to` | Get exchange rate |
|
||||
| GET | `/api/v1/currency/exchange/:from/:to/history` | Get exchange rate history |
|
||||
| GET | `/api/v1/currency/currencies` | List supported currencies |
|
||||
| POST | `/api/v1/currency/exchange/refresh` | Refresh exchange rates |
|
||||
| POST | `/api/v1/currency/billing` | Process billing |
|
||||
| GET | `/api/v1/currency/billing/history/:profile_id` | Get billing history |
|
||||
| GET | `/api/v1/currency/billing/summary/:profile_id` | Get billing summary |
|
||||
| POST | `/api/v1/currency/billing/refund/:transaction_id` | Process refund |
|
||||
| GET | `/api/v1/currency/billing/analytics` | Get billing analytics |
|
||||
|
||||
### Example: Currency Conversion
|
||||
|
||||
```typescript
|
||||
// TypeScript
|
||||
const result = await client.currency.convert({
|
||||
from: 'USD',
|
||||
to: 'EUR',
|
||||
amount: 100.00
|
||||
});
|
||||
console.log(`${result.amount} ${result.to} = ${result.converted} ${result.from}`);
|
||||
```
|
||||
|
||||
```python
|
||||
# Python
|
||||
result = client.currency.convert(
|
||||
from_currency="USD",
|
||||
to_currency="EUR",
|
||||
amount=100.00
|
||||
)
|
||||
print(f"{result.amount} {result.to_currency} = {result.converted} {result.from_currency}")
|
||||
```
|
||||
|
||||
```go
|
||||
// Go
|
||||
result, err := client.Currency.Convert(ctx, &taas.ConvertRequest{
|
||||
From: "USD",
|
||||
To: "EUR",
|
||||
Amount: 100.00,
|
||||
})
|
||||
fmt.Printf("%f %s = %f %s\n", result.Amount, result.To, result.Converted, result.From)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Error Handling
|
||||
|
||||
All SDKs provide consistent error handling:
|
||||
|
||||
### Go
|
||||
|
||||
```go
|
||||
subscriber, err := client.Subscribers.Get(ctx, "invalid-id")
|
||||
if err != nil {
|
||||
if apiErr, ok := err.(*taas.APIError); ok {
|
||||
fmt.Printf("API Error: %s (Code: %d)\n", apiErr.Message, apiErr.StatusCode)
|
||||
} else {
|
||||
fmt.Printf("Network Error: %v\n", err)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Python
|
||||
|
||||
```python
|
||||
from telecom_sdk.exceptions import APIError, NetworkError
|
||||
|
||||
try:
|
||||
subscriber = client.subscribers.get("invalid-id")
|
||||
except APIError as e:
|
||||
print(f"API Error: {e.message} (Code: {e.status_code})")
|
||||
except NetworkError as e:
|
||||
print(f"Network Error: {e}")
|
||||
```
|
||||
|
||||
### TypeScript
|
||||
|
||||
```typescript
|
||||
import { APIError, NetworkError } from '@taas/sdk';
|
||||
|
||||
try {
|
||||
const subscriber = await client.subscribers.get('invalid-id');
|
||||
} catch (error) {
|
||||
if (error instanceof APIError) {
|
||||
console.log(`API Error: ${error.message} (Code: ${error.statusCode})`);
|
||||
} else if (error instanceof NetworkError) {
|
||||
console.log(`Network Error: ${error.message}`);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Rate Limiting
|
||||
|
||||
The API enforces rate limits per user:
|
||||
- **Default**: 100 requests per minute
|
||||
- **Burst**: Up to 200 requests in short bursts
|
||||
|
||||
SDKs automatically handle rate limiting with exponential backoff:
|
||||
|
||||
```typescript
|
||||
const client = new TelecomClient({
|
||||
apiKey: 'your-api-key',
|
||||
retryConfig: {
|
||||
maxRetries: 3,
|
||||
retryDelay: 1000, // 1 second
|
||||
retryOnRateLimit: true
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Support
|
||||
|
||||
- **Documentation**: [https://docs.telecom-platform.com](https://docs.telecom-platform.com)
|
||||
- **GitHub Issues**: [https://github.com/nutcas3/telecom-platform/issues](https://github.com/nutcas3/telecom-platform/issues)
|
||||
- **Email**: sdk-support@telecom-platform.com
|
||||
Reference in New Issue
Block a user