- Add Prometheus metrics for marketplace API throughput and error rates with new dashboard panels - Implement confidential transaction models with encryption support and access control - Add key management system with registration, rotation, and audit logging - Create services and registry routers for service discovery and management - Integrate ZK proof generation for privacy-preserving receipts - Add metrics instru
599 lines
9.9 KiB
Markdown
599 lines
9.9 KiB
Markdown
# AITBC Enterprise Connectors API Specification
|
|
|
|
## Overview
|
|
|
|
This document describes the API specification for the AITBC Enterprise Connectors SDK, including all available methods, parameters, and response formats.
|
|
|
|
## Core API
|
|
|
|
### AITBCClient
|
|
|
|
The main client class for connecting to AITBC.
|
|
|
|
#### Constructor
|
|
|
|
```python
|
|
AITBCClient(
|
|
config: ConnectorConfig,
|
|
session: Optional[ClientSession] = None,
|
|
auth_handler: Optional[AuthHandler] = None,
|
|
rate_limiter: Optional[RateLimiter] = None,
|
|
metrics: Optional[MetricsCollector] = None
|
|
)
|
|
```
|
|
|
|
#### Methods
|
|
|
|
##### connect()
|
|
Establish connection to AITBC.
|
|
|
|
```python
|
|
async connect() -> None
|
|
```
|
|
|
|
##### disconnect()
|
|
Close connection to AITBC.
|
|
|
|
```python
|
|
async disconnect() -> None
|
|
```
|
|
|
|
##### request()
|
|
Make authenticated request to AITBC API.
|
|
|
|
```python
|
|
async request(
|
|
method: str,
|
|
path: str,
|
|
**kwargs
|
|
) -> Dict[str, Any]
|
|
```
|
|
|
|
**Parameters:**
|
|
- `method` (str): HTTP method (GET, POST, PUT, DELETE)
|
|
- `path` (str): API endpoint path
|
|
- `**kwargs`: Additional request parameters
|
|
|
|
**Returns:**
|
|
- `Dict[str, Any]`: Response data
|
|
|
|
##### get(), post(), put(), delete()
|
|
Convenience methods for HTTP requests.
|
|
|
|
```python
|
|
async get(path: str, **kwargs) -> Dict[str, Any]
|
|
async post(path: str, **kwargs) -> Dict[str, Any]
|
|
async put(path: str, **kwargs) -> Dict[str, Any]
|
|
async delete(path: str, **kwargs) -> Dict[str, Any]
|
|
```
|
|
|
|
### ConnectorConfig
|
|
|
|
Configuration class for connectors.
|
|
|
|
#### Parameters
|
|
|
|
```python
|
|
@dataclass
|
|
class ConnectorConfig:
|
|
base_url: str
|
|
api_key: str
|
|
api_version: str = "v1"
|
|
timeout: float = 30.0
|
|
max_connections: int = 100
|
|
max_retries: int = 3
|
|
retry_backoff: float = 1.0
|
|
rate_limit: Optional[int] = None
|
|
burst_limit: Optional[int] = None
|
|
auth_type: str = "bearer"
|
|
auth_config: Dict[str, Any] = field(default_factory=dict)
|
|
webhook_secret: Optional[str] = None
|
|
webhook_endpoint: Optional[str] = None
|
|
enable_metrics: bool = True
|
|
log_level: str = "INFO"
|
|
enterprise_id: Optional[str] = None
|
|
tenant_id: Optional[str] = None
|
|
region: Optional[str] = None
|
|
```
|
|
|
|
## Base Connector API
|
|
|
|
### BaseConnector
|
|
|
|
Abstract base class for all connectors.
|
|
|
|
#### Methods
|
|
|
|
##### initialize()
|
|
Initialize the connector.
|
|
|
|
```python
|
|
async initialize() -> None
|
|
```
|
|
|
|
##### cleanup()
|
|
Cleanup connector resources.
|
|
|
|
```python
|
|
async cleanup() -> None
|
|
```
|
|
|
|
##### execute_operation()
|
|
Execute an operation with validation.
|
|
|
|
```python
|
|
async execute_operation(
|
|
operation: str,
|
|
data: Dict[str, Any],
|
|
**kwargs
|
|
) -> OperationResult
|
|
```
|
|
|
|
##### batch_execute()
|
|
Execute multiple operations concurrently.
|
|
|
|
```python
|
|
async batch_execute(
|
|
operations: List[Dict[str, Any]],
|
|
max_concurrent: int = 10
|
|
) -> List[OperationResult]
|
|
```
|
|
|
|
##### sync()
|
|
Synchronize data with external system.
|
|
|
|
```python
|
|
async sync(
|
|
since: Optional[datetime] = None,
|
|
filters: Optional[Dict[str, Any]] = None
|
|
) -> Dict[str, Any]
|
|
```
|
|
|
|
#### Properties
|
|
|
|
##### is_initialized
|
|
Check if connector is initialized.
|
|
|
|
```python
|
|
@property
|
|
def is_initialized() -> bool
|
|
```
|
|
|
|
##### last_sync
|
|
Get last sync timestamp.
|
|
|
|
```python
|
|
@property
|
|
def last_sync() -> Optional[datetime]
|
|
```
|
|
|
|
##### metrics
|
|
Get connector metrics.
|
|
|
|
```python
|
|
@property
|
|
def metrics() -> Dict[str, Any]
|
|
```
|
|
|
|
## Payment Connector API
|
|
|
|
### PaymentConnector
|
|
|
|
Abstract base class for payment processors.
|
|
|
|
#### Methods
|
|
|
|
##### create_charge()
|
|
Create a charge.
|
|
|
|
```python
|
|
async create_charge(
|
|
amount: int,
|
|
currency: str,
|
|
source: str,
|
|
description: Optional[str] = None,
|
|
metadata: Optional[Dict[str, Any]] = None
|
|
) -> Charge
|
|
```
|
|
|
|
**Parameters:**
|
|
- `amount` (int): Amount in smallest currency unit (cents)
|
|
- `currency` (str): 3-letter currency code
|
|
- `source` (str): Payment source ID
|
|
- `description` (str, optional): Charge description
|
|
- `metadata` (Dict, optional): Additional metadata
|
|
|
|
**Returns:**
|
|
- `Charge`: Created charge object
|
|
|
|
##### create_refund()
|
|
Create a refund.
|
|
|
|
```python
|
|
async create_refund(
|
|
charge_id: str,
|
|
amount: Optional[int] = None,
|
|
reason: Optional[str] = None
|
|
) -> Refund
|
|
```
|
|
|
|
##### create_payment_method()
|
|
Create a payment method.
|
|
|
|
```python
|
|
async create_payment_method(
|
|
type: str,
|
|
card: Dict[str, Any],
|
|
metadata: Optional[Dict[str, Any]] = None
|
|
) -> PaymentMethod
|
|
```
|
|
|
|
##### create_subscription()
|
|
Create a subscription.
|
|
|
|
```python
|
|
async create_subscription(
|
|
customer: str,
|
|
items: List[Dict[str, Any]],
|
|
metadata: Optional[Dict[str, Any]] = None
|
|
) -> Subscription
|
|
```
|
|
|
|
##### cancel_subscription()
|
|
Cancel a subscription.
|
|
|
|
```python
|
|
async cancel_subscription(
|
|
subscription_id: str,
|
|
at_period_end: bool = True
|
|
) -> Subscription
|
|
```
|
|
|
|
### Data Models
|
|
|
|
#### Charge
|
|
|
|
```python
|
|
@dataclass
|
|
class Charge:
|
|
id: str
|
|
amount: int
|
|
currency: str
|
|
status: PaymentStatus
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
description: Optional[str]
|
|
metadata: Dict[str, Any]
|
|
amount_refunded: int = 0
|
|
refunds: List[Dict[str, Any]] = None
|
|
payment_method_id: Optional[str] = None
|
|
payment_method_details: Optional[Dict[str, Any]] = None
|
|
```
|
|
|
|
#### Refund
|
|
|
|
```python
|
|
@dataclass
|
|
class Refund:
|
|
id: str
|
|
amount: int
|
|
currency: str
|
|
status: RefundStatus
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
charge_id: str
|
|
reason: Optional[str]
|
|
metadata: Dict[str, Any]
|
|
```
|
|
|
|
#### PaymentMethod
|
|
|
|
```python
|
|
@dataclass
|
|
class PaymentMethod:
|
|
id: str
|
|
type: str
|
|
created_at: datetime
|
|
metadata: Dict[str, Any]
|
|
brand: Optional[str] = None
|
|
last4: Optional[str] = None
|
|
exp_month: Optional[int] = None
|
|
exp_year: Optional[int] = None
|
|
```
|
|
|
|
#### Subscription
|
|
|
|
```python
|
|
@dataclass
|
|
class Subscription:
|
|
id: str
|
|
status: SubscriptionStatus
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
current_period_start: datetime
|
|
current_period_end: datetime
|
|
customer_id: str
|
|
metadata: Dict[str, Any]
|
|
amount: Optional[int] = None
|
|
currency: Optional[str] = None
|
|
interval: Optional[str] = None
|
|
interval_count: Optional[int] = None
|
|
trial_start: Optional[datetime] = None
|
|
trial_end: Optional[datetime] = None
|
|
canceled_at: Optional[datetime] = None
|
|
ended_at: Optional[datetime] = None
|
|
```
|
|
|
|
## ERP Connector API
|
|
|
|
### ERPConnector
|
|
|
|
Base class for ERP connectors.
|
|
|
|
#### Methods
|
|
|
|
##### create_entity()
|
|
Create entity in ERP.
|
|
|
|
```python
|
|
async _create_entity(
|
|
entity_type: str,
|
|
data: Dict[str, Any]
|
|
) -> OperationResult
|
|
```
|
|
|
|
##### update_entity()
|
|
Update entity in ERP.
|
|
|
|
```python
|
|
async _update_entity(
|
|
entity_type: str,
|
|
data: Dict[str, Any]
|
|
) -> OperationResult
|
|
```
|
|
|
|
##### delete_entity()
|
|
Delete entity from ERP.
|
|
|
|
```python
|
|
async _delete_entity(
|
|
entity_type: str,
|
|
data: Dict[str, Any]
|
|
) -> OperationResult
|
|
```
|
|
|
|
##### sync_data()
|
|
Synchronize data from ERP.
|
|
|
|
```python
|
|
async _sync_data(
|
|
data: Dict[str, Any]
|
|
) -> OperationResult
|
|
```
|
|
|
|
##### batch_sync()
|
|
Batch synchronize data.
|
|
|
|
```python
|
|
async _batch_sync(
|
|
data: Dict[str, Any]
|
|
) -> OperationResult
|
|
```
|
|
|
|
## Webhook API
|
|
|
|
### WebhookHandler
|
|
|
|
Handles webhook processing and verification.
|
|
|
|
#### Methods
|
|
|
|
##### setup()
|
|
Setup webhook handler.
|
|
|
|
```python
|
|
async setup(
|
|
endpoint: str,
|
|
secret: str = None
|
|
) -> None
|
|
```
|
|
|
|
##### cleanup()
|
|
Cleanup webhook handler.
|
|
|
|
```python
|
|
async cleanup() -> None
|
|
```
|
|
|
|
##### add_handler()
|
|
Add handler for specific event type.
|
|
|
|
```python
|
|
def add_handler(
|
|
event_type: str,
|
|
handler: Callable[[WebhookEvent], Awaitable[None]]
|
|
) -> None
|
|
```
|
|
|
|
##### verify()
|
|
Verify webhook signature.
|
|
|
|
```python
|
|
async verify(
|
|
payload: bytes,
|
|
signature: str,
|
|
algorithm: str = "sha256"
|
|
) -> bool
|
|
```
|
|
|
|
##### handle()
|
|
Handle incoming webhook.
|
|
|
|
```python
|
|
async handle(
|
|
payload: bytes,
|
|
signature: str = None
|
|
) -> Dict[str, Any]
|
|
```
|
|
|
|
## Error Handling
|
|
|
|
### Exception Hierarchy
|
|
|
|
```
|
|
AITBCError
|
|
├── AuthenticationError
|
|
├── RateLimitError
|
|
├── APIError
|
|
├── ConfigurationError
|
|
├── ConnectorError
|
|
│ ├── PaymentError
|
|
│ ├── ERPError
|
|
│ ├── SyncError
|
|
│ └── WebhookError
|
|
├── ValidationError
|
|
└── TimeoutError
|
|
```
|
|
|
|
### Error Response Format
|
|
|
|
```python
|
|
{
|
|
"success": false,
|
|
"error": "Error message",
|
|
"error_code": "ERROR_CODE",
|
|
"details": {
|
|
"field": "value",
|
|
"additional": "info"
|
|
}
|
|
}
|
|
```
|
|
|
|
## Rate Limiting
|
|
|
|
### Rate Limit Headers
|
|
|
|
```
|
|
X-RateLimit-Limit: 1000
|
|
X-RateLimit-Remaining: 999
|
|
X-RateLimit-Reset: 1640995200
|
|
Retry-After: 60
|
|
```
|
|
|
|
### Rate Limit Error
|
|
|
|
```python
|
|
RateLimitError(
|
|
message="Rate limit exceeded",
|
|
retry_after=60
|
|
)
|
|
```
|
|
|
|
## Metrics
|
|
|
|
### Metric Types
|
|
|
|
- **Counters**: Cumulative counts (requests, errors)
|
|
- **Gauges**: Current values (active connections)
|
|
- **Histograms**: Distributions (response times)
|
|
- **Timers**: Duration measurements
|
|
|
|
### Metrics Format
|
|
|
|
```python
|
|
{
|
|
"timestamp": "2024-01-01T00:00:00Z",
|
|
"source": "aitbc-enterprise-sdk",
|
|
"metrics": [
|
|
{
|
|
"name": "requests_total",
|
|
"value": 1000,
|
|
"tags": {"method": "POST", "status": "200"}
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## Authentication
|
|
|
|
### Bearer Token
|
|
|
|
```python
|
|
headers = {
|
|
"Authorization": "Bearer your-token"
|
|
}
|
|
```
|
|
|
|
### OAuth 2.0
|
|
|
|
```python
|
|
headers = {
|
|
"Authorization": "Bearer access-token"
|
|
}
|
|
```
|
|
|
|
### HMAC Signature
|
|
|
|
```python
|
|
headers = {
|
|
"X-API-Key": "your-key",
|
|
"X-Timestamp": "1640995200",
|
|
"X-Signature": "signature"
|
|
}
|
|
```
|
|
|
|
## SDK Versioning
|
|
|
|
The SDK follows semantic versioning:
|
|
|
|
- **Major**: Breaking changes
|
|
- **Minor**: New features (backward compatible)
|
|
- **Patch**: Bug fixes (backward compatible)
|
|
|
|
Example: `1.2.3`
|
|
|
|
## Response Format
|
|
|
|
### Success Response
|
|
|
|
```python
|
|
{
|
|
"success": true,
|
|
"data": {...},
|
|
"metadata": {...}
|
|
}
|
|
```
|
|
|
|
### Error Response
|
|
|
|
```python
|
|
{
|
|
"success": false,
|
|
"error": "Error message",
|
|
"error_code": "ERROR_CODE",
|
|
"details": {...}
|
|
}
|
|
```
|
|
|
|
## Pagination
|
|
|
|
### Request Parameters
|
|
|
|
```python
|
|
{
|
|
"limit": 100,
|
|
"offset": 0,
|
|
"starting_after": "cursor_id"
|
|
}
|
|
```
|
|
|
|
### Response Format
|
|
|
|
```python
|
|
{
|
|
"data": [...],
|
|
"has_more": true,
|
|
"next_page": "cursor_id"
|
|
}
|
|
```
|