Skip to main content

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

CollectionOperationsPurpose
review-configCREATE, READ, UPDATE, DELETEPlatform 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 ID
  • api_key: Google API key
  • location_id: GMB location identifier

Facebook

  • page_id: Facebook page ID
  • access_token: Long-lived page access token
  • page_name: Business page name

Yelp

  • business_id: Yelp business ID
  • api_key: Yelp Fusion API key

Trustpilot

  • business_unit_id: Trustpilot business unit
  • api_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

  1. API Keys: Stored encrypted in database
  2. Sync Frequency: Background jobs sync reviews every 15-60 minutes
  3. Platform Limits: Respect rate limits per platform
  4. Disconnection: Preserves historical review data


Version: 1.0
Last Updated: December 2024
Status: ✅ Production Ready

💬

Documentation Assistant

Ask me anything about the docs

Hi! I'm your documentation assistant. Ask me anything about the docs!

I can help you with:
- Code examples
- Configuration details
- Troubleshooting
- Best practices

Try asking: How do I configure the API?
09:31 AM