{
  "typeName" : "AWS::Connect::DataTableAttribute",
  "description" : "Resource Type definition for AWS::Connect::DataTableAttribute",
  "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect",
  "definitions" : {
    "Description" : {
      "description" : "",
      "type" : "string",
      "minLength" : 0,
      "maxLength" : 250,
      "pattern" : "^[\\P{C}\r\n\t]+$"
    },
    "LengthBoundary" : {
      "description" : "",
      "type" : "integer",
      "minimum" : 0,
      "exclusiveMaximum" : 1000
    },
    "ValueBoundary" : {
      "description" : "",
      "type" : "integer",
      "minimum" : 0,
      "exclusiveMaximum" : 100
    },
    "AttributeId" : {
      "description" : "",
      "type" : "string",
      "minLength" : 1,
      "maxLength" : 256
    }
  },
  "properties" : {
    "InstanceArn" : {
      "description" : "",
      "type" : "string",
      "minLength" : 1,
      "maxLength" : 100,
      "pattern" : "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$"
    },
    "DataTableArn" : {
      "description" : "",
      "type" : "string",
      "minLength" : 1,
      "maxLength" : 2048
    },
    "AttributeId" : {
      "description" : "",
      "$ref" : "#/definitions/AttributeId"
    },
    "Name" : {
      "description" : "",
      "type" : "string",
      "minLength" : 1,
      "maxLength" : 128,
      "pattern" : "^[\\p{L}\\p{Z}\\p{N}\\-_.:=@'|]+$"
    },
    "ValueType" : {
      "description" : "",
      "type" : "string",
      "enum" : [ "TEXT", "NUMBER", "BOOLEAN", "TEXT_LIST", "NUMBER_LIST" ]
    },
    "Description" : {
      "description" : "",
      "$ref" : "#/definitions/Description"
    },
    "Primary" : {
      "description" : "",
      "type" : "boolean"
    },
    "LockVersion" : {
      "description" : "",
      "type" : "object",
      "properties" : {
        "DataTable" : {
          "description" : "",
          "type" : "string"
        },
        "Attribute" : {
          "description" : "",
          "type" : "string"
        }
      },
      "additionalProperties" : false
    },
    "Validation" : {
      "description" : "",
      "type" : "object",
      "properties" : {
        "MinLength" : {
          "description" : "",
          "$ref" : "#/definitions/LengthBoundary"
        },
        "MaxLength" : {
          "description" : "",
          "$ref" : "#/definitions/LengthBoundary"
        },
        "MinValues" : {
          "description" : "",
          "$ref" : "#/definitions/ValueBoundary"
        },
        "MaxValues" : {
          "description" : "",
          "$ref" : "#/definitions/ValueBoundary"
        },
        "Minimum" : {
          "description" : "",
          "type" : "number"
        },
        "Maximum" : {
          "description" : "",
          "type" : "number"
        },
        "ExclusiveMinimum" : {
          "description" : "",
          "type" : "number"
        },
        "ExclusiveMaximum" : {
          "description" : "",
          "type" : "number"
        },
        "MultipleOf" : {
          "description" : "",
          "type" : "number",
          "minimum" : 0
        },
        "Enum" : {
          "description" : "",
          "type" : "object",
          "properties" : {
            "Strict" : {
              "description" : "",
              "type" : "boolean"
            },
            "Values" : {
              "description" : "",
              "type" : "array",
              "insertionOrder" : false,
              "items" : {
                "type" : "string"
              }
            }
          },
          "additionalProperties" : false
        }
      },
      "additionalProperties" : false
    },
    "LastModifiedTime" : {
      "description" : "",
      "type" : "number"
    },
    "LastModifiedRegion" : {
      "description" : "",
      "type" : "string",
      "pattern" : "[a-z]{2}(-[a-z]+){1,2}(-[0-9])?"
    }
  },
  "handlers" : {
    "create" : {
      "permissions" : [ "connect:CreateDataTableAttribute", "connect:ListDataTableAttributes" ]
    },
    "read" : {
      "permissions" : [ "connect:ListDataTableAttributes" ]
    },
    "delete" : {
      "permissions" : [ "connect:DeleteDataTableAttribute", "connect:ListDataTableAttributes" ]
    },
    "update" : {
      "permissions" : [ "connect:UpdateDataTableAttribute" ]
    },
    "list" : {
      "handlerSchema" : {
        "properties" : {
          "InstanceArn" : {
            "$ref" : "resource-schema.json#/properties/InstanceArn"
          },
          "DataTableArn" : {
            "$ref" : "resource-schema.json#/properties/DataTableArn"
          }
        },
        "required" : [ "InstanceArn", "DataTableArn" ]
      },
      "permissions" : [ "connect:ListDataTableAttributes" ]
    }
  },
  "createOnlyProperties" : [ "/properties/InstanceArn", "/properties/DataTableArn" ],
  "conditionalCreateOnlyProperties" : [ "/properties/Name" ],
  "readOnlyProperties" : [ "/properties/AttributeId", "/properties/LockVersion", "/properties/LastModifiedRegion", "/properties/LastModifiedTime" ],
  "tagging" : {
    "taggable" : false
  },
  "primaryIdentifier" : [ "/properties/InstanceArn", "/properties/DataTableArn", "/properties/AttributeId" ],
  "additionalIdentifiers" : [ [ "/properties/InstanceArn", "/properties/DataTableArn", "/properties/Name" ] ],
  "additionalProperties" : false
}