# 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"
