{
  "Description": "An auto-generated nested stack for the @function directive.",
  "AWSTemplateFormatVersion": "2010-09-09",
  "Conditions": {
    "HasEnvironmentParameter": {
      "Fn::Not": [
        {
          "Fn::Equals": [
            {
              "Ref": "referencetotransformerrootstackenv10C5A902Ref"
            },
            "NONE"
          ]
        }
      ]
    }
  },
  "Resources": {
    "VideoServiceLambdaDataSourceServiceRoleB08DF62D": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "appsync.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        }
      }
    },
    "VideoServiceLambdaDataSourceServiceRoleDefaultPolicyDD65A8E1": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "lambda:InvokeFunction",
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::If": [
                    "HasEnvironmentParameter",
                    {
                      "Fn::Sub": [
                        "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:videoService-${env}",
                        {
                          "env": {
                            "Ref": "referencetotransformerrootstackenv10C5A902Ref"
                          }
                        }
                      ]
                    },
                    {
                      "Fn::Sub": "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:videoService"
                    }
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::If": [
                          "HasEnvironmentParameter",
                          {
                            "Fn::Sub": [
                              "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:videoService-${env}",
                              {
                                "env": {
                                  "Ref": "referencetotransformerrootstackenv10C5A902Ref"
                                }
                              }
                            ]
                          },
                          {
                            "Fn::Sub": "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:videoService"
                          }
                        ]
                      },
                      ":*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "VideoServiceLambdaDataSourceServiceRoleDefaultPolicyDD65A8E1",
        "Roles": [
          {
            "Ref": "VideoServiceLambdaDataSourceServiceRoleB08DF62D"
          }
        ]
      }
    },
    "VideoServiceLambdaDataSource": {
      "Type": "AWS::AppSync::DataSource",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "Name": "VideoServiceLambdaDataSource",
        "Type": "AWS_LAMBDA",
        "LambdaConfig": {
          "LambdaFunctionArn": {
            "Fn::If": [
              "HasEnvironmentParameter",
              {
                "Fn::Sub": [
                  "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:videoService-${env}",
                  {
                    "env": {
                      "Ref": "referencetotransformerrootstackenv10C5A902Ref"
                    }
                  }
                ]
              },
              {
                "Fn::Sub": "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:videoService"
              }
            ]
          }
        },
        "ServiceRoleArn": {
          "Fn::GetAtt": [
            "VideoServiceLambdaDataSourceServiceRoleB08DF62D",
            "Arn"
          ]
        }
      }
    },
    "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA": {
      "Type": "AWS::AppSync::FunctionConfiguration",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "DataSourceName": {
          "Fn::GetAtt": [
            "VideoServiceLambdaDataSource",
            "Name"
          ]
        },
        "Name": "InvokeVideoServiceLambdaDataSource",
        "FunctionVersion": "2018-05-29",
        "RequestMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/InvokeVideoServiceLambdaDataSource.req.vtl"
            ]
          ]
        },
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/InvokeVideoServiceLambdaDataSource.res.vtl"
            ]
          ]
        }
      },
      "DependsOn": [
        "VideoServiceLambdaDataSource"
      ]
    },
    "MutationcreateLiveStreamVideoThenSubcribeResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "createLiveStreamVideoThenSubcribe",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"createLiveStreamVideoThenSubcribe\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.createLiveStreamVideoThenSubcribe.res.vtl"
            ]
          ]
        }
      }
    },
    "ChannelPoolServiceLambdaDataSourceServiceRole0077C526": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "appsync.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        }
      }
    },
    "ChannelPoolServiceLambdaDataSourceServiceRoleDefaultPolicy841B554D": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "lambda:InvokeFunction",
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::If": [
                    "HasEnvironmentParameter",
                    {
                      "Fn::Sub": [
                        "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:channelPoolService-${env}",
                        {
                          "env": {
                            "Ref": "referencetotransformerrootstackenv10C5A902Ref"
                          }
                        }
                      ]
                    },
                    {
                      "Fn::Sub": "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:channelPoolService"
                    }
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::If": [
                          "HasEnvironmentParameter",
                          {
                            "Fn::Sub": [
                              "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:channelPoolService-${env}",
                              {
                                "env": {
                                  "Ref": "referencetotransformerrootstackenv10C5A902Ref"
                                }
                              }
                            ]
                          },
                          {
                            "Fn::Sub": "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:channelPoolService"
                          }
                        ]
                      },
                      ":*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "ChannelPoolServiceLambdaDataSourceServiceRoleDefaultPolicy841B554D",
        "Roles": [
          {
            "Ref": "ChannelPoolServiceLambdaDataSourceServiceRole0077C526"
          }
        ]
      }
    },
    "ChannelPoolServiceLambdaDataSource": {
      "Type": "AWS::AppSync::DataSource",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "Name": "ChannelPoolServiceLambdaDataSource",
        "Type": "AWS_LAMBDA",
        "LambdaConfig": {
          "LambdaFunctionArn": {
            "Fn::If": [
              "HasEnvironmentParameter",
              {
                "Fn::Sub": [
                  "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:channelPoolService-${env}",
                  {
                    "env": {
                      "Ref": "referencetotransformerrootstackenv10C5A902Ref"
                    }
                  }
                ]
              },
              {
                "Fn::Sub": "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:channelPoolService"
              }
            ]
          }
        },
        "ServiceRoleArn": {
          "Fn::GetAtt": [
            "ChannelPoolServiceLambdaDataSourceServiceRole0077C526",
            "Arn"
          ]
        }
      }
    },
    "InvokeChannelPoolServiceLambdaDataSourceInvokeChannelPoolServiceLambdaDataSourceAppSyncFunction31875734": {
      "Type": "AWS::AppSync::FunctionConfiguration",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "DataSourceName": {
          "Fn::GetAtt": [
            "ChannelPoolServiceLambdaDataSource",
            "Name"
          ]
        },
        "Name": "InvokeChannelPoolServiceLambdaDataSource",
        "FunctionVersion": "2018-05-29",
        "RequestMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/InvokeChannelPoolServiceLambdaDataSource.req.vtl"
            ]
          ]
        },
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/InvokeChannelPoolServiceLambdaDataSource.res.vtl"
            ]
          ]
        }
      },
      "DependsOn": [
        "ChannelPoolServiceLambdaDataSource"
      ]
    },
    "MutationchannelPoolServiceGetIdleChannelResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "channelPoolServiceGetIdleChannel",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeChannelPoolServiceLambdaDataSourceInvokeChannelPoolServiceLambdaDataSourceAppSyncFunction31875734",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"channelPoolServiceGetIdleChannel\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.channelPoolServiceGetIdleChannel.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationstartLiveStreamVideoResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "startLiveStreamVideo",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeChannelPoolServiceLambdaDataSourceInvokeChannelPoolServiceLambdaDataSourceAppSyncFunction31875734",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"startLiveStreamVideo\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.startLiveStreamVideo.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationstopLiveStreamVideoResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "stopLiveStreamVideo",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeChannelPoolServiceLambdaDataSourceInvokeChannelPoolServiceLambdaDataSourceAppSyncFunction31875734",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"stopLiveStreamVideo\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.stopLiveStreamVideo.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationkeepChannelAliveResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "keepChannelAlive",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeChannelPoolServiceLambdaDataSourceInvokeChannelPoolServiceLambdaDataSourceAppSyncFunction31875734",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"keepChannelAlive\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.keepChannelAlive.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationchannelPoolScheduledHouseKeeperResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "channelPoolScheduledHouseKeeper",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeChannelPoolServiceLambdaDataSourceInvokeChannelPoolServiceLambdaDataSourceAppSyncFunction31875734",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"channelPoolScheduledHouseKeeper\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.channelPoolScheduledHouseKeeper.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationupdateAWSChannelPoolStatusResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "updateAWSChannelPoolStatus",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeChannelPoolServiceLambdaDataSourceInvokeChannelPoolServiceLambdaDataSourceAppSyncFunction31875734",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"updateAWSChannelPoolStatus\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.updateAWSChannelPoolStatus.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationwatchLiveStreamResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "watchLiveStream",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"watchLiveStream\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.watchLiveStream.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationleaveLiveStreamResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "leaveLiveStream",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"leaveLiveStream\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.leaveLiveStream.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationviewCountUpdateResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "viewCountUpdate",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"viewCountUpdate\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.viewCountUpdate.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationkeepWatchingLiveStreamResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "keepWatchingLiveStream",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"keepWatchingLiveStream\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.keepWatchingLiveStream.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationinvokeViewCountResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "invokeViewCount",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"invokeViewCount\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.invokeViewCount.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationgetShareVideoUrlResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "getShareVideoUrl",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"getShareVideoUrl\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.getShareVideoUrl.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationcreateVideoLibraryResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "createVideoLibrary",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"createVideoLibrary\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.createVideoLibrary.res.vtl"
            ]
          ]
        }
      }
    },
    "VideoConvertServiceLambdaDataSourceServiceRole1EA89EB2": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "appsync.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        }
      }
    },
    "VideoConvertServiceLambdaDataSourceServiceRoleDefaultPolicy864DDA99": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "lambda:InvokeFunction",
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::If": [
                    "HasEnvironmentParameter",
                    {
                      "Fn::Sub": [
                        "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:videoConvertService-${env}",
                        {
                          "env": {
                            "Ref": "referencetotransformerrootstackenv10C5A902Ref"
                          }
                        }
                      ]
                    },
                    {
                      "Fn::Sub": "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:videoConvertService"
                    }
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::If": [
                          "HasEnvironmentParameter",
                          {
                            "Fn::Sub": [
                              "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:videoConvertService-${env}",
                              {
                                "env": {
                                  "Ref": "referencetotransformerrootstackenv10C5A902Ref"
                                }
                              }
                            ]
                          },
                          {
                            "Fn::Sub": "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:videoConvertService"
                          }
                        ]
                      },
                      ":*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "VideoConvertServiceLambdaDataSourceServiceRoleDefaultPolicy864DDA99",
        "Roles": [
          {
            "Ref": "VideoConvertServiceLambdaDataSourceServiceRole1EA89EB2"
          }
        ]
      }
    },
    "VideoConvertServiceLambdaDataSource": {
      "Type": "AWS::AppSync::DataSource",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "Name": "VideoConvertServiceLambdaDataSource",
        "Type": "AWS_LAMBDA",
        "LambdaConfig": {
          "LambdaFunctionArn": {
            "Fn::If": [
              "HasEnvironmentParameter",
              {
                "Fn::Sub": [
                  "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:videoConvertService-${env}",
                  {
                    "env": {
                      "Ref": "referencetotransformerrootstackenv10C5A902Ref"
                    }
                  }
                ]
              },
              {
                "Fn::Sub": "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:videoConvertService"
              }
            ]
          }
        },
        "ServiceRoleArn": {
          "Fn::GetAtt": [
            "VideoConvertServiceLambdaDataSourceServiceRole1EA89EB2",
            "Arn"
          ]
        }
      }
    },
    "InvokeVideoConvertServiceLambdaDataSourceInvokeVideoConvertServiceLambdaDataSourceAppSyncFunctionBE34C7AD": {
      "Type": "AWS::AppSync::FunctionConfiguration",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "DataSourceName": {
          "Fn::GetAtt": [
            "VideoConvertServiceLambdaDataSource",
            "Name"
          ]
        },
        "Name": "InvokeVideoConvertServiceLambdaDataSource",
        "FunctionVersion": "2018-05-29",
        "RequestMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/InvokeVideoConvertServiceLambdaDataSource.req.vtl"
            ]
          ]
        },
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/InvokeVideoConvertServiceLambdaDataSource.res.vtl"
            ]
          ]
        }
      },
      "DependsOn": [
        "VideoConvertServiceLambdaDataSource"
      ]
    },
    "MutationconvertVideoJobResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "convertVideoJob",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoConvertServiceLambdaDataSourceInvokeVideoConvertServiceLambdaDataSourceAppSyncFunctionBE34C7AD",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"convertVideoJob\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.convertVideoJob.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationcreateScheduleLiveStreamResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "createScheduleLiveStream",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"createScheduleLiveStream\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.createScheduleLiveStream.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationupdateScheduleLiveStreamResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "updateScheduleLiveStream",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"updateScheduleLiveStream\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.updateScheduleLiveStream.res.vtl"
            ]
          ]
        }
      }
    },
    "PutChannelLambdaDataSourceServiceRole96195258": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "appsync.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        }
      }
    },
    "PutChannelLambdaDataSourceServiceRoleDefaultPolicy7A203B87": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "lambda:InvokeFunction",
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::If": [
                    "HasEnvironmentParameter",
                    {
                      "Fn::Sub": [
                        "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:putChannel-${env}",
                        {
                          "env": {
                            "Ref": "referencetotransformerrootstackenv10C5A902Ref"
                          }
                        }
                      ]
                    },
                    {
                      "Fn::Sub": "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:putChannel"
                    }
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::If": [
                          "HasEnvironmentParameter",
                          {
                            "Fn::Sub": [
                              "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:putChannel-${env}",
                              {
                                "env": {
                                  "Ref": "referencetotransformerrootstackenv10C5A902Ref"
                                }
                              }
                            ]
                          },
                          {
                            "Fn::Sub": "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:putChannel"
                          }
                        ]
                      },
                      ":*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "PutChannelLambdaDataSourceServiceRoleDefaultPolicy7A203B87",
        "Roles": [
          {
            "Ref": "PutChannelLambdaDataSourceServiceRole96195258"
          }
        ]
      }
    },
    "PutChannelLambdaDataSource": {
      "Type": "AWS::AppSync::DataSource",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "Name": "PutChannelLambdaDataSource",
        "Type": "AWS_LAMBDA",
        "LambdaConfig": {
          "LambdaFunctionArn": {
            "Fn::If": [
              "HasEnvironmentParameter",
              {
                "Fn::Sub": [
                  "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:putChannel-${env}",
                  {
                    "env": {
                      "Ref": "referencetotransformerrootstackenv10C5A902Ref"
                    }
                  }
                ]
              },
              {
                "Fn::Sub": "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:putChannel"
              }
            ]
          }
        },
        "ServiceRoleArn": {
          "Fn::GetAtt": [
            "PutChannelLambdaDataSourceServiceRole96195258",
            "Arn"
          ]
        }
      }
    },
    "InvokePutChannelLambdaDataSourceInvokePutChannelLambdaDataSourceAppSyncFunction8595CFAF": {
      "Type": "AWS::AppSync::FunctionConfiguration",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "DataSourceName": {
          "Fn::GetAtt": [
            "PutChannelLambdaDataSource",
            "Name"
          ]
        },
        "Name": "InvokePutChannelLambdaDataSource",
        "FunctionVersion": "2018-05-29",
        "RequestMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/InvokePutChannelLambdaDataSource.req.vtl"
            ]
          ]
        },
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/InvokePutChannelLambdaDataSource.res.vtl"
            ]
          ]
        }
      },
      "DependsOn": [
        "PutChannelLambdaDataSource"
      ]
    },
    "MutationassignUserBetaProgramResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "assignUserBetaProgram",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokePutChannelLambdaDataSourceInvokePutChannelLambdaDataSourceAppSyncFunction8595CFAF",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"assignUserBetaProgram\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.assignUserBetaProgram.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationcustomerioGetUserByEmailResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "customerioGetUserByEmail",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokePutChannelLambdaDataSourceInvokePutChannelLambdaDataSourceAppSyncFunction8595CFAF",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"customerioGetUserByEmail\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.customerioGetUserByEmail.res.vtl"
            ]
          ]
        }
      }
    },
    "Mutations3UploadProfileGetPresignedURLResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "s3UploadProfileGetPresignedURL",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokePutChannelLambdaDataSourceInvokePutChannelLambdaDataSourceAppSyncFunction8595CFAF",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"s3UploadProfileGetPresignedURL\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.s3UploadProfileGetPresignedURL.res.vtl"
            ]
          ]
        }
      }
    },
    "Mutations3UploadImageResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "s3UploadImage",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokePutChannelLambdaDataSourceInvokePutChannelLambdaDataSourceAppSyncFunction8595CFAF",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"s3UploadImage\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.s3UploadImage.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationuserUpdateProfilePictureResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "userUpdateProfilePicture",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokePutChannelLambdaDataSourceInvokePutChannelLambdaDataSourceAppSyncFunction8595CFAF",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"userUpdateProfilePicture\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.userUpdateProfilePicture.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationlikeVideoResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "likeVideo",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"likeVideo\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.likeVideo.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationunlikeVideoResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "unlikeVideo",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"unlikeVideo\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.unlikeVideo.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationlikeStatusResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "likeStatus",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"likeStatus\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.likeStatus.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationfollowResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "follow",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"follow\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.follow.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationunfollowResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "unfollow",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"unfollow\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.unfollow.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationfollowStatusResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "followStatus",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"followStatus\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.followStatus.res.vtl"
            ]
          ]
        }
      }
    },
    "MutationupdateLiveStreamVideoResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "updateLiveStreamVideo",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "InvokeVideoServiceLambdaDataSourceInvokeVideoServiceLambdaDataSourceAppSyncFunctionD7C633EA",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": "## [Start] Stash resolver specific context.. **\n$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"updateLiveStreamVideo\"))\n{}\n## [End] Stash resolver specific context.. **",
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.updateLiveStreamVideo.res.vtl"
            ]
          ]
        }
      }
    }
  },
  "Parameters": {
    "referencetotransformerrootstackenv10C5A902Ref": {
      "Type": "String"
    },
    "referencetotransformerrootstackGraphQLAPI20497F53ApiId": {
      "Type": "String"
    },
    "referencetotransformerrootstackS3DeploymentBucket7592718ARef": {
      "Type": "String"
    },
    "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref": {
      "Type": "String"
    }
  }
}