{
 "additionalProperties": false,
 "createOnlyProperties": [
  "/properties/DetectorId"
 ],
 "definitions": {
  "EntityType": {
   "additionalProperties": false,
   "properties": {
    "Arn": {
     "type": "string"
    },
    "CreatedTime": {
     "type": "string"
    },
    "Description": {
     "maxLength": 256,
     "minLength": 1,
     "type": "string"
    },
    "Inline": {
     "type": "boolean"
    },
    "LastUpdatedTime": {
     "type": "string"
    },
    "Name": {
     "type": "string"
    },
    "Tags": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/Tag"
     },
     "maxItems": 200,
     "type": "array",
     "uniqueItems": false
    }
   },
   "type": "object"
  },
  "EventType": {
   "additionalProperties": false,
   "properties": {
    "Arn": {
     "type": "string"
    },
    "CreatedTime": {
     "type": "string"
    },
    "Description": {
     "maxLength": 128,
     "minLength": 1,
     "type": "string"
    },
    "EntityTypes": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/EntityType"
     },
     "minItems": 1,
     "type": "array",
     "uniqueItems": false
    },
    "EventVariables": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/EventVariable"
     },
     "minItems": 1,
     "type": "array",
     "uniqueItems": false
    },
    "Inline": {
     "type": "boolean"
    },
    "Labels": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/Label"
     },
     "minItems": 2,
     "type": "array",
     "uniqueItems": false
    },
    "LastUpdatedTime": {
     "type": "string"
    },
    "Name": {
     "maxLength": 64,
     "minLength": 1,
     "pattern": "^[0-9a-z_-]+$",
     "type": "string"
    },
    "Tags": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/Tag"
     },
     "maxItems": 200,
     "type": "array",
     "uniqueItems": false
    }
   },
   "type": "object"
  },
  "EventVariable": {
   "additionalProperties": false,
   "properties": {
    "Arn": {
     "type": "string"
    },
    "CreatedTime": {
     "type": "string"
    },
    "DataSource": {
     "enum": [
      "EVENT"
     ],
     "type": "string"
    },
    "DataType": {
     "enum": [
      "STRING",
      "INTEGER",
      "FLOAT",
      "BOOLEAN"
     ],
     "type": "string"
    },
    "DefaultValue": {
     "type": "string"
    },
    "Description": {
     "maxLength": 256,
     "minLength": 1,
     "type": "string"
    },
    "Inline": {
     "type": "boolean"
    },
    "LastUpdatedTime": {
     "type": "string"
    },
    "Name": {
     "type": "string"
    },
    "Tags": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/Tag"
     },
     "maxItems": 200,
     "type": "array",
     "uniqueItems": false
    },
    "VariableType": {
     "enum": [
      "AUTH_CODE",
      "AVS",
      "BILLING_ADDRESS_L1",
      "BILLING_ADDRESS_L2",
      "BILLING_CITY",
      "BILLING_COUNTRY",
      "BILLING_NAME",
      "BILLING_PHONE",
      "BILLING_STATE",
      "BILLING_ZIP",
      "CARD_BIN",
      "CATEGORICAL",
      "CURRENCY_CODE",
      "EMAIL_ADDRESS",
      "FINGERPRINT",
      "FRAUD_LABEL",
      "FREE_FORM_TEXT",
      "IP_ADDRESS",
      "NUMERIC",
      "ORDER_ID",
      "PAYMENT_TYPE",
      "PHONE_NUMBER",
      "PRICE",
      "PRODUCT_CATEGORY",
      "SHIPPING_ADDRESS_L1",
      "SHIPPING_ADDRESS_L2",
      "SHIPPING_CITY",
      "SHIPPING_COUNTRY",
      "SHIPPING_NAME",
      "SHIPPING_PHONE",
      "SHIPPING_STATE",
      "SHIPPING_ZIP",
      "USERAGENT"
     ],
     "type": "string"
    }
   },
   "type": "object"
  },
  "Label": {
   "additionalProperties": false,
   "properties": {
    "Arn": {
     "type": "string"
    },
    "CreatedTime": {
     "type": "string"
    },
    "Description": {
     "maxLength": 256,
     "minLength": 1,
     "type": "string"
    },
    "Inline": {
     "type": "boolean"
    },
    "LastUpdatedTime": {
     "type": "string"
    },
    "Name": {
     "type": "string"
    },
    "Tags": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/Tag"
     },
     "maxItems": 200,
     "type": "array",
     "uniqueItems": false
    }
   },
   "type": "object"
  },
  "Model": {
   "additionalProperties": false,
   "properties": {
    "Arn": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "Outcome": {
   "additionalProperties": false,
   "properties": {
    "Arn": {
     "type": "string"
    },
    "CreatedTime": {
     "type": "string"
    },
    "Description": {
     "maxLength": 256,
     "minLength": 1,
     "type": "string"
    },
    "Inline": {
     "type": "boolean"
    },
    "LastUpdatedTime": {
     "type": "string"
    },
    "Name": {
     "type": "string"
    },
    "Tags": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/Tag"
     },
     "maxItems": 200,
     "type": "array",
     "uniqueItems": false
    }
   },
   "type": "object"
  },
  "Rule": {
   "additionalProperties": false,
   "properties": {
    "Arn": {
     "type": "string"
    },
    "CreatedTime": {
     "type": "string"
    },
    "Description": {
     "maxLength": 256,
     "minLength": 1,
     "type": "string"
    },
    "DetectorId": {
     "maxLength": 64,
     "minLength": 1,
     "pattern": "^[0-9a-z_-]+$",
     "type": "string"
    },
    "Expression": {
     "type": "string"
    },
    "Language": {
     "enum": [
      "DETECTORPL"
     ],
     "type": "string"
    },
    "LastUpdatedTime": {
     "type": "string"
    },
    "Outcomes": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/Outcome"
     },
     "minItems": 1,
     "type": "array",
     "uniqueItems": false
    },
    "RuleId": {
     "maxLength": 64,
     "minLength": 1,
     "pattern": "^[0-9a-z_-]+$",
     "type": "string"
    },
    "RuleVersion": {
     "maxLength": 5,
     "minLength": 1,
     "pattern": "^([1-9][0-9]*)$",
     "type": "string"
    },
    "Tags": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/Tag"
     },
     "maxItems": 200,
     "type": "array",
     "uniqueItems": false
    }
   },
   "type": "object"
  },
  "Tag": {
   "additionalProperties": false,
   "properties": {
    "Key": {
     "maxLength": 128,
     "minLength": 1,
     "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$",
     "type": "string"
    },
    "Value": {
     "maxLength": 256,
     "minLength": 0,
     "type": "string"
    }
   },
   "required": [
    "Key",
    "Value"
   ],
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/Arn"
 ],
 "properties": {
  "Arn": {
   "type": "string"
  },
  "AssociatedModels": {
   "insertionOrder": false,
   "items": {
    "$ref": "#/definitions/Model"
   },
   "maxItems": 10,
   "type": "array",
   "uniqueItems": false
  },
  "CreatedTime": {
   "type": "string"
  },
  "Description": {
   "maxLength": 128,
   "minLength": 1,
   "type": "string"
  },
  "DetectorId": {
   "maxLength": 64,
   "minLength": 1,
   "pattern": "^[0-9a-z_-]+$",
   "type": "string"
  },
  "DetectorVersionId": {
   "type": "string"
  },
  "DetectorVersionStatus": {
   "enum": [
    "DRAFT",
    "ACTIVE"
   ],
   "type": "string"
  },
  "EventType": {
   "$ref": "#/definitions/EventType"
  },
  "LastUpdatedTime": {
   "type": "string"
  },
  "RuleExecutionMode": {
   "enum": [
    "FIRST_MATCHED",
    "ALL_MATCHED"
   ],
   "type": "string"
  },
  "Rules": {
   "insertionOrder": false,
   "items": {
    "$ref": "#/definitions/Rule"
   },
   "minItems": 1,
   "type": "array",
   "uniqueItems": false
  },
  "Tags": {
   "insertionOrder": false,
   "items": {
    "$ref": "#/definitions/Tag"
   },
   "maxItems": 200,
   "minItems": 0,
   "type": "array",
   "uniqueItems": false
  }
 },
 "readOnlyProperties": [
  "/properties/Arn",
  "/properties/DetectorVersionId",
  "/properties/CreatedTime",
  "/properties/LastUpdatedTime",
  "/properties/Rules/*/RuleVersion",
  "/properties/Rules/*/Arn",
  "/properties/Rules/*/CreatedTime",
  "/properties/Rules/*/LastUpdatedTime",
  "/properties/Rules/*/Outcomes/*/Arn",
  "/properties/Rules/*/Outcomes/*/CreatedTime",
  "/properties/Rules/*/Outcomes/*/LastUpdatedTime",
  "/properties/EventType/Arn",
  "/properties/EventType/CreatedTime",
  "/properties/EventType/LastUpdatedTime",
  "/properties/EventType/EventVariables/*/Arn",
  "/properties/EventType/EventVariables/*/CreatedTime",
  "/properties/EventType/EventVariables/*/LastUpdatedTime",
  "/properties/EventType/Labels/*/Arn",
  "/properties/EventType/Labels/*/CreatedTime",
  "/properties/EventType/Labels/*/LastUpdatedTime",
  "/properties/EventType/EntityTypes/*/Arn",
  "/properties/EventType/EntityTypes/*/CreatedTime",
  "/properties/EventType/EntityTypes/*/LastUpdatedTime",
  "/properties/AssociatedModels/*/Arn"
 ],
 "required": [
  "DetectorId",
  "EventType",
  "Rules"
 ],
 "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git",
 "typeName": "AWS::FraudDetector::Detector"
}
