{
  "typeName" : "AWS::M2::Deployment",
  "description" : "Represents a deployment resource of an AWS Mainframe Modernization (M2) application to a specified environment",
  "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-m2.git",
  "properties" : {
    "EnvironmentId" : {
      "type" : "string",
      "description" : "The environment ID.",
      "pattern" : "^\\S{1,80}$"
    },
    "ApplicationId" : {
      "type" : "string",
      "description" : "The application ID.",
      "pattern" : "^\\S{1,80}$"
    },
    "ApplicationVersion" : {
      "type" : "integer",
      "description" : "The version number of the application to deploy"
    },
    "DeploymentId" : {
      "type" : "string",
      "description" : "The deployment ID.",
      "pattern" : "^\\S{1,80}$"
    },
    "Status" : {
      "type" : "string",
      "description" : "The status of the deployment."
    }
  },
  "additionalProperties" : false,
  "required" : [ "EnvironmentId", "ApplicationId", "ApplicationVersion" ],
  "readOnlyProperties" : [ "/properties/DeploymentId", "/properties/Status" ],
  "createOnlyProperties" : [ "/properties/EnvironmentId", "/properties/ApplicationId" ],
  "primaryIdentifier" : [ "/properties/ApplicationId" ],
  "handlers" : {
    "create" : {
      "permissions" : [ "m2:CreateDeployment", "m2:ListDeployments", "m2:GetDeployment", "iam:PassRole", "ec2:DescribeNetworkInterfaces", "elasticloadbalancing:CreateListener", "elasticloadbalancing:CreateLoadBalancer", "elasticloadbalancing:CreateTargetGroup", "elasticloadbalancing:AddTags", "elasticloadbalancing:RegisterTargets", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups", "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries", "logs:CreateLogGroup", "logs:PutResourcePolicy" ],
      "timeoutInMinutes" : 60
    },
    "read" : {
      "permissions" : [ "m2:ListDeployments", "m2:GetDeployment" ]
    },
    "update" : {
      "permissions" : [ "m2:CreateDeployment", "m2:ListDeployments", "m2:GetDeployment", "elasticloadbalancing:CreateListener", "elasticloadbalancing:CreateLoadBalancer", "elasticloadbalancing:CreateTargetGroup", "elasticloadbalancing:DeleteListener", "elasticloadbalancing:DeleteTargetGroup", "elasticloadbalancing:DeregisterTargets", "elasticloadbalancing:DeleteLoadBalancer", "elasticloadbalancing:AddTags", "elasticloadbalancing:RegisterTargets", "ec2:DescribeNetworkInterfaces" ],
      "timeoutInMinutes" : 60
    },
    "delete" : {
      "permissions" : [ "elasticloadbalancing:DeleteListener", "elasticloadbalancing:DeleteTargetGroup", "elasticloadbalancing:DeregisterTargets", "elasticloadbalancing:DeleteLoadBalancer", "logs:DeleteLogDelivery", "m2:ListDeployments", "m2:GetDeployment", "m2:DeleteApplicationFromEnvironment" ],
      "timeoutInMinutes" : 60
    },
    "list" : {
      "handlerSchema" : {
        "properties" : {
          "ApplicationId" : {
            "$ref" : "resource-schema.json#/properties/ApplicationId"
          }
        },
        "required" : [ "ApplicationId" ]
      },
      "permissions" : [ "m2:ListDeployments" ]
    }
  },
  "tagging" : {
    "taggable" : false,
    "tagOnCreate" : false,
    "tagUpdatable" : false,
    "cloudFormationSystemTags" : false
  }
}