# Communication Platform service snapshot — MVP feature-complete (SMS). # Spec: docs/ai-framework/service-snapshot-policy.md schema_version: 1 snapshot_version: 1 service_name: communication commercial_product: Torbat Communication current_version: "0.8.10.1" current_phase: communication-8 last_completed_phase: communication-8 next_phase: null completed_phases: - communication-8 remaining_phases: [] registered_modules: - providers - senders - templates - contacts - contact_sources - messages - queue - delivery_tracking - otp - webhooks - monitoring - audit enabled_capabilities: - sms_messaging - provider_registry - communication_router - template_engine - dynamic_contact_sources - queue_engine - delivery_tracking - otp_platform - incoming_webhooks - monitoring - production_ready_sms_mvp enabled_bundles: - torbat_communication public_apis: - { method: GET, path: /health, permission: public } - { method: GET, path: /health/ready, permission: public } - { method: GET, path: /capabilities, permission: public } - { method: GET, path: /metrics, permission: public } - { method: GET, path: /api/v1/providers, permission: communication.providers.view } - { method: POST, path: /api/v1/providers, permission: communication.providers.manage } - { method: GET, path: /api/v1/providers/status, permission: communication.providers.view } - { method: POST, path: /api/v1/providers/senders, permission: communication.senders.manage } - { method: GET, path: /api/v1/templates, permission: communication.templates.view } - { method: POST, path: /api/v1/templates, permission: communication.templates.manage } - { method: POST, path: "/api/v1/templates/{id}/approve", permission: communication.templates.approve } - { method: GET, path: /api/v1/contacts/manual, permission: communication.contacts.view } - { method: POST, path: /api/v1/contacts/sources, permission: communication.sources.manage } - { method: POST, path: /api/v1/contacts/resolve, permission: communication.contacts.view } - { method: POST, path: /api/v1/messages/send, permission: communication.messages.send } - { method: GET, path: /api/v1/messages, permission: communication.messages.view } - { method: POST, path: "/api/v1/messages/{id}/cancel", permission: communication.messages.cancel } - { method: POST, path: /api/v1/messages/queue/process, permission: communication.queue.manage } - { method: GET, path: /api/v1/messages/queue/dead-letters, permission: communication.queue.view } - { method: POST, path: /api/v1/otp/request, permission: communication.otp.request } - { method: POST, path: /api/v1/otp/verify, permission: communication.otp.verify } - { method: POST, path: /api/v1/webhooks/incoming, permission: communication.webhooks.manage } - { method: GET, path: /api/v1/monitoring/stats, permission: communication.monitoring.view } - { method: GET, path: /api/v1/monitoring/metrics, permission: communication.monitoring.view } published_events: - { event_type: communication.message.queued, version: "1" } - { event_type: communication.message.sent, version: "1" } - { event_type: communication.message.delivered, version: "1" } - { event_type: communication.message.failed, version: "1" } - { event_type: communication.message.cancelled, version: "1" } - { event_type: communication.message.expired, version: "1" } - { event_type: communication.provider.failover, version: "1" } - { event_type: communication.provider.circuit_opened, version: "1" } - { event_type: communication.provider.circuit_closed, version: "1" } - { event_type: communication.template.approved, version: "1" } - { event_type: communication.template.rejected, version: "1" } - { event_type: communication.otp.generated, version: "1" } - { event_type: communication.otp.verified, version: "1" } - { event_type: communication.otp.failed, version: "1" } - { event_type: communication.queue.dead_letter, version: "1" } - { event_type: communication.webhook.received, version: "1" } permission_prefix: communication.* active_adrs: - ADR-001 - ADR-003 - ADR-006 - ADR-012 integration_contracts: - ChannelProvider (in-service protocol) - CRM / Loyalty / Sports / Restaurant / Marketplace / Accounting contact resolve (HTTP only) - Core auth OTP remains on Core (no shared tables) known_limitations: - MVP scope is SMS-only; Email/Push/WhatsApp/Telegram/Rubika/Voice are architecture-ready stubs - Continuous Celery worker drain is optional ops work (API/process_immediately covers correctness) - Real message bus consumers not wired (publish-only envelopes) - Sender unique constraint is not soft-delete-aware - In-process rate limiter is per-instance (acceptable for MVP) - Future channels documented in communication-roadmap.md only — no registered 9.x phases open_todos: [] last_handover_reference: docs/phase-handover/phase-8.md last_updated: "2026-07-26"