Configuration Controller
Source: internal/api/v1/reviews/controllers/config.js
Service: config service
Module: Reviews
Overview
The Configuration controller manages platform integrations for review aggregation. It handles connecting/disconnecting review platforms (Google, Facebook, Yelp, etc.), storing API credentials, and managing platform-specific settings.
Key Capabilities
- Set Initial Configuration for review platforms
- Update Existing Config for platform settings
- Get All Configurations for connected platforms
- Disconnect Platform to remove integration
- Multi-Platform Support (Google, Facebook, Yelp, Trustpilot, etc.)
MongoDB Collections
| Collection | Operations | Purpose |
|---|---|---|
review-config | CREATE, READ, UPDATE, DELETE | Platform connection settings |
Service Methods
1. setConfig()
Create initial configuration for a review platform.
Endpoint: POST /reviews/config
Request:
{
"platform": "google",
"api_key": "AIza...",
"place_id": "ChIJ...",
"business_name": "Acme Corp",
"location_id": "loc_123"
}
Response:
{
"success": true,
"config": {
"_id": "config_abc",
"account_id": "acc_123",
"platform": "google",
"place_id": "ChIJ...",
"business_name": "Acme Corp",
"connected": true,
"created_at": "2024-12-08T10:00:00Z"
}
}
2. updateConfig()
Update existing platform configuration.
Endpoint: PUT /reviews/config
Request:
{
"config_id": "config_abc",
"api_key": "new_key",
"sync_enabled": true
}
Response:
{
"success": true,
"config": {
"_id": "config_abc",
"sync_enabled": true,
"updated_at": "2024-12-08T11:00:00Z"
}
}
3. getConfigs()
Retrieve all platform configurations for account.
Endpoint: GET /reviews/config
Response:
{
"success": true,
"config": [
{
"_id": "config_abc",
"platform": "google",
"connected": true,
"last_sync": "2024-12-08T10:00:00Z"
},
{
"_id": "config_xyz",
"platform": "facebook",
"connected": true,
"last_sync": "2024-12-08T09:00:00Z"
}
]
}
4. disconnectConfig()
Disconnect a platform integration.
Endpoint: DELETE /reviews/config?platform=google
Response:
{
"success": true,
"data": {
"platform": "google",
"disconnected": true
}
}
Platform-Specific Settings
Google Business Profile
place_id: Google Place IDapi_key: Google API keylocation_id: GMB location identifier
Facebook
page_id: Facebook page IDaccess_token: Long-lived page access tokenpage_name: Business page name
Yelp
business_id: Yelp business IDapi_key: Yelp Fusion API key
Trustpilot
business_unit_id: Trustpilot business unitapi_key: Trustpilot API key
Authorization
Multi-Tenant Pattern:
const account_id = req.auth.account_id;
const parent_account = req.auth.parent_account || req.auth.account_id;
- Sub-accounts can inherit parent platform configs
- Each account can have independent platform connections
Important Notes
- API Keys: Stored encrypted in database
- Sync Frequency: Background jobs sync reviews every 15-60 minutes
- Platform Limits: Respect rate limits per platform
- Disconnection: Preserves historical review data
Related Documentation
- Reviews Controller (link removed - file does not exist) - Review management
- Auto Review Request - Automated requests
- Webhooks Controller - Platform webhooks
Version: 1.0
Last Updated: December 2024
Status: ✅ Production Ready