// src/services/serviceCatalog.js /** * Service catalog organized by Provider → Service → Action * * Structure: * - provider: Ad platform (google, meta, msads) * - service: Sub-module/microservice (system, campaigns, reporting, accounts) * - action: Specific operation (ping, create, list, get, update, delete) */ export const servicesByProvider = { gateway: [ { id: 'GatewayPing', service: 'system', action: 'ping', label: 'Gateway Ping (SQL test)', sample: {}, endpoint: '/api/test/ping', method: 'GET' } ], google: [ // System service { id: 'Ping', service: 'system', action: 'ping', label: 'System: Ping (GoogleApi round trip)', sample: {} }, // Campaigns service { id: 'CreateCampaign', service: 'campaigns', action: 'create', label: 'Campaigns: Create', sample: { name: 'Test Campaign', budgetMicros: 10000000, type: 'Search' } }, { id: 'ListCampaigns', service: 'campaigns', action: 'list', label: 'Campaigns: List', sample: {} }, { id: 'GetCampaign', service: 'campaigns', action: 'get', label: 'Campaigns: Get by ID', sample: { campaignId: 'campaigns/123' } }, // Reporting service { id: 'GetCampaignStats', service: 'reporting', action: 'campaignStats', label: 'Reporting: Campaign Stats', sample: { campaignId: 'campaigns/123', startDate: '2026-01-01', endDate: '2026-01-26' } }, { id: 'GetAccountStats', service: 'reporting', action: 'accountStats', label: 'Reporting: Account Stats', sample: { startDate: '2026-01-01', endDate: '2026-01-26' } }, // Accounts service { id: 'ListAccounts', service: 'accounts', action: 'list', label: 'Accounts: List Accessible', sample: {} }, { id: 'GetAccount', service: 'accounts', action: 'get', label: 'Accounts: Get Details', sample: { customerId: '1234567890' } } ] }; export function getServices(providerId) { return servicesByProvider[providerId] || []; } export function getService(providerId, serviceId) { return getServices(providerId).find(s => s.id === serviceId); } /** * Get unique service modules for a provider */ export function getServiceModules(providerId) { const services = getServices(providerId); const modules = [...new Set(services.map(s => s.service))]; return modules; } /** * Get actions for a specific service module */ export function getActionsForModule(providerId, serviceModule) { return getServices(providerId).filter(s => s.service === serviceModule); }