{
  "Parameters": {
    "DynamoDBModelTableReadIOPS": {
      "Type": "Number",
      "Default": 5,
      "Description": "The number of read IOPS the table should support."
    },
    "DynamoDBModelTableWriteIOPS": {
      "Type": "Number",
      "Default": 5,
      "Description": "The number of write IOPS the table should support."
    },
    "DynamoDBBillingMode": {
      "Type": "String",
      "Default": "PAY_PER_REQUEST",
      "AllowedValues": [
        "PAY_PER_REQUEST",
        "PROVISIONED"
      ],
      "Description": "Configure @model types to create DynamoDB tables with PAY_PER_REQUEST or PROVISIONED billing modes."
    },
    "DynamoDBEnablePointInTimeRecovery": {
      "Type": "String",
      "Default": "false",
      "AllowedValues": [
        "true",
        "false"
      ],
      "Description": "Whether to enable Point in Time Recovery on the table."
    },
    "DynamoDBEnableServerSideEncryption": {
      "Type": "String",
      "Default": "true",
      "AllowedValues": [
        "true",
        "false"
      ],
      "Description": "Enable server side encryption powered by KMS."
    },
    "referencetotransformerrootstackenv10C5A902Ref": {
      "Type": "String"
    },
    "referencetotransformerrootstackGraphQLAPI20497F53ApiId": {
      "Type": "String"
    },
    "referencetotransformerrootstackS3DeploymentBucket7592718ARef": {
      "Type": "String"
    },
    "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref": {
      "Type": "String"
    },
    "referencetotransformerrootstackFollowNestedStackFollowNestedStackResource6C78E3E6OutputstransformerrootstackFollowQuerygetFollowauth0FunctionQuerygetFollowauth0FunctionAppSyncFunction4D0BAD6FFunctionId": {
      "Type": "String"
    },
    "referencetotransformerrootstackUserNestedStackUserNestedStackResource01084C14OutputstransformerrootstackUserQuerygetUserpostAuth0FunctionQuerygetUserpostAuth0FunctionAppSyncFunction083DF5E5FunctionId": {
      "Type": "String"
    },
    "referencetotransformerrootstackUserNestedStackUserNestedStackResource01084C14OutputstransformerrootstackUserMutationcreateUserinit0FunctionMutationcreateUserinit0FunctionAppSyncFunction5CF77F6AFunctionId": {
      "Type": "String"
    },
    "referencetotransformerrootstackFollowNestedStackFollowNestedStackResource6C78E3E6OutputstransformerrootstackFollowMutationcreateFollowauth0FunctionMutationcreateFollowauth0FunctionAppSyncFunctionF9F07A49FunctionId": {
      "Type": "String"
    },
    "referencetotransformerrootstackUserNestedStackUserNestedStackResource01084C14OutputstransformerrootstackUserMutationupdateUserinit0FunctionMutationupdateUserinit0FunctionAppSyncFunction90E2C98AFunctionId": {
      "Type": "String"
    },
    "referencetotransformerrootstackFollowNestedStackFollowNestedStackResource6C78E3E6OutputstransformerrootstackFollowSubscriptiononCreateFollowauth0FunctionSubscriptiononCreateFollowauth0FunctionAppSyncFunction54BF6B84FunctionId": {
      "Type": "String"
    },
    "referencetotransformerrootstackUserNestedStackUserNestedStackResource01084C14OutputstransformerrootstackUserSubscriptionOnCreateUserDataResolverFnSubscriptionOnCreateUserDataResolverFnAppSyncFunctionCAFEE24EFunctionId": {
      "Type": "String"
    }
  },
  "Conditions": {
    "HasEnvironmentParameter": {
      "Fn::Not": [
        {
          "Fn::Equals": [
            {
              "Ref": "referencetotransformerrootstackenv10C5A902Ref"
            },
            "NONE"
          ]
        }
      ]
    },
    "ShouldUseServerSideEncryption": {
      "Fn::Equals": [
        {
          "Ref": "DynamoDBEnableServerSideEncryption"
        },
        "true"
      ]
    },
    "ShouldUsePayPerRequestBilling": {
      "Fn::Equals": [
        {
          "Ref": "DynamoDBBillingMode"
        },
        "PAY_PER_REQUEST"
      ]
    },
    "ShouldUsePointInTimeRecovery": {
      "Fn::Equals": [
        {
          "Ref": "DynamoDBEnablePointInTimeRecovery"
        },
        "true"
      ]
    }
  },
  "Resources": {
    "ScheduleTable": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "KeySchema": [
          {
            "AttributeName": "id",
            "KeyType": "HASH"
          }
        ],
        "AttributeDefinitions": [
          {
            "AttributeName": "id",
            "AttributeType": "S"
          },
          {
            "AttributeName": "userSchedulesId",
            "AttributeType": "S"
          },
          {
            "AttributeName": "channelSchedulesId",
            "AttributeType": "S"
          },
          {
            "AttributeName": "videoSchedulesId",
            "AttributeType": "S"
          }
        ],
        "BillingMode": {
          "Fn::If": [
            "ShouldUsePayPerRequestBilling",
            "PAY_PER_REQUEST",
            {
              "Ref": "AWS::NoValue"
            }
          ]
        },
        "GlobalSecondaryIndexes": [
          {
            "IndexName": "gsi-User.schedules",
            "KeySchema": [
              {
                "AttributeName": "userSchedulesId",
                "KeyType": "HASH"
              }
            ],
            "Projection": {
              "ProjectionType": "ALL"
            },
            "ProvisionedThroughput": {
              "Fn::If": [
                "ShouldUsePayPerRequestBilling",
                {
                  "Ref": "AWS::NoValue"
                },
                {
                  "ReadCapacityUnits": {
                    "Ref": "DynamoDBModelTableReadIOPS"
                  },
                  "WriteCapacityUnits": {
                    "Ref": "DynamoDBModelTableWriteIOPS"
                  }
                }
              ]
            }
          },
          {
            "IndexName": "gsi-Channel.schedules",
            "KeySchema": [
              {
                "AttributeName": "channelSchedulesId",
                "KeyType": "HASH"
              }
            ],
            "Projection": {
              "ProjectionType": "ALL"
            },
            "ProvisionedThroughput": {
              "Fn::If": [
                "ShouldUsePayPerRequestBilling",
                {
                  "Ref": "AWS::NoValue"
                },
                {
                  "ReadCapacityUnits": {
                    "Ref": "DynamoDBModelTableReadIOPS"
                  },
                  "WriteCapacityUnits": {
                    "Ref": "DynamoDBModelTableWriteIOPS"
                  }
                }
              ]
            }
          },
          {
            "IndexName": "gsi-Video.schedules",
            "KeySchema": [
              {
                "AttributeName": "videoSchedulesId",
                "KeyType": "HASH"
              }
            ],
            "Projection": {
              "ProjectionType": "ALL"
            },
            "ProvisionedThroughput": {
              "Fn::If": [
                "ShouldUsePayPerRequestBilling",
                {
                  "Ref": "AWS::NoValue"
                },
                {
                  "ReadCapacityUnits": {
                    "Ref": "DynamoDBModelTableReadIOPS"
                  },
                  "WriteCapacityUnits": {
                    "Ref": "DynamoDBModelTableWriteIOPS"
                  }
                }
              ]
            }
          }
        ],
        "PointInTimeRecoverySpecification": {
          "Fn::If": [
            "ShouldUsePointInTimeRecovery",
            {
              "PointInTimeRecoveryEnabled": true
            },
            {
              "Ref": "AWS::NoValue"
            }
          ]
        },
        "ProvisionedThroughput": {
          "Fn::If": [
            "ShouldUsePayPerRequestBilling",
            {
              "Ref": "AWS::NoValue"
            },
            {
              "ReadCapacityUnits": {
                "Ref": "DynamoDBModelTableReadIOPS"
              },
              "WriteCapacityUnits": {
                "Ref": "DynamoDBModelTableWriteIOPS"
              }
            }
          ]
        },
        "SSESpecification": {
          "SSEEnabled": {
            "Fn::If": [
              "ShouldUseServerSideEncryption",
              true,
              false
            ]
          }
        },
        "StreamSpecification": {
          "StreamViewType": "NEW_AND_OLD_IMAGES"
        },
        "TableName": {
          "Fn::Join": [
            "",
            [
              "Schedule-",
              {
                "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
              },
              "-",
              {
                "Ref": "referencetotransformerrootstackenv10C5A902Ref"
              }
            ]
          ]
        }
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "ScheduleIAMRole8815045B": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "appsync.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "RoleName": {
          "Fn::Join": [
            "",
            [
              "ScheduleIAMRole58bed3-",
              {
                "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
              },
              "-",
              {
                "Ref": "referencetotransformerrootstackenv10C5A902Ref"
              }
            ]
          ]
        }
      }
    },
    "ScheduleIAMRoleDefaultPolicy159FE44B": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:Query",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:ConditionCheckItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:DescribeTable"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "ScheduleTable",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "ScheduleTable",
                          "Arn"
                        ]
                      },
                      "/index/*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "ScheduleIAMRoleDefaultPolicy159FE44B",
        "Roles": [
          {
            "Ref": "ScheduleIAMRole8815045B"
          }
        ]
      }
    },
    "DynamoDBAccess71ABE5AE": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:PutItem",
                "dynamodb:DeleteItem",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:UpdateItem"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::Sub": [
                    "arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${tablename}",
                    {
                      "tablename": {
                        "Fn::Join": [
                          "",
                          [
                            "Schedule-",
                            {
                              "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
                            },
                            "-",
                            {
                              "Ref": "referencetotransformerrootstackenv10C5A902Ref"
                            }
                          ]
                        ]
                      }
                    }
                  ]
                },
                {
                  "Fn::Sub": [
                    "arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${tablename}/*",
                    {
                      "tablename": {
                        "Fn::Join": [
                          "",
                          [
                            "Schedule-",
                            {
                              "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
                            },
                            "-",
                            {
                              "Ref": "referencetotransformerrootstackenv10C5A902Ref"
                            }
                          ]
                        ]
                      }
                    }
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "DynamoDBAccess71ABE5AE",
        "Roles": [
          {
            "Ref": "ScheduleIAMRole8815045B"
          }
        ]
      }
    },
    "ScheduleDataSource": {
      "Type": "AWS::AppSync::DataSource",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "Name": "ScheduleTable",
        "Type": "AMAZON_DYNAMODB",
        "DynamoDBConfig": {
          "AwsRegion": {
            "Ref": "AWS::Region"
          },
          "TableName": {
            "Ref": "ScheduleTable"
          }
        },
        "ServiceRoleArn": {
          "Fn::GetAtt": [
            "ScheduleIAMRole8815045B",
            "Arn"
          ]
        }
      },
      "DependsOn": [
        "ScheduleIAMRole8815045B"
      ]
    },
    "QueryGetScheduleDataResolverFnQueryGetScheduleDataResolverFnAppSyncFunctionBF969319": {
      "Type": "AWS::AppSync::FunctionConfiguration",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "DataSourceName": {
          "Fn::GetAtt": [
            "ScheduleDataSource",
            "Name"
          ]
        },
        "Name": "QueryGetScheduleDataResolverFn",
        "FunctionVersion": "2018-05-29",
        "RequestMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Query.getSchedule.req.vtl"
            ]
          ]
        },
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Query.getSchedule.res.vtl"
            ]
          ]
        }
      },
      "DependsOn": [
        "ScheduleDataSource"
      ]
    },
    "GetScheduleResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "getSchedule",
        "TypeName": "Query",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Ref": "referencetotransformerrootstackFollowNestedStackFollowNestedStackResource6C78E3E6OutputstransformerrootstackFollowQuerygetFollowauth0FunctionQuerygetFollowauth0FunctionAppSyncFunction4D0BAD6FFunctionId"
            },
            {
              "Ref": "referencetotransformerrootstackUserNestedStackUserNestedStackResource01084C14OutputstransformerrootstackUserQuerygetUserpostAuth0FunctionQuerygetUserpostAuth0FunctionAppSyncFunction083DF5E5FunctionId"
            },
            {
              "Fn::GetAtt": [
                "QueryGetScheduleDataResolverFnQueryGetScheduleDataResolverFnAppSyncFunctionBF969319",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": {
          "Fn::Join": [
            "",
            [
              "$util.qr($ctx.stash.put(\"typeName\", \"Query\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"getSchedule\"))\n$util.qr($ctx.stash.put(\"conditions\", []))\n$util.qr($ctx.stash.put(\"metadata\", {}))\n$util.qr($ctx.stash.metadata.put(\"dataSourceType\", \"AMAZON_DYNAMODB\"))\n$util.qr($ctx.stash.metadata.put(\"apiId\", \"",
              {
                "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
              },
              "\"))\n$util.qr($ctx.stash.put(\"tableName\", \"",
              {
                "Ref": "ScheduleTable"
              },
              "\"))\n$util.toJson({})"
            ]
          ]
        },
        "ResponseMappingTemplate": "$util.toJson($ctx.prev.result)"
      }
    },
    "QueryListSchedulesDataResolverFnQueryListSchedulesDataResolverFnAppSyncFunctionE4B07DF5": {
      "Type": "AWS::AppSync::FunctionConfiguration",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "DataSourceName": {
          "Fn::GetAtt": [
            "ScheduleDataSource",
            "Name"
          ]
        },
        "Name": "QueryListSchedulesDataResolverFn",
        "FunctionVersion": "2018-05-29",
        "RequestMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Query.listSchedules.req.vtl"
            ]
          ]
        },
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Query.listSchedules.res.vtl"
            ]
          ]
        }
      },
      "DependsOn": [
        "ScheduleDataSource"
      ]
    },
    "ListScheduleResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "listSchedules",
        "TypeName": "Query",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Ref": "referencetotransformerrootstackFollowNestedStackFollowNestedStackResource6C78E3E6OutputstransformerrootstackFollowQuerygetFollowauth0FunctionQuerygetFollowauth0FunctionAppSyncFunction4D0BAD6FFunctionId"
            },
            {
              "Ref": "referencetotransformerrootstackUserNestedStackUserNestedStackResource01084C14OutputstransformerrootstackUserQuerygetUserpostAuth0FunctionQuerygetUserpostAuth0FunctionAppSyncFunction083DF5E5FunctionId"
            },
            {
              "Fn::GetAtt": [
                "QueryListSchedulesDataResolverFnQueryListSchedulesDataResolverFnAppSyncFunctionE4B07DF5",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": {
          "Fn::Join": [
            "",
            [
              "$util.qr($ctx.stash.put(\"typeName\", \"Query\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"listSchedules\"))\n$util.qr($ctx.stash.put(\"conditions\", []))\n$util.qr($ctx.stash.put(\"metadata\", {}))\n$util.qr($ctx.stash.metadata.put(\"dataSourceType\", \"AMAZON_DYNAMODB\"))\n$util.qr($ctx.stash.metadata.put(\"apiId\", \"",
              {
                "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
              },
              "\"))\n$util.qr($ctx.stash.put(\"tableName\", \"",
              {
                "Ref": "ScheduleTable"
              },
              "\"))\n$util.toJson({})"
            ]
          ]
        },
        "ResponseMappingTemplate": "$util.toJson($ctx.prev.result)"
      }
    },
    "MutationCreateScheduleDataResolverFnMutationCreateScheduleDataResolverFnAppSyncFunction541BA043": {
      "Type": "AWS::AppSync::FunctionConfiguration",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "DataSourceName": {
          "Fn::GetAtt": [
            "ScheduleDataSource",
            "Name"
          ]
        },
        "Name": "MutationCreateScheduleDataResolverFn",
        "FunctionVersion": "2018-05-29",
        "RequestMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.createSchedule.req.vtl"
            ]
          ]
        },
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.createSchedule.res.vtl"
            ]
          ]
        }
      },
      "DependsOn": [
        "ScheduleDataSource"
      ]
    },
    "CreateScheduleResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "createSchedule",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Ref": "referencetotransformerrootstackUserNestedStackUserNestedStackResource01084C14OutputstransformerrootstackUserMutationcreateUserinit0FunctionMutationcreateUserinit0FunctionAppSyncFunction5CF77F6AFunctionId"
            },
            {
              "Ref": "referencetotransformerrootstackFollowNestedStackFollowNestedStackResource6C78E3E6OutputstransformerrootstackFollowMutationcreateFollowauth0FunctionMutationcreateFollowauth0FunctionAppSyncFunctionF9F07A49FunctionId"
            },
            {
              "Ref": "referencetotransformerrootstackUserNestedStackUserNestedStackResource01084C14OutputstransformerrootstackUserQuerygetUserpostAuth0FunctionQuerygetUserpostAuth0FunctionAppSyncFunction083DF5E5FunctionId"
            },
            {
              "Fn::GetAtt": [
                "MutationCreateScheduleDataResolverFnMutationCreateScheduleDataResolverFnAppSyncFunction541BA043",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": {
          "Fn::Join": [
            "",
            [
              "$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"createSchedule\"))\n$util.qr($ctx.stash.put(\"conditions\", []))\n$util.qr($ctx.stash.put(\"metadata\", {}))\n$util.qr($ctx.stash.metadata.put(\"dataSourceType\", \"AMAZON_DYNAMODB\"))\n$util.qr($ctx.stash.metadata.put(\"apiId\", \"",
              {
                "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
              },
              "\"))\n$util.qr($ctx.stash.put(\"tableName\", \"",
              {
                "Ref": "ScheduleTable"
              },
              "\"))\n$util.toJson({})"
            ]
          ]
        },
        "ResponseMappingTemplate": "$util.toJson($ctx.prev.result)"
      }
    },
    "MutationupdateScheduleauth0FunctionMutationupdateScheduleauth0FunctionAppSyncFunction33F6651B": {
      "Type": "AWS::AppSync::FunctionConfiguration",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "DataSourceName": {
          "Fn::GetAtt": [
            "ScheduleDataSource",
            "Name"
          ]
        },
        "Name": "MutationupdateScheduleauth0Function",
        "FunctionVersion": "2018-05-29",
        "RequestMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.updateSchedule.auth.1.req.vtl"
            ]
          ]
        },
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.updateSchedule.auth.1.res.vtl"
            ]
          ]
        }
      },
      "DependsOn": [
        "ScheduleDataSource"
      ]
    },
    "MutationUpdateScheduleDataResolverFnMutationUpdateScheduleDataResolverFnAppSyncFunctionB0AB39DF": {
      "Type": "AWS::AppSync::FunctionConfiguration",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "DataSourceName": {
          "Fn::GetAtt": [
            "ScheduleDataSource",
            "Name"
          ]
        },
        "Name": "MutationUpdateScheduleDataResolverFn",
        "FunctionVersion": "2018-05-29",
        "RequestMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.updateSchedule.req.vtl"
            ]
          ]
        },
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.updateSchedule.res.vtl"
            ]
          ]
        }
      },
      "DependsOn": [
        "ScheduleDataSource"
      ]
    },
    "UpdateScheduleResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "updateSchedule",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Ref": "referencetotransformerrootstackUserNestedStackUserNestedStackResource01084C14OutputstransformerrootstackUserMutationupdateUserinit0FunctionMutationupdateUserinit0FunctionAppSyncFunction90E2C98AFunctionId"
            },
            {
              "Fn::GetAtt": [
                "MutationupdateScheduleauth0FunctionMutationupdateScheduleauth0FunctionAppSyncFunction33F6651B",
                "FunctionId"
              ]
            },
            {
              "Ref": "referencetotransformerrootstackUserNestedStackUserNestedStackResource01084C14OutputstransformerrootstackUserQuerygetUserpostAuth0FunctionQuerygetUserpostAuth0FunctionAppSyncFunction083DF5E5FunctionId"
            },
            {
              "Fn::GetAtt": [
                "MutationUpdateScheduleDataResolverFnMutationUpdateScheduleDataResolverFnAppSyncFunctionB0AB39DF",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": {
          "Fn::Join": [
            "",
            [
              "$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"updateSchedule\"))\n$util.qr($ctx.stash.put(\"conditions\", []))\n$util.qr($ctx.stash.put(\"metadata\", {}))\n$util.qr($ctx.stash.metadata.put(\"dataSourceType\", \"AMAZON_DYNAMODB\"))\n$util.qr($ctx.stash.metadata.put(\"apiId\", \"",
              {
                "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
              },
              "\"))\n$util.qr($ctx.stash.put(\"tableName\", \"",
              {
                "Ref": "ScheduleTable"
              },
              "\"))\n$util.toJson({})"
            ]
          ]
        },
        "ResponseMappingTemplate": "$util.toJson($ctx.prev.result)"
      }
    },
    "MutationdeleteScheduleauth0FunctionMutationdeleteScheduleauth0FunctionAppSyncFunction0D44F2D5": {
      "Type": "AWS::AppSync::FunctionConfiguration",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "DataSourceName": {
          "Fn::GetAtt": [
            "ScheduleDataSource",
            "Name"
          ]
        },
        "Name": "MutationdeleteScheduleauth0Function",
        "FunctionVersion": "2018-05-29",
        "RequestMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.deleteSchedule.auth.1.req.vtl"
            ]
          ]
        },
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.deleteSchedule.auth.1.res.vtl"
            ]
          ]
        }
      },
      "DependsOn": [
        "ScheduleDataSource"
      ]
    },
    "MutationDeleteScheduleDataResolverFnMutationDeleteScheduleDataResolverFnAppSyncFunction55935049": {
      "Type": "AWS::AppSync::FunctionConfiguration",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "DataSourceName": {
          "Fn::GetAtt": [
            "ScheduleDataSource",
            "Name"
          ]
        },
        "Name": "MutationDeleteScheduleDataResolverFn",
        "FunctionVersion": "2018-05-29",
        "RequestMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.deleteSchedule.req.vtl"
            ]
          ]
        },
        "ResponseMappingTemplateS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentBucket7592718ARef"
              },
              "/",
              {
                "Ref": "referencetotransformerrootstackS3DeploymentRootKeyA71EA735Ref"
              },
              "/resolvers/Mutation.deleteSchedule.res.vtl"
            ]
          ]
        }
      },
      "DependsOn": [
        "ScheduleDataSource"
      ]
    },
    "DeleteScheduleResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "deleteSchedule",
        "TypeName": "Mutation",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Fn::GetAtt": [
                "MutationdeleteScheduleauth0FunctionMutationdeleteScheduleauth0FunctionAppSyncFunction0D44F2D5",
                "FunctionId"
              ]
            },
            {
              "Ref": "referencetotransformerrootstackUserNestedStackUserNestedStackResource01084C14OutputstransformerrootstackUserQuerygetUserpostAuth0FunctionQuerygetUserpostAuth0FunctionAppSyncFunction083DF5E5FunctionId"
            },
            {
              "Fn::GetAtt": [
                "MutationDeleteScheduleDataResolverFnMutationDeleteScheduleDataResolverFnAppSyncFunction55935049",
                "FunctionId"
              ]
            }
          ]
        },
        "RequestMappingTemplate": {
          "Fn::Join": [
            "",
            [
              "$util.qr($ctx.stash.put(\"typeName\", \"Mutation\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"deleteSchedule\"))\n$util.qr($ctx.stash.put(\"conditions\", []))\n$util.qr($ctx.stash.put(\"metadata\", {}))\n$util.qr($ctx.stash.metadata.put(\"dataSourceType\", \"AMAZON_DYNAMODB\"))\n$util.qr($ctx.stash.metadata.put(\"apiId\", \"",
              {
                "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
              },
              "\"))\n$util.qr($ctx.stash.put(\"tableName\", \"",
              {
                "Ref": "ScheduleTable"
              },
              "\"))\n$util.toJson({})"
            ]
          ]
        },
        "ResponseMappingTemplate": "$util.toJson($ctx.prev.result)"
      }
    },
    "SubscriptiononCreateScheduleResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "onCreateSchedule",
        "TypeName": "Subscription",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Ref": "referencetotransformerrootstackFollowNestedStackFollowNestedStackResource6C78E3E6OutputstransformerrootstackFollowSubscriptiononCreateFollowauth0FunctionSubscriptiononCreateFollowauth0FunctionAppSyncFunction54BF6B84FunctionId"
            },
            {
              "Ref": "referencetotransformerrootstackUserNestedStackUserNestedStackResource01084C14OutputstransformerrootstackUserQuerygetUserpostAuth0FunctionQuerygetUserpostAuth0FunctionAppSyncFunction083DF5E5FunctionId"
            },
            {
              "Ref": "referencetotransformerrootstackUserNestedStackUserNestedStackResource01084C14OutputstransformerrootstackUserSubscriptionOnCreateUserDataResolverFnSubscriptionOnCreateUserDataResolverFnAppSyncFunctionCAFEE24EFunctionId"
            }
          ]
        },
        "RequestMappingTemplate": {
          "Fn::Join": [
            "",
            [
              "$util.qr($ctx.stash.put(\"typeName\", \"Subscription\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"onCreateSchedule\"))\n$util.qr($ctx.stash.put(\"conditions\", []))\n$util.qr($ctx.stash.put(\"metadata\", {}))\n$util.qr($ctx.stash.metadata.put(\"dataSourceType\", \"NONE\"))\n$util.qr($ctx.stash.metadata.put(\"apiId\", \"",
              {
                "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
              },
              "\"))\n\n$util.toJson({})"
            ]
          ]
        },
        "ResponseMappingTemplate": "$util.toJson($ctx.prev.result)"
      }
    },
    "SubscriptiononUpdateScheduleResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "onUpdateSchedule",
        "TypeName": "Subscription",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Ref": "referencetotransformerrootstackFollowNestedStackFollowNestedStackResource6C78E3E6OutputstransformerrootstackFollowSubscriptiononCreateFollowauth0FunctionSubscriptiononCreateFollowauth0FunctionAppSyncFunction54BF6B84FunctionId"
            },
            {
              "Ref": "referencetotransformerrootstackUserNestedStackUserNestedStackResource01084C14OutputstransformerrootstackUserQuerygetUserpostAuth0FunctionQuerygetUserpostAuth0FunctionAppSyncFunction083DF5E5FunctionId"
            },
            {
              "Ref": "referencetotransformerrootstackUserNestedStackUserNestedStackResource01084C14OutputstransformerrootstackUserSubscriptionOnCreateUserDataResolverFnSubscriptionOnCreateUserDataResolverFnAppSyncFunctionCAFEE24EFunctionId"
            }
          ]
        },
        "RequestMappingTemplate": {
          "Fn::Join": [
            "",
            [
              "$util.qr($ctx.stash.put(\"typeName\", \"Subscription\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"onUpdateSchedule\"))\n$util.qr($ctx.stash.put(\"conditions\", []))\n$util.qr($ctx.stash.put(\"metadata\", {}))\n$util.qr($ctx.stash.metadata.put(\"dataSourceType\", \"NONE\"))\n$util.qr($ctx.stash.metadata.put(\"apiId\", \"",
              {
                "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
              },
              "\"))\n\n$util.toJson({})"
            ]
          ]
        },
        "ResponseMappingTemplate": "$util.toJson($ctx.prev.result)"
      }
    },
    "SubscriptiononDeleteScheduleResolver": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
        },
        "FieldName": "onDeleteSchedule",
        "TypeName": "Subscription",
        "Kind": "PIPELINE",
        "PipelineConfig": {
          "Functions": [
            {
              "Ref": "referencetotransformerrootstackFollowNestedStackFollowNestedStackResource6C78E3E6OutputstransformerrootstackFollowSubscriptiononCreateFollowauth0FunctionSubscriptiononCreateFollowauth0FunctionAppSyncFunction54BF6B84FunctionId"
            },
            {
              "Ref": "referencetotransformerrootstackUserNestedStackUserNestedStackResource01084C14OutputstransformerrootstackUserQuerygetUserpostAuth0FunctionQuerygetUserpostAuth0FunctionAppSyncFunction083DF5E5FunctionId"
            },
            {
              "Ref": "referencetotransformerrootstackUserNestedStackUserNestedStackResource01084C14OutputstransformerrootstackUserSubscriptionOnCreateUserDataResolverFnSubscriptionOnCreateUserDataResolverFnAppSyncFunctionCAFEE24EFunctionId"
            }
          ]
        },
        "RequestMappingTemplate": {
          "Fn::Join": [
            "",
            [
              "$util.qr($ctx.stash.put(\"typeName\", \"Subscription\"))\n$util.qr($ctx.stash.put(\"fieldName\", \"onDeleteSchedule\"))\n$util.qr($ctx.stash.put(\"conditions\", []))\n$util.qr($ctx.stash.put(\"metadata\", {}))\n$util.qr($ctx.stash.metadata.put(\"dataSourceType\", \"NONE\"))\n$util.qr($ctx.stash.metadata.put(\"apiId\", \"",
              {
                "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
              },
              "\"))\n\n$util.toJson({})"
            ]
          ]
        },
        "ResponseMappingTemplate": "$util.toJson($ctx.prev.result)"
      }
    }
  },
  "Outputs": {
    "GetAttScheduleTableStreamArn": {
      "Description": "Your DynamoDB table StreamArn.",
      "Value": {
        "Fn::GetAtt": [
          "ScheduleTable",
          "StreamArn"
        ]
      },
      "Export": {
        "Name": {
          "Fn::Join": [
            ":",
            [
              {
                "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
              },
              "GetAtt:ScheduleTable:StreamArn"
            ]
          ]
        }
      }
    },
    "GetAttScheduleTableName": {
      "Description": "Your DynamoDB table name.",
      "Value": {
        "Ref": "ScheduleTable"
      },
      "Export": {
        "Name": {
          "Fn::Join": [
            ":",
            [
              {
                "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
              },
              "GetAtt:ScheduleTable:Name"
            ]
          ]
        }
      }
    },
    "GetAttScheduleDataSourceName": {
      "Description": "Your model DataSource name.",
      "Value": {
        "Fn::GetAtt": [
          "ScheduleDataSource",
          "Name"
        ]
      },
      "Export": {
        "Name": {
          "Fn::Join": [
            ":",
            [
              {
                "Ref": "referencetotransformerrootstackGraphQLAPI20497F53ApiId"
              },
              "GetAtt:ScheduleDataSource:Name"
            ]
          ]
        }
      }
    },
    "transformerrootstackScheduleScheduleDataSourceF056F60EName": {
      "Value": {
        "Fn::GetAtt": [
          "ScheduleDataSource",
          "Name"
        ]
      }
    },
    "transformerrootstackScheduleScheduleTable807CECF9Ref": {
      "Value": {
        "Ref": "ScheduleTable"
      }
    }
  }
}