{
  "Description": "Root Stack for AWS Amplify CLI",
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters": {
    "DeploymentBucketName": {
      "Type": "String",
      "Default": "DeploymentBucket",
      "Description": "Name of the common deployment bucket provided by the parent stack"
    },
    "AuthRoleName": {
      "Type": "String",
      "Default": "AuthRoleName",
      "Description": "Name of the common deployment bucket provided by the parent stack"
    },
    "UnauthRoleName": {
      "Type": "String",
      "Default": "UnAuthRoleName",
      "Description": "Name of the common deployment bucket provided by the parent stack"
    }
  },
  "Outputs": {
    "Region": {
      "Description": "CloudFormation provider root stack Region",
      "Value": {
        "Ref": "AWS::Region"
      },
      "Export": {
        "Name": {
          "Fn::Sub": "${AWS::StackName}-Region"
        }
      }
    },
    "StackName": {
      "Description": "CloudFormation provider root stack ID",
      "Value": {
        "Ref": "AWS::StackName"
      },
      "Export": {
        "Name": {
          "Fn::Sub": "${AWS::StackName}-StackName"
        }
      }
    },
    "StackId": {
      "Description": "CloudFormation provider root stack name",
      "Value": {
        "Ref": "AWS::StackId"
      },
      "Export": {
        "Name": {
          "Fn::Sub": "${AWS::StackName}-StackId"
        }
      }
    },
    "AuthRoleArn": {
      "Value": {
        "Fn::GetAtt": [
          "AuthRole",
          "Arn"
        ]
      }
    },
    "UnauthRoleArn": {
      "Value": {
        "Fn::GetAtt": [
          "UnauthRole",
          "Arn"
        ]
      }
    },
    "DeploymentBucketName": {
      "Description": "CloudFormation provider root stack deployment bucket name",
      "Value": {
        "Ref": "DeploymentBucketName"
      },
      "Export": {
        "Name": {
          "Fn::Sub": "${AWS::StackName}-DeploymentBucketName"
        }
      }
    },
    "AuthRoleName": {
      "Value": {
        "Ref": "AuthRole"
      }
    },
    "UnauthRoleName": {
      "Value": {
        "Ref": "UnauthRole"
      }
    }
  },
  "Resources": {
    "DeploymentBucket": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "BucketName": {
          "Ref": "DeploymentBucketName"
        },
        "BucketEncryption": {
          "ServerSideEncryptionConfiguration": [
            {
              "ServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
              }
            }
          ]
        }
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain"
    },
    "AuthRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Sid": "",
              "Effect": "Deny",
              "Principal": {
                "Federated": "cognito-identity.amazonaws.com"
              },
              "Action": "sts:AssumeRoleWithWebIdentity"
            }
          ]
        },
        "RoleName": {
          "Ref": "AuthRoleName"
        }
      }
    },
    "UnauthRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Sid": "",
              "Effect": "Deny",
              "Principal": {
                "Federated": "cognito-identity.amazonaws.com"
              },
              "Action": "sts:AssumeRoleWithWebIdentity"
            }
          ]
        },
        "RoleName": {
          "Ref": "UnauthRoleName"
        }
      }
    },
    "APIGatewayAuthStack": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "https://s3.amazonaws.com/amplify-bigpond-dev-123209-deployment/amplify-cfn-templates/api/APIGatewayAuthStack.json",
        "Parameters": {
          "authRoleName": {
            "Ref": "AuthRoleName"
          },
          "unauthRoleName": {
            "Ref": "UnauthRoleName"
          },
          "env": "dev",
          "apibigpond": {
            "Fn::GetAtt": [
              "apiapibigpond",
              "Outputs.ApiId"
            ]
          },
          "apibigpondfiles": {
            "Fn::GetAtt": [
              "apiapibigpondfiles",
              "Outputs.ApiId"
            ]
          }
        }
      }
    },
    "apiapibigpond": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "https://s3.amazonaws.com/amplify-bigpond-dev-123209-deployment/amplify-cfn-templates/api/apibigpond-cloudformation-template.json",
        "Parameters": {
          "functionbigpondexpressName": {
            "Fn::GetAtt": [
              "functionbigpondexpress",
              "Outputs.Name"
            ]
          },
          "functionbigpondexpressArn": {
            "Fn::GetAtt": [
              "functionbigpondexpress",
              "Outputs.Arn"
            ]
          },
          "functionXeroExpressName": {
            "Fn::GetAtt": [
              "functionXeroExpress",
              "Outputs.Name"
            ]
          },
          "functionXeroExpressArn": {
            "Fn::GetAtt": [
              "functionXeroExpress",
              "Outputs.Arn"
            ]
          },
          "functionxerotokenName": {
            "Fn::GetAtt": [
              "functionxerotoken",
              "Outputs.Name"
            ]
          },
          "functionxerotokenArn": {
            "Fn::GetAtt": [
              "functionxerotoken",
              "Outputs.Arn"
            ]
          },
          "functionxerotenantsName": {
            "Fn::GetAtt": [
              "functionxerotenants",
              "Outputs.Name"
            ]
          },
          "functionxerotenantsArn": {
            "Fn::GetAtt": [
              "functionxerotenants",
              "Outputs.Arn"
            ]
          },
          "functionxerorefreshName": {
            "Fn::GetAtt": [
              "functionxerorefresh",
              "Outputs.Name"
            ]
          },
          "functionxerorefreshArn": {
            "Fn::GetAtt": [
              "functionxerorefresh",
              "Outputs.Arn"
            ]
          },
          "functionupdatetableinvoiceName": {
            "Fn::GetAtt": [
              "functionupdatetableinvoice",
              "Outputs.Name"
            ]
          },
          "functionupdatetableinvoiceArn": {
            "Fn::GetAtt": [
              "functionupdatetableinvoice",
              "Outputs.Arn"
            ]
          },
          "functionsendxeroemailName": {
            "Fn::GetAtt": [
              "functionsendxeroemail",
              "Outputs.Name"
            ]
          },
          "functionsendxeroemailArn": {
            "Fn::GetAtt": [
              "functionsendxeroemail",
              "Outputs.Arn"
            ]
          },
          "functionfrontendLogsName": {
            "Fn::GetAtt": [
              "functionfrontendLogs",
              "Outputs.Name"
            ]
          },
          "functionfrontendLogsArn": {
            "Fn::GetAtt": [
              "functionfrontendLogs",
              "Outputs.Arn"
            ]
          },
          "functiongeneratefileName": {
            "Fn::GetAtt": [
              "functiongeneratefile",
              "Outputs.Name"
            ]
          },
          "functiongeneratefileArn": {
            "Fn::GetAtt": [
              "functiongeneratefile",
              "Outputs.Arn"
            ]
          },
          "functionZipObjectsName": {
            "Fn::GetAtt": [
              "functionZipObjects",
              "Outputs.Name"
            ]
          },
          "functionZipObjectsArn": {
            "Fn::GetAtt": [
              "functionZipObjects",
              "Outputs.Arn"
            ]
          },
          "functiondeleteSessionUploadsName": {
            "Fn::GetAtt": [
              "functiondeleteSessionUploads",
              "Outputs.Name"
            ]
          },
          "functiondeleteSessionUploadsArn": {
            "Fn::GetAtt": [
              "functiondeleteSessionUploads",
              "Outputs.Arn"
            ]
          },
          "env": "dev"
        }
      }
    },
    "apiapibigpondfiles": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "https://s3.amazonaws.com/amplify-bigpond-dev-123209-deployment/amplify-cfn-templates/api/apibigpondfiles-cloudformation-template.json",
        "Parameters": {
          "functiongeneratefileName": {
            "Fn::GetAtt": [
              "functiongeneratefile",
              "Outputs.Name"
            ]
          },
          "functiongeneratefileArn": {
            "Fn::GetAtt": [
              "functiongeneratefile",
              "Outputs.Arn"
            ]
          },
          "functionZipObjectsName": {
            "Fn::GetAtt": [
              "functionZipObjects",
              "Outputs.Name"
            ]
          },
          "functionZipObjectsArn": {
            "Fn::GetAtt": [
              "functionZipObjects",
              "Outputs.Arn"
            ]
          },
          "functiondeleteSessionUploadsName": {
            "Fn::GetAtt": [
              "functiondeleteSessionUploads",
              "Outputs.Name"
            ]
          },
          "functiondeleteSessionUploadsArn": {
            "Fn::GetAtt": [
              "functiondeleteSessionUploads",
              "Outputs.Arn"
            ]
          },
          "env": "dev"
        }
      }
    },
    "functionXeroExpress": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "https://s3.amazonaws.com/amplify-bigpond-dev-123209-deployment/amplify-cfn-templates/function/XeroExpress-cloudformation-template.json",
        "Parameters": {
          "deploymentBucketName": "amplify-bigpond-dev-123209-deployment",
          "s3Key": "amplify-builds/XeroExpress-4a50384f647655455431-build.zip",
          "env": "dev"
        }
      }
    },
    "functionbigpondCustomMessage": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "https://s3.amazonaws.com/amplify-bigpond-dev-123209-deployment/amplify-cfn-templates/function/bigpondCustomMessage-cloudformation-template.json",
        "Parameters": {
          "modules": "verification-link",
          "resourceName": "bigpondCustomMessage",
          "REDIRECTURL": "",
          "EMAILSUBJECT": "",
          "EMAILMESSAGE": "",
          "deploymentBucketName": "amplify-bigpond-dev-123209-deployment",
          "s3Key": "amplify-builds/bigpondCustomMessage-58632b3756594c766853-build.zip",
          "env": "dev"
        }
      }
    },
    "functionbigpondexpress": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "https://s3.amazonaws.com/amplify-bigpond-dev-123209-deployment/amplify-cfn-templates/function/bigpondexpress-cloudformation-template.json",
        "Parameters": {
          "deploymentBucketName": "amplify-bigpond-dev-123209-deployment",
          "s3Key": "amplify-builds/bigpondexpress-4230672f7a5a48795932-build.zip",
          "functionbigpondCreateConnectionArn": {
            "Fn::GetAtt": [
              "functionbigpondCreateConnection",
              "Outputs.Arn"
            ]
          },
          "env": "dev"
        }
      }
    },
    "functiondeleteSessionUploads": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "https://s3.amazonaws.com/amplify-bigpond-dev-123209-deployment/amplify-cfn-templates/function/deleteSessionUploads-cloudformation-template.json",
        "Parameters": {
          "deploymentBucketName": "amplify-bigpond-dev-123209-deployment",
          "s3Key": "amplify-builds/deleteSessionUploads-34644954473732304630-build.zip",
          "env": "dev"
        }
      }
    },
    "functiongeneratefile": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "https://s3.amazonaws.com/amplify-bigpond-dev-123209-deployment/amplify-cfn-templates/function/generatefile-cloudformation-template.json",
        "Parameters": {
          "deploymentBucketName": "amplify-bigpond-dev-123209-deployment",
          "s3Key": "amplify-builds/generatefile-736f2f504e536e515443-build.zip",
          "functionbigpondCreateConnectionArn": {
            "Fn::GetAtt": [
              "functionbigpondCreateConnection",
              "Outputs.Arn"
            ]
          },
          "env": "dev"
        }
      }
    },
    "functionsendxeroemail": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "https://s3.amazonaws.com/amplify-bigpond-dev-123209-deployment/amplify-cfn-templates/function/sendxeroemail-cloudformation-template.json",
        "Parameters": {
          "deploymentBucketName": "amplify-bigpond-dev-123209-deployment",
          "s3Key": "amplify-builds/sendxeroemail-64705773787955506a65-build.zip",
          "env": "dev"
        }
      }
    },
    "functionupdatetableinvoice": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "https://s3.amazonaws.com/amplify-bigpond-dev-123209-deployment/amplify-cfn-templates/function/updatetableinvoice-cloudformation-template.json",
        "Parameters": {
          "deploymentBucketName": "amplify-bigpond-dev-123209-deployment",
          "s3Key": "amplify-builds/updatetableinvoice-2f4b2f306c462b4d3146-build.zip",
          "env": "dev"
        }
      }
    },
    "functionxerorefresh": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "https://s3.amazonaws.com/amplify-bigpond-dev-123209-deployment/amplify-cfn-templates/function/xerorefresh-cloudformation-template.json",
        "Parameters": {
          "deploymentBucketName": "amplify-bigpond-dev-123209-deployment",
          "s3Key": "amplify-builds/xerorefresh-56596577744c34745676-build.zip",
          "env": "dev"
        }
      }
    },
    "functionxerotenants": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "https://s3.amazonaws.com/amplify-bigpond-dev-123209-deployment/amplify-cfn-templates/function/xerotenants-cloudformation-template.json",
        "Parameters": {
          "deploymentBucketName": "amplify-bigpond-dev-123209-deployment",
          "s3Key": "amplify-builds/xerotenants-437a696d633063394530-build.zip",
          "env": "dev"
        }
      }
    },
    "functionxerotoken": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "https://s3.amazonaws.com/amplify-bigpond-dev-123209-deployment/amplify-cfn-templates/function/xerotoken-cloudformation-template.json",
        "Parameters": {
          "deploymentBucketName": "amplify-bigpond-dev-123209-deployment",
          "s3Key": "amplify-builds/xerotoken-584c2f55437947307732-build.zip",
          "env": "dev"
        }
      }
    },
    "functionZipObjects": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "https://s3.amazonaws.com/amplify-bigpond-dev-123209-deployment/amplify-cfn-templates/function/ZipObjects-cloudformation-template.json",
        "Parameters": {
          "deploymentBucketName": "amplify-bigpond-dev-123209-deployment",
          "s3Key": "amplify-builds/ZipObjects-774b704f513847343141-build.zip",
          "functionbigpondCreateConnectionArn": {
            "Fn::GetAtt": [
              "functionbigpondCreateConnection",
              "Outputs.Arn"
            ]
          },
          "env": "dev"
        }
      }
    },
    "functionfrontendLogs": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "https://s3.amazonaws.com/amplify-bigpond-dev-123209-deployment/amplify-cfn-templates/function/frontendLogs-cloudformation-template.json",
        "Parameters": {
          "deploymentBucketName": "amplify-bigpond-dev-123209-deployment",
          "s3Key": "amplify-builds/frontendLogs-68487452756546554a43-build.zip",
          "env": "dev"
        }
      }
    },
    "functionbigpondCreateConnection": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "https://s3.amazonaws.com/amplify-bigpond-dev-123209-deployment/amplify-cfn-templates/function/bigpondCreateConnection-awscloudformation-template.json",
        "Parameters": {
          "runtimes": "nodejs16.x",
          "description": "Updated layer version 2025-01-06T22:18:34.150Z",
          "deploymentBucketName": "amplify-bigpond-dev-123209-deployment",
          "s3Key": "amplify-builds/bigpondCreateConnection-LambdaLayerVersion33f38349-build.zip",
          "env": "dev"
        }
      }
    },
    "storagebigpondpuloads": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "https://s3.amazonaws.com/amplify-bigpond-dev-123209-deployment/amplify-cfn-templates/storage/cloudformation-template.json",
        "Parameters": {
          "bucketName": "big-pond-uploads-bucket",
          "selectedGuestPermissions": "",
          "selectedAuthenticatedPermissions": "s3:PutObject,s3:GetObject,s3:ListBucket,s3:DeleteObject",
          "unauthRoleName": "Cognito_bigpond_idpUnauth_Role",
          "authRoleName": "Cognito_bigpond_idpAuth_Role",
          "s3PrivatePolicy": "Private_policy_514380b0",
          "s3ProtectedPolicy": "Protected_policy_514380b0",
          "s3PublicPolicy": "Public_policy_514380b0",
          "s3ReadPolicy": "read_policy_514380b0",
          "s3UploadsPolicy": "Uploads_policy_514380b0",
          "authPolicyName": "s3_amplify_514380b0",
          "unauthPolicyName": "s3_amplify_514380b0",
          "AuthenticatedAllowList": "ALLOW",
          "GuestAllowList": "DISALLOW",
          "s3PermissionsAuthenticatedPrivate": "s3:PutObject,s3:GetObject,s3:DeleteObject",
          "s3PermissionsAuthenticatedProtected": "s3:PutObject,s3:GetObject,s3:DeleteObject",
          "s3PermissionsAuthenticatedPublic": "s3:PutObject,s3:GetObject,s3:DeleteObject",
          "s3PermissionsAuthenticatedUploads": "s3:PutObject",
          "s3PermissionsGuestPublic": "DISALLOW",
          "s3PermissionsGuestUploads": "DISALLOW",
          "env": "dev"
        }
      }
    }
  }
}