feat(psa): add ConnectWise HTTP client with auth, URL resolution, pagination, retry
Implements ConnectWiseClient in services/psa/connectwise/client.py with: - API key auth (Base64 companyId+publicKey:privateKey) + clientId header - Accept header pinned to CW API version 2025.16 - Dynamic base URL resolution via /login/companyinfo (cloud vs on-premise) - SSRF prevention: validates against known CW domains, rejects private IPs - Retry with exponential backoff for timeouts and 5xx errors - 429 rate limit handling with Retry-After header respect - Error mapping: 401/403/404/429/5xx to typed PSA exceptions - Paginated GET with while-loop pattern (max 1000 per page) - JSON Patch array format for PATCH requests Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
1
backend/app/services/psa/connectwise/__init__.py
Normal file
1
backend/app/services/psa/connectwise/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
"""ConnectWise PSA provider implementation."""
|
||||
Reference in New Issue
Block a user