{"api_base":"/api/v1","description":"Thin monolith — one front door for the whole microservice stack.","endpoints":{"by_service":"ANY /api/v1/services/{service}/{path}","info":"GET /api/v1","liveness":"GET /healthz","login":"POST /api/v1/auth/login","profile":"GET /api/v1/auth/me","services":"GET /api/v1/services","stack_health":"GET /api/v1/health","welcome":"GET /"},"env":"production","message":"Welcome to Selanim Bulk SMS","services":[{"grpc_addr":"auth-service:50052","mounted_at":"/api/v1/auth","name":"auth","summary":"Sign-in, tokens and sessions"},{"grpc_addr":"access-control-service:50089","mounted_at":"/api/v1/access-control","name":"access_control","summary":"Roles and permissions"},{"grpc_addr":"user-service:50060","mounted_at":"/api/v1/user","name":"user","summary":"Profiles behind the identity"},{"grpc_addr":"tenant-service:50071","mounted_at":"/api/v1/tenant","name":"tenant","summary":"Client accounts, members, invitations"},{"grpc_addr":"audit-service:50068","mounted_at":"/api/v1/audit","name":"audit","summary":"Audit trail"},{"grpc_addr":"config-service:50073","mounted_at":"/api/v1/config","name":"config","summary":"Feature flags and remote config"},{"grpc_addr":"secrets-service:50085","mounted_at":"/api/v1/secrets","name":"secrets","summary":"Tenant credentials and API keys"},{"grpc_addr":"scheduler-service:50064","mounted_at":"/api/v1/scheduler","name":"scheduler","summary":"Cron and background jobs"},{"grpc_addr":"webhook-service:50074","mounted_at":"/api/v1/webhook","name":"webhook","summary":"Outbound delivery callbacks"},{"grpc_addr":"search-service:50072","mounted_at":"/api/v1/search","name":"search","summary":"Full-text search"},{"grpc_addr":"sequence-service:50087","mounted_at":"/api/v1/sequence","name":"sequence","summary":"Reference numbering"},{"grpc_addr":"localization-service:50076","mounted_at":"/api/v1/localization","name":"localization","summary":"Translations"},{"grpc_addr":"consent-service:50081","mounted_at":"/api/v1/consent","name":"consent","summary":"Opt-in/opt-out and data requests"},{"grpc_addr":"payment-service:50061","mounted_at":"/api/v1/payment","name":"payment","summary":"Wallet top-ups and settlements"},{"grpc_addr":"subscription-service:50070","mounted_at":"/api/v1/subscription","name":"subscription","summary":"Plans, quotas, billing cycles"},{"grpc_addr":"currency-service:50067","mounted_at":"/api/v1/currency","name":"currency","summary":"FX rates and money formatting"},{"grpc_addr":"tax-service:50086","mounted_at":"/api/v1/tax","name":"tax","summary":"VAT rates and exemptions"},{"grpc_addr":"file-service:50066","mounted_at":"/api/v1/file","name":"file","summary":"Object storage"},{"grpc_addr":"reporting-service:50077","mounted_at":"/api/v1/reporting","name":"reporting","summary":"Exports and documents"},{"grpc_addr":"tagging-service:50083","mounted_at":"/api/v1/tagging","name":"tagging","summary":"Tags and taxonomies"},{"grpc_addr":"notification-service:50051","mounted_at":"/api/v1/notification","name":"notification","summary":"SMS, email, push and in-app"},{"grpc_addr":"websocket-service:50065","mounted_at":"/api/v1/realtime","name":"websocket","summary":"Realtime push"},{"grpc_addr":"support-service:50082","mounted_at":"/api/v1/support","name":"support","summary":"Tickets and SLA"},{"grpc_addr":"analytics-service:50079","mounted_at":"/api/v1/analytics","name":"analytics","summary":"Event tracking and metrics"},{"grpc_addr":"workflow-service:50088","mounted_at":"/api/v1/workflow","name":"workflow","summary":"Approvals and state machines"}],"success":true}