{
  "name": "alb",
  "version": "1.0.0",
  "kind": "l1",
  "type": "aws:elbv2:loadbalancer",
  "description": "Application Load Balancer primitive (engine-agnostic stack types aws:elbv2:loadbalancer + aws:elbv2:listener + aws:elbv2:targetgroup; the Terraform adapter translates to aws_lb/aws_lb_listener/aws_lb_target_group).",
  "inputs": {
    "name": {
      "type": "string",
      "description": "Name tag for the load balancer and child resources.",
      "required": true
    },
    "subnets": {
      "type": "string",
      "description": "Comma-separated subnet ids (ref to vpc).",
      "required": true
    },
    "security_group": {
      "type": "string",
      "description": "Security group id for the load balancer.",
      "required": true
    },
    "port": {
      "type": "number",
      "description": "Listener port (default 80).",
      "required": false,
      "default": 80
    },
    "protocol": {
      "type": "string",
      "description": "Listener protocol (default HTTP).",
      "required": false,
      "default": "HTTP"
    },
    "region": {
      "type": "string",
      "description": "AWS region the load balancer is created in.",
      "required": true
    },
    "load_balancer_type": {
      "type": "string",
      "description": "Load balancer type (application or network).",
      "required": false,
      "default": "application"
    },
    "target_type": {
      "type": "string",
      "description": "Target group target type (ip or instance).",
      "required": false,
      "default": "ip"
    },
    "enabled": {
      "type": "boolean",
      "default": true,
      "description": "Feature flag: enable/disable this module. Set to false to skip resource creation."
    }
  },
  "outputs": {
    "lb_arn": {
      "type": "arn",
      "description": "The load balancer ARN."
    },
    "listener_arn": {
      "type": "arn",
      "description": "The listener ARN."
    },
    "target_group_arn": {
      "type": "arn",
      "description": "The target group ARN."
    }
  },
  "nfrs": {
    "encryption_enabled": {
      "type": "boolean",
      "description": "Enable TLS/HTTPS encryption in transit.",
      "default": true
    },
    "tls_enabled": {
      "type": "boolean",
      "description": "Enable TLS listener.",
      "default": true
    },
    "deletion_protection": {
      "type": "boolean",
      "description": "Prevent resource destruction via Terraform lifecycle prevent_destroy",
      "default": true
    }
  },
  "resources": [
    {
      "type": "aws:elbv2:loadbalancer",
      "description": "Application load balancer in the VPC subnets.",
      "inputs": [
        "name",
        "subnets",
        "security_group",
        "load_balancer_type"
      ],
      "outputs": [
        "lb_arn"
      ]
    },
    {
      "type": "aws:elbv2:targetgroup",
      "description": "Target group for the ECS service tasks.",
      "inputs": [
        "name",
        "port",
        "protocol",
        "vpc_id",
        "target_type"
      ],
      "outputs": [
        "target_group_arn"
      ]
    },
    {
      "type": "aws:elbv2:listener",
      "description": "Listener forwarding the LB port to the target group.",
      "inputs": [
        "lb_arn",
        "port",
        "protocol",
        "target_group_arn"
      ],
      "outputs": [
        "listener_arn"
      ]
    }
  ]
}
