186 lines
5.6 KiB
Markdown
186 lines
5.6 KiB
Markdown
# SatLoc API Integration Summary
|
|
|
|
## Overview
|
|
|
|
This document summarizes the updates made to the partner integration system based on the official SatLoc Technical Document - Vendor API Services.
|
|
|
|
## Key Changes from Generic Implementation
|
|
|
|
### 1. Updated Base URL
|
|
- **Previous**: `https://api.satloc.com/v1` (generic assumption)
|
|
- **Actual**: `https://www.satloccloud.com/api/Satloc`
|
|
|
|
### 2. Authentication Method
|
|
- **Previous**: Bearer token-based authentication
|
|
- **Actual**: Query parameter authentication using email/password
|
|
```
|
|
GET /AuthenticateAPIUser?userLogin=vendor%40myk.com&password=Home4663%23
|
|
```
|
|
|
|
### 3. Response Format
|
|
All SatLoc APIs return responses in this standardized format:
|
|
```json
|
|
{
|
|
"IsSuccess": true/false,
|
|
"ErrorMessage": null/"error description",
|
|
"Result": {...} // Actual response data
|
|
}
|
|
```
|
|
|
|
### 4. Actual API Endpoints
|
|
|
|
| Operation | Endpoint | Method | Description |
|
|
|-----------|----------|---------|-------------|
|
|
| Health Check | `/IsAlive` | GET | Service availability check |
|
|
| Authentication | `/AuthenticateAPIUser` | GET | User authentication |
|
|
| Get Aircraft | `/GetAircraftList` | GET | Retrieve aircraft for company |
|
|
| Get Flight Logs | `/GetAircraftLogs` | GET | Get flight logs for aircraft |
|
|
| Get Log Data | `/GetAircraftLogData` | GET | Download actual log file |
|
|
| Upload Job | `/UploadJobData` | POST | Upload job data (multipart) |
|
|
|
|
### 5. Required Parameters
|
|
|
|
#### Authentication Response
|
|
```json
|
|
{
|
|
"IsSuccess": true,
|
|
"ErrorMessage": null,
|
|
"Result": {
|
|
"UserId": "a2991888-5c7f-4101-8e0d-0a390c26720c",
|
|
"CompanyId": "36c0f342-e4e2-4fcb-b219-9cd1fad2c1ff",
|
|
"Token": "jwt_token_here",
|
|
"ExpiresAt": "2025-07-19T10:30:00Z"
|
|
}
|
|
}
|
|
```
|
|
|
|
#### Aircraft List Response
|
|
```json
|
|
{
|
|
"IsSuccess": true,
|
|
"ErrorMessage": null,
|
|
"Result": [
|
|
{
|
|
"AircraftId": "23bee7aa-c949-4089-854a-2ab58b40294f",
|
|
"AircraftName": "Satloc Drone 1",
|
|
"AircraftType": "Multirotor",
|
|
"Status": "Available",
|
|
"LastSeen": "2025-07-18T08:30:00Z"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## Implementation Updates
|
|
|
|
### 1. Environment Variables
|
|
```bash
|
|
# SatLoc Configuration (Customer-specific credentials stored in PartnerSystemUser records)
|
|
SATLOC_API_ENDPOINT=https://www.satloccloud.com/api/Satloc
|
|
SATLOC_API_TIMEOUT=30000
|
|
SATLOC_RETRY_ATTEMPTS=3
|
|
SATLOC_RATE_LIMIT=5
|
|
```
|
|
|
|
### 2. Updated SatlocService Class
|
|
The `SatlocService` implementation has been updated to:
|
|
- Use query parameter authentication instead of bearer tokens
|
|
- Handle the SatLoc-specific response format (`IsSuccess`, `ErrorMessage`, `Result`)
|
|
- Use proper endpoint paths from the technical documentation
|
|
- Support multipart form data for job uploads
|
|
- Handle UserId and CompanyId parameters for API calls
|
|
|
|
### 3. Rate Limiting
|
|
- **Requests per second**: 5 (reduced from assumed 10)
|
|
- **Burst limit**: 20 requests in 10-second window
|
|
- **Daily limit**: 10,000 requests per user
|
|
|
|
### 4. Error Handling
|
|
Updated error handling to work with SatLoc's response format:
|
|
```javascript
|
|
if (response.data.IsSuccess) {
|
|
return response.data.Result;
|
|
} else {
|
|
throw new Error(response.data.ErrorMessage);
|
|
}
|
|
```
|
|
|
|
## Files Updated
|
|
|
|
1. **`docs/SATLOC_API_SPECIFICATION.md`** - New file with complete SatLoc API documentation
|
|
2. **`docs/IMPLEMENTATION_GUIDE.md`** - Updated SatlocService implementation
|
|
3. **`docs/MONITORING_GUIDE.md`** - New monitoring and observability guide
|
|
|
|
## Testing Considerations
|
|
|
|
### 1. Mock Data Updates
|
|
Test mocks need to use the SatLoc response format:
|
|
```javascript
|
|
// OLD format
|
|
const mockResponse = { jobId: 'test_123', status: 'uploaded' };
|
|
|
|
// NEW SatLoc format
|
|
const mockResponse = {
|
|
IsSuccess: true,
|
|
ErrorMessage: null,
|
|
Result: { JobId: 'test_123', Status: 'Uploaded' }
|
|
};
|
|
```
|
|
|
|
### 2. Authentication Testing
|
|
Test authentication flow with email/password instead of token:
|
|
```javascript
|
|
it('should authenticate with email/password', async () => {
|
|
const mockAuth = {
|
|
IsSuccess: true,
|
|
Result: {
|
|
UserId: 'user_123',
|
|
CompanyId: 'company_456',
|
|
Token: 'jwt_token'
|
|
}
|
|
};
|
|
// Test implementation...
|
|
});
|
|
```
|
|
|
|
## Migration Strategy
|
|
|
|
### Phase 1: Update Implementation
|
|
1. ✅ Update SatlocService class with actual API endpoints
|
|
2. ✅ Modify authentication to use query parameters
|
|
3. ✅ Update response handling for SatLoc format
|
|
4. ✅ Add proper error handling
|
|
|
|
### Phase 2: Environment & Configuration
|
|
1. Update environment variables in deployment
|
|
2. Update partner configuration in database
|
|
3. Test authentication with real SatLoc credentials
|
|
|
|
### Phase 3: Testing & Validation
|
|
1. Update unit tests with new API format
|
|
2. Run integration tests against SatLoc staging environment
|
|
3. Validate data conversion and processing
|
|
|
|
### Phase 4: Deployment
|
|
1. Deploy updated code to staging
|
|
2. Perform end-to-end testing
|
|
3. Deploy to production with monitoring
|
|
|
|
## Next Steps
|
|
|
|
1. **Obtain SatLoc Credentials**: Get actual vendor credentials from SatLoc
|
|
2. **Test Integration**: Run integration tests against SatLoc staging API
|
|
3. **Data Format Analysis**: Analyze actual flight log data format for parsing
|
|
4. **Performance Testing**: Validate rate limits and response times
|
|
5. **Monitoring Setup**: Implement monitoring based on updated specifications
|
|
|
|
## Notes
|
|
|
|
- The SatLoc API uses a different authentication pattern than initially assumed
|
|
- All APIs require userId and companyId parameters obtained from authentication
|
|
- Job upload requires multipart form data instead of JSON
|
|
- Flight data is retrieved through aircraft logs rather than direct job data endpoints
|
|
- Error responses include both IsSuccess flag and ErrorMessage field
|
|
|
|
This updated integration provides a more accurate implementation based on the actual SatLoc API specifications rather than generic assumptions.
|