{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/finops-foundation/refs/heads/main/json-schema/finops-foundation-contract-commitment-record-schema.json",
  "title": "FOCUS Contract Commitment Record",
  "description": "A contract commitment record as defined in FOCUS v1.3. Isolates contract terms including start and end dates, remaining units, and descriptions from cost and usage rows.",
  "type": "object",
  "properties": {
    "CommitmentDiscountId": {
      "type": "string",
      "description": "The unique identifier assigned to a commitment discount by the provider."
    },
    "CommitmentDiscountName": {
      "type": ["string", "null"],
      "description": "The display name assigned to a commitment discount."
    },
    "CommitmentDiscountType": {
      "type": ["string", "null"],
      "description": "A provider-assigned label describing the type of commitment discount."
    },
    "CommitmentDiscountCategory": {
      "type": "string",
      "enum": ["Spend", "Usage"],
      "description": "Whether the commitment discount is based on usage quantity or cost."
    },
    "CommitmentStartDate": {
      "type": "string",
      "format": "date-time",
      "description": "The start date and time of the contract commitment."
    },
    "CommitmentEndDate": {
      "type": "string",
      "format": "date-time",
      "description": "The end date and time of the contract commitment."
    },
    "CommitmentTotalQuantity": {
      "type": ["number", "null"],
      "description": "The total quantity of the commitment purchased."
    },
    "CommitmentRemainingQuantity": {
      "type": ["number", "null"],
      "description": "The remaining quantity of the commitment that has not yet been consumed."
    },
    "CommitmentUnit": {
      "type": ["string", "null"],
      "description": "The unit of measurement for the commitment quantity."
    },
    "CommitmentDescription": {
      "type": ["string", "null"],
      "description": "A human-readable description of the contract commitment."
    },
    "BillingAccountId": {
      "type": "string",
      "description": "The unique identifier for the billing account associated with the commitment."
    },
    "BillingAccountName": {
      "type": ["string", "null"],
      "description": "The display name for the billing account."
    },
    "ProviderName": {
      "type": "string",
      "description": "The name of the entity that made the commitment discount available."
    }
  },
  "required": [
    "CommitmentDiscountId",
    "CommitmentDiscountCategory",
    "CommitmentStartDate",
    "CommitmentEndDate",
    "BillingAccountId",
    "ProviderName"
  ],
  "additionalProperties": true
}
