Skip to content

Contract Service

Backend service for contract management with SLA monitoring and financial terms.

Overview

The Contract Service handles: - Contract CRUD operations (partner-level and service-level) - Contract templating with service-specific overrides - SLA metrics definition and monitoring - Financial terms management (revenue models, commission, payment terms, settlement methods) - Real-time SLA breach detection and event publishing

API Endpoints

Contracts

  • GET /api/contracts - List all contracts
  • GET /api/contracts/partner/:partnerId - List contracts for a partner
  • GET /api/contracts/:id - Get contract by ID
  • POST /api/contracts - Create new contract
  • PATCH /api/contracts/:id - Update contract
  • POST /api/contracts/:id/override - Apply service-specific overrides
  • DELETE /api/contracts/:id - Delete contract

Database Schema

See services/contract-service/src/common/database/database.service.ts for schema definitions.

Events Published

  • contract.created - When a new contract is created
  • contract.activated - When a contract status changes to ACTIVE
  • contract.expired - When a contract expires
  • contract.terminated - When a contract is terminated
  • contract.deleted - When a contract is deleted
  • sla.breached - When an SLA metric is breached
  • sla.compliant - When an SLA metric returns to compliance

Environment Variables

  • PORT - Service port (default: 3000)
  • DATABASE_URL - PostgreSQL connection string
  • RABBITMQ_URL - RabbitMQ connection string
  • CONTRACT_EXCHANGE - RabbitMQ exchange name (default: contract.events)