  Resources:

    AppSyncListenOnAllianceEventsSubscriptionResolver:
      Type: AWS::AppSync::Resolver
      DependsOn:
        - AppSyncSchema
      Properties:
        ApiId: !GetAtt AppSyncApi.ApiId
        DataSourceName: !GetAtt AppSyncInternalRequestsDataSource.Name
        FieldName: listenOnAllianceEvents
        TypeName: Subscription
        RequestMappingTemplate: |
          {
            "version": "2018-05-29",
            "operation": "Invoke",
            "payload": {
              "field": "listenOnAllianceEvents",
              "endpoint": "management/check_alliance_channel_access",
              "arguments":  $util.toJson($ctx.args),
              "userSub" : $util.toJson($ctx.identity.sub)
            }
          }
        ResponseMappingTemplate: |
          #if( $context.result && $context.result.error )
            $utils.unauthorized()
          #else
            null
          #end

    AppSyncListenOnCollectionEventsSubscriptionResolver:
      Type: AWS::AppSync::Resolver
      DependsOn:
        - AppSyncSchema
      Properties:
        ApiId: !GetAtt AppSyncApi.ApiId
        DataSourceName: !GetAtt AppSyncInternalRequestsDataSource.Name
        FieldName: listenOnCollectionEvents
        TypeName: Subscription
        RequestMappingTemplate: |
          {
            "version": "2018-05-29",
            "operation": "Invoke",
            "payload": {
              "field": "listenOnCollectionEvents",
              "endpoint": "management/check_workspace_channel_access",
              "arguments":  $util.toJson($ctx.args),
              "userSub" : $util.toJson($ctx.identity.sub)
            }
          }
        ResponseMappingTemplate: |
          #if( $context.result && $context.result.error )
            $utils.unauthorized()
          #else
            null
          #end

    AppSyncListenOnProcessStatusEventsSubscriptionResolver:
      Type: AWS::AppSync::Resolver
      DependsOn:
        - AppSyncSchema
      Properties:
        ApiId: !GetAtt AppSyncApi.ApiId
        DataSourceName: !GetAtt AppSyncInternalRequestsDataSource.Name
        FieldName: listenOnProcessStatusEvents
        TypeName: Subscription
        RequestMappingTemplate: |
          {
            "version": "2018-05-29",
            "operation": "Invoke",
            "payload": {
              "field": "listenOnProcessStatusEvents",
              "endpoint": "management/check_progress_subscription_access",
              "arguments":  $util.toJson($ctx.args),
              "userSub" : $util.toJson($ctx.identity.sub)
            }
          }
        ResponseMappingTemplate: |
          #if( $context.result && $context.result.error )
            $utils.unauthorized()
          #else
            null
          #end
