{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/api-evangelist/trioptima/blob/main/json-schema/trioptima-compression-cycle-schema.json",
  "title": "Trioptima Compression Cycle",
  "description": "Schema for a triReduce portfolio compression cycle",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique cycle identifier",
      "examples": ["CYC-2024-IRS-001"]
    },
    "type": {
      "type": "string",
      "description": "Compression cycle type",
      "enum": ["cleared", "bilateral"]
    },
    "assetClass": {
      "type": "string",
      "description": "Derivatives asset class",
      "enum": ["IRS", "OIS", "CDS", "FX"]
    },
    "currency": {
      "type": "string",
      "description": "Primary currency (ISO 4217)",
      "examples": ["USD", "EUR", "GBP", "JPY"]
    },
    "status": {
      "type": "string",
      "description": "Current cycle lifecycle status",
      "enum": ["open", "submission", "optimization", "completed", "cancelled"]
    },
    "submissionDeadline": {
      "type": "string",
      "format": "date-time",
      "description": "Deadline for trade and risk data submission"
    },
    "optimizationDate": {
      "type": "string",
      "format": "date",
      "description": "Date when the compression optimization algorithm runs"
    },
    "settlementDate": {
      "type": "string",
      "format": "date",
      "description": "Date when terminations and new replacement trades are processed"
    },
    "participantCount": {
      "type": "integer",
      "description": "Number of firms participating in this cycle",
      "minimum": 2
    },
    "description": {
      "type": "string",
      "description": "Human-readable description of the compression cycle"
    }
  },
  "required": ["id", "type", "assetClass", "currency", "status"]
}
