{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/api-search/microsoft-purview/json-schema/microsoft-purview-retention-label-schema.json",
  "title": "Microsoft Purview Retention Label",
  "description": "Represents a retention label for records management in Microsoft Purview. Retention labels define how long data should be retained and what happens after the retention period.",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The unique identifier of the retention label",
      "readOnly": true
    },
    "displayName": {
      "type": "string",
      "description": "The display name of the retention label"
    },
    "descriptionForAdmins": {
      "type": "string",
      "description": "Description visible to administrators"
    },
    "descriptionForUsers": {
      "type": "string",
      "description": "Description visible to end users"
    },
    "isInUse": {
      "type": "boolean",
      "description": "Whether the label is currently in use",
      "readOnly": true
    },
    "retentionTrigger": {
      "type": "string",
      "description": "What triggers the start of the retention period",
      "enum": ["dateLabeled", "dateCreated", "dateModified", "dateOfEvent"]
    },
    "behaviorDuringRetentionPeriod": {
      "type": "string",
      "description": "The behavior during the retention period",
      "enum": ["doNotRetain", "retain", "retainAsRecord", "retainAsRegulatoryRecord"]
    },
    "actionAfterRetentionPeriod": {
      "type": "string",
      "description": "What happens after the retention period ends",
      "enum": ["none", "delete", "startDispositionReview"]
    },
    "retentionDuration": {
      "type": "object",
      "description": "The duration of the retention period",
      "properties": {
        "@odata.type": {
          "type": "string"
        },
        "days": {
          "type": "integer",
          "description": "The retention duration in days"
        }
      }
    },
    "defaultRecordBehavior": {
      "type": "string",
      "description": "The default record behavior",
      "enum": ["startLocked", "startUnlocked"]
    },
    "createdDateTime": {
      "type": "string",
      "format": "date-time",
      "readOnly": true
    },
    "lastModifiedDateTime": {
      "type": "string",
      "format": "date-time",
      "readOnly": true
    }
  },
  "required": ["displayName", "behaviorDuringRetentionPeriod", "actionAfterRetentionPeriod", "retentionDuration", "retentionTrigger"]
}
