{
 "additionalProperties": false,
 "definitions": {
  "Action": {
   "additionalProperties": false,
   "properties": {
    "CrossRegionCopy": {
     "items": {
      "$ref": "#/definitions/CrossRegionCopyAction"
     },
     "type": "array",
     "uniqueItems": false
    },
    "Name": {
     "type": "string"
    }
   },
   "required": [
    "CrossRegionCopy",
    "Name"
   ],
   "type": "object"
  },
  "ArchiveRetainRule": {
   "additionalProperties": false,
   "properties": {
    "RetentionArchiveTier": {
     "$ref": "#/definitions/RetentionArchiveTier"
    }
   },
   "required": [
    "RetentionArchiveTier"
   ],
   "type": "object"
  },
  "ArchiveRule": {
   "additionalProperties": false,
   "properties": {
    "RetainRule": {
     "$ref": "#/definitions/ArchiveRetainRule"
    }
   },
   "required": [
    "RetainRule"
   ],
   "type": "object"
  },
  "CreateRule": {
   "additionalProperties": false,
   "properties": {
    "CronExpression": {
     "type": "string"
    },
    "Interval": {
     "type": "integer"
    },
    "IntervalUnit": {
     "type": "string"
    },
    "Location": {
     "type": "string"
    },
    "Scripts": {
     "items": {
      "$ref": "#/definitions/Script"
     },
     "type": "array",
     "uniqueItems": false
    },
    "Times": {
     "items": {
      "type": "string"
     },
     "type": "array",
     "uniqueItems": false
    }
   },
   "type": "object"
  },
  "CrossRegionCopyAction": {
   "additionalProperties": false,
   "properties": {
    "EncryptionConfiguration": {
     "$ref": "#/definitions/EncryptionConfiguration"
    },
    "RetainRule": {
     "$ref": "#/definitions/CrossRegionCopyRetainRule"
    },
    "Target": {
     "type": "string"
    }
   },
   "required": [
    "Target",
    "EncryptionConfiguration"
   ],
   "type": "object"
  },
  "CrossRegionCopyDeprecateRule": {
   "additionalProperties": false,
   "properties": {
    "Interval": {
     "type": "integer"
    },
    "IntervalUnit": {
     "type": "string"
    }
   },
   "required": [
    "IntervalUnit",
    "Interval"
   ],
   "type": "object"
  },
  "CrossRegionCopyRetainRule": {
   "additionalProperties": false,
   "properties": {
    "Interval": {
     "type": "integer"
    },
    "IntervalUnit": {
     "type": "string"
    }
   },
   "required": [
    "IntervalUnit",
    "Interval"
   ],
   "type": "object"
  },
  "CrossRegionCopyRule": {
   "additionalProperties": false,
   "properties": {
    "CmkArn": {
     "type": "string"
    },
    "CopyTags": {
     "type": "boolean"
    },
    "DeprecateRule": {
     "$ref": "#/definitions/CrossRegionCopyDeprecateRule"
    },
    "Encrypted": {
     "type": "boolean"
    },
    "RetainRule": {
     "$ref": "#/definitions/CrossRegionCopyRetainRule"
    },
    "Target": {
     "type": "string"
    },
    "TargetRegion": {
     "type": "string"
    }
   },
   "required": [
    "Encrypted"
   ],
   "type": "object"
  },
  "CrossRegionCopyTargets": {
   "format": "json",
   "type": [
    "object",
    "string"
   ]
  },
  "DeprecateRule": {
   "additionalProperties": false,
   "properties": {
    "Count": {
     "type": "integer"
    },
    "Interval": {
     "type": "integer"
    },
    "IntervalUnit": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "EncryptionConfiguration": {
   "additionalProperties": false,
   "properties": {
    "CmkArn": {
     "type": "string"
    },
    "Encrypted": {
     "type": "boolean"
    }
   },
   "required": [
    "Encrypted"
   ],
   "type": "object"
  },
  "EventParameters": {
   "additionalProperties": false,
   "properties": {
    "DescriptionRegex": {
     "type": "string"
    },
    "EventType": {
     "type": "string"
    },
    "SnapshotOwner": {
     "items": {
      "type": "string"
     },
     "type": "array",
     "uniqueItems": false
    }
   },
   "required": [
    "EventType",
    "SnapshotOwner"
   ],
   "type": "object"
  },
  "EventSource": {
   "additionalProperties": false,
   "properties": {
    "Parameters": {
     "$ref": "#/definitions/EventParameters"
    },
    "Type": {
     "type": "string"
    }
   },
   "required": [
    "Type"
   ],
   "type": "object"
  },
  "ExcludeTags": {
   "format": "json",
   "type": [
    "object",
    "string"
   ]
  },
  "ExcludeVolumeTypesList": {
   "format": "json",
   "type": [
    "object",
    "string"
   ]
  },
  "Exclusions": {
   "additionalProperties": false,
   "properties": {
    "ExcludeBootVolumes": {
     "type": "boolean"
    },
    "ExcludeTags": {
     "$ref": "#/definitions/ExcludeTags"
    },
    "ExcludeVolumeTypes": {
     "$ref": "#/definitions/ExcludeVolumeTypesList"
    }
   },
   "type": "object"
  },
  "FastRestoreRule": {
   "additionalProperties": false,
   "properties": {
    "AvailabilityZones": {
     "items": {
      "type": "string"
     },
     "type": "array",
     "uniqueItems": false
    },
    "Count": {
     "type": "integer"
    },
    "Interval": {
     "type": "integer"
    },
    "IntervalUnit": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "Parameters": {
   "additionalProperties": false,
   "properties": {
    "ExcludeBootVolume": {
     "type": "boolean"
    },
    "ExcludeDataVolumeTags": {
     "items": {
      "$ref": "#/definitions/Tag"
     },
     "type": "array",
     "uniqueItems": false
    },
    "NoReboot": {
     "type": "boolean"
    }
   },
   "type": "object"
  },
  "PolicyDetails": {
   "additionalProperties": false,
   "properties": {
    "Actions": {
     "items": {
      "$ref": "#/definitions/Action"
     },
     "type": "array",
     "uniqueItems": false
    },
    "CopyTags": {
     "type": "boolean"
    },
    "CreateInterval": {
     "type": "integer"
    },
    "CrossRegionCopyTargets": {
     "$ref": "#/definitions/CrossRegionCopyTargets"
    },
    "EventSource": {
     "$ref": "#/definitions/EventSource"
    },
    "Exclusions": {
     "$ref": "#/definitions/Exclusions"
    },
    "ExtendDeletion": {
     "type": "boolean"
    },
    "Parameters": {
     "$ref": "#/definitions/Parameters"
    },
    "PolicyLanguage": {
     "type": "string"
    },
    "PolicyType": {
     "type": "string"
    },
    "ResourceLocations": {
     "items": {
      "type": "string"
     },
     "type": "array",
     "uniqueItems": false
    },
    "ResourceType": {
     "type": "string"
    },
    "ResourceTypes": {
     "items": {
      "type": "string"
     },
     "type": "array",
     "uniqueItems": false
    },
    "RetainInterval": {
     "type": "integer"
    },
    "Schedules": {
     "items": {
      "$ref": "#/definitions/Schedule"
     },
     "type": "array",
     "uniqueItems": false
    },
    "TargetTags": {
     "items": {
      "$ref": "#/definitions/Tag"
     },
     "type": "array",
     "uniqueItems": false
    }
   },
   "type": "object"
  },
  "RetainRule": {
   "additionalProperties": false,
   "properties": {
    "Count": {
     "type": "integer"
    },
    "Interval": {
     "type": "integer"
    },
    "IntervalUnit": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "RetentionArchiveTier": {
   "additionalProperties": false,
   "properties": {
    "Count": {
     "type": "integer"
    },
    "Interval": {
     "type": "integer"
    },
    "IntervalUnit": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "Schedule": {
   "additionalProperties": false,
   "properties": {
    "ArchiveRule": {
     "$ref": "#/definitions/ArchiveRule"
    },
    "CopyTags": {
     "type": "boolean"
    },
    "CreateRule": {
     "$ref": "#/definitions/CreateRule"
    },
    "CrossRegionCopyRules": {
     "items": {
      "$ref": "#/definitions/CrossRegionCopyRule"
     },
     "type": "array",
     "uniqueItems": false
    },
    "DeprecateRule": {
     "$ref": "#/definitions/DeprecateRule"
    },
    "FastRestoreRule": {
     "$ref": "#/definitions/FastRestoreRule"
    },
    "Name": {
     "type": "string"
    },
    "RetainRule": {
     "$ref": "#/definitions/RetainRule"
    },
    "ShareRules": {
     "items": {
      "$ref": "#/definitions/ShareRule"
     },
     "type": "array",
     "uniqueItems": false
    },
    "TagsToAdd": {
     "items": {
      "$ref": "#/definitions/Tag"
     },
     "type": "array",
     "uniqueItems": false
    },
    "VariableTags": {
     "items": {
      "$ref": "#/definitions/Tag"
     },
     "type": "array",
     "uniqueItems": false
    }
   },
   "type": "object"
  },
  "Script": {
   "additionalProperties": false,
   "properties": {
    "ExecuteOperationOnScriptFailure": {
     "type": "boolean"
    },
    "ExecutionHandler": {
     "type": "string"
    },
    "ExecutionHandlerService": {
     "type": "string"
    },
    "ExecutionTimeout": {
     "type": "integer"
    },
    "MaximumRetryCount": {
     "type": "integer"
    },
    "Stages": {
     "items": {
      "type": "string"
     },
     "type": "array",
     "uniqueItems": false
    }
   },
   "type": "object"
  },
  "ShareRule": {
   "additionalProperties": false,
   "properties": {
    "TargetAccounts": {
     "items": {
      "type": "string"
     },
     "type": "array",
     "uniqueItems": false
    },
    "UnshareInterval": {
     "type": "integer"
    },
    "UnshareIntervalUnit": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "Tag": {
   "additionalProperties": false,
   "properties": {
    "Key": {
     "type": "string"
    },
    "Value": {
     "type": "string"
    }
   },
   "required": [
    "Value",
    "Key"
   ],
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/Id"
 ],
 "properties": {
  "Arn": {
   "type": "string"
  },
  "CopyTags": {
   "type": "boolean"
  },
  "CreateInterval": {
   "type": "integer"
  },
  "CrossRegionCopyTargets": {
   "$ref": "#/definitions/CrossRegionCopyTargets"
  },
  "DefaultPolicy": {
   "type": "string"
  },
  "Description": {
   "type": "string"
  },
  "Exclusions": {
   "$ref": "#/definitions/Exclusions"
  },
  "ExecutionRoleArn": {
   "type": "string"
  },
  "ExtendDeletion": {
   "type": "boolean"
  },
  "Id": {
   "type": "string"
  },
  "PolicyDetails": {
   "$ref": "#/definitions/PolicyDetails"
  },
  "RetainInterval": {
   "type": "integer"
  },
  "State": {
   "type": "string"
  },
  "Tags": {
   "items": {
    "$ref": "#/definitions/Tag"
   },
   "type": "array",
   "uniqueItems": false
  }
 },
 "readOnlyProperties": [
  "/properties/Id",
  "/properties/Arn"
 ],
 "typeName": "AWS::DLM::LifecyclePolicy"
}
