{
  "//": {
    "metadata": {
      "backend": "local",
      "stackName": "CloudCollectorV3Stack",
      "version": "0.23.3"
    },
    "outputs": {}
  },
  "data": {
    "aws_caller_identity": {
      "operata_aws_account_main_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_aws_account_main_prod",
            "uniqueId": "operata_aws_account_main_prod"
          }
        }
      }
    },
    "aws_iam_policy": {
      "operata_privacy_control_lambda_vpc_access_executionrole_policy_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_privacy_control_lambda_vpc_access_executionrole_policy_prod",
            "uniqueId": "operata_privacy_control_lambda_vpc_access_executionrole_policy_prod"
          }
        },
        "arn": "arn:${data.aws_partition.current.partition}:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"
      }
    },
    "aws_iam_policy_document": {
      "operata_s3_kinesis_integrator_lambda_iam_assumerole_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_s3_kinesis_integrator_lambda_iam_assumerole_prod",
            "uniqueId": "operata_s3_kinesis_integrator_lambda_iam_assumerole_prod"
          }
        },
        "statement": [
          {
            "actions": [
              "sts:AssumeRole"
            ],
            "effect": "Allow",
            "principals": [
              {
                "identifiers": [
                  "lambda.amazonaws.com"
                ],
                "type": "Service"
              }
            ]
          }
        ]
      }
    },
    "aws_partition": {
      "current": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/current",
            "uniqueId": "current"
          }
        }
      }
    },
    "aws_s3_bucket": {
      "contact_lens_data_bucket_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/contact_lens_data_bucket_prod",
            "uniqueId": "contact_lens_data_bucket_prod"
          }
        },
        "bucket": "${var.contact_lens_data_s3_bucket_name}"
      }
    }
  },
  "provider": {
    "aws": [
      {
        "region": "${var.aws_region}"
      }
    ]
  },
  "resource": {
    "aws_cloudwatch_event_api_destination": {
      "operata_api_destination_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_api_destination_prod",
            "uniqueId": "operata_api_destination_prod"
          }
        },
        "connection_arn": "${aws_cloudwatch_event_connection.operata_connection_prod.arn}",
        "description": "EventBridge APIDestination for sending Contact Lens Data to Operata [group ID: ${var.operata_group_id}]",
        "http_method": "POST",
        "invocation_endpoint": "https://api.operata.io/v1/raw/*",
        "name": "operata_api_destination_prod"
      }
    },
    "aws_cloudwatch_event_connection": {
      "operata_connection_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_connection_prod",
            "uniqueId": "operata_connection_prod"
          }
        },
        "auth_parameters": {
          "api_key": {
            "key": "Operata-API-Key",
            "value": "${aws_secretsmanager_secret_version.operata_api_key_secret_version_prod.secret_string}"
          },
          "invocation_http_parameters": {
            "header": [
              {
                "is_value_secret": false,
                "key": "Operata-Group-Id",
                "value": "${var.operata_group_id}"
              }
            ]
          }
        },
        "authorization_type": "API_KEY",
        "description": "EventBridge APIConnection for transmitting Contact Lens Data to Operata [group ID: ${var.operata_group_id}]",
        "name": "operata_cld_api_connection_prod"
      }
    },
    "aws_cloudwatch_event_rule": {
      "operata_contact_lens_event_bridge_rule_awsconnect_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_contact_lens_event_bridge_rule_awsconnect_prod",
            "uniqueId": "operata_contact_lens_event_bridge_rule_awsconnect_prod"
          }
        },
        "event_pattern": "${jsonencode({\"detail-type\" = [\"Contact Lens Realtime Rules Matched\", \"Contact Lens Post Call Rules Matched\"], \"source\" = [\"aws.connect\"], \"detail\" = {\"actionName\" = [{\"prefix\" = \"operata_\"}]}})}",
        "name": "operata_contact_lens_awsconnect_rule_prod"
      },
      "operata_contact_lens_event_bridge_rule_for_s3_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_contact_lens_event_bridge_rule_for_s3_prod",
            "uniqueId": "operata_contact_lens_event_bridge_rule_for_s3_prod"
          }
        },
        "event_pattern": "${jsonencode({\"detail-type\" = [\"Object Created\"], \"source\" = [\"aws.s3\"], \"detail\" = {\"bucket\" = {\"name\" = [var.contact_lens_data_s3_bucket_name]}, \"object\" = {\"key\" = [{\"wildcard\" = \"Analysis/Voice/*.json\"}]}}})}",
        "name": "operata_contact_lens_s3_rule_prod"
      }
    },
    "aws_cloudwatch_event_target": {
      "operata_contact_lens_event_bridge_rule_lambda_target_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_contact_lens_event_bridge_rule_lambda_target_prod",
            "uniqueId": "operata_contact_lens_event_bridge_rule_lambda_target_prod"
          }
        },
        "arn": "${aws_lambda_function.operata_s3_kinesis_integrator_lambda_prod.arn}",
        "rule": "${aws_cloudwatch_event_rule.operata_contact_lens_event_bridge_rule_for_s3_prod.id}"
      },
      "operata_contact_lens_event_bridge_rule_target_api_destination_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_contact_lens_event_bridge_rule_target_api_destination_prod",
            "uniqueId": "operata_contact_lens_event_bridge_rule_target_api_destination_prod"
          }
        },
        "arn": "${aws_cloudwatch_event_api_destination.operata_api_destination_prod.arn}",
        "http_target": {
          "path_parameter_values": [
            "cloudContactLensEvent"
          ]
        },
        "role_arn": "${aws_iam_role.operata_event_bridge_event_target_role_for_api_destination_prod.arn}",
        "rule": "${aws_cloudwatch_event_rule.operata_contact_lens_event_bridge_rule_awsconnect_prod.id}"
      }
    },
    "aws_cloudwatch_log_group": {
      "operata_cld_pipe_log_group_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_cld_pipe_log_group_prod",
            "uniqueId": "operata_cld_pipe_log_group_prod"
          }
        },
        "name": "/aws/pipes/operata_contact_lens_pipe_prod",
        "retention_in_days": 7
      }
    },
    "aws_iam_role": {
      "operata_event_bridge_event_target_role_for_api_destination_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_event_bridge_event_target_role_for_api_destination_prod",
            "uniqueId": "operata_event_bridge_event_target_role_for_api_destination_prod"
          }
        },
        "assume_role_policy": "${jsonencode({\"Statement\" = [{\"Action\" = \"sts:AssumeRole\", \"Effect\" = \"Allow\", \"Principal\" = {\"Service\" = \"events.amazonaws.com\"}}], \"Version\" = \"2012-10-17\"})}"
      },
      "operata_event_bridge_pipe_role_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_event_bridge_pipe_role_prod",
            "uniqueId": "operata_event_bridge_pipe_role_prod"
          }
        },
        "assume_role_policy": "${jsonencode({\"Statement\" = [{\"Action\" = \"sts:AssumeRole\", \"Condition\" = {\"StringEquals\" = {\"aws:SourceAccount\" = data.aws_caller_identity.operata_aws_account_main_prod.account_id}}, \"Effect\" = \"Allow\", \"Principal\" = {\"Service\" = \"pipes.amazonaws.com\"}}], \"Version\" = \"2012-10-17\"})}"
      },
      "operata_s3_kinesis_integrator_lambda_iam_role_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_s3_kinesis_integrator_lambda_iam_role_prod",
            "uniqueId": "operata_s3_kinesis_integrator_lambda_iam_role_prod"
          }
        },
        "assume_role_policy": "${data.aws_iam_policy_document.operata_s3_kinesis_integrator_lambda_iam_assumerole_prod.json}",
        "inline_policy": [
          {
            "name": "operata_s3_kinesis_integrator_lambda_iam_policy_prod",
            "policy": "${jsonencode({\"Statement\" = [{\"Effect\" = \"Allow\", \"Action\" = [\"logs:CreateLogGroup\", \"logs:CreateLogStream\", \"logs:PutLogEvents\"], \"Resource\" = \"*\"}, {\"Effect\" = \"Allow\", \"Action\" = [\"s3:GetObject\", \"s3:GetBucket*\", \"s3:GetObject*\", \"s3:List*\"], \"Resource\" = [\"arn:aws:s3:::${var.contact_lens_data_s3_bucket_name}\", \"arn:aws:s3:::${var.contact_lens_data_s3_bucket_name}/*\"]}, {\"Effect\" = \"Allow\", \"Action\" = [\"kinesis:ListShards\", \"kinesis:PutRecord\", \"kinesis:PutRecords\"], \"Resource\" = aws_kinesis_stream.operata_contact_lens_data_stream_prod.arn}], \"Version\" = \"2012-10-17\"})}"
          }
        ],
        "managed_policy_arns": [
          "${data.aws_iam_policy.operata_privacy_control_lambda_vpc_access_executionrole_policy_prod.arn}"
        ],
        "name": "operata_s3_kinesis_integrator_lambda_iam_role_prod"
      }
    },
    "aws_iam_role_policy": {
      "operata_cld_pipe_logs_policy_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_cld_pipe_logs_policy_prod",
            "uniqueId": "operata_cld_pipe_logs_policy_prod"
          }
        },
        "name": "PipeLogsPolicy-Operata-CLD-GroupId-${var.operata_group_id}",
        "policy": "${jsonencode({\"Statement\" = [{\"Action\" = [\"logs:CreateLogStream\", \"logs:PutLogEvents\"], \"Effect\" = \"Allow\", \"Resource\" = aws_cloudwatch_log_group.operata_cld_pipe_log_group_prod.arn}], \"Version\" = \"2012-10-17\"})}",
        "role": "${aws_iam_role.operata_event_bridge_pipe_role_prod.id}"
      },
      "operata_event_bridge_kinesis_pipe_source_policy_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_event_bridge_kinesis_pipe_source_policy_prod",
            "uniqueId": "operata_event_bridge_kinesis_pipe_source_policy_prod"
          }
        },
        "name": "operata_kinesis_pipe_source_policy_prod",
        "policy": "${jsonencode({\"Statement\" = [{\"Action\" = [\"kinesis:DescribeStream\", \"kinesis:DescribeStreamSummary\", \"kinesis:GetRecords\", \"kinesis:GetShardIterator\", \"kinesis:ListStreams\", \"kinesis:ListShards\"], \"Effect\" = \"Allow\", \"Resource\" = aws_kinesis_stream.operata_contact_lens_data_stream_prod.arn}], \"Version\" = \"2012-10-17\"})}",
        "role": "${aws_iam_role.operata_event_bridge_pipe_role_prod.id}"
      },
      "operata_event_bridge_pipe_api_destination_policy_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_event_bridge_pipe_api_destination_policy_prod",
            "uniqueId": "operata_event_bridge_pipe_api_destination_policy_prod"
          }
        },
        "name": "operata_api_destination_policy_prod",
        "policy": "${jsonencode({\"Statement\" = [{\"Action\" = [\"events:InvokeApiDestination\"], \"Effect\" = \"Allow\", \"Resource\" = aws_cloudwatch_event_api_destination.operata_api_destination_prod.arn}], \"Version\" = \"2012-10-17\"})}",
        "role": "${aws_iam_role.operata_event_bridge_pipe_role_prod.id}"
      },
      "operata_event_rule_api_destination_policy_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_event_rule_api_destination_policy_prod",
            "uniqueId": "operata_event_rule_api_destination_policy_prod"
          }
        },
        "name": "operata_event_rule_api_destination_policy_prod",
        "policy": "${jsonencode({\"Statement\" = [{\"Action\" = [\"events:InvokeApiDestination\"], \"Effect\" = \"Allow\", \"Resource\" = aws_cloudwatch_event_api_destination.operata_api_destination_prod.arn}], \"Version\" = \"2012-10-17\"})}",
        "role": "${aws_iam_role.operata_event_bridge_event_target_role_for_api_destination_prod.id}"
      }
    },
    "aws_kinesis_stream": {
      "operata_contact_lens_data_stream_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_contact_lens_data_stream_prod",
            "uniqueId": "operata_contact_lens_data_stream_prod"
          }
        },
        "name": "operata_contact_lens_data_stream_prod",
        "shard_count": 1,
        "stream_mode_details": {
          "stream_mode": "PROVISIONED"
        }
      }
    },
    "aws_lambda_function": {
      "operata_s3_kinesis_integrator_lambda_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_s3_kinesis_integrator_lambda_prod",
            "uniqueId": "operata_s3_kinesis_integrator_lambda_prod"
          }
        },
        "environment": {
          "variables": {
            "BUILD_VERSION": "v1.2.6",
            "LOG_LEVEL": "0",
            "TARGET_KINESIS_STREAM_NAME": "${aws_kinesis_stream.operata_contact_lens_data_stream_prod.name}"
          }
        },
        "function_name": "operata_s3_kinesis_integrator_lambda_prod",
        "handler": "bootstrap",
        "role": "${aws_iam_role.operata_s3_kinesis_integrator_lambda_iam_role_prod.arn}",
        "runtime": "provided.al2023",
        "s3_bucket": "${var.aws_region}-operata-shared-assets-prod",
        "s3_key": "ccv3-lambdas/v1.2.6/cloud-collector-v3-contact-lens-data.zip",
        "timeout": 60,
        "vpc_config": {
          "security_group_ids": [
            "${aws_security_group.operata_privacy_control_lambda_security_group_prod.id}"
          ],
          "subnet_ids": "${var.s3_kinesis_integrator_lambda_vpc_private_subnets}"
        }
      }
    },
    "aws_lambda_permission": {
      "operata_contact_lens_eventbridge_permission_for_lambda_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_contact_lens_eventbridge_permission_for_lambda_prod",
            "uniqueId": "operata_contact_lens_eventbridge_permission_for_lambda_prod"
          }
        },
        "action": "lambda:InvokeFunction",
        "function_name": "${aws_lambda_function.operata_s3_kinesis_integrator_lambda_prod.function_name}",
        "principal": "events.amazonaws.com",
        "source_arn": "${aws_cloudwatch_event_rule.operata_contact_lens_event_bridge_rule_for_s3_prod.arn}",
        "statement_id": "AllowExecutionFromCloudWatch"
      }
    },
    "aws_pipes_pipe": {
      "operata_contact_lens_pipe_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_contact_lens_pipe_prod",
            "uniqueId": "operata_contact_lens_pipe_prod"
          }
        },
        "description": "Pipe for sending Contact Lens Data to Operata [group ID: ${var.operata_group_id}] | Source Kinesis ARN [${aws_kinesis_stream.operata_contact_lens_data_stream_prod.arn}] | Target APIDestination ARN [${aws_cloudwatch_event_api_destination.operata_api_destination_prod.arn}]",
        "log_configuration": {
          "cloudwatch_logs_log_destination": {
            "log_group_arn": "${aws_cloudwatch_log_group.operata_cld_pipe_log_group_prod.arn}"
          },
          "include_execution_data": [
            "ALL"
          ],
          "level": "ERROR"
        },
        "name": "operata_contact_lens_pipe_prod",
        "role_arn": "${aws_iam_role.operata_event_bridge_pipe_role_prod.arn}",
        "source": "${aws_kinesis_stream.operata_contact_lens_data_stream_prod.arn}",
        "source_parameters": {
          "kinesis_stream_parameters": {
            "batch_size": 1,
            "maximum_record_age_in_seconds": -1,
            "maximum_retry_attempts": -1,
            "starting_position": "LATEST"
          }
        },
        "target": "${aws_cloudwatch_event_api_destination.operata_api_destination_prod.arn}",
        "target_parameters": {
          "http_parameters": {
            "path_parameter_values": [
              "cloudContactLensSummary"
            ]
          },
          "input_template": "{\n  \"AccountId\": <$.data.AccountId>,\n  \"Categories\": <$.data.Categories>,\n  \"Channel\": <$.data.Channel>,\n  \"ContentMetadata\": <$.data.ContentMetadata>,\n  \"ConversationCharacteristics\": <$.data.ConversationCharacteristics>,\n  \"CustomerMetadata\": <$.data.CustomerMetadata>,\n  \"CustomModels\": <$.data.CustomModels>,\n  \"JobStatus\": <$.data.JobStatus>,\n  \"LanguageCode\": <$.data.LanguageCode>,\n  \"Participants\": <$.data.Participants>,\n  \"Version\": <$.data.Version>\n}"
        }
      }
    },
    "aws_s3_bucket_notification": {
      "operata_contact_lens_bucket_notification_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_contact_lens_bucket_notification_prod",
            "uniqueId": "operata_contact_lens_bucket_notification_prod"
          }
        },
        "bucket": "${data.aws_s3_bucket.contact_lens_data_bucket_prod.id}",
        "eventbridge": true
      }
    },
    "aws_secretsmanager_secret": {
      "operata_api_key_secret_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_api_key_secret_prod",
            "uniqueId": "operata_api_key_secret_prod"
          }
        },
        "name": "/cloud-collector-v3/cld/apiToken-prod"
      }
    },
    "aws_secretsmanager_secret_version": {
      "operata_api_key_secret_version_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_api_key_secret_version_prod",
            "uniqueId": "operata_api_key_secret_version_prod"
          }
        },
        "secret_id": "${aws_secretsmanager_secret.operata_api_key_secret_prod.id}",
        "secret_string": "${var.operata_api_key}"
      }
    },
    "aws_security_group": {
      "operata_privacy_control_lambda_security_group_prod": {
        "//": {
          "metadata": {
            "path": "CloudCollectorV3Stack/operata_privacy_control_lambda_security_group_prod",
            "uniqueId": "operata_privacy_control_lambda_security_group_prod"
          }
        },
        "description": "Security group for Operata Lambda Function - operata_s3_kinesis_integrator_lambda_prod",
        "egress": [
          {
            "cidr_blocks": [
              "0.0.0.0/0"
            ],
            "description": null,
            "from_port": 0,
            "ipv6_cidr_blocks": [
              "::/0"
            ],
            "prefix_list_ids": [],
            "protocol": "-1",
            "security_groups": [],
            "self": false,
            "to_port": 0
          }
        ],
        "vpc_id": "${var.s3_kinesis_integrator_lambda_vpc_id}"
      }
    }
  },
  "terraform": {
    "backend": {
      "local": {
        "path": "terraform.CloudCollectorV3Stack.tfstate"
      }
    },
    "required_providers": {
      "aws": {
        "source": "aws",
        "version": "5.100.0"
      }
    }
  },
  "variable": {
    "aws_region": {
      "description": "AWS Region where this stack will be created",
      "type": "string"
    },
    "contact_lens_data_s3_bucket_name": {
      "description": "The S3 bucket name where the Contact Lens data is stored.",
      "type": "string"
    },
    "operata_api_key": {
      "description": "API key generated in the Operata console",
      "sensitive": true,
      "type": "string"
    },
    "operata_group_id": {
      "description": "Operata Group ID provided by Operata",
      "type": "string"
    },
    "s3_kinesis_integrator_lambda_vpc_id": {
      "description": "The VPC id where the s3->kinesis integrator lambda function will be deployed into",
      "type": "string"
    },
    "s3_kinesis_integrator_lambda_vpc_private_subnets": {
      "description": "The private subnet ids where the s3->kinesis integrator lambda function will be deployed into (values should be comma seperated)",
      "type": "list(string)"
    }
  }
}