diff --git a/demo/Makefile b/demo/Makefile index 05483aade7..365f38e172 100644 --- a/demo/Makefile +++ b/demo/Makefile @@ -25,7 +25,7 @@ plugin-build-ci-bun-binary: $(wgc_router_ci) plugin build ./pkg/subgraphs/courses --yes plugin-build-ci-go-binary: - $(wgc_router_ci) plugin build ./pkg/subgraphs/projects --yes + $(wgc_router_ci) plugin build ./pkg/subgraphs/projects --yes --go-module-path github.com/wundergraph/cosmo/demo/pkg/subgraphs/projects plugin-compose: $(wgc_router) compose -i ./graph-with-plugin.yaml -o ./configWithPlugins.json diff --git a/demo/pkg/subgraphs/projects/generated/mapping.json b/demo/pkg/subgraphs/projects/generated/mapping.json index c9755f4288..ee347fb4ca 100644 --- a/demo/pkg/subgraphs/projects/generated/mapping.json +++ b/demo/pkg/subgraphs/projects/generated/mapping.json @@ -568,6 +568,16 @@ "mapped": "priority_matrix", "argumentMappings": [] }, + { + "original": "subProjects", + "mapped": "sub_projects", + "argumentMappings": [ + { + "original": "includeArchived", + "mapped": "include_archived" + } + ] + }, { "original": "filteredTasks", "mapped": "filtered_tasks", @@ -1063,6 +1073,25 @@ } ], "resolveMappings": [ + { + "type": "LOOKUP_TYPE_RESOLVE", + "lookupMapping": { + "type": "Project", + "fieldMapping": { + "original": "subProjects", + "mapped": "sub_projects", + "argumentMappings": [ + { + "original": "includeArchived", + "mapped": "include_archived" + } + ] + } + }, + "rpc": "ResolveProjectSubProjects", + "request": "ResolveProjectSubProjectsRequest", + "response": "ResolveProjectSubProjectsResponse" + }, { "type": "LOOKUP_TYPE_RESOLVE", "lookupMapping": { diff --git a/demo/pkg/subgraphs/projects/generated/service.pb.go b/demo/pkg/subgraphs/projects/generated/service.pb.go index 32c0391831..8e5fae9243 100644 --- a/demo/pkg/subgraphs/projects/generated/service.pb.go +++ b/demo/pkg/subgraphs/projects/generated/service.pb.go @@ -3600,6 +3600,267 @@ func (x *MutationUpdateProjectStatusResponse) GetUpdateProjectStatus() *ProjectU return nil } +type ResolveProjectSubProjectsArgs struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IncludeArchived *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=include_archived,json=includeArchived,proto3" json:"include_archived,omitempty"` +} + +func (x *ResolveProjectSubProjectsArgs) Reset() { + *x = ResolveProjectSubProjectsArgs{} + if protoimpl.UnsafeEnabled { + mi := &file_generated_service_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResolveProjectSubProjectsArgs) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResolveProjectSubProjectsArgs) ProtoMessage() {} + +func (x *ResolveProjectSubProjectsArgs) ProtoReflect() protoreflect.Message { + mi := &file_generated_service_proto_msgTypes[68] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResolveProjectSubProjectsArgs.ProtoReflect.Descriptor instead. +func (*ResolveProjectSubProjectsArgs) Descriptor() ([]byte, []int) { + return file_generated_service_proto_rawDescGZIP(), []int{68} +} + +func (x *ResolveProjectSubProjectsArgs) GetIncludeArchived() *wrapperspb.BoolValue { + if x != nil { + return x.IncludeArchived + } + return nil +} + +type ResolveProjectSubProjectsContext struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Status ProjectStatus `protobuf:"varint,3,opt,name=status,proto3,enum=service.ProjectStatus" json:"status,omitempty"` +} + +func (x *ResolveProjectSubProjectsContext) Reset() { + *x = ResolveProjectSubProjectsContext{} + if protoimpl.UnsafeEnabled { + mi := &file_generated_service_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResolveProjectSubProjectsContext) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResolveProjectSubProjectsContext) ProtoMessage() {} + +func (x *ResolveProjectSubProjectsContext) ProtoReflect() protoreflect.Message { + mi := &file_generated_service_proto_msgTypes[69] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResolveProjectSubProjectsContext.ProtoReflect.Descriptor instead. +func (*ResolveProjectSubProjectsContext) Descriptor() ([]byte, []int) { + return file_generated_service_proto_rawDescGZIP(), []int{69} +} + +func (x *ResolveProjectSubProjectsContext) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ResolveProjectSubProjectsContext) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ResolveProjectSubProjectsContext) GetStatus() ProjectStatus { + if x != nil { + return x.Status + } + return ProjectStatus_PROJECT_STATUS_UNSPECIFIED +} + +type ResolveProjectSubProjectsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // context provides the resolver context for the field subProjects of type Project. + Context []*ResolveProjectSubProjectsContext `protobuf:"bytes,1,rep,name=context,proto3" json:"context,omitempty"` + // field_args provides the arguments for the resolver field subProjects of type Project. + FieldArgs *ResolveProjectSubProjectsArgs `protobuf:"bytes,2,opt,name=field_args,json=fieldArgs,proto3" json:"field_args,omitempty"` +} + +func (x *ResolveProjectSubProjectsRequest) Reset() { + *x = ResolveProjectSubProjectsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_generated_service_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResolveProjectSubProjectsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResolveProjectSubProjectsRequest) ProtoMessage() {} + +func (x *ResolveProjectSubProjectsRequest) ProtoReflect() protoreflect.Message { + mi := &file_generated_service_proto_msgTypes[70] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResolveProjectSubProjectsRequest.ProtoReflect.Descriptor instead. +func (*ResolveProjectSubProjectsRequest) Descriptor() ([]byte, []int) { + return file_generated_service_proto_rawDescGZIP(), []int{70} +} + +func (x *ResolveProjectSubProjectsRequest) GetContext() []*ResolveProjectSubProjectsContext { + if x != nil { + return x.Context + } + return nil +} + +func (x *ResolveProjectSubProjectsRequest) GetFieldArgs() *ResolveProjectSubProjectsArgs { + if x != nil { + return x.FieldArgs + } + return nil +} + +type ResolveProjectSubProjectsResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SubProjects []*Project `protobuf:"bytes,1,rep,name=sub_projects,json=subProjects,proto3" json:"sub_projects,omitempty"` +} + +func (x *ResolveProjectSubProjectsResult) Reset() { + *x = ResolveProjectSubProjectsResult{} + if protoimpl.UnsafeEnabled { + mi := &file_generated_service_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResolveProjectSubProjectsResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResolveProjectSubProjectsResult) ProtoMessage() {} + +func (x *ResolveProjectSubProjectsResult) ProtoReflect() protoreflect.Message { + mi := &file_generated_service_proto_msgTypes[71] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResolveProjectSubProjectsResult.ProtoReflect.Descriptor instead. +func (*ResolveProjectSubProjectsResult) Descriptor() ([]byte, []int) { + return file_generated_service_proto_rawDescGZIP(), []int{71} +} + +func (x *ResolveProjectSubProjectsResult) GetSubProjects() []*Project { + if x != nil { + return x.SubProjects + } + return nil +} + +type ResolveProjectSubProjectsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Result []*ResolveProjectSubProjectsResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` +} + +func (x *ResolveProjectSubProjectsResponse) Reset() { + *x = ResolveProjectSubProjectsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_generated_service_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResolveProjectSubProjectsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResolveProjectSubProjectsResponse) ProtoMessage() {} + +func (x *ResolveProjectSubProjectsResponse) ProtoReflect() protoreflect.Message { + mi := &file_generated_service_proto_msgTypes[72] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResolveProjectSubProjectsResponse.ProtoReflect.Descriptor instead. +func (*ResolveProjectSubProjectsResponse) Descriptor() ([]byte, []int) { + return file_generated_service_proto_rawDescGZIP(), []int{72} +} + +func (x *ResolveProjectSubProjectsResponse) GetResult() []*ResolveProjectSubProjectsResult { + if x != nil { + return x.Result + } + return nil +} + type ResolveProjectFilteredTasksArgs struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3613,7 +3874,7 @@ type ResolveProjectFilteredTasksArgs struct { func (x *ResolveProjectFilteredTasksArgs) Reset() { *x = ResolveProjectFilteredTasksArgs{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[68] + mi := &file_generated_service_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3626,7 +3887,7 @@ func (x *ResolveProjectFilteredTasksArgs) String() string { func (*ResolveProjectFilteredTasksArgs) ProtoMessage() {} func (x *ResolveProjectFilteredTasksArgs) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[68] + mi := &file_generated_service_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3639,7 +3900,7 @@ func (x *ResolveProjectFilteredTasksArgs) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveProjectFilteredTasksArgs.ProtoReflect.Descriptor instead. func (*ResolveProjectFilteredTasksArgs) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{68} + return file_generated_service_proto_rawDescGZIP(), []int{73} } func (x *ResolveProjectFilteredTasksArgs) GetStatus() TaskStatus { @@ -3674,7 +3935,7 @@ type ResolveProjectFilteredTasksContext struct { func (x *ResolveProjectFilteredTasksContext) Reset() { *x = ResolveProjectFilteredTasksContext{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[69] + mi := &file_generated_service_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3687,7 +3948,7 @@ func (x *ResolveProjectFilteredTasksContext) String() string { func (*ResolveProjectFilteredTasksContext) ProtoMessage() {} func (x *ResolveProjectFilteredTasksContext) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[69] + mi := &file_generated_service_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3700,7 +3961,7 @@ func (x *ResolveProjectFilteredTasksContext) ProtoReflect() protoreflect.Message // Deprecated: Use ResolveProjectFilteredTasksContext.ProtoReflect.Descriptor instead. func (*ResolveProjectFilteredTasksContext) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{69} + return file_generated_service_proto_rawDescGZIP(), []int{74} } func (x *ResolveProjectFilteredTasksContext) GetId() string { @@ -3724,7 +3985,7 @@ type ResolveProjectFilteredTasksRequest struct { func (x *ResolveProjectFilteredTasksRequest) Reset() { *x = ResolveProjectFilteredTasksRequest{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[70] + mi := &file_generated_service_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3737,7 +3998,7 @@ func (x *ResolveProjectFilteredTasksRequest) String() string { func (*ResolveProjectFilteredTasksRequest) ProtoMessage() {} func (x *ResolveProjectFilteredTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[70] + mi := &file_generated_service_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3750,7 +4011,7 @@ func (x *ResolveProjectFilteredTasksRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ResolveProjectFilteredTasksRequest.ProtoReflect.Descriptor instead. func (*ResolveProjectFilteredTasksRequest) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{70} + return file_generated_service_proto_rawDescGZIP(), []int{75} } func (x *ResolveProjectFilteredTasksRequest) GetContext() []*ResolveProjectFilteredTasksContext { @@ -3778,7 +4039,7 @@ type ResolveProjectFilteredTasksResult struct { func (x *ResolveProjectFilteredTasksResult) Reset() { *x = ResolveProjectFilteredTasksResult{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[71] + mi := &file_generated_service_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3791,7 +4052,7 @@ func (x *ResolveProjectFilteredTasksResult) String() string { func (*ResolveProjectFilteredTasksResult) ProtoMessage() {} func (x *ResolveProjectFilteredTasksResult) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[71] + mi := &file_generated_service_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3804,7 +4065,7 @@ func (x *ResolveProjectFilteredTasksResult) ProtoReflect() protoreflect.Message // Deprecated: Use ResolveProjectFilteredTasksResult.ProtoReflect.Descriptor instead. func (*ResolveProjectFilteredTasksResult) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{71} + return file_generated_service_proto_rawDescGZIP(), []int{76} } func (x *ResolveProjectFilteredTasksResult) GetFilteredTasks() []*Task { @@ -3825,7 +4086,7 @@ type ResolveProjectFilteredTasksResponse struct { func (x *ResolveProjectFilteredTasksResponse) Reset() { *x = ResolveProjectFilteredTasksResponse{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[72] + mi := &file_generated_service_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3838,7 +4099,7 @@ func (x *ResolveProjectFilteredTasksResponse) String() string { func (*ResolveProjectFilteredTasksResponse) ProtoMessage() {} func (x *ResolveProjectFilteredTasksResponse) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[72] + mi := &file_generated_service_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3851,7 +4112,7 @@ func (x *ResolveProjectFilteredTasksResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use ResolveProjectFilteredTasksResponse.ProtoReflect.Descriptor instead. func (*ResolveProjectFilteredTasksResponse) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{72} + return file_generated_service_proto_rawDescGZIP(), []int{77} } func (x *ResolveProjectFilteredTasksResponse) GetResult() []*ResolveProjectFilteredTasksResult { @@ -3872,7 +4133,7 @@ type ResolveProjectCompletionRateArgs struct { func (x *ResolveProjectCompletionRateArgs) Reset() { *x = ResolveProjectCompletionRateArgs{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[73] + mi := &file_generated_service_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3885,7 +4146,7 @@ func (x *ResolveProjectCompletionRateArgs) String() string { func (*ResolveProjectCompletionRateArgs) ProtoMessage() {} func (x *ResolveProjectCompletionRateArgs) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[73] + mi := &file_generated_service_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3898,7 +4159,7 @@ func (x *ResolveProjectCompletionRateArgs) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveProjectCompletionRateArgs.ProtoReflect.Descriptor instead. func (*ResolveProjectCompletionRateArgs) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{73} + return file_generated_service_proto_rawDescGZIP(), []int{78} } func (x *ResolveProjectCompletionRateArgs) GetIncludeSubtasks() *wrapperspb.BoolValue { @@ -3922,7 +4183,7 @@ type ResolveProjectCompletionRateContext struct { func (x *ResolveProjectCompletionRateContext) Reset() { *x = ResolveProjectCompletionRateContext{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[74] + mi := &file_generated_service_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3935,7 +4196,7 @@ func (x *ResolveProjectCompletionRateContext) String() string { func (*ResolveProjectCompletionRateContext) ProtoMessage() {} func (x *ResolveProjectCompletionRateContext) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[74] + mi := &file_generated_service_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3948,7 +4209,7 @@ func (x *ResolveProjectCompletionRateContext) ProtoReflect() protoreflect.Messag // Deprecated: Use ResolveProjectCompletionRateContext.ProtoReflect.Descriptor instead. func (*ResolveProjectCompletionRateContext) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{74} + return file_generated_service_proto_rawDescGZIP(), []int{79} } func (x *ResolveProjectCompletionRateContext) GetId() string { @@ -3993,7 +4254,7 @@ type ResolveProjectCompletionRateRequest struct { func (x *ResolveProjectCompletionRateRequest) Reset() { *x = ResolveProjectCompletionRateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[75] + mi := &file_generated_service_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4006,7 +4267,7 @@ func (x *ResolveProjectCompletionRateRequest) String() string { func (*ResolveProjectCompletionRateRequest) ProtoMessage() {} func (x *ResolveProjectCompletionRateRequest) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[75] + mi := &file_generated_service_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4019,7 +4280,7 @@ func (x *ResolveProjectCompletionRateRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use ResolveProjectCompletionRateRequest.ProtoReflect.Descriptor instead. func (*ResolveProjectCompletionRateRequest) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{75} + return file_generated_service_proto_rawDescGZIP(), []int{80} } func (x *ResolveProjectCompletionRateRequest) GetContext() []*ResolveProjectCompletionRateContext { @@ -4047,7 +4308,7 @@ type ResolveProjectCompletionRateResult struct { func (x *ResolveProjectCompletionRateResult) Reset() { *x = ResolveProjectCompletionRateResult{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[76] + mi := &file_generated_service_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4060,7 +4321,7 @@ func (x *ResolveProjectCompletionRateResult) String() string { func (*ResolveProjectCompletionRateResult) ProtoMessage() {} func (x *ResolveProjectCompletionRateResult) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[76] + mi := &file_generated_service_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4073,7 +4334,7 @@ func (x *ResolveProjectCompletionRateResult) ProtoReflect() protoreflect.Message // Deprecated: Use ResolveProjectCompletionRateResult.ProtoReflect.Descriptor instead. func (*ResolveProjectCompletionRateResult) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{76} + return file_generated_service_proto_rawDescGZIP(), []int{81} } func (x *ResolveProjectCompletionRateResult) GetCompletionRate() float64 { @@ -4094,7 +4355,7 @@ type ResolveProjectCompletionRateResponse struct { func (x *ResolveProjectCompletionRateResponse) Reset() { *x = ResolveProjectCompletionRateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[77] + mi := &file_generated_service_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4107,7 +4368,7 @@ func (x *ResolveProjectCompletionRateResponse) String() string { func (*ResolveProjectCompletionRateResponse) ProtoMessage() {} func (x *ResolveProjectCompletionRateResponse) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[77] + mi := &file_generated_service_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4120,7 +4381,7 @@ func (x *ResolveProjectCompletionRateResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use ResolveProjectCompletionRateResponse.ProtoReflect.Descriptor instead. func (*ResolveProjectCompletionRateResponse) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{77} + return file_generated_service_proto_rawDescGZIP(), []int{82} } func (x *ResolveProjectCompletionRateResponse) GetResult() []*ResolveProjectCompletionRateResult { @@ -4141,7 +4402,7 @@ type ResolveProjectEstimatedDaysRemainingArgs struct { func (x *ResolveProjectEstimatedDaysRemainingArgs) Reset() { *x = ResolveProjectEstimatedDaysRemainingArgs{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[78] + mi := &file_generated_service_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4154,7 +4415,7 @@ func (x *ResolveProjectEstimatedDaysRemainingArgs) String() string { func (*ResolveProjectEstimatedDaysRemainingArgs) ProtoMessage() {} func (x *ResolveProjectEstimatedDaysRemainingArgs) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[78] + mi := &file_generated_service_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4167,7 +4428,7 @@ func (x *ResolveProjectEstimatedDaysRemainingArgs) ProtoReflect() protoreflect.M // Deprecated: Use ResolveProjectEstimatedDaysRemainingArgs.ProtoReflect.Descriptor instead. func (*ResolveProjectEstimatedDaysRemainingArgs) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{78} + return file_generated_service_proto_rawDescGZIP(), []int{83} } func (x *ResolveProjectEstimatedDaysRemainingArgs) GetFromDate() *wrapperspb.StringValue { @@ -4190,7 +4451,7 @@ type ResolveProjectEstimatedDaysRemainingContext struct { func (x *ResolveProjectEstimatedDaysRemainingContext) Reset() { *x = ResolveProjectEstimatedDaysRemainingContext{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[79] + mi := &file_generated_service_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4203,7 +4464,7 @@ func (x *ResolveProjectEstimatedDaysRemainingContext) String() string { func (*ResolveProjectEstimatedDaysRemainingContext) ProtoMessage() {} func (x *ResolveProjectEstimatedDaysRemainingContext) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[79] + mi := &file_generated_service_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4216,7 +4477,7 @@ func (x *ResolveProjectEstimatedDaysRemainingContext) ProtoReflect() protoreflec // Deprecated: Use ResolveProjectEstimatedDaysRemainingContext.ProtoReflect.Descriptor instead. func (*ResolveProjectEstimatedDaysRemainingContext) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{79} + return file_generated_service_proto_rawDescGZIP(), []int{84} } func (x *ResolveProjectEstimatedDaysRemainingContext) GetId() string { @@ -4254,7 +4515,7 @@ type ResolveProjectEstimatedDaysRemainingRequest struct { func (x *ResolveProjectEstimatedDaysRemainingRequest) Reset() { *x = ResolveProjectEstimatedDaysRemainingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[80] + mi := &file_generated_service_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4267,7 +4528,7 @@ func (x *ResolveProjectEstimatedDaysRemainingRequest) String() string { func (*ResolveProjectEstimatedDaysRemainingRequest) ProtoMessage() {} func (x *ResolveProjectEstimatedDaysRemainingRequest) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[80] + mi := &file_generated_service_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4280,7 +4541,7 @@ func (x *ResolveProjectEstimatedDaysRemainingRequest) ProtoReflect() protoreflec // Deprecated: Use ResolveProjectEstimatedDaysRemainingRequest.ProtoReflect.Descriptor instead. func (*ResolveProjectEstimatedDaysRemainingRequest) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{80} + return file_generated_service_proto_rawDescGZIP(), []int{85} } func (x *ResolveProjectEstimatedDaysRemainingRequest) GetContext() []*ResolveProjectEstimatedDaysRemainingContext { @@ -4308,7 +4569,7 @@ type ResolveProjectEstimatedDaysRemainingResult struct { func (x *ResolveProjectEstimatedDaysRemainingResult) Reset() { *x = ResolveProjectEstimatedDaysRemainingResult{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[81] + mi := &file_generated_service_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4321,7 +4582,7 @@ func (x *ResolveProjectEstimatedDaysRemainingResult) String() string { func (*ResolveProjectEstimatedDaysRemainingResult) ProtoMessage() {} func (x *ResolveProjectEstimatedDaysRemainingResult) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[81] + mi := &file_generated_service_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4334,7 +4595,7 @@ func (x *ResolveProjectEstimatedDaysRemainingResult) ProtoReflect() protoreflect // Deprecated: Use ResolveProjectEstimatedDaysRemainingResult.ProtoReflect.Descriptor instead. func (*ResolveProjectEstimatedDaysRemainingResult) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{81} + return file_generated_service_proto_rawDescGZIP(), []int{86} } func (x *ResolveProjectEstimatedDaysRemainingResult) GetEstimatedDaysRemaining() *wrapperspb.Int32Value { @@ -4355,7 +4616,7 @@ type ResolveProjectEstimatedDaysRemainingResponse struct { func (x *ResolveProjectEstimatedDaysRemainingResponse) Reset() { *x = ResolveProjectEstimatedDaysRemainingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[82] + mi := &file_generated_service_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4368,7 +4629,7 @@ func (x *ResolveProjectEstimatedDaysRemainingResponse) String() string { func (*ResolveProjectEstimatedDaysRemainingResponse) ProtoMessage() {} func (x *ResolveProjectEstimatedDaysRemainingResponse) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[82] + mi := &file_generated_service_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4381,7 +4642,7 @@ func (x *ResolveProjectEstimatedDaysRemainingResponse) ProtoReflect() protorefle // Deprecated: Use ResolveProjectEstimatedDaysRemainingResponse.ProtoReflect.Descriptor instead. func (*ResolveProjectEstimatedDaysRemainingResponse) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{82} + return file_generated_service_proto_rawDescGZIP(), []int{87} } func (x *ResolveProjectEstimatedDaysRemainingResponse) GetResult() []*ResolveProjectEstimatedDaysRemainingResult { @@ -4402,7 +4663,7 @@ type ResolveProjectCriticalDeadlineArgs struct { func (x *ResolveProjectCriticalDeadlineArgs) Reset() { *x = ResolveProjectCriticalDeadlineArgs{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[83] + mi := &file_generated_service_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4415,7 +4676,7 @@ func (x *ResolveProjectCriticalDeadlineArgs) String() string { func (*ResolveProjectCriticalDeadlineArgs) ProtoMessage() {} func (x *ResolveProjectCriticalDeadlineArgs) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[83] + mi := &file_generated_service_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4428,7 +4689,7 @@ func (x *ResolveProjectCriticalDeadlineArgs) ProtoReflect() protoreflect.Message // Deprecated: Use ResolveProjectCriticalDeadlineArgs.ProtoReflect.Descriptor instead. func (*ResolveProjectCriticalDeadlineArgs) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{83} + return file_generated_service_proto_rawDescGZIP(), []int{88} } func (x *ResolveProjectCriticalDeadlineArgs) GetWithinDays() *wrapperspb.Int32Value { @@ -4451,7 +4712,7 @@ type ResolveProjectCriticalDeadlineContext struct { func (x *ResolveProjectCriticalDeadlineContext) Reset() { *x = ResolveProjectCriticalDeadlineContext{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[84] + mi := &file_generated_service_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4464,7 +4725,7 @@ func (x *ResolveProjectCriticalDeadlineContext) String() string { func (*ResolveProjectCriticalDeadlineContext) ProtoMessage() {} func (x *ResolveProjectCriticalDeadlineContext) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[84] + mi := &file_generated_service_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4477,7 +4738,7 @@ func (x *ResolveProjectCriticalDeadlineContext) ProtoReflect() protoreflect.Mess // Deprecated: Use ResolveProjectCriticalDeadlineContext.ProtoReflect.Descriptor instead. func (*ResolveProjectCriticalDeadlineContext) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{84} + return file_generated_service_proto_rawDescGZIP(), []int{89} } func (x *ResolveProjectCriticalDeadlineContext) GetId() string { @@ -4515,7 +4776,7 @@ type ResolveProjectCriticalDeadlineRequest struct { func (x *ResolveProjectCriticalDeadlineRequest) Reset() { *x = ResolveProjectCriticalDeadlineRequest{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[85] + mi := &file_generated_service_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4528,7 +4789,7 @@ func (x *ResolveProjectCriticalDeadlineRequest) String() string { func (*ResolveProjectCriticalDeadlineRequest) ProtoMessage() {} func (x *ResolveProjectCriticalDeadlineRequest) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[85] + mi := &file_generated_service_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4541,7 +4802,7 @@ func (x *ResolveProjectCriticalDeadlineRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use ResolveProjectCriticalDeadlineRequest.ProtoReflect.Descriptor instead. func (*ResolveProjectCriticalDeadlineRequest) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{85} + return file_generated_service_proto_rawDescGZIP(), []int{90} } func (x *ResolveProjectCriticalDeadlineRequest) GetContext() []*ResolveProjectCriticalDeadlineContext { @@ -4569,7 +4830,7 @@ type ResolveProjectCriticalDeadlineResult struct { func (x *ResolveProjectCriticalDeadlineResult) Reset() { *x = ResolveProjectCriticalDeadlineResult{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[86] + mi := &file_generated_service_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4582,7 +4843,7 @@ func (x *ResolveProjectCriticalDeadlineResult) String() string { func (*ResolveProjectCriticalDeadlineResult) ProtoMessage() {} func (x *ResolveProjectCriticalDeadlineResult) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[86] + mi := &file_generated_service_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4595,7 +4856,7 @@ func (x *ResolveProjectCriticalDeadlineResult) ProtoReflect() protoreflect.Messa // Deprecated: Use ResolveProjectCriticalDeadlineResult.ProtoReflect.Descriptor instead. func (*ResolveProjectCriticalDeadlineResult) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{86} + return file_generated_service_proto_rawDescGZIP(), []int{91} } func (x *ResolveProjectCriticalDeadlineResult) GetCriticalDeadline() *Timestamped { @@ -4616,7 +4877,7 @@ type ResolveProjectCriticalDeadlineResponse struct { func (x *ResolveProjectCriticalDeadlineResponse) Reset() { *x = ResolveProjectCriticalDeadlineResponse{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[87] + mi := &file_generated_service_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4629,7 +4890,7 @@ func (x *ResolveProjectCriticalDeadlineResponse) String() string { func (*ResolveProjectCriticalDeadlineResponse) ProtoMessage() {} func (x *ResolveProjectCriticalDeadlineResponse) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[87] + mi := &file_generated_service_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4642,7 +4903,7 @@ func (x *ResolveProjectCriticalDeadlineResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use ResolveProjectCriticalDeadlineResponse.ProtoReflect.Descriptor instead. func (*ResolveProjectCriticalDeadlineResponse) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{87} + return file_generated_service_proto_rawDescGZIP(), []int{92} } func (x *ResolveProjectCriticalDeadlineResponse) GetResult() []*ResolveProjectCriticalDeadlineResult { @@ -4663,7 +4924,7 @@ type ResolveProjectTopPriorityItemArgs struct { func (x *ResolveProjectTopPriorityItemArgs) Reset() { *x = ResolveProjectTopPriorityItemArgs{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[88] + mi := &file_generated_service_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4676,7 +4937,7 @@ func (x *ResolveProjectTopPriorityItemArgs) String() string { func (*ResolveProjectTopPriorityItemArgs) ProtoMessage() {} func (x *ResolveProjectTopPriorityItemArgs) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[88] + mi := &file_generated_service_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4689,7 +4950,7 @@ func (x *ResolveProjectTopPriorityItemArgs) ProtoReflect() protoreflect.Message // Deprecated: Use ResolveProjectTopPriorityItemArgs.ProtoReflect.Descriptor instead. func (*ResolveProjectTopPriorityItemArgs) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{88} + return file_generated_service_proto_rawDescGZIP(), []int{93} } func (x *ResolveProjectTopPriorityItemArgs) GetCategory() *wrapperspb.StringValue { @@ -4711,7 +4972,7 @@ type ResolveProjectTopPriorityItemContext struct { func (x *ResolveProjectTopPriorityItemContext) Reset() { *x = ResolveProjectTopPriorityItemContext{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[89] + mi := &file_generated_service_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4724,7 +4985,7 @@ func (x *ResolveProjectTopPriorityItemContext) String() string { func (*ResolveProjectTopPriorityItemContext) ProtoMessage() {} func (x *ResolveProjectTopPriorityItemContext) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[89] + mi := &file_generated_service_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4737,7 +4998,7 @@ func (x *ResolveProjectTopPriorityItemContext) ProtoReflect() protoreflect.Messa // Deprecated: Use ResolveProjectTopPriorityItemContext.ProtoReflect.Descriptor instead. func (*ResolveProjectTopPriorityItemContext) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{89} + return file_generated_service_proto_rawDescGZIP(), []int{94} } func (x *ResolveProjectTopPriorityItemContext) GetId() string { @@ -4768,7 +5029,7 @@ type ResolveProjectTopPriorityItemRequest struct { func (x *ResolveProjectTopPriorityItemRequest) Reset() { *x = ResolveProjectTopPriorityItemRequest{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[90] + mi := &file_generated_service_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4781,7 +5042,7 @@ func (x *ResolveProjectTopPriorityItemRequest) String() string { func (*ResolveProjectTopPriorityItemRequest) ProtoMessage() {} func (x *ResolveProjectTopPriorityItemRequest) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[90] + mi := &file_generated_service_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4794,7 +5055,7 @@ func (x *ResolveProjectTopPriorityItemRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use ResolveProjectTopPriorityItemRequest.ProtoReflect.Descriptor instead. func (*ResolveProjectTopPriorityItemRequest) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{90} + return file_generated_service_proto_rawDescGZIP(), []int{95} } func (x *ResolveProjectTopPriorityItemRequest) GetContext() []*ResolveProjectTopPriorityItemContext { @@ -4822,7 +5083,7 @@ type ResolveProjectTopPriorityItemResult struct { func (x *ResolveProjectTopPriorityItemResult) Reset() { *x = ResolveProjectTopPriorityItemResult{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[91] + mi := &file_generated_service_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4835,7 +5096,7 @@ func (x *ResolveProjectTopPriorityItemResult) String() string { func (*ResolveProjectTopPriorityItemResult) ProtoMessage() {} func (x *ResolveProjectTopPriorityItemResult) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[91] + mi := &file_generated_service_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4848,7 +5109,7 @@ func (x *ResolveProjectTopPriorityItemResult) ProtoReflect() protoreflect.Messag // Deprecated: Use ResolveProjectTopPriorityItemResult.ProtoReflect.Descriptor instead. func (*ResolveProjectTopPriorityItemResult) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{91} + return file_generated_service_proto_rawDescGZIP(), []int{96} } func (x *ResolveProjectTopPriorityItemResult) GetTopPriorityItem() *ProjectSearchResult { @@ -4869,7 +5130,7 @@ type ResolveProjectTopPriorityItemResponse struct { func (x *ResolveProjectTopPriorityItemResponse) Reset() { *x = ResolveProjectTopPriorityItemResponse{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[92] + mi := &file_generated_service_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4882,7 +5143,7 @@ func (x *ResolveProjectTopPriorityItemResponse) String() string { func (*ResolveProjectTopPriorityItemResponse) ProtoMessage() {} func (x *ResolveProjectTopPriorityItemResponse) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[92] + mi := &file_generated_service_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4895,7 +5156,7 @@ func (x *ResolveProjectTopPriorityItemResponse) ProtoReflect() protoreflect.Mess // Deprecated: Use ResolveProjectTopPriorityItemResponse.ProtoReflect.Descriptor instead. func (*ResolveProjectTopPriorityItemResponse) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{92} + return file_generated_service_proto_rawDescGZIP(), []int{97} } func (x *ResolveProjectTopPriorityItemResponse) GetResult() []*ResolveProjectTopPriorityItemResult { @@ -4916,7 +5177,7 @@ type ResolveMilestoneIsAtRiskArgs struct { func (x *ResolveMilestoneIsAtRiskArgs) Reset() { *x = ResolveMilestoneIsAtRiskArgs{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[93] + mi := &file_generated_service_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4929,7 +5190,7 @@ func (x *ResolveMilestoneIsAtRiskArgs) String() string { func (*ResolveMilestoneIsAtRiskArgs) ProtoMessage() {} func (x *ResolveMilestoneIsAtRiskArgs) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[93] + mi := &file_generated_service_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4942,7 +5203,7 @@ func (x *ResolveMilestoneIsAtRiskArgs) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveMilestoneIsAtRiskArgs.ProtoReflect.Descriptor instead. func (*ResolveMilestoneIsAtRiskArgs) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{93} + return file_generated_service_proto_rawDescGZIP(), []int{98} } func (x *ResolveMilestoneIsAtRiskArgs) GetThreshold() *wrapperspb.DoubleValue { @@ -4966,7 +5227,7 @@ type ResolveMilestoneIsAtRiskContext struct { func (x *ResolveMilestoneIsAtRiskContext) Reset() { *x = ResolveMilestoneIsAtRiskContext{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[94] + mi := &file_generated_service_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4979,7 +5240,7 @@ func (x *ResolveMilestoneIsAtRiskContext) String() string { func (*ResolveMilestoneIsAtRiskContext) ProtoMessage() {} func (x *ResolveMilestoneIsAtRiskContext) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[94] + mi := &file_generated_service_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4992,7 +5253,7 @@ func (x *ResolveMilestoneIsAtRiskContext) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveMilestoneIsAtRiskContext.ProtoReflect.Descriptor instead. func (*ResolveMilestoneIsAtRiskContext) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{94} + return file_generated_service_proto_rawDescGZIP(), []int{99} } func (x *ResolveMilestoneIsAtRiskContext) GetId() string { @@ -5037,7 +5298,7 @@ type ResolveMilestoneIsAtRiskRequest struct { func (x *ResolveMilestoneIsAtRiskRequest) Reset() { *x = ResolveMilestoneIsAtRiskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[95] + mi := &file_generated_service_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5050,7 +5311,7 @@ func (x *ResolveMilestoneIsAtRiskRequest) String() string { func (*ResolveMilestoneIsAtRiskRequest) ProtoMessage() {} func (x *ResolveMilestoneIsAtRiskRequest) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[95] + mi := &file_generated_service_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5063,7 +5324,7 @@ func (x *ResolveMilestoneIsAtRiskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveMilestoneIsAtRiskRequest.ProtoReflect.Descriptor instead. func (*ResolveMilestoneIsAtRiskRequest) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{95} + return file_generated_service_proto_rawDescGZIP(), []int{100} } func (x *ResolveMilestoneIsAtRiskRequest) GetContext() []*ResolveMilestoneIsAtRiskContext { @@ -5091,7 +5352,7 @@ type ResolveMilestoneIsAtRiskResult struct { func (x *ResolveMilestoneIsAtRiskResult) Reset() { *x = ResolveMilestoneIsAtRiskResult{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[96] + mi := &file_generated_service_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5104,7 +5365,7 @@ func (x *ResolveMilestoneIsAtRiskResult) String() string { func (*ResolveMilestoneIsAtRiskResult) ProtoMessage() {} func (x *ResolveMilestoneIsAtRiskResult) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[96] + mi := &file_generated_service_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5117,7 +5378,7 @@ func (x *ResolveMilestoneIsAtRiskResult) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveMilestoneIsAtRiskResult.ProtoReflect.Descriptor instead. func (*ResolveMilestoneIsAtRiskResult) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{96} + return file_generated_service_proto_rawDescGZIP(), []int{101} } func (x *ResolveMilestoneIsAtRiskResult) GetIsAtRisk() bool { @@ -5138,7 +5399,7 @@ type ResolveMilestoneIsAtRiskResponse struct { func (x *ResolveMilestoneIsAtRiskResponse) Reset() { *x = ResolveMilestoneIsAtRiskResponse{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[97] + mi := &file_generated_service_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5151,7 +5412,7 @@ func (x *ResolveMilestoneIsAtRiskResponse) String() string { func (*ResolveMilestoneIsAtRiskResponse) ProtoMessage() {} func (x *ResolveMilestoneIsAtRiskResponse) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[97] + mi := &file_generated_service_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5164,7 +5425,7 @@ func (x *ResolveMilestoneIsAtRiskResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveMilestoneIsAtRiskResponse.ProtoReflect.Descriptor instead. func (*ResolveMilestoneIsAtRiskResponse) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{97} + return file_generated_service_proto_rawDescGZIP(), []int{102} } func (x *ResolveMilestoneIsAtRiskResponse) GetResult() []*ResolveMilestoneIsAtRiskResult { @@ -5185,7 +5446,7 @@ type ResolveMilestoneDaysUntilDueArgs struct { func (x *ResolveMilestoneDaysUntilDueArgs) Reset() { *x = ResolveMilestoneDaysUntilDueArgs{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[98] + mi := &file_generated_service_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5198,7 +5459,7 @@ func (x *ResolveMilestoneDaysUntilDueArgs) String() string { func (*ResolveMilestoneDaysUntilDueArgs) ProtoMessage() {} func (x *ResolveMilestoneDaysUntilDueArgs) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[98] + mi := &file_generated_service_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5211,7 +5472,7 @@ func (x *ResolveMilestoneDaysUntilDueArgs) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveMilestoneDaysUntilDueArgs.ProtoReflect.Descriptor instead. func (*ResolveMilestoneDaysUntilDueArgs) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{98} + return file_generated_service_proto_rawDescGZIP(), []int{103} } func (x *ResolveMilestoneDaysUntilDueArgs) GetFromDate() *wrapperspb.StringValue { @@ -5232,7 +5493,7 @@ type ResolveMilestoneDaysUntilDueContext struct { func (x *ResolveMilestoneDaysUntilDueContext) Reset() { *x = ResolveMilestoneDaysUntilDueContext{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[99] + mi := &file_generated_service_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5245,7 +5506,7 @@ func (x *ResolveMilestoneDaysUntilDueContext) String() string { func (*ResolveMilestoneDaysUntilDueContext) ProtoMessage() {} func (x *ResolveMilestoneDaysUntilDueContext) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[99] + mi := &file_generated_service_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5258,7 +5519,7 @@ func (x *ResolveMilestoneDaysUntilDueContext) ProtoReflect() protoreflect.Messag // Deprecated: Use ResolveMilestoneDaysUntilDueContext.ProtoReflect.Descriptor instead. func (*ResolveMilestoneDaysUntilDueContext) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{99} + return file_generated_service_proto_rawDescGZIP(), []int{104} } func (x *ResolveMilestoneDaysUntilDueContext) GetEndDate() *wrapperspb.StringValue { @@ -5282,7 +5543,7 @@ type ResolveMilestoneDaysUntilDueRequest struct { func (x *ResolveMilestoneDaysUntilDueRequest) Reset() { *x = ResolveMilestoneDaysUntilDueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[100] + mi := &file_generated_service_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5295,7 +5556,7 @@ func (x *ResolveMilestoneDaysUntilDueRequest) String() string { func (*ResolveMilestoneDaysUntilDueRequest) ProtoMessage() {} func (x *ResolveMilestoneDaysUntilDueRequest) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[100] + mi := &file_generated_service_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5308,7 +5569,7 @@ func (x *ResolveMilestoneDaysUntilDueRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use ResolveMilestoneDaysUntilDueRequest.ProtoReflect.Descriptor instead. func (*ResolveMilestoneDaysUntilDueRequest) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{100} + return file_generated_service_proto_rawDescGZIP(), []int{105} } func (x *ResolveMilestoneDaysUntilDueRequest) GetContext() []*ResolveMilestoneDaysUntilDueContext { @@ -5336,7 +5597,7 @@ type ResolveMilestoneDaysUntilDueResult struct { func (x *ResolveMilestoneDaysUntilDueResult) Reset() { *x = ResolveMilestoneDaysUntilDueResult{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[101] + mi := &file_generated_service_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5349,7 +5610,7 @@ func (x *ResolveMilestoneDaysUntilDueResult) String() string { func (*ResolveMilestoneDaysUntilDueResult) ProtoMessage() {} func (x *ResolveMilestoneDaysUntilDueResult) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[101] + mi := &file_generated_service_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5362,7 +5623,7 @@ func (x *ResolveMilestoneDaysUntilDueResult) ProtoReflect() protoreflect.Message // Deprecated: Use ResolveMilestoneDaysUntilDueResult.ProtoReflect.Descriptor instead. func (*ResolveMilestoneDaysUntilDueResult) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{101} + return file_generated_service_proto_rawDescGZIP(), []int{106} } func (x *ResolveMilestoneDaysUntilDueResult) GetDaysUntilDue() *wrapperspb.Int32Value { @@ -5383,7 +5644,7 @@ type ResolveMilestoneDaysUntilDueResponse struct { func (x *ResolveMilestoneDaysUntilDueResponse) Reset() { *x = ResolveMilestoneDaysUntilDueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[102] + mi := &file_generated_service_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5396,7 +5657,7 @@ func (x *ResolveMilestoneDaysUntilDueResponse) String() string { func (*ResolveMilestoneDaysUntilDueResponse) ProtoMessage() {} func (x *ResolveMilestoneDaysUntilDueResponse) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[102] + mi := &file_generated_service_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5409,7 +5670,7 @@ func (x *ResolveMilestoneDaysUntilDueResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use ResolveMilestoneDaysUntilDueResponse.ProtoReflect.Descriptor instead. func (*ResolveMilestoneDaysUntilDueResponse) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{102} + return file_generated_service_proto_rawDescGZIP(), []int{107} } func (x *ResolveMilestoneDaysUntilDueResponse) GetResult() []*ResolveMilestoneDaysUntilDueResult { @@ -5430,7 +5691,7 @@ type ResolveTaskIsBlockedArgs struct { func (x *ResolveTaskIsBlockedArgs) Reset() { *x = ResolveTaskIsBlockedArgs{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[103] + mi := &file_generated_service_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5443,7 +5704,7 @@ func (x *ResolveTaskIsBlockedArgs) String() string { func (*ResolveTaskIsBlockedArgs) ProtoMessage() {} func (x *ResolveTaskIsBlockedArgs) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[103] + mi := &file_generated_service_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5456,7 +5717,7 @@ func (x *ResolveTaskIsBlockedArgs) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveTaskIsBlockedArgs.ProtoReflect.Descriptor instead. func (*ResolveTaskIsBlockedArgs) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{103} + return file_generated_service_proto_rawDescGZIP(), []int{108} } func (x *ResolveTaskIsBlockedArgs) GetCheckDependencies() *wrapperspb.BoolValue { @@ -5478,7 +5739,7 @@ type ResolveTaskIsBlockedContext struct { func (x *ResolveTaskIsBlockedContext) Reset() { *x = ResolveTaskIsBlockedContext{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[104] + mi := &file_generated_service_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5491,7 +5752,7 @@ func (x *ResolveTaskIsBlockedContext) String() string { func (*ResolveTaskIsBlockedContext) ProtoMessage() {} func (x *ResolveTaskIsBlockedContext) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[104] + mi := &file_generated_service_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5504,7 +5765,7 @@ func (x *ResolveTaskIsBlockedContext) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveTaskIsBlockedContext.ProtoReflect.Descriptor instead. func (*ResolveTaskIsBlockedContext) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{104} + return file_generated_service_proto_rawDescGZIP(), []int{109} } func (x *ResolveTaskIsBlockedContext) GetId() string { @@ -5535,7 +5796,7 @@ type ResolveTaskIsBlockedRequest struct { func (x *ResolveTaskIsBlockedRequest) Reset() { *x = ResolveTaskIsBlockedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[105] + mi := &file_generated_service_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5548,7 +5809,7 @@ func (x *ResolveTaskIsBlockedRequest) String() string { func (*ResolveTaskIsBlockedRequest) ProtoMessage() {} func (x *ResolveTaskIsBlockedRequest) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[105] + mi := &file_generated_service_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5561,7 +5822,7 @@ func (x *ResolveTaskIsBlockedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveTaskIsBlockedRequest.ProtoReflect.Descriptor instead. func (*ResolveTaskIsBlockedRequest) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{105} + return file_generated_service_proto_rawDescGZIP(), []int{110} } func (x *ResolveTaskIsBlockedRequest) GetContext() []*ResolveTaskIsBlockedContext { @@ -5589,7 +5850,7 @@ type ResolveTaskIsBlockedResult struct { func (x *ResolveTaskIsBlockedResult) Reset() { *x = ResolveTaskIsBlockedResult{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[106] + mi := &file_generated_service_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5602,7 +5863,7 @@ func (x *ResolveTaskIsBlockedResult) String() string { func (*ResolveTaskIsBlockedResult) ProtoMessage() {} func (x *ResolveTaskIsBlockedResult) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[106] + mi := &file_generated_service_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5615,7 +5876,7 @@ func (x *ResolveTaskIsBlockedResult) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveTaskIsBlockedResult.ProtoReflect.Descriptor instead. func (*ResolveTaskIsBlockedResult) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{106} + return file_generated_service_proto_rawDescGZIP(), []int{111} } func (x *ResolveTaskIsBlockedResult) GetIsBlocked() bool { @@ -5636,7 +5897,7 @@ type ResolveTaskIsBlockedResponse struct { func (x *ResolveTaskIsBlockedResponse) Reset() { *x = ResolveTaskIsBlockedResponse{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[107] + mi := &file_generated_service_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5649,7 +5910,7 @@ func (x *ResolveTaskIsBlockedResponse) String() string { func (*ResolveTaskIsBlockedResponse) ProtoMessage() {} func (x *ResolveTaskIsBlockedResponse) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[107] + mi := &file_generated_service_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5662,7 +5923,7 @@ func (x *ResolveTaskIsBlockedResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveTaskIsBlockedResponse.ProtoReflect.Descriptor instead. func (*ResolveTaskIsBlockedResponse) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{107} + return file_generated_service_proto_rawDescGZIP(), []int{112} } func (x *ResolveTaskIsBlockedResponse) GetResult() []*ResolveTaskIsBlockedResult { @@ -5683,7 +5944,7 @@ type ResolveTaskTotalEffortArgs struct { func (x *ResolveTaskTotalEffortArgs) Reset() { *x = ResolveTaskTotalEffortArgs{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[108] + mi := &file_generated_service_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5696,7 +5957,7 @@ func (x *ResolveTaskTotalEffortArgs) String() string { func (*ResolveTaskTotalEffortArgs) ProtoMessage() {} func (x *ResolveTaskTotalEffortArgs) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[108] + mi := &file_generated_service_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5709,7 +5970,7 @@ func (x *ResolveTaskTotalEffortArgs) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveTaskTotalEffortArgs.ProtoReflect.Descriptor instead. func (*ResolveTaskTotalEffortArgs) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{108} + return file_generated_service_proto_rawDescGZIP(), []int{113} } func (x *ResolveTaskTotalEffortArgs) GetIncludeSubtasks() *wrapperspb.BoolValue { @@ -5732,7 +5993,7 @@ type ResolveTaskTotalEffortContext struct { func (x *ResolveTaskTotalEffortContext) Reset() { *x = ResolveTaskTotalEffortContext{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[109] + mi := &file_generated_service_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5745,7 +6006,7 @@ func (x *ResolveTaskTotalEffortContext) String() string { func (*ResolveTaskTotalEffortContext) ProtoMessage() {} func (x *ResolveTaskTotalEffortContext) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[109] + mi := &file_generated_service_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5758,7 +6019,7 @@ func (x *ResolveTaskTotalEffortContext) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveTaskTotalEffortContext.ProtoReflect.Descriptor instead. func (*ResolveTaskTotalEffortContext) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{109} + return file_generated_service_proto_rawDescGZIP(), []int{114} } func (x *ResolveTaskTotalEffortContext) GetId() string { @@ -5796,7 +6057,7 @@ type ResolveTaskTotalEffortRequest struct { func (x *ResolveTaskTotalEffortRequest) Reset() { *x = ResolveTaskTotalEffortRequest{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[110] + mi := &file_generated_service_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5809,7 +6070,7 @@ func (x *ResolveTaskTotalEffortRequest) String() string { func (*ResolveTaskTotalEffortRequest) ProtoMessage() {} func (x *ResolveTaskTotalEffortRequest) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[110] + mi := &file_generated_service_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5822,7 +6083,7 @@ func (x *ResolveTaskTotalEffortRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveTaskTotalEffortRequest.ProtoReflect.Descriptor instead. func (*ResolveTaskTotalEffortRequest) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{110} + return file_generated_service_proto_rawDescGZIP(), []int{115} } func (x *ResolveTaskTotalEffortRequest) GetContext() []*ResolveTaskTotalEffortContext { @@ -5850,7 +6111,7 @@ type ResolveTaskTotalEffortResult struct { func (x *ResolveTaskTotalEffortResult) Reset() { *x = ResolveTaskTotalEffortResult{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[111] + mi := &file_generated_service_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5863,7 +6124,7 @@ func (x *ResolveTaskTotalEffortResult) String() string { func (*ResolveTaskTotalEffortResult) ProtoMessage() {} func (x *ResolveTaskTotalEffortResult) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[111] + mi := &file_generated_service_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5876,7 +6137,7 @@ func (x *ResolveTaskTotalEffortResult) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveTaskTotalEffortResult.ProtoReflect.Descriptor instead. func (*ResolveTaskTotalEffortResult) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{111} + return file_generated_service_proto_rawDescGZIP(), []int{116} } func (x *ResolveTaskTotalEffortResult) GetTotalEffort() *wrapperspb.DoubleValue { @@ -5897,7 +6158,7 @@ type ResolveTaskTotalEffortResponse struct { func (x *ResolveTaskTotalEffortResponse) Reset() { *x = ResolveTaskTotalEffortResponse{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[112] + mi := &file_generated_service_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5910,7 +6171,7 @@ func (x *ResolveTaskTotalEffortResponse) String() string { func (*ResolveTaskTotalEffortResponse) ProtoMessage() {} func (x *ResolveTaskTotalEffortResponse) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[112] + mi := &file_generated_service_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5923,7 +6184,7 @@ func (x *ResolveTaskTotalEffortResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveTaskTotalEffortResponse.ProtoReflect.Descriptor instead. func (*ResolveTaskTotalEffortResponse) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{112} + return file_generated_service_proto_rawDescGZIP(), []int{117} } func (x *ResolveTaskTotalEffortResponse) GetResult() []*ResolveTaskTotalEffortResult { @@ -5945,7 +6206,7 @@ type ResolveEmployeeCurrentWorkloadArgs struct { func (x *ResolveEmployeeCurrentWorkloadArgs) Reset() { *x = ResolveEmployeeCurrentWorkloadArgs{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[113] + mi := &file_generated_service_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5958,7 +6219,7 @@ func (x *ResolveEmployeeCurrentWorkloadArgs) String() string { func (*ResolveEmployeeCurrentWorkloadArgs) ProtoMessage() {} func (x *ResolveEmployeeCurrentWorkloadArgs) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[113] + mi := &file_generated_service_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5971,7 +6232,7 @@ func (x *ResolveEmployeeCurrentWorkloadArgs) ProtoReflect() protoreflect.Message // Deprecated: Use ResolveEmployeeCurrentWorkloadArgs.ProtoReflect.Descriptor instead. func (*ResolveEmployeeCurrentWorkloadArgs) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{113} + return file_generated_service_proto_rawDescGZIP(), []int{118} } func (x *ResolveEmployeeCurrentWorkloadArgs) GetIncludeCompleted() *wrapperspb.BoolValue { @@ -5999,7 +6260,7 @@ type ResolveEmployeeCurrentWorkloadContext struct { func (x *ResolveEmployeeCurrentWorkloadContext) Reset() { *x = ResolveEmployeeCurrentWorkloadContext{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[114] + mi := &file_generated_service_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6012,7 +6273,7 @@ func (x *ResolveEmployeeCurrentWorkloadContext) String() string { func (*ResolveEmployeeCurrentWorkloadContext) ProtoMessage() {} func (x *ResolveEmployeeCurrentWorkloadContext) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[114] + mi := &file_generated_service_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6025,7 +6286,7 @@ func (x *ResolveEmployeeCurrentWorkloadContext) ProtoReflect() protoreflect.Mess // Deprecated: Use ResolveEmployeeCurrentWorkloadContext.ProtoReflect.Descriptor instead. func (*ResolveEmployeeCurrentWorkloadContext) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{114} + return file_generated_service_proto_rawDescGZIP(), []int{119} } func (x *ResolveEmployeeCurrentWorkloadContext) GetId() int32 { @@ -6049,7 +6310,7 @@ type ResolveEmployeeCurrentWorkloadRequest struct { func (x *ResolveEmployeeCurrentWorkloadRequest) Reset() { *x = ResolveEmployeeCurrentWorkloadRequest{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[115] + mi := &file_generated_service_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6062,7 +6323,7 @@ func (x *ResolveEmployeeCurrentWorkloadRequest) String() string { func (*ResolveEmployeeCurrentWorkloadRequest) ProtoMessage() {} func (x *ResolveEmployeeCurrentWorkloadRequest) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[115] + mi := &file_generated_service_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6075,7 +6336,7 @@ func (x *ResolveEmployeeCurrentWorkloadRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use ResolveEmployeeCurrentWorkloadRequest.ProtoReflect.Descriptor instead. func (*ResolveEmployeeCurrentWorkloadRequest) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{115} + return file_generated_service_proto_rawDescGZIP(), []int{120} } func (x *ResolveEmployeeCurrentWorkloadRequest) GetContext() []*ResolveEmployeeCurrentWorkloadContext { @@ -6103,7 +6364,7 @@ type ResolveEmployeeCurrentWorkloadResult struct { func (x *ResolveEmployeeCurrentWorkloadResult) Reset() { *x = ResolveEmployeeCurrentWorkloadResult{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[116] + mi := &file_generated_service_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6116,7 +6377,7 @@ func (x *ResolveEmployeeCurrentWorkloadResult) String() string { func (*ResolveEmployeeCurrentWorkloadResult) ProtoMessage() {} func (x *ResolveEmployeeCurrentWorkloadResult) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[116] + mi := &file_generated_service_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6129,7 +6390,7 @@ func (x *ResolveEmployeeCurrentWorkloadResult) ProtoReflect() protoreflect.Messa // Deprecated: Use ResolveEmployeeCurrentWorkloadResult.ProtoReflect.Descriptor instead. func (*ResolveEmployeeCurrentWorkloadResult) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{116} + return file_generated_service_proto_rawDescGZIP(), []int{121} } func (x *ResolveEmployeeCurrentWorkloadResult) GetCurrentWorkload() int32 { @@ -6150,7 +6411,7 @@ type ResolveEmployeeCurrentWorkloadResponse struct { func (x *ResolveEmployeeCurrentWorkloadResponse) Reset() { *x = ResolveEmployeeCurrentWorkloadResponse{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[117] + mi := &file_generated_service_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6163,7 +6424,7 @@ func (x *ResolveEmployeeCurrentWorkloadResponse) String() string { func (*ResolveEmployeeCurrentWorkloadResponse) ProtoMessage() {} func (x *ResolveEmployeeCurrentWorkloadResponse) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[117] + mi := &file_generated_service_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6176,7 +6437,7 @@ func (x *ResolveEmployeeCurrentWorkloadResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use ResolveEmployeeCurrentWorkloadResponse.ProtoReflect.Descriptor instead. func (*ResolveEmployeeCurrentWorkloadResponse) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{117} + return file_generated_service_proto_rawDescGZIP(), []int{122} } func (x *ResolveEmployeeCurrentWorkloadResponse) GetResult() []*ResolveEmployeeCurrentWorkloadResult { @@ -6198,7 +6459,7 @@ type ResolveEmployeeAverageTaskCompletionDaysArgs struct { func (x *ResolveEmployeeAverageTaskCompletionDaysArgs) Reset() { *x = ResolveEmployeeAverageTaskCompletionDaysArgs{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[118] + mi := &file_generated_service_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6211,7 +6472,7 @@ func (x *ResolveEmployeeAverageTaskCompletionDaysArgs) String() string { func (*ResolveEmployeeAverageTaskCompletionDaysArgs) ProtoMessage() {} func (x *ResolveEmployeeAverageTaskCompletionDaysArgs) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[118] + mi := &file_generated_service_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6224,7 +6485,7 @@ func (x *ResolveEmployeeAverageTaskCompletionDaysArgs) ProtoReflect() protorefle // Deprecated: Use ResolveEmployeeAverageTaskCompletionDaysArgs.ProtoReflect.Descriptor instead. func (*ResolveEmployeeAverageTaskCompletionDaysArgs) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{118} + return file_generated_service_proto_rawDescGZIP(), []int{123} } func (x *ResolveEmployeeAverageTaskCompletionDaysArgs) GetProjectId() *wrapperspb.StringValue { @@ -6252,7 +6513,7 @@ type ResolveEmployeeAverageTaskCompletionDaysContext struct { func (x *ResolveEmployeeAverageTaskCompletionDaysContext) Reset() { *x = ResolveEmployeeAverageTaskCompletionDaysContext{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[119] + mi := &file_generated_service_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6265,7 +6526,7 @@ func (x *ResolveEmployeeAverageTaskCompletionDaysContext) String() string { func (*ResolveEmployeeAverageTaskCompletionDaysContext) ProtoMessage() {} func (x *ResolveEmployeeAverageTaskCompletionDaysContext) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[119] + mi := &file_generated_service_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6278,7 +6539,7 @@ func (x *ResolveEmployeeAverageTaskCompletionDaysContext) ProtoReflect() protore // Deprecated: Use ResolveEmployeeAverageTaskCompletionDaysContext.ProtoReflect.Descriptor instead. func (*ResolveEmployeeAverageTaskCompletionDaysContext) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{119} + return file_generated_service_proto_rawDescGZIP(), []int{124} } func (x *ResolveEmployeeAverageTaskCompletionDaysContext) GetId() int32 { @@ -6302,7 +6563,7 @@ type ResolveEmployeeAverageTaskCompletionDaysRequest struct { func (x *ResolveEmployeeAverageTaskCompletionDaysRequest) Reset() { *x = ResolveEmployeeAverageTaskCompletionDaysRequest{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[120] + mi := &file_generated_service_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6315,7 +6576,7 @@ func (x *ResolveEmployeeAverageTaskCompletionDaysRequest) String() string { func (*ResolveEmployeeAverageTaskCompletionDaysRequest) ProtoMessage() {} func (x *ResolveEmployeeAverageTaskCompletionDaysRequest) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[120] + mi := &file_generated_service_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6328,7 +6589,7 @@ func (x *ResolveEmployeeAverageTaskCompletionDaysRequest) ProtoReflect() protore // Deprecated: Use ResolveEmployeeAverageTaskCompletionDaysRequest.ProtoReflect.Descriptor instead. func (*ResolveEmployeeAverageTaskCompletionDaysRequest) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{120} + return file_generated_service_proto_rawDescGZIP(), []int{125} } func (x *ResolveEmployeeAverageTaskCompletionDaysRequest) GetContext() []*ResolveEmployeeAverageTaskCompletionDaysContext { @@ -6356,7 +6617,7 @@ type ResolveEmployeeAverageTaskCompletionDaysResult struct { func (x *ResolveEmployeeAverageTaskCompletionDaysResult) Reset() { *x = ResolveEmployeeAverageTaskCompletionDaysResult{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[121] + mi := &file_generated_service_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6369,7 +6630,7 @@ func (x *ResolveEmployeeAverageTaskCompletionDaysResult) String() string { func (*ResolveEmployeeAverageTaskCompletionDaysResult) ProtoMessage() {} func (x *ResolveEmployeeAverageTaskCompletionDaysResult) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[121] + mi := &file_generated_service_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6382,7 +6643,7 @@ func (x *ResolveEmployeeAverageTaskCompletionDaysResult) ProtoReflect() protoref // Deprecated: Use ResolveEmployeeAverageTaskCompletionDaysResult.ProtoReflect.Descriptor instead. func (*ResolveEmployeeAverageTaskCompletionDaysResult) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{121} + return file_generated_service_proto_rawDescGZIP(), []int{126} } func (x *ResolveEmployeeAverageTaskCompletionDaysResult) GetAverageTaskCompletionDays() *wrapperspb.DoubleValue { @@ -6403,7 +6664,7 @@ type ResolveEmployeeAverageTaskCompletionDaysResponse struct { func (x *ResolveEmployeeAverageTaskCompletionDaysResponse) Reset() { *x = ResolveEmployeeAverageTaskCompletionDaysResponse{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[122] + mi := &file_generated_service_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6416,7 +6677,7 @@ func (x *ResolveEmployeeAverageTaskCompletionDaysResponse) String() string { func (*ResolveEmployeeAverageTaskCompletionDaysResponse) ProtoMessage() {} func (x *ResolveEmployeeAverageTaskCompletionDaysResponse) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[122] + mi := &file_generated_service_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6429,7 +6690,7 @@ func (x *ResolveEmployeeAverageTaskCompletionDaysResponse) ProtoReflect() protor // Deprecated: Use ResolveEmployeeAverageTaskCompletionDaysResponse.ProtoReflect.Descriptor instead. func (*ResolveEmployeeAverageTaskCompletionDaysResponse) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{122} + return file_generated_service_proto_rawDescGZIP(), []int{127} } func (x *ResolveEmployeeAverageTaskCompletionDaysResponse) GetResult() []*ResolveEmployeeAverageTaskCompletionDaysResult { @@ -6468,7 +6729,7 @@ type Project struct { func (x *Project) Reset() { *x = Project{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[123] + mi := &file_generated_service_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6481,7 +6742,7 @@ func (x *Project) String() string { func (*Project) ProtoMessage() {} func (x *Project) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[123] + mi := &file_generated_service_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6494,7 +6755,7 @@ func (x *Project) ProtoReflect() protoreflect.Message { // Deprecated: Use Project.ProtoReflect.Descriptor instead. func (*Project) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{123} + return file_generated_service_proto_rawDescGZIP(), []int{128} } func (x *Project) GetId() string { @@ -6651,7 +6912,7 @@ type Milestone struct { func (x *Milestone) Reset() { *x = Milestone{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[124] + mi := &file_generated_service_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6664,7 +6925,7 @@ func (x *Milestone) String() string { func (*Milestone) ProtoMessage() {} func (x *Milestone) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[124] + mi := &file_generated_service_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6677,7 +6938,7 @@ func (x *Milestone) ProtoReflect() protoreflect.Message { // Deprecated: Use Milestone.ProtoReflect.Descriptor instead. func (*Milestone) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{124} + return file_generated_service_proto_rawDescGZIP(), []int{129} } func (x *Milestone) GetId() string { @@ -6787,7 +7048,7 @@ type Task struct { func (x *Task) Reset() { *x = Task{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[125] + mi := &file_generated_service_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6800,7 +7061,7 @@ func (x *Task) String() string { func (*Task) ProtoMessage() {} func (x *Task) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[125] + mi := &file_generated_service_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6813,7 +7074,7 @@ func (x *Task) ProtoReflect() protoreflect.Message { // Deprecated: Use Task.ProtoReflect.Descriptor instead. func (*Task) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{125} + return file_generated_service_proto_rawDescGZIP(), []int{130} } func (x *Task) GetId() string { @@ -6953,7 +7214,7 @@ type Employee struct { func (x *Employee) Reset() { *x = Employee{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[126] + mi := &file_generated_service_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6966,7 +7227,7 @@ func (x *Employee) String() string { func (*Employee) ProtoMessage() {} func (x *Employee) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[126] + mi := &file_generated_service_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6979,7 +7240,7 @@ func (x *Employee) ProtoReflect() protoreflect.Message { // Deprecated: Use Employee.ProtoReflect.Descriptor instead. func (*Employee) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{126} + return file_generated_service_proto_rawDescGZIP(), []int{131} } func (x *Employee) GetId() int32 { @@ -7044,7 +7305,7 @@ type Product struct { func (x *Product) Reset() { *x = Product{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[127] + mi := &file_generated_service_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7057,7 +7318,7 @@ func (x *Product) String() string { func (*Product) ProtoMessage() {} func (x *Product) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[127] + mi := &file_generated_service_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7070,7 +7331,7 @@ func (x *Product) ProtoReflect() protoreflect.Message { // Deprecated: Use Product.ProtoReflect.Descriptor instead. func (*Product) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{127} + return file_generated_service_proto_rawDescGZIP(), []int{132} } func (x *Product) GetUpc() string { @@ -7111,7 +7372,7 @@ type ProjectResource struct { func (x *ProjectResource) Reset() { *x = ProjectResource{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[128] + mi := &file_generated_service_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7124,7 +7385,7 @@ func (x *ProjectResource) String() string { func (*ProjectResource) ProtoMessage() {} func (x *ProjectResource) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[128] + mi := &file_generated_service_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7137,7 +7398,7 @@ func (x *ProjectResource) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectResource.ProtoReflect.Descriptor instead. func (*ProjectResource) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{128} + return file_generated_service_proto_rawDescGZIP(), []int{133} } func (m *ProjectResource) GetValue() isProjectResource_Value { @@ -7219,7 +7480,7 @@ type ProjectSearchResult struct { func (x *ProjectSearchResult) Reset() { *x = ProjectSearchResult{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[129] + mi := &file_generated_service_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7232,7 +7493,7 @@ func (x *ProjectSearchResult) String() string { func (*ProjectSearchResult) ProtoMessage() {} func (x *ProjectSearchResult) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[129] + mi := &file_generated_service_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7245,7 +7506,7 @@ func (x *ProjectSearchResult) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectSearchResult.ProtoReflect.Descriptor instead. func (*ProjectSearchResult) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{129} + return file_generated_service_proto_rawDescGZIP(), []int{134} } func (m *ProjectSearchResult) GetValue() isProjectSearchResult_Value { @@ -7314,7 +7575,7 @@ type ProjectActivity struct { func (x *ProjectActivity) Reset() { *x = ProjectActivity{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[130] + mi := &file_generated_service_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7327,7 +7588,7 @@ func (x *ProjectActivity) String() string { func (*ProjectActivity) ProtoMessage() {} func (x *ProjectActivity) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[130] + mi := &file_generated_service_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7340,7 +7601,7 @@ func (x *ProjectActivity) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectActivity.ProtoReflect.Descriptor instead. func (*ProjectActivity) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{130} + return file_generated_service_proto_rawDescGZIP(), []int{135} } func (m *ProjectActivity) GetValue() isProjectActivity_Value { @@ -7410,7 +7671,7 @@ type Node struct { func (x *Node) Reset() { *x = Node{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[131] + mi := &file_generated_service_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7423,7 +7684,7 @@ func (x *Node) String() string { func (*Node) ProtoMessage() {} func (x *Node) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[131] + mi := &file_generated_service_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7436,7 +7697,7 @@ func (x *Node) ProtoReflect() protoreflect.Message { // Deprecated: Use Node.ProtoReflect.Descriptor instead. func (*Node) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{131} + return file_generated_service_proto_rawDescGZIP(), []int{136} } func (m *Node) GetInstance() isNode_Instance { @@ -7517,7 +7778,7 @@ type ProjectInput struct { func (x *ProjectInput) Reset() { *x = ProjectInput{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[132] + mi := &file_generated_service_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7530,7 +7791,7 @@ func (x *ProjectInput) String() string { func (*ProjectInput) ProtoMessage() {} func (x *ProjectInput) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[132] + mi := &file_generated_service_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7543,7 +7804,7 @@ func (x *ProjectInput) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectInput.ProtoReflect.Descriptor instead. func (*ProjectInput) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{132} + return file_generated_service_proto_rawDescGZIP(), []int{137} } func (x *ProjectInput) GetName() string { @@ -7596,7 +7857,7 @@ type MilestoneInput struct { func (x *MilestoneInput) Reset() { *x = MilestoneInput{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[133] + mi := &file_generated_service_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7609,7 +7870,7 @@ func (x *MilestoneInput) String() string { func (*MilestoneInput) ProtoMessage() {} func (x *MilestoneInput) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[133] + mi := &file_generated_service_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7622,7 +7883,7 @@ func (x *MilestoneInput) ProtoReflect() protoreflect.Message { // Deprecated: Use MilestoneInput.ProtoReflect.Descriptor instead. func (*MilestoneInput) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{133} + return file_generated_service_proto_rawDescGZIP(), []int{138} } func (x *MilestoneInput) GetProjectId() string { @@ -7677,7 +7938,7 @@ type TaskInput struct { func (x *TaskInput) Reset() { *x = TaskInput{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[134] + mi := &file_generated_service_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7690,7 +7951,7 @@ func (x *TaskInput) String() string { func (*TaskInput) ProtoMessage() {} func (x *TaskInput) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[134] + mi := &file_generated_service_proto_msgTypes[139] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7703,7 +7964,7 @@ func (x *TaskInput) ProtoReflect() protoreflect.Message { // Deprecated: Use TaskInput.ProtoReflect.Descriptor instead. func (*TaskInput) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{134} + return file_generated_service_proto_rawDescGZIP(), []int{139} } func (x *TaskInput) GetProjectId() string { @@ -7772,7 +8033,7 @@ type ProjectUpdate struct { func (x *ProjectUpdate) Reset() { *x = ProjectUpdate{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[135] + mi := &file_generated_service_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7785,7 +8046,7 @@ func (x *ProjectUpdate) String() string { func (*ProjectUpdate) ProtoMessage() {} func (x *ProjectUpdate) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[135] + mi := &file_generated_service_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7798,7 +8059,7 @@ func (x *ProjectUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectUpdate.ProtoReflect.Descriptor instead. func (*ProjectUpdate) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{135} + return file_generated_service_proto_rawDescGZIP(), []int{140} } func (x *ProjectUpdate) GetId() string { @@ -7865,7 +8126,7 @@ type Timestamped struct { func (x *Timestamped) Reset() { *x = Timestamped{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[136] + mi := &file_generated_service_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7878,7 +8139,7 @@ func (x *Timestamped) String() string { func (*Timestamped) ProtoMessage() {} func (x *Timestamped) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[136] + mi := &file_generated_service_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7891,7 +8152,7 @@ func (x *Timestamped) ProtoReflect() protoreflect.Message { // Deprecated: Use Timestamped.ProtoReflect.Descriptor instead. func (*Timestamped) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{136} + return file_generated_service_proto_rawDescGZIP(), []int{141} } func (m *Timestamped) GetInstance() isTimestamped_Instance { @@ -7945,7 +8206,7 @@ type Assignable struct { func (x *Assignable) Reset() { *x = Assignable{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[137] + mi := &file_generated_service_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7958,7 +8219,7 @@ func (x *Assignable) String() string { func (*Assignable) ProtoMessage() {} func (x *Assignable) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[137] + mi := &file_generated_service_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7971,7 +8232,7 @@ func (x *Assignable) ProtoReflect() protoreflect.Message { // Deprecated: Use Assignable.ProtoReflect.Descriptor instead. func (*Assignable) Descriptor() ([]byte, []int) { - return file_generated_service_proto_rawDescGZIP(), []int{137} + return file_generated_service_proto_rawDescGZIP(), []int{142} } func (m *Assignable) GetInstance() isAssignable_Instance { @@ -8009,7 +8270,7 @@ type ListOfEmployee_List struct { func (x *ListOfEmployee_List) Reset() { *x = ListOfEmployee_List{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[138] + mi := &file_generated_service_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8022,7 +8283,7 @@ func (x *ListOfEmployee_List) String() string { func (*ListOfEmployee_List) ProtoMessage() {} func (x *ListOfEmployee_List) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[138] + mi := &file_generated_service_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8056,7 +8317,7 @@ type ListOfInt_List struct { func (x *ListOfInt_List) Reset() { *x = ListOfInt_List{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[139] + mi := &file_generated_service_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8069,7 +8330,7 @@ func (x *ListOfInt_List) String() string { func (*ListOfInt_List) ProtoMessage() {} func (x *ListOfInt_List) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[139] + mi := &file_generated_service_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8103,7 +8364,7 @@ type ListOfListOfListOfTask_List struct { func (x *ListOfListOfListOfTask_List) Reset() { *x = ListOfListOfListOfTask_List{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[140] + mi := &file_generated_service_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8116,7 +8377,7 @@ func (x *ListOfListOfListOfTask_List) String() string { func (*ListOfListOfListOfTask_List) ProtoMessage() {} func (x *ListOfListOfListOfTask_List) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[140] + mi := &file_generated_service_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8150,7 +8411,7 @@ type ListOfListOfMilestone_List struct { func (x *ListOfListOfMilestone_List) Reset() { *x = ListOfListOfMilestone_List{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[141] + mi := &file_generated_service_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8163,7 +8424,7 @@ func (x *ListOfListOfMilestone_List) String() string { func (*ListOfListOfMilestone_List) ProtoMessage() {} func (x *ListOfListOfMilestone_List) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[141] + mi := &file_generated_service_proto_msgTypes[146] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8197,7 +8458,7 @@ type ListOfListOfProject_List struct { func (x *ListOfListOfProject_List) Reset() { *x = ListOfListOfProject_List{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[142] + mi := &file_generated_service_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8210,7 +8471,7 @@ func (x *ListOfListOfProject_List) String() string { func (*ListOfListOfProject_List) ProtoMessage() {} func (x *ListOfListOfProject_List) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[142] + mi := &file_generated_service_proto_msgTypes[147] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8244,7 +8505,7 @@ type ListOfListOfProjectResource_List struct { func (x *ListOfListOfProjectResource_List) Reset() { *x = ListOfListOfProjectResource_List{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[143] + mi := &file_generated_service_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8257,7 +8518,7 @@ func (x *ListOfListOfProjectResource_List) String() string { func (*ListOfListOfProjectResource_List) ProtoMessage() {} func (x *ListOfListOfProjectResource_List) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[143] + mi := &file_generated_service_proto_msgTypes[148] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8291,7 +8552,7 @@ type ListOfListOfString_List struct { func (x *ListOfListOfString_List) Reset() { *x = ListOfListOfString_List{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[144] + mi := &file_generated_service_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8304,7 +8565,7 @@ func (x *ListOfListOfString_List) String() string { func (*ListOfListOfString_List) ProtoMessage() {} func (x *ListOfListOfString_List) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[144] + mi := &file_generated_service_proto_msgTypes[149] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8338,7 +8599,7 @@ type ListOfListOfTask_List struct { func (x *ListOfListOfTask_List) Reset() { *x = ListOfListOfTask_List{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[145] + mi := &file_generated_service_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8351,7 +8612,7 @@ func (x *ListOfListOfTask_List) String() string { func (*ListOfListOfTask_List) ProtoMessage() {} func (x *ListOfListOfTask_List) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[145] + mi := &file_generated_service_proto_msgTypes[150] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8385,7 +8646,7 @@ type ListOfMilestone_List struct { func (x *ListOfMilestone_List) Reset() { *x = ListOfMilestone_List{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[146] + mi := &file_generated_service_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8398,7 +8659,7 @@ func (x *ListOfMilestone_List) String() string { func (*ListOfMilestone_List) ProtoMessage() {} func (x *ListOfMilestone_List) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[146] + mi := &file_generated_service_proto_msgTypes[151] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8432,7 +8693,7 @@ type ListOfProject_List struct { func (x *ListOfProject_List) Reset() { *x = ListOfProject_List{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[147] + mi := &file_generated_service_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8445,7 +8706,7 @@ func (x *ListOfProject_List) String() string { func (*ListOfProject_List) ProtoMessage() {} func (x *ListOfProject_List) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[147] + mi := &file_generated_service_proto_msgTypes[152] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8479,7 +8740,7 @@ type ListOfProjectResource_List struct { func (x *ListOfProjectResource_List) Reset() { *x = ListOfProjectResource_List{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[148] + mi := &file_generated_service_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8492,7 +8753,7 @@ func (x *ListOfProjectResource_List) String() string { func (*ListOfProjectResource_List) ProtoMessage() {} func (x *ListOfProjectResource_List) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[148] + mi := &file_generated_service_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8526,7 +8787,7 @@ type ListOfString_List struct { func (x *ListOfString_List) Reset() { *x = ListOfString_List{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[149] + mi := &file_generated_service_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8539,7 +8800,7 @@ func (x *ListOfString_List) String() string { func (*ListOfString_List) ProtoMessage() {} func (x *ListOfString_List) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[149] + mi := &file_generated_service_proto_msgTypes[154] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8573,7 +8834,7 @@ type ListOfTask_List struct { func (x *ListOfTask_List) Reset() { *x = ListOfTask_List{} if protoimpl.UnsafeEnabled { - mi := &file_generated_service_proto_msgTypes[150] + mi := &file_generated_service_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8586,7 +8847,7 @@ func (x *ListOfTask_List) String() string { func (*ListOfTask_List) ProtoMessage() {} func (x *ListOfTask_List) ProtoReflect() protoreflect.Message { - mi := &file_generated_service_proto_msgTypes[150] + mi := &file_generated_service_proto_msgTypes[155] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8955,6 +9216,43 @@ var file_generated_service_proto_rawDesc = []byte{ 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x13, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, + 0x66, 0x0a, 0x1d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x53, 0x75, 0x62, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x41, 0x72, 0x67, 0x73, + 0x12, 0x45, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x22, 0x76, 0x0a, 0x20, 0x52, 0x65, 0x73, 0x6f, 0x6c, + 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x75, 0x62, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, + 0xae, 0x01, 0x0a, 0x20, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x53, 0x75, 0x62, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x75, + 0x62, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x75, 0x62, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x41, 0x72, 0x67, 0x73, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x72, 0x67, 0x73, + 0x22, 0x56, 0x0a, 0x1f, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x53, 0x75, 0x62, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x0b, 0x73, 0x75, 0x62, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x65, 0x0a, 0x21, 0x52, 0x65, 0x73, 0x6f, + 0x6c, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x75, 0x62, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x75, 0x62, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xb4, 0x01, 0x0a, 0x1f, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x41, 0x72, 0x67, 0x73, 0x12, 0x2b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, @@ -9466,7 +9764,7 @@ var file_generated_service_proto_rawDesc = []byte{ 0x72, 0x69, 0x78, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x66, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x0e, 0x70, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x4a, 0x04, 0x08, 0x14, 0x10, 0x19, + 0x72, 0x69, 0x74, 0x79, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x4a, 0x04, 0x08, 0x14, 0x10, 0x1a, 0x22, 0xaf, 0x04, 0x0a, 0x09, 0x4d, 0x69, 0x6c, 0x65, 0x73, 0x74, 0x6f, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, @@ -9780,7 +10078,7 @@ var file_generated_service_proto_rawDesc = []byte{ 0x45, 0x53, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x04, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, - 0x05, 0x32, 0xe9, 0x1d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x65, + 0x05, 0x32, 0xdf, 0x1e, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5f, 0x0a, 0x12, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x45, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x42, 0x79, 0x49, 0x64, 0x12, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x45, 0x6d, 0x70, 0x6c, @@ -9997,33 +10295,40 @@ var file_generated_service_proto_rawDesc = []byte{ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, 0x01, 0x0a, 0x1d, 0x52, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x70, 0x50, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x54, 0x6f, 0x70, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x49, 0x74, 0x65, 0x6d, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x54, 0x6f, 0x70, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x14, 0x52, 0x65, 0x73, - 0x6f, 0x6c, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, - 0x64, 0x12, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x6c, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x74, 0x0a, 0x19, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x75, 0x62, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x12, 0x29, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, + 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x75, 0x62, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x75, 0x62, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, 0x01, 0x0a, + 0x1d, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, + 0x6f, 0x70, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2d, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x70, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x70, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x65, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x73, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x73, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x6b, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x45, 0x66, 0x66, 0x6f, 0x72, 0x74, 0x12, 0x26, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x45, 0x66, 0x66, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, - 0x6f, 0x6c, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x45, 0x66, 0x66, - 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x3a, 0x5a, - 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x77, 0x75, 0x6e, 0x64, - 0x65, 0x72, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x2f, 0x64, 0x65, - 0x6d, 0x6f, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x75, 0x62, 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, - 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x49, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x45, 0x66, 0x66, 0x6f, 0x72, 0x74, + 0x12, 0x26, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, + 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x45, 0x66, 0x66, 0x6f, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x45, 0x66, 0x66, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x42, 0x3a, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x77, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x2f, 0x64, 0x65, 0x6d, 0x6f, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x73, 0x75, 0x62, + 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -10039,7 +10344,7 @@ func file_generated_service_proto_rawDescGZIP() []byte { } var file_generated_service_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_generated_service_proto_msgTypes = make([]protoimpl.MessageInfo, 151) +var file_generated_service_proto_msgTypes = make([]protoimpl.MessageInfo, 156) var file_generated_service_proto_goTypes = []any{ (ProjectStatus)(0), // 0: service.ProjectStatus (MilestoneStatus)(0), // 1: service.MilestoneStatus @@ -10114,376 +10419,389 @@ var file_generated_service_proto_goTypes = []any{ (*MutationAddTaskResponse)(nil), // 70: service.MutationAddTaskResponse (*MutationUpdateProjectStatusRequest)(nil), // 71: service.MutationUpdateProjectStatusRequest (*MutationUpdateProjectStatusResponse)(nil), // 72: service.MutationUpdateProjectStatusResponse - (*ResolveProjectFilteredTasksArgs)(nil), // 73: service.ResolveProjectFilteredTasksArgs - (*ResolveProjectFilteredTasksContext)(nil), // 74: service.ResolveProjectFilteredTasksContext - (*ResolveProjectFilteredTasksRequest)(nil), // 75: service.ResolveProjectFilteredTasksRequest - (*ResolveProjectFilteredTasksResult)(nil), // 76: service.ResolveProjectFilteredTasksResult - (*ResolveProjectFilteredTasksResponse)(nil), // 77: service.ResolveProjectFilteredTasksResponse - (*ResolveProjectCompletionRateArgs)(nil), // 78: service.ResolveProjectCompletionRateArgs - (*ResolveProjectCompletionRateContext)(nil), // 79: service.ResolveProjectCompletionRateContext - (*ResolveProjectCompletionRateRequest)(nil), // 80: service.ResolveProjectCompletionRateRequest - (*ResolveProjectCompletionRateResult)(nil), // 81: service.ResolveProjectCompletionRateResult - (*ResolveProjectCompletionRateResponse)(nil), // 82: service.ResolveProjectCompletionRateResponse - (*ResolveProjectEstimatedDaysRemainingArgs)(nil), // 83: service.ResolveProjectEstimatedDaysRemainingArgs - (*ResolveProjectEstimatedDaysRemainingContext)(nil), // 84: service.ResolveProjectEstimatedDaysRemainingContext - (*ResolveProjectEstimatedDaysRemainingRequest)(nil), // 85: service.ResolveProjectEstimatedDaysRemainingRequest - (*ResolveProjectEstimatedDaysRemainingResult)(nil), // 86: service.ResolveProjectEstimatedDaysRemainingResult - (*ResolveProjectEstimatedDaysRemainingResponse)(nil), // 87: service.ResolveProjectEstimatedDaysRemainingResponse - (*ResolveProjectCriticalDeadlineArgs)(nil), // 88: service.ResolveProjectCriticalDeadlineArgs - (*ResolveProjectCriticalDeadlineContext)(nil), // 89: service.ResolveProjectCriticalDeadlineContext - (*ResolveProjectCriticalDeadlineRequest)(nil), // 90: service.ResolveProjectCriticalDeadlineRequest - (*ResolveProjectCriticalDeadlineResult)(nil), // 91: service.ResolveProjectCriticalDeadlineResult - (*ResolveProjectCriticalDeadlineResponse)(nil), // 92: service.ResolveProjectCriticalDeadlineResponse - (*ResolveProjectTopPriorityItemArgs)(nil), // 93: service.ResolveProjectTopPriorityItemArgs - (*ResolveProjectTopPriorityItemContext)(nil), // 94: service.ResolveProjectTopPriorityItemContext - (*ResolveProjectTopPriorityItemRequest)(nil), // 95: service.ResolveProjectTopPriorityItemRequest - (*ResolveProjectTopPriorityItemResult)(nil), // 96: service.ResolveProjectTopPriorityItemResult - (*ResolveProjectTopPriorityItemResponse)(nil), // 97: service.ResolveProjectTopPriorityItemResponse - (*ResolveMilestoneIsAtRiskArgs)(nil), // 98: service.ResolveMilestoneIsAtRiskArgs - (*ResolveMilestoneIsAtRiskContext)(nil), // 99: service.ResolveMilestoneIsAtRiskContext - (*ResolveMilestoneIsAtRiskRequest)(nil), // 100: service.ResolveMilestoneIsAtRiskRequest - (*ResolveMilestoneIsAtRiskResult)(nil), // 101: service.ResolveMilestoneIsAtRiskResult - (*ResolveMilestoneIsAtRiskResponse)(nil), // 102: service.ResolveMilestoneIsAtRiskResponse - (*ResolveMilestoneDaysUntilDueArgs)(nil), // 103: service.ResolveMilestoneDaysUntilDueArgs - (*ResolveMilestoneDaysUntilDueContext)(nil), // 104: service.ResolveMilestoneDaysUntilDueContext - (*ResolveMilestoneDaysUntilDueRequest)(nil), // 105: service.ResolveMilestoneDaysUntilDueRequest - (*ResolveMilestoneDaysUntilDueResult)(nil), // 106: service.ResolveMilestoneDaysUntilDueResult - (*ResolveMilestoneDaysUntilDueResponse)(nil), // 107: service.ResolveMilestoneDaysUntilDueResponse - (*ResolveTaskIsBlockedArgs)(nil), // 108: service.ResolveTaskIsBlockedArgs - (*ResolveTaskIsBlockedContext)(nil), // 109: service.ResolveTaskIsBlockedContext - (*ResolveTaskIsBlockedRequest)(nil), // 110: service.ResolveTaskIsBlockedRequest - (*ResolveTaskIsBlockedResult)(nil), // 111: service.ResolveTaskIsBlockedResult - (*ResolveTaskIsBlockedResponse)(nil), // 112: service.ResolveTaskIsBlockedResponse - (*ResolveTaskTotalEffortArgs)(nil), // 113: service.ResolveTaskTotalEffortArgs - (*ResolveTaskTotalEffortContext)(nil), // 114: service.ResolveTaskTotalEffortContext - (*ResolveTaskTotalEffortRequest)(nil), // 115: service.ResolveTaskTotalEffortRequest - (*ResolveTaskTotalEffortResult)(nil), // 116: service.ResolveTaskTotalEffortResult - (*ResolveTaskTotalEffortResponse)(nil), // 117: service.ResolveTaskTotalEffortResponse - (*ResolveEmployeeCurrentWorkloadArgs)(nil), // 118: service.ResolveEmployeeCurrentWorkloadArgs - (*ResolveEmployeeCurrentWorkloadContext)(nil), // 119: service.ResolveEmployeeCurrentWorkloadContext - (*ResolveEmployeeCurrentWorkloadRequest)(nil), // 120: service.ResolveEmployeeCurrentWorkloadRequest - (*ResolveEmployeeCurrentWorkloadResult)(nil), // 121: service.ResolveEmployeeCurrentWorkloadResult - (*ResolveEmployeeCurrentWorkloadResponse)(nil), // 122: service.ResolveEmployeeCurrentWorkloadResponse - (*ResolveEmployeeAverageTaskCompletionDaysArgs)(nil), // 123: service.ResolveEmployeeAverageTaskCompletionDaysArgs - (*ResolveEmployeeAverageTaskCompletionDaysContext)(nil), // 124: service.ResolveEmployeeAverageTaskCompletionDaysContext - (*ResolveEmployeeAverageTaskCompletionDaysRequest)(nil), // 125: service.ResolveEmployeeAverageTaskCompletionDaysRequest - (*ResolveEmployeeAverageTaskCompletionDaysResult)(nil), // 126: service.ResolveEmployeeAverageTaskCompletionDaysResult - (*ResolveEmployeeAverageTaskCompletionDaysResponse)(nil), // 127: service.ResolveEmployeeAverageTaskCompletionDaysResponse - (*Project)(nil), // 128: service.Project - (*Milestone)(nil), // 129: service.Milestone - (*Task)(nil), // 130: service.Task - (*Employee)(nil), // 131: service.Employee - (*Product)(nil), // 132: service.Product - (*ProjectResource)(nil), // 133: service.ProjectResource - (*ProjectSearchResult)(nil), // 134: service.ProjectSearchResult - (*ProjectActivity)(nil), // 135: service.ProjectActivity - (*Node)(nil), // 136: service.Node - (*ProjectInput)(nil), // 137: service.ProjectInput - (*MilestoneInput)(nil), // 138: service.MilestoneInput - (*TaskInput)(nil), // 139: service.TaskInput - (*ProjectUpdate)(nil), // 140: service.ProjectUpdate - (*Timestamped)(nil), // 141: service.Timestamped - (*Assignable)(nil), // 142: service.Assignable - (*ListOfEmployee_List)(nil), // 143: service.ListOfEmployee.List - (*ListOfInt_List)(nil), // 144: service.ListOfInt.List - (*ListOfListOfListOfTask_List)(nil), // 145: service.ListOfListOfListOfTask.List - (*ListOfListOfMilestone_List)(nil), // 146: service.ListOfListOfMilestone.List - (*ListOfListOfProject_List)(nil), // 147: service.ListOfListOfProject.List - (*ListOfListOfProjectResource_List)(nil), // 148: service.ListOfListOfProjectResource.List - (*ListOfListOfString_List)(nil), // 149: service.ListOfListOfString.List - (*ListOfListOfTask_List)(nil), // 150: service.ListOfListOfTask.List - (*ListOfMilestone_List)(nil), // 151: service.ListOfMilestone.List - (*ListOfProject_List)(nil), // 152: service.ListOfProject.List - (*ListOfProjectResource_List)(nil), // 153: service.ListOfProjectResource.List - (*ListOfString_List)(nil), // 154: service.ListOfString.List - (*ListOfTask_List)(nil), // 155: service.ListOfTask.List - (*wrapperspb.Int32Value)(nil), // 156: google.protobuf.Int32Value - (*wrapperspb.BoolValue)(nil), // 157: google.protobuf.BoolValue - (*wrapperspb.StringValue)(nil), // 158: google.protobuf.StringValue - (*wrapperspb.DoubleValue)(nil), // 159: google.protobuf.DoubleValue + (*ResolveProjectSubProjectsArgs)(nil), // 73: service.ResolveProjectSubProjectsArgs + (*ResolveProjectSubProjectsContext)(nil), // 74: service.ResolveProjectSubProjectsContext + (*ResolveProjectSubProjectsRequest)(nil), // 75: service.ResolveProjectSubProjectsRequest + (*ResolveProjectSubProjectsResult)(nil), // 76: service.ResolveProjectSubProjectsResult + (*ResolveProjectSubProjectsResponse)(nil), // 77: service.ResolveProjectSubProjectsResponse + (*ResolveProjectFilteredTasksArgs)(nil), // 78: service.ResolveProjectFilteredTasksArgs + (*ResolveProjectFilteredTasksContext)(nil), // 79: service.ResolveProjectFilteredTasksContext + (*ResolveProjectFilteredTasksRequest)(nil), // 80: service.ResolveProjectFilteredTasksRequest + (*ResolveProjectFilteredTasksResult)(nil), // 81: service.ResolveProjectFilteredTasksResult + (*ResolveProjectFilteredTasksResponse)(nil), // 82: service.ResolveProjectFilteredTasksResponse + (*ResolveProjectCompletionRateArgs)(nil), // 83: service.ResolveProjectCompletionRateArgs + (*ResolveProjectCompletionRateContext)(nil), // 84: service.ResolveProjectCompletionRateContext + (*ResolveProjectCompletionRateRequest)(nil), // 85: service.ResolveProjectCompletionRateRequest + (*ResolveProjectCompletionRateResult)(nil), // 86: service.ResolveProjectCompletionRateResult + (*ResolveProjectCompletionRateResponse)(nil), // 87: service.ResolveProjectCompletionRateResponse + (*ResolveProjectEstimatedDaysRemainingArgs)(nil), // 88: service.ResolveProjectEstimatedDaysRemainingArgs + (*ResolveProjectEstimatedDaysRemainingContext)(nil), // 89: service.ResolveProjectEstimatedDaysRemainingContext + (*ResolveProjectEstimatedDaysRemainingRequest)(nil), // 90: service.ResolveProjectEstimatedDaysRemainingRequest + (*ResolveProjectEstimatedDaysRemainingResult)(nil), // 91: service.ResolveProjectEstimatedDaysRemainingResult + (*ResolveProjectEstimatedDaysRemainingResponse)(nil), // 92: service.ResolveProjectEstimatedDaysRemainingResponse + (*ResolveProjectCriticalDeadlineArgs)(nil), // 93: service.ResolveProjectCriticalDeadlineArgs + (*ResolveProjectCriticalDeadlineContext)(nil), // 94: service.ResolveProjectCriticalDeadlineContext + (*ResolveProjectCriticalDeadlineRequest)(nil), // 95: service.ResolveProjectCriticalDeadlineRequest + (*ResolveProjectCriticalDeadlineResult)(nil), // 96: service.ResolveProjectCriticalDeadlineResult + (*ResolveProjectCriticalDeadlineResponse)(nil), // 97: service.ResolveProjectCriticalDeadlineResponse + (*ResolveProjectTopPriorityItemArgs)(nil), // 98: service.ResolveProjectTopPriorityItemArgs + (*ResolveProjectTopPriorityItemContext)(nil), // 99: service.ResolveProjectTopPriorityItemContext + (*ResolveProjectTopPriorityItemRequest)(nil), // 100: service.ResolveProjectTopPriorityItemRequest + (*ResolveProjectTopPriorityItemResult)(nil), // 101: service.ResolveProjectTopPriorityItemResult + (*ResolveProjectTopPriorityItemResponse)(nil), // 102: service.ResolveProjectTopPriorityItemResponse + (*ResolveMilestoneIsAtRiskArgs)(nil), // 103: service.ResolveMilestoneIsAtRiskArgs + (*ResolveMilestoneIsAtRiskContext)(nil), // 104: service.ResolveMilestoneIsAtRiskContext + (*ResolveMilestoneIsAtRiskRequest)(nil), // 105: service.ResolveMilestoneIsAtRiskRequest + (*ResolveMilestoneIsAtRiskResult)(nil), // 106: service.ResolveMilestoneIsAtRiskResult + (*ResolveMilestoneIsAtRiskResponse)(nil), // 107: service.ResolveMilestoneIsAtRiskResponse + (*ResolveMilestoneDaysUntilDueArgs)(nil), // 108: service.ResolveMilestoneDaysUntilDueArgs + (*ResolveMilestoneDaysUntilDueContext)(nil), // 109: service.ResolveMilestoneDaysUntilDueContext + (*ResolveMilestoneDaysUntilDueRequest)(nil), // 110: service.ResolveMilestoneDaysUntilDueRequest + (*ResolveMilestoneDaysUntilDueResult)(nil), // 111: service.ResolveMilestoneDaysUntilDueResult + (*ResolveMilestoneDaysUntilDueResponse)(nil), // 112: service.ResolveMilestoneDaysUntilDueResponse + (*ResolveTaskIsBlockedArgs)(nil), // 113: service.ResolveTaskIsBlockedArgs + (*ResolveTaskIsBlockedContext)(nil), // 114: service.ResolveTaskIsBlockedContext + (*ResolveTaskIsBlockedRequest)(nil), // 115: service.ResolveTaskIsBlockedRequest + (*ResolveTaskIsBlockedResult)(nil), // 116: service.ResolveTaskIsBlockedResult + (*ResolveTaskIsBlockedResponse)(nil), // 117: service.ResolveTaskIsBlockedResponse + (*ResolveTaskTotalEffortArgs)(nil), // 118: service.ResolveTaskTotalEffortArgs + (*ResolveTaskTotalEffortContext)(nil), // 119: service.ResolveTaskTotalEffortContext + (*ResolveTaskTotalEffortRequest)(nil), // 120: service.ResolveTaskTotalEffortRequest + (*ResolveTaskTotalEffortResult)(nil), // 121: service.ResolveTaskTotalEffortResult + (*ResolveTaskTotalEffortResponse)(nil), // 122: service.ResolveTaskTotalEffortResponse + (*ResolveEmployeeCurrentWorkloadArgs)(nil), // 123: service.ResolveEmployeeCurrentWorkloadArgs + (*ResolveEmployeeCurrentWorkloadContext)(nil), // 124: service.ResolveEmployeeCurrentWorkloadContext + (*ResolveEmployeeCurrentWorkloadRequest)(nil), // 125: service.ResolveEmployeeCurrentWorkloadRequest + (*ResolveEmployeeCurrentWorkloadResult)(nil), // 126: service.ResolveEmployeeCurrentWorkloadResult + (*ResolveEmployeeCurrentWorkloadResponse)(nil), // 127: service.ResolveEmployeeCurrentWorkloadResponse + (*ResolveEmployeeAverageTaskCompletionDaysArgs)(nil), // 128: service.ResolveEmployeeAverageTaskCompletionDaysArgs + (*ResolveEmployeeAverageTaskCompletionDaysContext)(nil), // 129: service.ResolveEmployeeAverageTaskCompletionDaysContext + (*ResolveEmployeeAverageTaskCompletionDaysRequest)(nil), // 130: service.ResolveEmployeeAverageTaskCompletionDaysRequest + (*ResolveEmployeeAverageTaskCompletionDaysResult)(nil), // 131: service.ResolveEmployeeAverageTaskCompletionDaysResult + (*ResolveEmployeeAverageTaskCompletionDaysResponse)(nil), // 132: service.ResolveEmployeeAverageTaskCompletionDaysResponse + (*Project)(nil), // 133: service.Project + (*Milestone)(nil), // 134: service.Milestone + (*Task)(nil), // 135: service.Task + (*Employee)(nil), // 136: service.Employee + (*Product)(nil), // 137: service.Product + (*ProjectResource)(nil), // 138: service.ProjectResource + (*ProjectSearchResult)(nil), // 139: service.ProjectSearchResult + (*ProjectActivity)(nil), // 140: service.ProjectActivity + (*Node)(nil), // 141: service.Node + (*ProjectInput)(nil), // 142: service.ProjectInput + (*MilestoneInput)(nil), // 143: service.MilestoneInput + (*TaskInput)(nil), // 144: service.TaskInput + (*ProjectUpdate)(nil), // 145: service.ProjectUpdate + (*Timestamped)(nil), // 146: service.Timestamped + (*Assignable)(nil), // 147: service.Assignable + (*ListOfEmployee_List)(nil), // 148: service.ListOfEmployee.List + (*ListOfInt_List)(nil), // 149: service.ListOfInt.List + (*ListOfListOfListOfTask_List)(nil), // 150: service.ListOfListOfListOfTask.List + (*ListOfListOfMilestone_List)(nil), // 151: service.ListOfListOfMilestone.List + (*ListOfListOfProject_List)(nil), // 152: service.ListOfListOfProject.List + (*ListOfListOfProjectResource_List)(nil), // 153: service.ListOfListOfProjectResource.List + (*ListOfListOfString_List)(nil), // 154: service.ListOfListOfString.List + (*ListOfListOfTask_List)(nil), // 155: service.ListOfListOfTask.List + (*ListOfMilestone_List)(nil), // 156: service.ListOfMilestone.List + (*ListOfProject_List)(nil), // 157: service.ListOfProject.List + (*ListOfProjectResource_List)(nil), // 158: service.ListOfProjectResource.List + (*ListOfString_List)(nil), // 159: service.ListOfString.List + (*ListOfTask_List)(nil), // 160: service.ListOfTask.List + (*wrapperspb.BoolValue)(nil), // 161: google.protobuf.BoolValue + (*wrapperspb.Int32Value)(nil), // 162: google.protobuf.Int32Value + (*wrapperspb.StringValue)(nil), // 163: google.protobuf.StringValue + (*wrapperspb.DoubleValue)(nil), // 164: google.protobuf.DoubleValue } var file_generated_service_proto_depIdxs = []int32{ - 143, // 0: service.ListOfEmployee.list:type_name -> service.ListOfEmployee.List - 144, // 1: service.ListOfInt.list:type_name -> service.ListOfInt.List - 145, // 2: service.ListOfListOfListOfTask.list:type_name -> service.ListOfListOfListOfTask.List - 146, // 3: service.ListOfListOfMilestone.list:type_name -> service.ListOfListOfMilestone.List - 147, // 4: service.ListOfListOfProject.list:type_name -> service.ListOfListOfProject.List - 148, // 5: service.ListOfListOfProjectResource.list:type_name -> service.ListOfListOfProjectResource.List - 149, // 6: service.ListOfListOfString.list:type_name -> service.ListOfListOfString.List - 150, // 7: service.ListOfListOfTask.list:type_name -> service.ListOfListOfTask.List - 151, // 8: service.ListOfMilestone.list:type_name -> service.ListOfMilestone.List - 152, // 9: service.ListOfProject.list:type_name -> service.ListOfProject.List - 153, // 10: service.ListOfProjectResource.list:type_name -> service.ListOfProjectResource.List - 154, // 11: service.ListOfString.list:type_name -> service.ListOfString.List - 155, // 12: service.ListOfTask.list:type_name -> service.ListOfTask.List + 148, // 0: service.ListOfEmployee.list:type_name -> service.ListOfEmployee.List + 149, // 1: service.ListOfInt.list:type_name -> service.ListOfInt.List + 150, // 2: service.ListOfListOfListOfTask.list:type_name -> service.ListOfListOfListOfTask.List + 151, // 3: service.ListOfListOfMilestone.list:type_name -> service.ListOfListOfMilestone.List + 152, // 4: service.ListOfListOfProject.list:type_name -> service.ListOfListOfProject.List + 153, // 5: service.ListOfListOfProjectResource.list:type_name -> service.ListOfListOfProjectResource.List + 154, // 6: service.ListOfListOfString.list:type_name -> service.ListOfListOfString.List + 155, // 7: service.ListOfListOfTask.list:type_name -> service.ListOfListOfTask.List + 156, // 8: service.ListOfMilestone.list:type_name -> service.ListOfMilestone.List + 157, // 9: service.ListOfProject.list:type_name -> service.ListOfProject.List + 158, // 10: service.ListOfProjectResource.list:type_name -> service.ListOfProjectResource.List + 159, // 11: service.ListOfString.list:type_name -> service.ListOfString.List + 160, // 12: service.ListOfTask.list:type_name -> service.ListOfTask.List 18, // 13: service.LookupProjectByIdRequest.keys:type_name -> service.LookupProjectByIdRequestKey - 128, // 14: service.LookupProjectByIdResponse.result:type_name -> service.Project + 133, // 14: service.LookupProjectByIdResponse.result:type_name -> service.Project 21, // 15: service.LookupMilestoneByIdRequest.keys:type_name -> service.LookupMilestoneByIdRequestKey - 129, // 16: service.LookupMilestoneByIdResponse.result:type_name -> service.Milestone + 134, // 16: service.LookupMilestoneByIdResponse.result:type_name -> service.Milestone 24, // 17: service.LookupTaskByIdRequest.keys:type_name -> service.LookupTaskByIdRequestKey - 130, // 18: service.LookupTaskByIdResponse.result:type_name -> service.Task + 135, // 18: service.LookupTaskByIdResponse.result:type_name -> service.Task 27, // 19: service.LookupEmployeeByIdRequest.keys:type_name -> service.LookupEmployeeByIdRequestKey - 131, // 20: service.LookupEmployeeByIdResponse.result:type_name -> service.Employee + 136, // 20: service.LookupEmployeeByIdResponse.result:type_name -> service.Employee 30, // 21: service.LookupProductByUpcRequest.keys:type_name -> service.LookupProductByUpcRequestKey - 132, // 22: service.LookupProductByUpcResponse.result:type_name -> service.Product - 128, // 23: service.QueryProjectsResponse.projects:type_name -> service.Project - 128, // 24: service.QueryProjectResponse.project:type_name -> service.Project + 137, // 22: service.LookupProductByUpcResponse.result:type_name -> service.Product + 133, // 23: service.QueryProjectsResponse.projects:type_name -> service.Project + 133, // 24: service.QueryProjectResponse.project:type_name -> service.Project 0, // 25: service.QueryProjectStatusesResponse.project_statuses:type_name -> service.ProjectStatus 0, // 26: service.QueryProjectsByStatusRequest.status:type_name -> service.ProjectStatus - 128, // 27: service.QueryProjectsByStatusResponse.projects_by_status:type_name -> service.Project - 133, // 28: service.QueryProjectResourcesResponse.project_resources:type_name -> service.ProjectResource - 134, // 29: service.QuerySearchProjectsResponse.search_projects:type_name -> service.ProjectSearchResult - 129, // 30: service.QueryMilestonesResponse.milestones:type_name -> service.Milestone - 130, // 31: service.QueryTasksResponse.tasks:type_name -> service.Task - 135, // 32: service.QueryProjectActivitiesResponse.project_activities:type_name -> service.ProjectActivity + 133, // 27: service.QueryProjectsByStatusResponse.projects_by_status:type_name -> service.Project + 138, // 28: service.QueryProjectResourcesResponse.project_resources:type_name -> service.ProjectResource + 139, // 29: service.QuerySearchProjectsResponse.search_projects:type_name -> service.ProjectSearchResult + 134, // 30: service.QueryMilestonesResponse.milestones:type_name -> service.Milestone + 135, // 31: service.QueryTasksResponse.tasks:type_name -> service.Task + 140, // 32: service.QueryProjectActivitiesResponse.project_activities:type_name -> service.ProjectActivity 16, // 33: service.QueryProjectTagsResponse.project_tags:type_name -> service.ListOfString - 128, // 34: service.QueryArchivedProjectsResponse.archived_projects:type_name -> service.Project + 133, // 34: service.QueryArchivedProjectsResponse.archived_projects:type_name -> service.Project 12, // 35: service.QueryTasksByPriorityResponse.tasks_by_priority:type_name -> service.ListOfListOfTask 10, // 36: service.QueryResourceMatrixResponse.resource_matrix:type_name -> service.ListOfListOfProjectResource - 136, // 37: service.QueryNodesByIdResponse.nodes_by_id:type_name -> service.Node - 137, // 38: service.MutationAddProjectRequest.project:type_name -> service.ProjectInput - 128, // 39: service.MutationAddProjectResponse.add_project:type_name -> service.Project - 138, // 40: service.MutationAddMilestoneRequest.milestone:type_name -> service.MilestoneInput - 129, // 41: service.MutationAddMilestoneResponse.add_milestone:type_name -> service.Milestone - 139, // 42: service.MutationAddTaskRequest.task:type_name -> service.TaskInput - 130, // 43: service.MutationAddTaskResponse.add_task:type_name -> service.Task + 141, // 37: service.QueryNodesByIdResponse.nodes_by_id:type_name -> service.Node + 142, // 38: service.MutationAddProjectRequest.project:type_name -> service.ProjectInput + 133, // 39: service.MutationAddProjectResponse.add_project:type_name -> service.Project + 143, // 40: service.MutationAddMilestoneRequest.milestone:type_name -> service.MilestoneInput + 134, // 41: service.MutationAddMilestoneResponse.add_milestone:type_name -> service.Milestone + 144, // 42: service.MutationAddTaskRequest.task:type_name -> service.TaskInput + 135, // 43: service.MutationAddTaskResponse.add_task:type_name -> service.Task 0, // 44: service.MutationUpdateProjectStatusRequest.status:type_name -> service.ProjectStatus - 140, // 45: service.MutationUpdateProjectStatusResponse.update_project_status:type_name -> service.ProjectUpdate - 2, // 46: service.ResolveProjectFilteredTasksArgs.status:type_name -> service.TaskStatus - 3, // 47: service.ResolveProjectFilteredTasksArgs.priority:type_name -> service.TaskPriority - 156, // 48: service.ResolveProjectFilteredTasksArgs.limit:type_name -> google.protobuf.Int32Value - 74, // 49: service.ResolveProjectFilteredTasksRequest.context:type_name -> service.ResolveProjectFilteredTasksContext - 73, // 50: service.ResolveProjectFilteredTasksRequest.field_args:type_name -> service.ResolveProjectFilteredTasksArgs - 130, // 51: service.ResolveProjectFilteredTasksResult.filtered_tasks:type_name -> service.Task - 76, // 52: service.ResolveProjectFilteredTasksResponse.result:type_name -> service.ResolveProjectFilteredTasksResult - 157, // 53: service.ResolveProjectCompletionRateArgs.include_subtasks:type_name -> google.protobuf.BoolValue - 158, // 54: service.ResolveProjectCompletionRateContext.start_date:type_name -> google.protobuf.StringValue - 158, // 55: service.ResolveProjectCompletionRateContext.end_date:type_name -> google.protobuf.StringValue - 0, // 56: service.ResolveProjectCompletionRateContext.status:type_name -> service.ProjectStatus - 79, // 57: service.ResolveProjectCompletionRateRequest.context:type_name -> service.ResolveProjectCompletionRateContext - 78, // 58: service.ResolveProjectCompletionRateRequest.field_args:type_name -> service.ResolveProjectCompletionRateArgs - 81, // 59: service.ResolveProjectCompletionRateResponse.result:type_name -> service.ResolveProjectCompletionRateResult - 158, // 60: service.ResolveProjectEstimatedDaysRemainingArgs.from_date:type_name -> google.protobuf.StringValue - 158, // 61: service.ResolveProjectEstimatedDaysRemainingContext.end_date:type_name -> google.protobuf.StringValue - 0, // 62: service.ResolveProjectEstimatedDaysRemainingContext.status:type_name -> service.ProjectStatus - 84, // 63: service.ResolveProjectEstimatedDaysRemainingRequest.context:type_name -> service.ResolveProjectEstimatedDaysRemainingContext - 83, // 64: service.ResolveProjectEstimatedDaysRemainingRequest.field_args:type_name -> service.ResolveProjectEstimatedDaysRemainingArgs - 156, // 65: service.ResolveProjectEstimatedDaysRemainingResult.estimated_days_remaining:type_name -> google.protobuf.Int32Value - 86, // 66: service.ResolveProjectEstimatedDaysRemainingResponse.result:type_name -> service.ResolveProjectEstimatedDaysRemainingResult - 156, // 67: service.ResolveProjectCriticalDeadlineArgs.within_days:type_name -> google.protobuf.Int32Value - 0, // 68: service.ResolveProjectCriticalDeadlineContext.status:type_name -> service.ProjectStatus - 129, // 69: service.ResolveProjectCriticalDeadlineContext.milestones:type_name -> service.Milestone - 89, // 70: service.ResolveProjectCriticalDeadlineRequest.context:type_name -> service.ResolveProjectCriticalDeadlineContext - 88, // 71: service.ResolveProjectCriticalDeadlineRequest.field_args:type_name -> service.ResolveProjectCriticalDeadlineArgs - 141, // 72: service.ResolveProjectCriticalDeadlineResult.critical_deadline:type_name -> service.Timestamped - 91, // 73: service.ResolveProjectCriticalDeadlineResponse.result:type_name -> service.ResolveProjectCriticalDeadlineResult - 158, // 74: service.ResolveProjectTopPriorityItemArgs.category:type_name -> google.protobuf.StringValue - 0, // 75: service.ResolveProjectTopPriorityItemContext.status:type_name -> service.ProjectStatus - 94, // 76: service.ResolveProjectTopPriorityItemRequest.context:type_name -> service.ResolveProjectTopPriorityItemContext - 93, // 77: service.ResolveProjectTopPriorityItemRequest.field_args:type_name -> service.ResolveProjectTopPriorityItemArgs - 134, // 78: service.ResolveProjectTopPriorityItemResult.top_priority_item:type_name -> service.ProjectSearchResult - 96, // 79: service.ResolveProjectTopPriorityItemResponse.result:type_name -> service.ResolveProjectTopPriorityItemResult - 159, // 80: service.ResolveMilestoneIsAtRiskArgs.threshold:type_name -> google.protobuf.DoubleValue - 158, // 81: service.ResolveMilestoneIsAtRiskContext.end_date:type_name -> google.protobuf.StringValue - 1, // 82: service.ResolveMilestoneIsAtRiskContext.status:type_name -> service.MilestoneStatus - 159, // 83: service.ResolveMilestoneIsAtRiskContext.completion_percentage:type_name -> google.protobuf.DoubleValue - 99, // 84: service.ResolveMilestoneIsAtRiskRequest.context:type_name -> service.ResolveMilestoneIsAtRiskContext - 98, // 85: service.ResolveMilestoneIsAtRiskRequest.field_args:type_name -> service.ResolveMilestoneIsAtRiskArgs - 101, // 86: service.ResolveMilestoneIsAtRiskResponse.result:type_name -> service.ResolveMilestoneIsAtRiskResult - 158, // 87: service.ResolveMilestoneDaysUntilDueArgs.from_date:type_name -> google.protobuf.StringValue - 158, // 88: service.ResolveMilestoneDaysUntilDueContext.end_date:type_name -> google.protobuf.StringValue - 104, // 89: service.ResolveMilestoneDaysUntilDueRequest.context:type_name -> service.ResolveMilestoneDaysUntilDueContext - 103, // 90: service.ResolveMilestoneDaysUntilDueRequest.field_args:type_name -> service.ResolveMilestoneDaysUntilDueArgs - 156, // 91: service.ResolveMilestoneDaysUntilDueResult.days_until_due:type_name -> google.protobuf.Int32Value - 106, // 92: service.ResolveMilestoneDaysUntilDueResponse.result:type_name -> service.ResolveMilestoneDaysUntilDueResult - 157, // 93: service.ResolveTaskIsBlockedArgs.check_dependencies:type_name -> google.protobuf.BoolValue - 2, // 94: service.ResolveTaskIsBlockedContext.status:type_name -> service.TaskStatus - 109, // 95: service.ResolveTaskIsBlockedRequest.context:type_name -> service.ResolveTaskIsBlockedContext - 108, // 96: service.ResolveTaskIsBlockedRequest.field_args:type_name -> service.ResolveTaskIsBlockedArgs - 111, // 97: service.ResolveTaskIsBlockedResponse.result:type_name -> service.ResolveTaskIsBlockedResult - 157, // 98: service.ResolveTaskTotalEffortArgs.include_subtasks:type_name -> google.protobuf.BoolValue - 159, // 99: service.ResolveTaskTotalEffortContext.estimated_hours:type_name -> google.protobuf.DoubleValue - 159, // 100: service.ResolveTaskTotalEffortContext.actual_hours:type_name -> google.protobuf.DoubleValue - 114, // 101: service.ResolveTaskTotalEffortRequest.context:type_name -> service.ResolveTaskTotalEffortContext - 113, // 102: service.ResolveTaskTotalEffortRequest.field_args:type_name -> service.ResolveTaskTotalEffortArgs - 159, // 103: service.ResolveTaskTotalEffortResult.total_effort:type_name -> google.protobuf.DoubleValue - 116, // 104: service.ResolveTaskTotalEffortResponse.result:type_name -> service.ResolveTaskTotalEffortResult - 157, // 105: service.ResolveEmployeeCurrentWorkloadArgs.include_completed:type_name -> google.protobuf.BoolValue - 158, // 106: service.ResolveEmployeeCurrentWorkloadArgs.project_id:type_name -> google.protobuf.StringValue - 119, // 107: service.ResolveEmployeeCurrentWorkloadRequest.context:type_name -> service.ResolveEmployeeCurrentWorkloadContext - 118, // 108: service.ResolveEmployeeCurrentWorkloadRequest.field_args:type_name -> service.ResolveEmployeeCurrentWorkloadArgs - 121, // 109: service.ResolveEmployeeCurrentWorkloadResponse.result:type_name -> service.ResolveEmployeeCurrentWorkloadResult - 158, // 110: service.ResolveEmployeeAverageTaskCompletionDaysArgs.project_id:type_name -> google.protobuf.StringValue - 3, // 111: service.ResolveEmployeeAverageTaskCompletionDaysArgs.priority:type_name -> service.TaskPriority - 124, // 112: service.ResolveEmployeeAverageTaskCompletionDaysRequest.context:type_name -> service.ResolveEmployeeAverageTaskCompletionDaysContext - 123, // 113: service.ResolveEmployeeAverageTaskCompletionDaysRequest.field_args:type_name -> service.ResolveEmployeeAverageTaskCompletionDaysArgs - 159, // 114: service.ResolveEmployeeAverageTaskCompletionDaysResult.average_task_completion_days:type_name -> google.protobuf.DoubleValue - 126, // 115: service.ResolveEmployeeAverageTaskCompletionDaysResponse.result:type_name -> service.ResolveEmployeeAverageTaskCompletionDaysResult - 158, // 116: service.Project.description:type_name -> google.protobuf.StringValue - 158, // 117: service.Project.start_date:type_name -> google.protobuf.StringValue - 158, // 118: service.Project.end_date:type_name -> google.protobuf.StringValue - 0, // 119: service.Project.status:type_name -> service.ProjectStatus - 131, // 120: service.Project.team_members:type_name -> service.Employee - 132, // 121: service.Project.related_products:type_name -> service.Product - 16, // 122: service.Project.milestone_ids:type_name -> service.ListOfString - 129, // 123: service.Project.milestones:type_name -> service.Milestone - 130, // 124: service.Project.tasks:type_name -> service.Task - 159, // 125: service.Project.progress:type_name -> google.protobuf.DoubleValue - 16, // 126: service.Project.tags:type_name -> service.ListOfString - 14, // 127: service.Project.alternative_projects:type_name -> service.ListOfProject - 14, // 128: service.Project.dependencies:type_name -> service.ListOfProject - 10, // 129: service.Project.resource_groups:type_name -> service.ListOfListOfProjectResource - 12, // 130: service.Project.tasks_by_phase:type_name -> service.ListOfListOfTask - 8, // 131: service.Project.milestone_groups:type_name -> service.ListOfListOfMilestone - 7, // 132: service.Project.priority_matrix:type_name -> service.ListOfListOfListOfTask - 158, // 133: service.Milestone.description:type_name -> google.protobuf.StringValue - 158, // 134: service.Milestone.start_date:type_name -> google.protobuf.StringValue - 158, // 135: service.Milestone.end_date:type_name -> google.protobuf.StringValue - 1, // 136: service.Milestone.status:type_name -> service.MilestoneStatus - 159, // 137: service.Milestone.completion_percentage:type_name -> google.protobuf.DoubleValue - 129, // 138: service.Milestone.dependencies:type_name -> service.Milestone - 17, // 139: service.Milestone.subtasks:type_name -> service.ListOfTask - 5, // 140: service.Milestone.reviewers:type_name -> service.ListOfEmployee - 158, // 141: service.Task.milestone_id:type_name -> google.protobuf.StringValue - 156, // 142: service.Task.assignee_id:type_name -> google.protobuf.Int32Value - 158, // 143: service.Task.description:type_name -> google.protobuf.StringValue - 3, // 144: service.Task.priority:type_name -> service.TaskPriority - 2, // 145: service.Task.status:type_name -> service.TaskStatus - 159, // 146: service.Task.estimated_hours:type_name -> google.protobuf.DoubleValue - 159, // 147: service.Task.actual_hours:type_name -> google.protobuf.DoubleValue - 158, // 148: service.Task.created_at:type_name -> google.protobuf.StringValue - 158, // 149: service.Task.completed_at:type_name -> google.protobuf.StringValue - 16, // 150: service.Task.labels:type_name -> service.ListOfString - 17, // 151: service.Task.subtasks:type_name -> service.ListOfTask - 130, // 152: service.Task.dependencies:type_name -> service.Task - 6, // 153: service.Task.reviewer_ids:type_name -> service.ListOfInt - 14, // 154: service.Employee.projects:type_name -> service.ListOfProject - 130, // 155: service.Employee.assigned_tasks:type_name -> service.Task - 130, // 156: service.Employee.completed_tasks:type_name -> service.Task - 16, // 157: service.Employee.skills:type_name -> service.ListOfString - 16, // 158: service.Employee.certifications:type_name -> service.ListOfString - 9, // 159: service.Employee.project_history:type_name -> service.ListOfListOfProject - 14, // 160: service.Product.projects:type_name -> service.ListOfProject - 11, // 161: service.Product.feature_matrix:type_name -> service.ListOfListOfString - 131, // 162: service.ProjectResource.employee:type_name -> service.Employee - 132, // 163: service.ProjectResource.product:type_name -> service.Product - 129, // 164: service.ProjectResource.milestone:type_name -> service.Milestone - 130, // 165: service.ProjectResource.task:type_name -> service.Task - 128, // 166: service.ProjectSearchResult.project:type_name -> service.Project - 129, // 167: service.ProjectSearchResult.milestone:type_name -> service.Milestone - 130, // 168: service.ProjectSearchResult.task:type_name -> service.Task - 140, // 169: service.ProjectActivity.project_update:type_name -> service.ProjectUpdate - 129, // 170: service.ProjectActivity.milestone:type_name -> service.Milestone - 130, // 171: service.ProjectActivity.task:type_name -> service.Task - 128, // 172: service.Node.project:type_name -> service.Project - 129, // 173: service.Node.milestone:type_name -> service.Milestone - 130, // 174: service.Node.task:type_name -> service.Task - 140, // 175: service.Node.project_update:type_name -> service.ProjectUpdate - 158, // 176: service.ProjectInput.description:type_name -> google.protobuf.StringValue - 158, // 177: service.ProjectInput.start_date:type_name -> google.protobuf.StringValue - 158, // 178: service.ProjectInput.end_date:type_name -> google.protobuf.StringValue - 0, // 179: service.ProjectInput.status:type_name -> service.ProjectStatus - 158, // 180: service.MilestoneInput.description:type_name -> google.protobuf.StringValue - 158, // 181: service.MilestoneInput.due_date:type_name -> google.protobuf.StringValue - 1, // 182: service.MilestoneInput.status:type_name -> service.MilestoneStatus - 156, // 183: service.TaskInput.assignee_id:type_name -> google.protobuf.Int32Value - 158, // 184: service.TaskInput.description:type_name -> google.protobuf.StringValue - 3, // 185: service.TaskInput.priority:type_name -> service.TaskPriority - 2, // 186: service.TaskInput.status:type_name -> service.TaskStatus - 159, // 187: service.TaskInput.estimated_hours:type_name -> google.protobuf.DoubleValue - 4, // 188: service.ProjectUpdate.update_type:type_name -> service.ProjectUpdateType - 158, // 189: service.ProjectUpdate.metadata:type_name -> google.protobuf.StringValue - 128, // 190: service.Timestamped.project:type_name -> service.Project - 129, // 191: service.Timestamped.milestone:type_name -> service.Milestone - 130, // 192: service.Assignable.task:type_name -> service.Task - 131, // 193: service.ListOfEmployee.List.items:type_name -> service.Employee - 12, // 194: service.ListOfListOfListOfTask.List.items:type_name -> service.ListOfListOfTask - 13, // 195: service.ListOfListOfMilestone.List.items:type_name -> service.ListOfMilestone - 14, // 196: service.ListOfListOfProject.List.items:type_name -> service.ListOfProject - 15, // 197: service.ListOfListOfProjectResource.List.items:type_name -> service.ListOfProjectResource - 16, // 198: service.ListOfListOfString.List.items:type_name -> service.ListOfString - 17, // 199: service.ListOfListOfTask.List.items:type_name -> service.ListOfTask - 129, // 200: service.ListOfMilestone.List.items:type_name -> service.Milestone - 128, // 201: service.ListOfProject.List.items:type_name -> service.Project - 133, // 202: service.ListOfProjectResource.List.items:type_name -> service.ProjectResource - 130, // 203: service.ListOfTask.List.items:type_name -> service.Task - 28, // 204: service.ProjectsService.LookupEmployeeById:input_type -> service.LookupEmployeeByIdRequest - 22, // 205: service.ProjectsService.LookupMilestoneById:input_type -> service.LookupMilestoneByIdRequest - 31, // 206: service.ProjectsService.LookupProductByUpc:input_type -> service.LookupProductByUpcRequest - 19, // 207: service.ProjectsService.LookupProjectById:input_type -> service.LookupProjectByIdRequest - 25, // 208: service.ProjectsService.LookupTaskById:input_type -> service.LookupTaskByIdRequest - 67, // 209: service.ProjectsService.MutationAddMilestone:input_type -> service.MutationAddMilestoneRequest - 65, // 210: service.ProjectsService.MutationAddProject:input_type -> service.MutationAddProjectRequest - 69, // 211: service.ProjectsService.MutationAddTask:input_type -> service.MutationAddTaskRequest - 71, // 212: service.ProjectsService.MutationUpdateProjectStatus:input_type -> service.MutationUpdateProjectStatusRequest - 53, // 213: service.ProjectsService.QueryArchivedProjects:input_type -> service.QueryArchivedProjectsRequest - 59, // 214: service.ProjectsService.QueryKillService:input_type -> service.QueryKillServiceRequest - 45, // 215: service.ProjectsService.QueryMilestones:input_type -> service.QueryMilestonesRequest - 63, // 216: service.ProjectsService.QueryNodesById:input_type -> service.QueryNodesByIdRequest - 61, // 217: service.ProjectsService.QueryPanic:input_type -> service.QueryPanicRequest - 35, // 218: service.ProjectsService.QueryProject:input_type -> service.QueryProjectRequest - 49, // 219: service.ProjectsService.QueryProjectActivities:input_type -> service.QueryProjectActivitiesRequest - 41, // 220: service.ProjectsService.QueryProjectResources:input_type -> service.QueryProjectResourcesRequest - 37, // 221: service.ProjectsService.QueryProjectStatuses:input_type -> service.QueryProjectStatusesRequest - 51, // 222: service.ProjectsService.QueryProjectTags:input_type -> service.QueryProjectTagsRequest - 33, // 223: service.ProjectsService.QueryProjects:input_type -> service.QueryProjectsRequest - 39, // 224: service.ProjectsService.QueryProjectsByStatus:input_type -> service.QueryProjectsByStatusRequest - 57, // 225: service.ProjectsService.QueryResourceMatrix:input_type -> service.QueryResourceMatrixRequest - 43, // 226: service.ProjectsService.QuerySearchProjects:input_type -> service.QuerySearchProjectsRequest - 47, // 227: service.ProjectsService.QueryTasks:input_type -> service.QueryTasksRequest - 55, // 228: service.ProjectsService.QueryTasksByPriority:input_type -> service.QueryTasksByPriorityRequest - 125, // 229: service.ProjectsService.ResolveEmployeeAverageTaskCompletionDays:input_type -> service.ResolveEmployeeAverageTaskCompletionDaysRequest - 120, // 230: service.ProjectsService.ResolveEmployeeCurrentWorkload:input_type -> service.ResolveEmployeeCurrentWorkloadRequest - 105, // 231: service.ProjectsService.ResolveMilestoneDaysUntilDue:input_type -> service.ResolveMilestoneDaysUntilDueRequest - 100, // 232: service.ProjectsService.ResolveMilestoneIsAtRisk:input_type -> service.ResolveMilestoneIsAtRiskRequest - 80, // 233: service.ProjectsService.ResolveProjectCompletionRate:input_type -> service.ResolveProjectCompletionRateRequest - 90, // 234: service.ProjectsService.ResolveProjectCriticalDeadline:input_type -> service.ResolveProjectCriticalDeadlineRequest - 85, // 235: service.ProjectsService.ResolveProjectEstimatedDaysRemaining:input_type -> service.ResolveProjectEstimatedDaysRemainingRequest - 75, // 236: service.ProjectsService.ResolveProjectFilteredTasks:input_type -> service.ResolveProjectFilteredTasksRequest - 95, // 237: service.ProjectsService.ResolveProjectTopPriorityItem:input_type -> service.ResolveProjectTopPriorityItemRequest - 110, // 238: service.ProjectsService.ResolveTaskIsBlocked:input_type -> service.ResolveTaskIsBlockedRequest - 115, // 239: service.ProjectsService.ResolveTaskTotalEffort:input_type -> service.ResolveTaskTotalEffortRequest - 29, // 240: service.ProjectsService.LookupEmployeeById:output_type -> service.LookupEmployeeByIdResponse - 23, // 241: service.ProjectsService.LookupMilestoneById:output_type -> service.LookupMilestoneByIdResponse - 32, // 242: service.ProjectsService.LookupProductByUpc:output_type -> service.LookupProductByUpcResponse - 20, // 243: service.ProjectsService.LookupProjectById:output_type -> service.LookupProjectByIdResponse - 26, // 244: service.ProjectsService.LookupTaskById:output_type -> service.LookupTaskByIdResponse - 68, // 245: service.ProjectsService.MutationAddMilestone:output_type -> service.MutationAddMilestoneResponse - 66, // 246: service.ProjectsService.MutationAddProject:output_type -> service.MutationAddProjectResponse - 70, // 247: service.ProjectsService.MutationAddTask:output_type -> service.MutationAddTaskResponse - 72, // 248: service.ProjectsService.MutationUpdateProjectStatus:output_type -> service.MutationUpdateProjectStatusResponse - 54, // 249: service.ProjectsService.QueryArchivedProjects:output_type -> service.QueryArchivedProjectsResponse - 60, // 250: service.ProjectsService.QueryKillService:output_type -> service.QueryKillServiceResponse - 46, // 251: service.ProjectsService.QueryMilestones:output_type -> service.QueryMilestonesResponse - 64, // 252: service.ProjectsService.QueryNodesById:output_type -> service.QueryNodesByIdResponse - 62, // 253: service.ProjectsService.QueryPanic:output_type -> service.QueryPanicResponse - 36, // 254: service.ProjectsService.QueryProject:output_type -> service.QueryProjectResponse - 50, // 255: service.ProjectsService.QueryProjectActivities:output_type -> service.QueryProjectActivitiesResponse - 42, // 256: service.ProjectsService.QueryProjectResources:output_type -> service.QueryProjectResourcesResponse - 38, // 257: service.ProjectsService.QueryProjectStatuses:output_type -> service.QueryProjectStatusesResponse - 52, // 258: service.ProjectsService.QueryProjectTags:output_type -> service.QueryProjectTagsResponse - 34, // 259: service.ProjectsService.QueryProjects:output_type -> service.QueryProjectsResponse - 40, // 260: service.ProjectsService.QueryProjectsByStatus:output_type -> service.QueryProjectsByStatusResponse - 58, // 261: service.ProjectsService.QueryResourceMatrix:output_type -> service.QueryResourceMatrixResponse - 44, // 262: service.ProjectsService.QuerySearchProjects:output_type -> service.QuerySearchProjectsResponse - 48, // 263: service.ProjectsService.QueryTasks:output_type -> service.QueryTasksResponse - 56, // 264: service.ProjectsService.QueryTasksByPriority:output_type -> service.QueryTasksByPriorityResponse - 127, // 265: service.ProjectsService.ResolveEmployeeAverageTaskCompletionDays:output_type -> service.ResolveEmployeeAverageTaskCompletionDaysResponse - 122, // 266: service.ProjectsService.ResolveEmployeeCurrentWorkload:output_type -> service.ResolveEmployeeCurrentWorkloadResponse - 107, // 267: service.ProjectsService.ResolveMilestoneDaysUntilDue:output_type -> service.ResolveMilestoneDaysUntilDueResponse - 102, // 268: service.ProjectsService.ResolveMilestoneIsAtRisk:output_type -> service.ResolveMilestoneIsAtRiskResponse - 82, // 269: service.ProjectsService.ResolveProjectCompletionRate:output_type -> service.ResolveProjectCompletionRateResponse - 92, // 270: service.ProjectsService.ResolveProjectCriticalDeadline:output_type -> service.ResolveProjectCriticalDeadlineResponse - 87, // 271: service.ProjectsService.ResolveProjectEstimatedDaysRemaining:output_type -> service.ResolveProjectEstimatedDaysRemainingResponse - 77, // 272: service.ProjectsService.ResolveProjectFilteredTasks:output_type -> service.ResolveProjectFilteredTasksResponse - 97, // 273: service.ProjectsService.ResolveProjectTopPriorityItem:output_type -> service.ResolveProjectTopPriorityItemResponse - 112, // 274: service.ProjectsService.ResolveTaskIsBlocked:output_type -> service.ResolveTaskIsBlockedResponse - 117, // 275: service.ProjectsService.ResolveTaskTotalEffort:output_type -> service.ResolveTaskTotalEffortResponse - 240, // [240:276] is the sub-list for method output_type - 204, // [204:240] is the sub-list for method input_type - 204, // [204:204] is the sub-list for extension type_name - 204, // [204:204] is the sub-list for extension extendee - 0, // [0:204] is the sub-list for field type_name + 145, // 45: service.MutationUpdateProjectStatusResponse.update_project_status:type_name -> service.ProjectUpdate + 161, // 46: service.ResolveProjectSubProjectsArgs.include_archived:type_name -> google.protobuf.BoolValue + 0, // 47: service.ResolveProjectSubProjectsContext.status:type_name -> service.ProjectStatus + 74, // 48: service.ResolveProjectSubProjectsRequest.context:type_name -> service.ResolveProjectSubProjectsContext + 73, // 49: service.ResolveProjectSubProjectsRequest.field_args:type_name -> service.ResolveProjectSubProjectsArgs + 133, // 50: service.ResolveProjectSubProjectsResult.sub_projects:type_name -> service.Project + 76, // 51: service.ResolveProjectSubProjectsResponse.result:type_name -> service.ResolveProjectSubProjectsResult + 2, // 52: service.ResolveProjectFilteredTasksArgs.status:type_name -> service.TaskStatus + 3, // 53: service.ResolveProjectFilteredTasksArgs.priority:type_name -> service.TaskPriority + 162, // 54: service.ResolveProjectFilteredTasksArgs.limit:type_name -> google.protobuf.Int32Value + 79, // 55: service.ResolveProjectFilteredTasksRequest.context:type_name -> service.ResolveProjectFilteredTasksContext + 78, // 56: service.ResolveProjectFilteredTasksRequest.field_args:type_name -> service.ResolveProjectFilteredTasksArgs + 135, // 57: service.ResolveProjectFilteredTasksResult.filtered_tasks:type_name -> service.Task + 81, // 58: service.ResolveProjectFilteredTasksResponse.result:type_name -> service.ResolveProjectFilteredTasksResult + 161, // 59: service.ResolveProjectCompletionRateArgs.include_subtasks:type_name -> google.protobuf.BoolValue + 163, // 60: service.ResolveProjectCompletionRateContext.start_date:type_name -> google.protobuf.StringValue + 163, // 61: service.ResolveProjectCompletionRateContext.end_date:type_name -> google.protobuf.StringValue + 0, // 62: service.ResolveProjectCompletionRateContext.status:type_name -> service.ProjectStatus + 84, // 63: service.ResolveProjectCompletionRateRequest.context:type_name -> service.ResolveProjectCompletionRateContext + 83, // 64: service.ResolveProjectCompletionRateRequest.field_args:type_name -> service.ResolveProjectCompletionRateArgs + 86, // 65: service.ResolveProjectCompletionRateResponse.result:type_name -> service.ResolveProjectCompletionRateResult + 163, // 66: service.ResolveProjectEstimatedDaysRemainingArgs.from_date:type_name -> google.protobuf.StringValue + 163, // 67: service.ResolveProjectEstimatedDaysRemainingContext.end_date:type_name -> google.protobuf.StringValue + 0, // 68: service.ResolveProjectEstimatedDaysRemainingContext.status:type_name -> service.ProjectStatus + 89, // 69: service.ResolveProjectEstimatedDaysRemainingRequest.context:type_name -> service.ResolveProjectEstimatedDaysRemainingContext + 88, // 70: service.ResolveProjectEstimatedDaysRemainingRequest.field_args:type_name -> service.ResolveProjectEstimatedDaysRemainingArgs + 162, // 71: service.ResolveProjectEstimatedDaysRemainingResult.estimated_days_remaining:type_name -> google.protobuf.Int32Value + 91, // 72: service.ResolveProjectEstimatedDaysRemainingResponse.result:type_name -> service.ResolveProjectEstimatedDaysRemainingResult + 162, // 73: service.ResolveProjectCriticalDeadlineArgs.within_days:type_name -> google.protobuf.Int32Value + 0, // 74: service.ResolveProjectCriticalDeadlineContext.status:type_name -> service.ProjectStatus + 134, // 75: service.ResolveProjectCriticalDeadlineContext.milestones:type_name -> service.Milestone + 94, // 76: service.ResolveProjectCriticalDeadlineRequest.context:type_name -> service.ResolveProjectCriticalDeadlineContext + 93, // 77: service.ResolveProjectCriticalDeadlineRequest.field_args:type_name -> service.ResolveProjectCriticalDeadlineArgs + 146, // 78: service.ResolveProjectCriticalDeadlineResult.critical_deadline:type_name -> service.Timestamped + 96, // 79: service.ResolveProjectCriticalDeadlineResponse.result:type_name -> service.ResolveProjectCriticalDeadlineResult + 163, // 80: service.ResolveProjectTopPriorityItemArgs.category:type_name -> google.protobuf.StringValue + 0, // 81: service.ResolveProjectTopPriorityItemContext.status:type_name -> service.ProjectStatus + 99, // 82: service.ResolveProjectTopPriorityItemRequest.context:type_name -> service.ResolveProjectTopPriorityItemContext + 98, // 83: service.ResolveProjectTopPriorityItemRequest.field_args:type_name -> service.ResolveProjectTopPriorityItemArgs + 139, // 84: service.ResolveProjectTopPriorityItemResult.top_priority_item:type_name -> service.ProjectSearchResult + 101, // 85: service.ResolveProjectTopPriorityItemResponse.result:type_name -> service.ResolveProjectTopPriorityItemResult + 164, // 86: service.ResolveMilestoneIsAtRiskArgs.threshold:type_name -> google.protobuf.DoubleValue + 163, // 87: service.ResolveMilestoneIsAtRiskContext.end_date:type_name -> google.protobuf.StringValue + 1, // 88: service.ResolveMilestoneIsAtRiskContext.status:type_name -> service.MilestoneStatus + 164, // 89: service.ResolveMilestoneIsAtRiskContext.completion_percentage:type_name -> google.protobuf.DoubleValue + 104, // 90: service.ResolveMilestoneIsAtRiskRequest.context:type_name -> service.ResolveMilestoneIsAtRiskContext + 103, // 91: service.ResolveMilestoneIsAtRiskRequest.field_args:type_name -> service.ResolveMilestoneIsAtRiskArgs + 106, // 92: service.ResolveMilestoneIsAtRiskResponse.result:type_name -> service.ResolveMilestoneIsAtRiskResult + 163, // 93: service.ResolveMilestoneDaysUntilDueArgs.from_date:type_name -> google.protobuf.StringValue + 163, // 94: service.ResolveMilestoneDaysUntilDueContext.end_date:type_name -> google.protobuf.StringValue + 109, // 95: service.ResolveMilestoneDaysUntilDueRequest.context:type_name -> service.ResolveMilestoneDaysUntilDueContext + 108, // 96: service.ResolveMilestoneDaysUntilDueRequest.field_args:type_name -> service.ResolveMilestoneDaysUntilDueArgs + 162, // 97: service.ResolveMilestoneDaysUntilDueResult.days_until_due:type_name -> google.protobuf.Int32Value + 111, // 98: service.ResolveMilestoneDaysUntilDueResponse.result:type_name -> service.ResolveMilestoneDaysUntilDueResult + 161, // 99: service.ResolveTaskIsBlockedArgs.check_dependencies:type_name -> google.protobuf.BoolValue + 2, // 100: service.ResolveTaskIsBlockedContext.status:type_name -> service.TaskStatus + 114, // 101: service.ResolveTaskIsBlockedRequest.context:type_name -> service.ResolveTaskIsBlockedContext + 113, // 102: service.ResolveTaskIsBlockedRequest.field_args:type_name -> service.ResolveTaskIsBlockedArgs + 116, // 103: service.ResolveTaskIsBlockedResponse.result:type_name -> service.ResolveTaskIsBlockedResult + 161, // 104: service.ResolveTaskTotalEffortArgs.include_subtasks:type_name -> google.protobuf.BoolValue + 164, // 105: service.ResolveTaskTotalEffortContext.estimated_hours:type_name -> google.protobuf.DoubleValue + 164, // 106: service.ResolveTaskTotalEffortContext.actual_hours:type_name -> google.protobuf.DoubleValue + 119, // 107: service.ResolveTaskTotalEffortRequest.context:type_name -> service.ResolveTaskTotalEffortContext + 118, // 108: service.ResolveTaskTotalEffortRequest.field_args:type_name -> service.ResolveTaskTotalEffortArgs + 164, // 109: service.ResolveTaskTotalEffortResult.total_effort:type_name -> google.protobuf.DoubleValue + 121, // 110: service.ResolveTaskTotalEffortResponse.result:type_name -> service.ResolveTaskTotalEffortResult + 161, // 111: service.ResolveEmployeeCurrentWorkloadArgs.include_completed:type_name -> google.protobuf.BoolValue + 163, // 112: service.ResolveEmployeeCurrentWorkloadArgs.project_id:type_name -> google.protobuf.StringValue + 124, // 113: service.ResolveEmployeeCurrentWorkloadRequest.context:type_name -> service.ResolveEmployeeCurrentWorkloadContext + 123, // 114: service.ResolveEmployeeCurrentWorkloadRequest.field_args:type_name -> service.ResolveEmployeeCurrentWorkloadArgs + 126, // 115: service.ResolveEmployeeCurrentWorkloadResponse.result:type_name -> service.ResolveEmployeeCurrentWorkloadResult + 163, // 116: service.ResolveEmployeeAverageTaskCompletionDaysArgs.project_id:type_name -> google.protobuf.StringValue + 3, // 117: service.ResolveEmployeeAverageTaskCompletionDaysArgs.priority:type_name -> service.TaskPriority + 129, // 118: service.ResolveEmployeeAverageTaskCompletionDaysRequest.context:type_name -> service.ResolveEmployeeAverageTaskCompletionDaysContext + 128, // 119: service.ResolveEmployeeAverageTaskCompletionDaysRequest.field_args:type_name -> service.ResolveEmployeeAverageTaskCompletionDaysArgs + 164, // 120: service.ResolveEmployeeAverageTaskCompletionDaysResult.average_task_completion_days:type_name -> google.protobuf.DoubleValue + 131, // 121: service.ResolveEmployeeAverageTaskCompletionDaysResponse.result:type_name -> service.ResolveEmployeeAverageTaskCompletionDaysResult + 163, // 122: service.Project.description:type_name -> google.protobuf.StringValue + 163, // 123: service.Project.start_date:type_name -> google.protobuf.StringValue + 163, // 124: service.Project.end_date:type_name -> google.protobuf.StringValue + 0, // 125: service.Project.status:type_name -> service.ProjectStatus + 136, // 126: service.Project.team_members:type_name -> service.Employee + 137, // 127: service.Project.related_products:type_name -> service.Product + 16, // 128: service.Project.milestone_ids:type_name -> service.ListOfString + 134, // 129: service.Project.milestones:type_name -> service.Milestone + 135, // 130: service.Project.tasks:type_name -> service.Task + 164, // 131: service.Project.progress:type_name -> google.protobuf.DoubleValue + 16, // 132: service.Project.tags:type_name -> service.ListOfString + 14, // 133: service.Project.alternative_projects:type_name -> service.ListOfProject + 14, // 134: service.Project.dependencies:type_name -> service.ListOfProject + 10, // 135: service.Project.resource_groups:type_name -> service.ListOfListOfProjectResource + 12, // 136: service.Project.tasks_by_phase:type_name -> service.ListOfListOfTask + 8, // 137: service.Project.milestone_groups:type_name -> service.ListOfListOfMilestone + 7, // 138: service.Project.priority_matrix:type_name -> service.ListOfListOfListOfTask + 163, // 139: service.Milestone.description:type_name -> google.protobuf.StringValue + 163, // 140: service.Milestone.start_date:type_name -> google.protobuf.StringValue + 163, // 141: service.Milestone.end_date:type_name -> google.protobuf.StringValue + 1, // 142: service.Milestone.status:type_name -> service.MilestoneStatus + 164, // 143: service.Milestone.completion_percentage:type_name -> google.protobuf.DoubleValue + 134, // 144: service.Milestone.dependencies:type_name -> service.Milestone + 17, // 145: service.Milestone.subtasks:type_name -> service.ListOfTask + 5, // 146: service.Milestone.reviewers:type_name -> service.ListOfEmployee + 163, // 147: service.Task.milestone_id:type_name -> google.protobuf.StringValue + 162, // 148: service.Task.assignee_id:type_name -> google.protobuf.Int32Value + 163, // 149: service.Task.description:type_name -> google.protobuf.StringValue + 3, // 150: service.Task.priority:type_name -> service.TaskPriority + 2, // 151: service.Task.status:type_name -> service.TaskStatus + 164, // 152: service.Task.estimated_hours:type_name -> google.protobuf.DoubleValue + 164, // 153: service.Task.actual_hours:type_name -> google.protobuf.DoubleValue + 163, // 154: service.Task.created_at:type_name -> google.protobuf.StringValue + 163, // 155: service.Task.completed_at:type_name -> google.protobuf.StringValue + 16, // 156: service.Task.labels:type_name -> service.ListOfString + 17, // 157: service.Task.subtasks:type_name -> service.ListOfTask + 135, // 158: service.Task.dependencies:type_name -> service.Task + 6, // 159: service.Task.reviewer_ids:type_name -> service.ListOfInt + 14, // 160: service.Employee.projects:type_name -> service.ListOfProject + 135, // 161: service.Employee.assigned_tasks:type_name -> service.Task + 135, // 162: service.Employee.completed_tasks:type_name -> service.Task + 16, // 163: service.Employee.skills:type_name -> service.ListOfString + 16, // 164: service.Employee.certifications:type_name -> service.ListOfString + 9, // 165: service.Employee.project_history:type_name -> service.ListOfListOfProject + 14, // 166: service.Product.projects:type_name -> service.ListOfProject + 11, // 167: service.Product.feature_matrix:type_name -> service.ListOfListOfString + 136, // 168: service.ProjectResource.employee:type_name -> service.Employee + 137, // 169: service.ProjectResource.product:type_name -> service.Product + 134, // 170: service.ProjectResource.milestone:type_name -> service.Milestone + 135, // 171: service.ProjectResource.task:type_name -> service.Task + 133, // 172: service.ProjectSearchResult.project:type_name -> service.Project + 134, // 173: service.ProjectSearchResult.milestone:type_name -> service.Milestone + 135, // 174: service.ProjectSearchResult.task:type_name -> service.Task + 145, // 175: service.ProjectActivity.project_update:type_name -> service.ProjectUpdate + 134, // 176: service.ProjectActivity.milestone:type_name -> service.Milestone + 135, // 177: service.ProjectActivity.task:type_name -> service.Task + 133, // 178: service.Node.project:type_name -> service.Project + 134, // 179: service.Node.milestone:type_name -> service.Milestone + 135, // 180: service.Node.task:type_name -> service.Task + 145, // 181: service.Node.project_update:type_name -> service.ProjectUpdate + 163, // 182: service.ProjectInput.description:type_name -> google.protobuf.StringValue + 163, // 183: service.ProjectInput.start_date:type_name -> google.protobuf.StringValue + 163, // 184: service.ProjectInput.end_date:type_name -> google.protobuf.StringValue + 0, // 185: service.ProjectInput.status:type_name -> service.ProjectStatus + 163, // 186: service.MilestoneInput.description:type_name -> google.protobuf.StringValue + 163, // 187: service.MilestoneInput.due_date:type_name -> google.protobuf.StringValue + 1, // 188: service.MilestoneInput.status:type_name -> service.MilestoneStatus + 162, // 189: service.TaskInput.assignee_id:type_name -> google.protobuf.Int32Value + 163, // 190: service.TaskInput.description:type_name -> google.protobuf.StringValue + 3, // 191: service.TaskInput.priority:type_name -> service.TaskPriority + 2, // 192: service.TaskInput.status:type_name -> service.TaskStatus + 164, // 193: service.TaskInput.estimated_hours:type_name -> google.protobuf.DoubleValue + 4, // 194: service.ProjectUpdate.update_type:type_name -> service.ProjectUpdateType + 163, // 195: service.ProjectUpdate.metadata:type_name -> google.protobuf.StringValue + 133, // 196: service.Timestamped.project:type_name -> service.Project + 134, // 197: service.Timestamped.milestone:type_name -> service.Milestone + 135, // 198: service.Assignable.task:type_name -> service.Task + 136, // 199: service.ListOfEmployee.List.items:type_name -> service.Employee + 12, // 200: service.ListOfListOfListOfTask.List.items:type_name -> service.ListOfListOfTask + 13, // 201: service.ListOfListOfMilestone.List.items:type_name -> service.ListOfMilestone + 14, // 202: service.ListOfListOfProject.List.items:type_name -> service.ListOfProject + 15, // 203: service.ListOfListOfProjectResource.List.items:type_name -> service.ListOfProjectResource + 16, // 204: service.ListOfListOfString.List.items:type_name -> service.ListOfString + 17, // 205: service.ListOfListOfTask.List.items:type_name -> service.ListOfTask + 134, // 206: service.ListOfMilestone.List.items:type_name -> service.Milestone + 133, // 207: service.ListOfProject.List.items:type_name -> service.Project + 138, // 208: service.ListOfProjectResource.List.items:type_name -> service.ProjectResource + 135, // 209: service.ListOfTask.List.items:type_name -> service.Task + 28, // 210: service.ProjectsService.LookupEmployeeById:input_type -> service.LookupEmployeeByIdRequest + 22, // 211: service.ProjectsService.LookupMilestoneById:input_type -> service.LookupMilestoneByIdRequest + 31, // 212: service.ProjectsService.LookupProductByUpc:input_type -> service.LookupProductByUpcRequest + 19, // 213: service.ProjectsService.LookupProjectById:input_type -> service.LookupProjectByIdRequest + 25, // 214: service.ProjectsService.LookupTaskById:input_type -> service.LookupTaskByIdRequest + 67, // 215: service.ProjectsService.MutationAddMilestone:input_type -> service.MutationAddMilestoneRequest + 65, // 216: service.ProjectsService.MutationAddProject:input_type -> service.MutationAddProjectRequest + 69, // 217: service.ProjectsService.MutationAddTask:input_type -> service.MutationAddTaskRequest + 71, // 218: service.ProjectsService.MutationUpdateProjectStatus:input_type -> service.MutationUpdateProjectStatusRequest + 53, // 219: service.ProjectsService.QueryArchivedProjects:input_type -> service.QueryArchivedProjectsRequest + 59, // 220: service.ProjectsService.QueryKillService:input_type -> service.QueryKillServiceRequest + 45, // 221: service.ProjectsService.QueryMilestones:input_type -> service.QueryMilestonesRequest + 63, // 222: service.ProjectsService.QueryNodesById:input_type -> service.QueryNodesByIdRequest + 61, // 223: service.ProjectsService.QueryPanic:input_type -> service.QueryPanicRequest + 35, // 224: service.ProjectsService.QueryProject:input_type -> service.QueryProjectRequest + 49, // 225: service.ProjectsService.QueryProjectActivities:input_type -> service.QueryProjectActivitiesRequest + 41, // 226: service.ProjectsService.QueryProjectResources:input_type -> service.QueryProjectResourcesRequest + 37, // 227: service.ProjectsService.QueryProjectStatuses:input_type -> service.QueryProjectStatusesRequest + 51, // 228: service.ProjectsService.QueryProjectTags:input_type -> service.QueryProjectTagsRequest + 33, // 229: service.ProjectsService.QueryProjects:input_type -> service.QueryProjectsRequest + 39, // 230: service.ProjectsService.QueryProjectsByStatus:input_type -> service.QueryProjectsByStatusRequest + 57, // 231: service.ProjectsService.QueryResourceMatrix:input_type -> service.QueryResourceMatrixRequest + 43, // 232: service.ProjectsService.QuerySearchProjects:input_type -> service.QuerySearchProjectsRequest + 47, // 233: service.ProjectsService.QueryTasks:input_type -> service.QueryTasksRequest + 55, // 234: service.ProjectsService.QueryTasksByPriority:input_type -> service.QueryTasksByPriorityRequest + 130, // 235: service.ProjectsService.ResolveEmployeeAverageTaskCompletionDays:input_type -> service.ResolveEmployeeAverageTaskCompletionDaysRequest + 125, // 236: service.ProjectsService.ResolveEmployeeCurrentWorkload:input_type -> service.ResolveEmployeeCurrentWorkloadRequest + 110, // 237: service.ProjectsService.ResolveMilestoneDaysUntilDue:input_type -> service.ResolveMilestoneDaysUntilDueRequest + 105, // 238: service.ProjectsService.ResolveMilestoneIsAtRisk:input_type -> service.ResolveMilestoneIsAtRiskRequest + 85, // 239: service.ProjectsService.ResolveProjectCompletionRate:input_type -> service.ResolveProjectCompletionRateRequest + 95, // 240: service.ProjectsService.ResolveProjectCriticalDeadline:input_type -> service.ResolveProjectCriticalDeadlineRequest + 90, // 241: service.ProjectsService.ResolveProjectEstimatedDaysRemaining:input_type -> service.ResolveProjectEstimatedDaysRemainingRequest + 80, // 242: service.ProjectsService.ResolveProjectFilteredTasks:input_type -> service.ResolveProjectFilteredTasksRequest + 75, // 243: service.ProjectsService.ResolveProjectSubProjects:input_type -> service.ResolveProjectSubProjectsRequest + 100, // 244: service.ProjectsService.ResolveProjectTopPriorityItem:input_type -> service.ResolveProjectTopPriorityItemRequest + 115, // 245: service.ProjectsService.ResolveTaskIsBlocked:input_type -> service.ResolveTaskIsBlockedRequest + 120, // 246: service.ProjectsService.ResolveTaskTotalEffort:input_type -> service.ResolveTaskTotalEffortRequest + 29, // 247: service.ProjectsService.LookupEmployeeById:output_type -> service.LookupEmployeeByIdResponse + 23, // 248: service.ProjectsService.LookupMilestoneById:output_type -> service.LookupMilestoneByIdResponse + 32, // 249: service.ProjectsService.LookupProductByUpc:output_type -> service.LookupProductByUpcResponse + 20, // 250: service.ProjectsService.LookupProjectById:output_type -> service.LookupProjectByIdResponse + 26, // 251: service.ProjectsService.LookupTaskById:output_type -> service.LookupTaskByIdResponse + 68, // 252: service.ProjectsService.MutationAddMilestone:output_type -> service.MutationAddMilestoneResponse + 66, // 253: service.ProjectsService.MutationAddProject:output_type -> service.MutationAddProjectResponse + 70, // 254: service.ProjectsService.MutationAddTask:output_type -> service.MutationAddTaskResponse + 72, // 255: service.ProjectsService.MutationUpdateProjectStatus:output_type -> service.MutationUpdateProjectStatusResponse + 54, // 256: service.ProjectsService.QueryArchivedProjects:output_type -> service.QueryArchivedProjectsResponse + 60, // 257: service.ProjectsService.QueryKillService:output_type -> service.QueryKillServiceResponse + 46, // 258: service.ProjectsService.QueryMilestones:output_type -> service.QueryMilestonesResponse + 64, // 259: service.ProjectsService.QueryNodesById:output_type -> service.QueryNodesByIdResponse + 62, // 260: service.ProjectsService.QueryPanic:output_type -> service.QueryPanicResponse + 36, // 261: service.ProjectsService.QueryProject:output_type -> service.QueryProjectResponse + 50, // 262: service.ProjectsService.QueryProjectActivities:output_type -> service.QueryProjectActivitiesResponse + 42, // 263: service.ProjectsService.QueryProjectResources:output_type -> service.QueryProjectResourcesResponse + 38, // 264: service.ProjectsService.QueryProjectStatuses:output_type -> service.QueryProjectStatusesResponse + 52, // 265: service.ProjectsService.QueryProjectTags:output_type -> service.QueryProjectTagsResponse + 34, // 266: service.ProjectsService.QueryProjects:output_type -> service.QueryProjectsResponse + 40, // 267: service.ProjectsService.QueryProjectsByStatus:output_type -> service.QueryProjectsByStatusResponse + 58, // 268: service.ProjectsService.QueryResourceMatrix:output_type -> service.QueryResourceMatrixResponse + 44, // 269: service.ProjectsService.QuerySearchProjects:output_type -> service.QuerySearchProjectsResponse + 48, // 270: service.ProjectsService.QueryTasks:output_type -> service.QueryTasksResponse + 56, // 271: service.ProjectsService.QueryTasksByPriority:output_type -> service.QueryTasksByPriorityResponse + 132, // 272: service.ProjectsService.ResolveEmployeeAverageTaskCompletionDays:output_type -> service.ResolveEmployeeAverageTaskCompletionDaysResponse + 127, // 273: service.ProjectsService.ResolveEmployeeCurrentWorkload:output_type -> service.ResolveEmployeeCurrentWorkloadResponse + 112, // 274: service.ProjectsService.ResolveMilestoneDaysUntilDue:output_type -> service.ResolveMilestoneDaysUntilDueResponse + 107, // 275: service.ProjectsService.ResolveMilestoneIsAtRisk:output_type -> service.ResolveMilestoneIsAtRiskResponse + 87, // 276: service.ProjectsService.ResolveProjectCompletionRate:output_type -> service.ResolveProjectCompletionRateResponse + 97, // 277: service.ProjectsService.ResolveProjectCriticalDeadline:output_type -> service.ResolveProjectCriticalDeadlineResponse + 92, // 278: service.ProjectsService.ResolveProjectEstimatedDaysRemaining:output_type -> service.ResolveProjectEstimatedDaysRemainingResponse + 82, // 279: service.ProjectsService.ResolveProjectFilteredTasks:output_type -> service.ResolveProjectFilteredTasksResponse + 77, // 280: service.ProjectsService.ResolveProjectSubProjects:output_type -> service.ResolveProjectSubProjectsResponse + 102, // 281: service.ProjectsService.ResolveProjectTopPriorityItem:output_type -> service.ResolveProjectTopPriorityItemResponse + 117, // 282: service.ProjectsService.ResolveTaskIsBlocked:output_type -> service.ResolveTaskIsBlockedResponse + 122, // 283: service.ProjectsService.ResolveTaskTotalEffort:output_type -> service.ResolveTaskTotalEffortResponse + 247, // [247:284] is the sub-list for method output_type + 210, // [210:247] is the sub-list for method input_type + 210, // [210:210] is the sub-list for extension type_name + 210, // [210:210] is the sub-list for extension extendee + 0, // [0:210] is the sub-list for field type_name } func init() { file_generated_service_proto_init() } @@ -11309,7 +11627,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[68].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectFilteredTasksArgs); i { + switch v := v.(*ResolveProjectSubProjectsArgs); i { case 0: return &v.state case 1: @@ -11321,7 +11639,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[69].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectFilteredTasksContext); i { + switch v := v.(*ResolveProjectSubProjectsContext); i { case 0: return &v.state case 1: @@ -11333,7 +11651,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[70].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectFilteredTasksRequest); i { + switch v := v.(*ResolveProjectSubProjectsRequest); i { case 0: return &v.state case 1: @@ -11345,7 +11663,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[71].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectFilteredTasksResult); i { + switch v := v.(*ResolveProjectSubProjectsResult); i { case 0: return &v.state case 1: @@ -11357,7 +11675,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[72].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectFilteredTasksResponse); i { + switch v := v.(*ResolveProjectSubProjectsResponse); i { case 0: return &v.state case 1: @@ -11369,7 +11687,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[73].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectCompletionRateArgs); i { + switch v := v.(*ResolveProjectFilteredTasksArgs); i { case 0: return &v.state case 1: @@ -11381,7 +11699,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[74].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectCompletionRateContext); i { + switch v := v.(*ResolveProjectFilteredTasksContext); i { case 0: return &v.state case 1: @@ -11393,7 +11711,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[75].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectCompletionRateRequest); i { + switch v := v.(*ResolveProjectFilteredTasksRequest); i { case 0: return &v.state case 1: @@ -11405,7 +11723,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[76].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectCompletionRateResult); i { + switch v := v.(*ResolveProjectFilteredTasksResult); i { case 0: return &v.state case 1: @@ -11417,7 +11735,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[77].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectCompletionRateResponse); i { + switch v := v.(*ResolveProjectFilteredTasksResponse); i { case 0: return &v.state case 1: @@ -11429,7 +11747,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[78].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectEstimatedDaysRemainingArgs); i { + switch v := v.(*ResolveProjectCompletionRateArgs); i { case 0: return &v.state case 1: @@ -11441,7 +11759,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[79].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectEstimatedDaysRemainingContext); i { + switch v := v.(*ResolveProjectCompletionRateContext); i { case 0: return &v.state case 1: @@ -11453,7 +11771,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[80].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectEstimatedDaysRemainingRequest); i { + switch v := v.(*ResolveProjectCompletionRateRequest); i { case 0: return &v.state case 1: @@ -11465,7 +11783,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[81].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectEstimatedDaysRemainingResult); i { + switch v := v.(*ResolveProjectCompletionRateResult); i { case 0: return &v.state case 1: @@ -11477,7 +11795,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[82].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectEstimatedDaysRemainingResponse); i { + switch v := v.(*ResolveProjectCompletionRateResponse); i { case 0: return &v.state case 1: @@ -11489,7 +11807,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[83].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectCriticalDeadlineArgs); i { + switch v := v.(*ResolveProjectEstimatedDaysRemainingArgs); i { case 0: return &v.state case 1: @@ -11501,7 +11819,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[84].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectCriticalDeadlineContext); i { + switch v := v.(*ResolveProjectEstimatedDaysRemainingContext); i { case 0: return &v.state case 1: @@ -11513,7 +11831,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[85].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectCriticalDeadlineRequest); i { + switch v := v.(*ResolveProjectEstimatedDaysRemainingRequest); i { case 0: return &v.state case 1: @@ -11525,7 +11843,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[86].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectCriticalDeadlineResult); i { + switch v := v.(*ResolveProjectEstimatedDaysRemainingResult); i { case 0: return &v.state case 1: @@ -11537,7 +11855,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[87].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectCriticalDeadlineResponse); i { + switch v := v.(*ResolveProjectEstimatedDaysRemainingResponse); i { case 0: return &v.state case 1: @@ -11549,7 +11867,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[88].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectTopPriorityItemArgs); i { + switch v := v.(*ResolveProjectCriticalDeadlineArgs); i { case 0: return &v.state case 1: @@ -11561,7 +11879,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[89].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectTopPriorityItemContext); i { + switch v := v.(*ResolveProjectCriticalDeadlineContext); i { case 0: return &v.state case 1: @@ -11573,7 +11891,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[90].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectTopPriorityItemRequest); i { + switch v := v.(*ResolveProjectCriticalDeadlineRequest); i { case 0: return &v.state case 1: @@ -11585,7 +11903,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[91].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectTopPriorityItemResult); i { + switch v := v.(*ResolveProjectCriticalDeadlineResult); i { case 0: return &v.state case 1: @@ -11597,7 +11915,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[92].Exporter = func(v any, i int) any { - switch v := v.(*ResolveProjectTopPriorityItemResponse); i { + switch v := v.(*ResolveProjectCriticalDeadlineResponse); i { case 0: return &v.state case 1: @@ -11609,7 +11927,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[93].Exporter = func(v any, i int) any { - switch v := v.(*ResolveMilestoneIsAtRiskArgs); i { + switch v := v.(*ResolveProjectTopPriorityItemArgs); i { case 0: return &v.state case 1: @@ -11621,7 +11939,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[94].Exporter = func(v any, i int) any { - switch v := v.(*ResolveMilestoneIsAtRiskContext); i { + switch v := v.(*ResolveProjectTopPriorityItemContext); i { case 0: return &v.state case 1: @@ -11633,7 +11951,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[95].Exporter = func(v any, i int) any { - switch v := v.(*ResolveMilestoneIsAtRiskRequest); i { + switch v := v.(*ResolveProjectTopPriorityItemRequest); i { case 0: return &v.state case 1: @@ -11645,7 +11963,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[96].Exporter = func(v any, i int) any { - switch v := v.(*ResolveMilestoneIsAtRiskResult); i { + switch v := v.(*ResolveProjectTopPriorityItemResult); i { case 0: return &v.state case 1: @@ -11657,7 +11975,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[97].Exporter = func(v any, i int) any { - switch v := v.(*ResolveMilestoneIsAtRiskResponse); i { + switch v := v.(*ResolveProjectTopPriorityItemResponse); i { case 0: return &v.state case 1: @@ -11669,7 +11987,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[98].Exporter = func(v any, i int) any { - switch v := v.(*ResolveMilestoneDaysUntilDueArgs); i { + switch v := v.(*ResolveMilestoneIsAtRiskArgs); i { case 0: return &v.state case 1: @@ -11681,7 +11999,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[99].Exporter = func(v any, i int) any { - switch v := v.(*ResolveMilestoneDaysUntilDueContext); i { + switch v := v.(*ResolveMilestoneIsAtRiskContext); i { case 0: return &v.state case 1: @@ -11693,7 +12011,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[100].Exporter = func(v any, i int) any { - switch v := v.(*ResolveMilestoneDaysUntilDueRequest); i { + switch v := v.(*ResolveMilestoneIsAtRiskRequest); i { case 0: return &v.state case 1: @@ -11705,7 +12023,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[101].Exporter = func(v any, i int) any { - switch v := v.(*ResolveMilestoneDaysUntilDueResult); i { + switch v := v.(*ResolveMilestoneIsAtRiskResult); i { case 0: return &v.state case 1: @@ -11717,7 +12035,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[102].Exporter = func(v any, i int) any { - switch v := v.(*ResolveMilestoneDaysUntilDueResponse); i { + switch v := v.(*ResolveMilestoneIsAtRiskResponse); i { case 0: return &v.state case 1: @@ -11729,7 +12047,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[103].Exporter = func(v any, i int) any { - switch v := v.(*ResolveTaskIsBlockedArgs); i { + switch v := v.(*ResolveMilestoneDaysUntilDueArgs); i { case 0: return &v.state case 1: @@ -11741,7 +12059,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[104].Exporter = func(v any, i int) any { - switch v := v.(*ResolveTaskIsBlockedContext); i { + switch v := v.(*ResolveMilestoneDaysUntilDueContext); i { case 0: return &v.state case 1: @@ -11753,7 +12071,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[105].Exporter = func(v any, i int) any { - switch v := v.(*ResolveTaskIsBlockedRequest); i { + switch v := v.(*ResolveMilestoneDaysUntilDueRequest); i { case 0: return &v.state case 1: @@ -11765,7 +12083,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[106].Exporter = func(v any, i int) any { - switch v := v.(*ResolveTaskIsBlockedResult); i { + switch v := v.(*ResolveMilestoneDaysUntilDueResult); i { case 0: return &v.state case 1: @@ -11777,7 +12095,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[107].Exporter = func(v any, i int) any { - switch v := v.(*ResolveTaskIsBlockedResponse); i { + switch v := v.(*ResolveMilestoneDaysUntilDueResponse); i { case 0: return &v.state case 1: @@ -11789,7 +12107,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[108].Exporter = func(v any, i int) any { - switch v := v.(*ResolveTaskTotalEffortArgs); i { + switch v := v.(*ResolveTaskIsBlockedArgs); i { case 0: return &v.state case 1: @@ -11801,7 +12119,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[109].Exporter = func(v any, i int) any { - switch v := v.(*ResolveTaskTotalEffortContext); i { + switch v := v.(*ResolveTaskIsBlockedContext); i { case 0: return &v.state case 1: @@ -11813,7 +12131,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[110].Exporter = func(v any, i int) any { - switch v := v.(*ResolveTaskTotalEffortRequest); i { + switch v := v.(*ResolveTaskIsBlockedRequest); i { case 0: return &v.state case 1: @@ -11825,7 +12143,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[111].Exporter = func(v any, i int) any { - switch v := v.(*ResolveTaskTotalEffortResult); i { + switch v := v.(*ResolveTaskIsBlockedResult); i { case 0: return &v.state case 1: @@ -11837,7 +12155,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[112].Exporter = func(v any, i int) any { - switch v := v.(*ResolveTaskTotalEffortResponse); i { + switch v := v.(*ResolveTaskIsBlockedResponse); i { case 0: return &v.state case 1: @@ -11849,7 +12167,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[113].Exporter = func(v any, i int) any { - switch v := v.(*ResolveEmployeeCurrentWorkloadArgs); i { + switch v := v.(*ResolveTaskTotalEffortArgs); i { case 0: return &v.state case 1: @@ -11861,7 +12179,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[114].Exporter = func(v any, i int) any { - switch v := v.(*ResolveEmployeeCurrentWorkloadContext); i { + switch v := v.(*ResolveTaskTotalEffortContext); i { case 0: return &v.state case 1: @@ -11873,7 +12191,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[115].Exporter = func(v any, i int) any { - switch v := v.(*ResolveEmployeeCurrentWorkloadRequest); i { + switch v := v.(*ResolveTaskTotalEffortRequest); i { case 0: return &v.state case 1: @@ -11885,7 +12203,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[116].Exporter = func(v any, i int) any { - switch v := v.(*ResolveEmployeeCurrentWorkloadResult); i { + switch v := v.(*ResolveTaskTotalEffortResult); i { case 0: return &v.state case 1: @@ -11897,7 +12215,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[117].Exporter = func(v any, i int) any { - switch v := v.(*ResolveEmployeeCurrentWorkloadResponse); i { + switch v := v.(*ResolveTaskTotalEffortResponse); i { case 0: return &v.state case 1: @@ -11909,7 +12227,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[118].Exporter = func(v any, i int) any { - switch v := v.(*ResolveEmployeeAverageTaskCompletionDaysArgs); i { + switch v := v.(*ResolveEmployeeCurrentWorkloadArgs); i { case 0: return &v.state case 1: @@ -11921,7 +12239,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[119].Exporter = func(v any, i int) any { - switch v := v.(*ResolveEmployeeAverageTaskCompletionDaysContext); i { + switch v := v.(*ResolveEmployeeCurrentWorkloadContext); i { case 0: return &v.state case 1: @@ -11933,7 +12251,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[120].Exporter = func(v any, i int) any { - switch v := v.(*ResolveEmployeeAverageTaskCompletionDaysRequest); i { + switch v := v.(*ResolveEmployeeCurrentWorkloadRequest); i { case 0: return &v.state case 1: @@ -11945,7 +12263,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[121].Exporter = func(v any, i int) any { - switch v := v.(*ResolveEmployeeAverageTaskCompletionDaysResult); i { + switch v := v.(*ResolveEmployeeCurrentWorkloadResult); i { case 0: return &v.state case 1: @@ -11957,7 +12275,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[122].Exporter = func(v any, i int) any { - switch v := v.(*ResolveEmployeeAverageTaskCompletionDaysResponse); i { + switch v := v.(*ResolveEmployeeCurrentWorkloadResponse); i { case 0: return &v.state case 1: @@ -11969,7 +12287,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[123].Exporter = func(v any, i int) any { - switch v := v.(*Project); i { + switch v := v.(*ResolveEmployeeAverageTaskCompletionDaysArgs); i { case 0: return &v.state case 1: @@ -11981,7 +12299,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[124].Exporter = func(v any, i int) any { - switch v := v.(*Milestone); i { + switch v := v.(*ResolveEmployeeAverageTaskCompletionDaysContext); i { case 0: return &v.state case 1: @@ -11993,7 +12311,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[125].Exporter = func(v any, i int) any { - switch v := v.(*Task); i { + switch v := v.(*ResolveEmployeeAverageTaskCompletionDaysRequest); i { case 0: return &v.state case 1: @@ -12005,7 +12323,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[126].Exporter = func(v any, i int) any { - switch v := v.(*Employee); i { + switch v := v.(*ResolveEmployeeAverageTaskCompletionDaysResult); i { case 0: return &v.state case 1: @@ -12017,7 +12335,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[127].Exporter = func(v any, i int) any { - switch v := v.(*Product); i { + switch v := v.(*ResolveEmployeeAverageTaskCompletionDaysResponse); i { case 0: return &v.state case 1: @@ -12029,7 +12347,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[128].Exporter = func(v any, i int) any { - switch v := v.(*ProjectResource); i { + switch v := v.(*Project); i { case 0: return &v.state case 1: @@ -12041,7 +12359,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[129].Exporter = func(v any, i int) any { - switch v := v.(*ProjectSearchResult); i { + switch v := v.(*Milestone); i { case 0: return &v.state case 1: @@ -12053,7 +12371,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[130].Exporter = func(v any, i int) any { - switch v := v.(*ProjectActivity); i { + switch v := v.(*Task); i { case 0: return &v.state case 1: @@ -12065,7 +12383,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[131].Exporter = func(v any, i int) any { - switch v := v.(*Node); i { + switch v := v.(*Employee); i { case 0: return &v.state case 1: @@ -12077,7 +12395,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[132].Exporter = func(v any, i int) any { - switch v := v.(*ProjectInput); i { + switch v := v.(*Product); i { case 0: return &v.state case 1: @@ -12089,7 +12407,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[133].Exporter = func(v any, i int) any { - switch v := v.(*MilestoneInput); i { + switch v := v.(*ProjectResource); i { case 0: return &v.state case 1: @@ -12101,7 +12419,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[134].Exporter = func(v any, i int) any { - switch v := v.(*TaskInput); i { + switch v := v.(*ProjectSearchResult); i { case 0: return &v.state case 1: @@ -12113,7 +12431,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[135].Exporter = func(v any, i int) any { - switch v := v.(*ProjectUpdate); i { + switch v := v.(*ProjectActivity); i { case 0: return &v.state case 1: @@ -12125,7 +12443,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[136].Exporter = func(v any, i int) any { - switch v := v.(*Timestamped); i { + switch v := v.(*Node); i { case 0: return &v.state case 1: @@ -12137,7 +12455,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[137].Exporter = func(v any, i int) any { - switch v := v.(*Assignable); i { + switch v := v.(*ProjectInput); i { case 0: return &v.state case 1: @@ -12149,7 +12467,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[138].Exporter = func(v any, i int) any { - switch v := v.(*ListOfEmployee_List); i { + switch v := v.(*MilestoneInput); i { case 0: return &v.state case 1: @@ -12161,7 +12479,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[139].Exporter = func(v any, i int) any { - switch v := v.(*ListOfInt_List); i { + switch v := v.(*TaskInput); i { case 0: return &v.state case 1: @@ -12173,7 +12491,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[140].Exporter = func(v any, i int) any { - switch v := v.(*ListOfListOfListOfTask_List); i { + switch v := v.(*ProjectUpdate); i { case 0: return &v.state case 1: @@ -12185,7 +12503,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[141].Exporter = func(v any, i int) any { - switch v := v.(*ListOfListOfMilestone_List); i { + switch v := v.(*Timestamped); i { case 0: return &v.state case 1: @@ -12197,7 +12515,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[142].Exporter = func(v any, i int) any { - switch v := v.(*ListOfListOfProject_List); i { + switch v := v.(*Assignable); i { case 0: return &v.state case 1: @@ -12209,7 +12527,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[143].Exporter = func(v any, i int) any { - switch v := v.(*ListOfListOfProjectResource_List); i { + switch v := v.(*ListOfEmployee_List); i { case 0: return &v.state case 1: @@ -12221,7 +12539,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[144].Exporter = func(v any, i int) any { - switch v := v.(*ListOfListOfString_List); i { + switch v := v.(*ListOfInt_List); i { case 0: return &v.state case 1: @@ -12233,7 +12551,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[145].Exporter = func(v any, i int) any { - switch v := v.(*ListOfListOfTask_List); i { + switch v := v.(*ListOfListOfListOfTask_List); i { case 0: return &v.state case 1: @@ -12245,7 +12563,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[146].Exporter = func(v any, i int) any { - switch v := v.(*ListOfMilestone_List); i { + switch v := v.(*ListOfListOfMilestone_List); i { case 0: return &v.state case 1: @@ -12257,7 +12575,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[147].Exporter = func(v any, i int) any { - switch v := v.(*ListOfProject_List); i { + switch v := v.(*ListOfListOfProject_List); i { case 0: return &v.state case 1: @@ -12269,7 +12587,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[148].Exporter = func(v any, i int) any { - switch v := v.(*ListOfProjectResource_List); i { + switch v := v.(*ListOfListOfProjectResource_List); i { case 0: return &v.state case 1: @@ -12281,7 +12599,7 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[149].Exporter = func(v any, i int) any { - switch v := v.(*ListOfString_List); i { + switch v := v.(*ListOfListOfString_List); i { case 0: return &v.state case 1: @@ -12293,6 +12611,66 @@ func file_generated_service_proto_init() { } } file_generated_service_proto_msgTypes[150].Exporter = func(v any, i int) any { + switch v := v.(*ListOfListOfTask_List); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_generated_service_proto_msgTypes[151].Exporter = func(v any, i int) any { + switch v := v.(*ListOfMilestone_List); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_generated_service_proto_msgTypes[152].Exporter = func(v any, i int) any { + switch v := v.(*ListOfProject_List); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_generated_service_proto_msgTypes[153].Exporter = func(v any, i int) any { + switch v := v.(*ListOfProjectResource_List); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_generated_service_proto_msgTypes[154].Exporter = func(v any, i int) any { + switch v := v.(*ListOfString_List); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_generated_service_proto_msgTypes[155].Exporter = func(v any, i int) any { switch v := v.(*ListOfTask_List); i { case 0: return &v.state @@ -12305,33 +12683,33 @@ func file_generated_service_proto_init() { } } } - file_generated_service_proto_msgTypes[128].OneofWrappers = []any{ + file_generated_service_proto_msgTypes[133].OneofWrappers = []any{ (*ProjectResource_Employee)(nil), (*ProjectResource_Product)(nil), (*ProjectResource_Milestone)(nil), (*ProjectResource_Task)(nil), } - file_generated_service_proto_msgTypes[129].OneofWrappers = []any{ + file_generated_service_proto_msgTypes[134].OneofWrappers = []any{ (*ProjectSearchResult_Project)(nil), (*ProjectSearchResult_Milestone)(nil), (*ProjectSearchResult_Task)(nil), } - file_generated_service_proto_msgTypes[130].OneofWrappers = []any{ + file_generated_service_proto_msgTypes[135].OneofWrappers = []any{ (*ProjectActivity_ProjectUpdate)(nil), (*ProjectActivity_Milestone)(nil), (*ProjectActivity_Task)(nil), } - file_generated_service_proto_msgTypes[131].OneofWrappers = []any{ + file_generated_service_proto_msgTypes[136].OneofWrappers = []any{ (*Node_Project)(nil), (*Node_Milestone)(nil), (*Node_Task)(nil), (*Node_ProjectUpdate)(nil), } - file_generated_service_proto_msgTypes[136].OneofWrappers = []any{ + file_generated_service_proto_msgTypes[141].OneofWrappers = []any{ (*Timestamped_Project)(nil), (*Timestamped_Milestone)(nil), } - file_generated_service_proto_msgTypes[137].OneofWrappers = []any{ + file_generated_service_proto_msgTypes[142].OneofWrappers = []any{ (*Assignable_Task)(nil), } type x struct{} @@ -12340,7 +12718,7 @@ func file_generated_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_generated_service_proto_rawDesc, NumEnums: 5, - NumMessages: 151, + NumMessages: 156, NumExtensions: 0, NumServices: 1, }, diff --git a/demo/pkg/subgraphs/projects/generated/service.proto b/demo/pkg/subgraphs/projects/generated/service.proto index a1eb799e60..6fa7e277a5 100644 --- a/demo/pkg/subgraphs/projects/generated/service.proto +++ b/demo/pkg/subgraphs/projects/generated/service.proto @@ -45,6 +45,7 @@ service ProjectsService { rpc ResolveProjectCriticalDeadline(ResolveProjectCriticalDeadlineRequest) returns (ResolveProjectCriticalDeadlineResponse) {} rpc ResolveProjectEstimatedDaysRemaining(ResolveProjectEstimatedDaysRemainingRequest) returns (ResolveProjectEstimatedDaysRemainingResponse) {} rpc ResolveProjectFilteredTasks(ResolveProjectFilteredTasksRequest) returns (ResolveProjectFilteredTasksResponse) {} + rpc ResolveProjectSubProjects(ResolveProjectSubProjectsRequest) returns (ResolveProjectSubProjectsResponse) {} rpc ResolveProjectTopPriorityItem(ResolveProjectTopPriorityItemRequest) returns (ResolveProjectTopPriorityItemResponse) {} rpc ResolveTaskIsBlocked(ResolveTaskIsBlockedRequest) returns (ResolveTaskIsBlockedResponse) {} rpc ResolveTaskTotalEffort(ResolveTaskTotalEffortRequest) returns (ResolveTaskTotalEffortResponse) {} @@ -466,6 +467,31 @@ message MutationUpdateProjectStatusRequest { message MutationUpdateProjectStatusResponse { ProjectUpdate update_project_status = 1; } +message ResolveProjectSubProjectsArgs { + google.protobuf.BoolValue include_archived = 1; +} + +message ResolveProjectSubProjectsContext { + string id = 1; + string name = 2; + ProjectStatus status = 3; +} + +message ResolveProjectSubProjectsRequest { + // context provides the resolver context for the field subProjects of type Project. + repeated ResolveProjectSubProjectsContext context = 1; + // field_args provides the arguments for the resolver field subProjects of type Project. + ResolveProjectSubProjectsArgs field_args = 2; +} + +message ResolveProjectSubProjectsResult { + repeated Project sub_projects = 1; +} + +message ResolveProjectSubProjectsResponse { + repeated ResolveProjectSubProjectsResult result = 1; +} + message ResolveProjectFilteredTasksArgs { TaskStatus status = 1; TaskPriority priority = 2; @@ -738,7 +764,7 @@ message ResolveEmployeeAverageTaskCompletionDaysResponse { } message Project { - reserved 20 to 24; + reserved 20 to 25; string id = 1; string name = 2; google.protobuf.StringValue description = 3; diff --git a/demo/pkg/subgraphs/projects/generated/service.proto.lock.json b/demo/pkg/subgraphs/projects/generated/service.proto.lock.json index 4c70791c54..bb83856294 100644 --- a/demo/pkg/subgraphs/projects/generated/service.proto.lock.json +++ b/demo/pkg/subgraphs/projects/generated/service.proto.lock.json @@ -352,6 +352,7 @@ "tasksByPhase": 17, "milestoneGroups": 18, "priorityMatrix": 19, + "subProjects": 25, "filteredTasks": 20, "completionRate": 21, "estimatedDaysRemaining": 22, diff --git a/demo/pkg/subgraphs/projects/generated/service_grpc.pb.go b/demo/pkg/subgraphs/projects/generated/service_grpc.pb.go index ddda49d391..0ccf032489 100644 --- a/demo/pkg/subgraphs/projects/generated/service_grpc.pb.go +++ b/demo/pkg/subgraphs/projects/generated/service_grpc.pb.go @@ -52,6 +52,7 @@ const ( ProjectsService_ResolveProjectCriticalDeadline_FullMethodName = "/service.ProjectsService/ResolveProjectCriticalDeadline" ProjectsService_ResolveProjectEstimatedDaysRemaining_FullMethodName = "/service.ProjectsService/ResolveProjectEstimatedDaysRemaining" ProjectsService_ResolveProjectFilteredTasks_FullMethodName = "/service.ProjectsService/ResolveProjectFilteredTasks" + ProjectsService_ResolveProjectSubProjects_FullMethodName = "/service.ProjectsService/ResolveProjectSubProjects" ProjectsService_ResolveProjectTopPriorityItem_FullMethodName = "/service.ProjectsService/ResolveProjectTopPriorityItem" ProjectsService_ResolveTaskIsBlocked_FullMethodName = "/service.ProjectsService/ResolveTaskIsBlocked" ProjectsService_ResolveTaskTotalEffort_FullMethodName = "/service.ProjectsService/ResolveTaskTotalEffort" @@ -101,6 +102,7 @@ type ProjectsServiceClient interface { ResolveProjectCriticalDeadline(ctx context.Context, in *ResolveProjectCriticalDeadlineRequest, opts ...grpc.CallOption) (*ResolveProjectCriticalDeadlineResponse, error) ResolveProjectEstimatedDaysRemaining(ctx context.Context, in *ResolveProjectEstimatedDaysRemainingRequest, opts ...grpc.CallOption) (*ResolveProjectEstimatedDaysRemainingResponse, error) ResolveProjectFilteredTasks(ctx context.Context, in *ResolveProjectFilteredTasksRequest, opts ...grpc.CallOption) (*ResolveProjectFilteredTasksResponse, error) + ResolveProjectSubProjects(ctx context.Context, in *ResolveProjectSubProjectsRequest, opts ...grpc.CallOption) (*ResolveProjectSubProjectsResponse, error) ResolveProjectTopPriorityItem(ctx context.Context, in *ResolveProjectTopPriorityItemRequest, opts ...grpc.CallOption) (*ResolveProjectTopPriorityItemResponse, error) ResolveTaskIsBlocked(ctx context.Context, in *ResolveTaskIsBlockedRequest, opts ...grpc.CallOption) (*ResolveTaskIsBlockedResponse, error) ResolveTaskTotalEffort(ctx context.Context, in *ResolveTaskTotalEffortRequest, opts ...grpc.CallOption) (*ResolveTaskTotalEffortResponse, error) @@ -444,6 +446,16 @@ func (c *projectsServiceClient) ResolveProjectFilteredTasks(ctx context.Context, return out, nil } +func (c *projectsServiceClient) ResolveProjectSubProjects(ctx context.Context, in *ResolveProjectSubProjectsRequest, opts ...grpc.CallOption) (*ResolveProjectSubProjectsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ResolveProjectSubProjectsResponse) + err := c.cc.Invoke(ctx, ProjectsService_ResolveProjectSubProjects_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *projectsServiceClient) ResolveProjectTopPriorityItem(ctx context.Context, in *ResolveProjectTopPriorityItemRequest, opts ...grpc.CallOption) (*ResolveProjectTopPriorityItemResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ResolveProjectTopPriorityItemResponse) @@ -518,6 +530,7 @@ type ProjectsServiceServer interface { ResolveProjectCriticalDeadline(context.Context, *ResolveProjectCriticalDeadlineRequest) (*ResolveProjectCriticalDeadlineResponse, error) ResolveProjectEstimatedDaysRemaining(context.Context, *ResolveProjectEstimatedDaysRemainingRequest) (*ResolveProjectEstimatedDaysRemainingResponse, error) ResolveProjectFilteredTasks(context.Context, *ResolveProjectFilteredTasksRequest) (*ResolveProjectFilteredTasksResponse, error) + ResolveProjectSubProjects(context.Context, *ResolveProjectSubProjectsRequest) (*ResolveProjectSubProjectsResponse, error) ResolveProjectTopPriorityItem(context.Context, *ResolveProjectTopPriorityItemRequest) (*ResolveProjectTopPriorityItemResponse, error) ResolveTaskIsBlocked(context.Context, *ResolveTaskIsBlockedRequest) (*ResolveTaskIsBlockedResponse, error) ResolveTaskTotalEffort(context.Context, *ResolveTaskTotalEffortRequest) (*ResolveTaskTotalEffortResponse, error) @@ -630,6 +643,9 @@ func (UnimplementedProjectsServiceServer) ResolveProjectEstimatedDaysRemaining(c func (UnimplementedProjectsServiceServer) ResolveProjectFilteredTasks(context.Context, *ResolveProjectFilteredTasksRequest) (*ResolveProjectFilteredTasksResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ResolveProjectFilteredTasks not implemented") } +func (UnimplementedProjectsServiceServer) ResolveProjectSubProjects(context.Context, *ResolveProjectSubProjectsRequest) (*ResolveProjectSubProjectsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ResolveProjectSubProjects not implemented") +} func (UnimplementedProjectsServiceServer) ResolveProjectTopPriorityItem(context.Context, *ResolveProjectTopPriorityItemRequest) (*ResolveProjectTopPriorityItemResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ResolveProjectTopPriorityItem not implemented") } @@ -1254,6 +1270,24 @@ func _ProjectsService_ResolveProjectFilteredTasks_Handler(srv interface{}, ctx c return interceptor(ctx, in, info, handler) } +func _ProjectsService_ResolveProjectSubProjects_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ResolveProjectSubProjectsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ProjectsServiceServer).ResolveProjectSubProjects(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ProjectsService_ResolveProjectSubProjects_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ProjectsServiceServer).ResolveProjectSubProjects(ctx, req.(*ResolveProjectSubProjectsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _ProjectsService_ResolveProjectTopPriorityItem_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ResolveProjectTopPriorityItemRequest) if err := dec(in); err != nil { @@ -1447,6 +1481,10 @@ var ProjectsService_ServiceDesc = grpc.ServiceDesc{ MethodName: "ResolveProjectFilteredTasks", Handler: _ProjectsService_ResolveProjectFilteredTasks_Handler, }, + { + MethodName: "ResolveProjectSubProjects", + Handler: _ProjectsService_ResolveProjectSubProjects_Handler, + }, { MethodName: "ResolveProjectTopPriorityItem", Handler: _ProjectsService_ResolveProjectTopPriorityItem_Handler, diff --git a/demo/pkg/subgraphs/projects/src/schema.graphql b/demo/pkg/subgraphs/projects/src/schema.graphql index 05e38ed44e..e440155dd2 100644 --- a/demo/pkg/subgraphs/projects/src/schema.graphql +++ b/demo/pkg/subgraphs/projects/src/schema.graphql @@ -105,6 +105,9 @@ type Project implements Node & Timestamped @key(fields: "id") { milestoneGroups: [[Milestone]] # nested lists: nullable list of nullable lists priorityMatrix: [[[Task!]!]!] # triple nested: non-nullable list of non-nullable lists of non-nullable lists + # Recursive field resolver for project hierarchy + subProjects(includeArchived: Boolean): [Project!]! @connect__fieldResolver(context: "id name status") + # Computed fields with @connect__fieldResolver filteredTasks(status: TaskStatus, priority: TaskPriority, limit: Int): [Task!]! @connect__fieldResolver(context: "id") completionRate(includeSubtasks: Boolean): Float! @connect__fieldResolver(context: "id startDate endDate status") diff --git a/demo/pkg/subgraphs/projects/src/service/service.go b/demo/pkg/subgraphs/projects/src/service/service.go index 46aaf2caa6..87689feb61 100644 --- a/demo/pkg/subgraphs/projects/src/service/service.go +++ b/demo/pkg/subgraphs/projects/src/service/service.go @@ -2,7 +2,6 @@ package service import ( "context" - "math" "strconv" "strings" "sync" @@ -39,643 +38,6 @@ type ProjectsService struct { NextID int } -// ResolveProjectCriticalDeadline implements projects.ProjectsServiceServer. -func (p *ProjectsService) ResolveProjectCriticalDeadline(_ context.Context, req *service.ResolveProjectCriticalDeadlineRequest) (*service.ResolveProjectCriticalDeadlineResponse, error) { - p.lock.RLock() - defer p.lock.RUnlock() - - response := &service.ResolveProjectCriticalDeadlineResponse{ - Result: make([]*service.ResolveProjectCriticalDeadlineResult, 0, len(req.Context)), - } - - // Default to 30 days if not specified - withinDays := 30 - if req.FieldArgs != nil && req.FieldArgs.WithinDays != nil { - withinDays = int(req.FieldArgs.WithinDays.Value) - } - - for _, context := range req.Context { - var criticalDeadline *service.Timestamped - - // Get milestones for this project - milestones := data.GetMilestonesByProjectID(context.Id) - - // Find the nearest upcoming deadline that's within the specified days - var nearestMilestone *service.Milestone - var nearestDays int = withinDays + 1 // Start with value beyond threshold - - now := time.Now() - for _, milestone := range milestones { - // Only consider incomplete milestones with an end date - if milestone.Status == service.MilestoneStatus_MILESTONE_STATUS_COMPLETED { - continue - } - - if milestone.EndDate != nil { - endDate, err := time.Parse("2006-01-02", milestone.EndDate.Value) - if err == nil { - daysUntil := int(math.Abs(endDate.Sub(now).Hours() / 24)) - // Check if it's within our window and closer than what we've found - if daysUntil >= 0 && daysUntil <= withinDays && daysUntil < nearestDays { - nearestDays = daysUntil - nearestMilestone = milestone - } - } - } - } - - // If we found a critical milestone, return it - if nearestMilestone != nil { - criticalDeadline = &service.Timestamped{ - Instance: &service.Timestamped_Milestone{ - Milestone: data.PopulateMilestoneRelationships(nearestMilestone), - }, - } - } else { - // Check if the project itself has a critical deadline - if context.Status != service.ProjectStatus_PROJECT_STATUS_COMPLETED { - project := data.GetProjectByID(context.Id) - if project != nil && project.EndDate != nil { - endDate, err := time.Parse("2006-01-02", project.EndDate.Value) - if err == nil { - daysUntil := int(math.Abs(endDate.Sub(now).Hours() / 24)) - if daysUntil >= 0 && daysUntil <= withinDays { - criticalDeadline = &service.Timestamped{ - Instance: &service.Timestamped_Project{ - Project: p.populateProjectRelationships(project), - }, - } - } - } - } - } - } - - response.Result = append(response.Result, &service.ResolveProjectCriticalDeadlineResult{ - CriticalDeadline: criticalDeadline, - }) - } - - return response, nil -} - -// ResolveProjectTopPriorityItem implements projects.ProjectsServiceServer. -func (p *ProjectsService) ResolveProjectTopPriorityItem(ctx context.Context, req *service.ResolveProjectTopPriorityItemRequest) (*service.ResolveProjectTopPriorityItemResponse, error) { - logger := hclog.FromContext(ctx) - - p.lock.RLock() - defer p.lock.RUnlock() - - response := &service.ResolveProjectTopPriorityItemResponse{ - Result: make([]*service.ResolveProjectTopPriorityItemResult, 0, len(req.Context)), - } - - for _, context := range req.Context { - logger.Info("Processing context", "project_id", context.Id, "status", context.Status) - var topPriorityItem *service.ProjectSearchResult - - // Filter by category if provided - category := "" - if req.FieldArgs != nil && req.FieldArgs.Category != nil { - category = strings.ToLower(req.FieldArgs.Category.Value) - } - - // Check for highest priority task if category allows - if category == "" || category == "task" { - // Get tasks for this project - tasks := data.GetTasksByProjectID(context.Id) - - // Find the highest priority incomplete task - var topTask *service.Task - highestPriority := service.TaskPriority_TASK_PRIORITY_UNSPECIFIED - - for _, task := range tasks { - // Skip completed tasks - if task.Status == service.TaskStatus_TASK_STATUS_COMPLETED { - continue - } - - // Compare priorities (higher enum value = higher priority) - if topTask == nil || task.Priority > highestPriority { - highestPriority = task.Priority - topTask = task - } - } - - if topTask != nil { - topPriorityItem = &service.ProjectSearchResult{ - Value: &service.ProjectSearchResult_Task{ - Task: data.PopulateTaskRelationships(topTask), - }, - } - } - } - - // If no task found and category allows, check for at-risk milestones - if topPriorityItem == nil && (category == "" || category == "milestone") { - milestones := data.GetMilestonesByProjectID(context.Id) - for _, milestone := range milestones { - if milestone.Status == service.MilestoneStatus_MILESTONE_STATUS_DELAYED || - milestone.Status == service.MilestoneStatus_MILESTONE_STATUS_PENDING { - topPriorityItem = &service.ProjectSearchResult{ - Value: &service.ProjectSearchResult_Milestone{ - Milestone: data.PopulateMilestoneRelationships(milestone), - }, - } - break - } - } - } - - // If still nothing found and category allows, return the project itself if it needs attention - if topPriorityItem == nil && (category == "" || category == "project") { - if context.Status == service.ProjectStatus_PROJECT_STATUS_ON_HOLD || - context.Status == service.ProjectStatus_PROJECT_STATUS_PLANNING { - project := data.GetProjectByID(context.Id) - if project != nil { - topPriorityItem = &service.ProjectSearchResult{ - Value: &service.ProjectSearchResult_Project{ - Project: p.populateProjectRelationships(project), - }, - } - } - } - } - - response.Result = append(response.Result, &service.ResolveProjectTopPriorityItemResult{ - TopPriorityItem: topPriorityItem, - }) - } - - return response, nil -} - -// ResolveEmployeeAverageTaskCompletionDays implements projects.ProjectsServiceServer. -func (p *ProjectsService) ResolveEmployeeAverageTaskCompletionDays(ctx context.Context, req *service.ResolveEmployeeAverageTaskCompletionDaysRequest) (*service.ResolveEmployeeAverageTaskCompletionDaysResponse, error) { - p.lock.RLock() - defer p.lock.RUnlock() - - response := &service.ResolveEmployeeAverageTaskCompletionDaysResponse{ - Result: make([]*service.ResolveEmployeeAverageTaskCompletionDaysResult, 0, len(req.Context)), - } - - for _, context := range req.Context { - employeeID := context.Id - var totalDays float64 - var taskCount int - - // Find completed tasks for this employee - for _, task := range data.ServiceTasks { - if task.AssigneeId != nil && task.AssigneeId.Value == employeeID { - // Filter by project if specified - matchesProject := true - if req.FieldArgs != nil && req.FieldArgs.ProjectId != nil { - matchesProject = task.ProjectId == req.FieldArgs.ProjectId.Value - } - - // Filter by priority if specified - matchesPriority := true - if req.FieldArgs != nil && req.FieldArgs.Priority != service.TaskPriority_TASK_PRIORITY_UNSPECIFIED { - matchesPriority = task.Priority == req.FieldArgs.Priority - } - - // Only count completed tasks with creation and completion dates - if matchesProject && matchesPriority && - task.Status == service.TaskStatus_TASK_STATUS_COMPLETED && - task.CreatedAt != nil && task.CompletedAt != nil { - createdAt, err1 := time.Parse(time.RFC3339, task.CreatedAt.Value) - completedAt, err2 := time.Parse(time.RFC3339, task.CompletedAt.Value) - if err1 == nil && err2 == nil { - days := completedAt.Sub(createdAt).Hours() / 24 - totalDays += days - taskCount++ - } - } - } - } - - var averageDays *wrapperspb.DoubleValue - if taskCount > 0 { - averageDays = &wrapperspb.DoubleValue{Value: totalDays / float64(taskCount)} - } - - response.Result = append(response.Result, &service.ResolveEmployeeAverageTaskCompletionDaysResult{ - AverageTaskCompletionDays: averageDays, - }) - } - - return response, nil -} - -// ResolveEmployeeCurrentWorkload implements projects.ProjectsServiceServer. -func (p *ProjectsService) ResolveEmployeeCurrentWorkload(ctx context.Context, req *service.ResolveEmployeeCurrentWorkloadRequest) (*service.ResolveEmployeeCurrentWorkloadResponse, error) { - p.lock.RLock() - defer p.lock.RUnlock() - - response := &service.ResolveEmployeeCurrentWorkloadResponse{ - Result: make([]*service.ResolveEmployeeCurrentWorkloadResult, 0, len(req.Context)), - } - - for _, context := range req.Context { - employeeID := context.Id - workloadCount := int32(0) - - // Count tasks assigned to this employee - for _, task := range data.ServiceTasks { - if task.AssigneeId != nil && task.AssigneeId.Value == employeeID { - // Check if we should include completed tasks - includeCompleted := false - if req.FieldArgs != nil && req.FieldArgs.IncludeCompleted != nil { - includeCompleted = req.FieldArgs.IncludeCompleted.Value - } - - // Filter by project if specified - matchesProject := true - if req.FieldArgs != nil && req.FieldArgs.ProjectId != nil { - matchesProject = task.ProjectId == req.FieldArgs.ProjectId.Value - } - - if matchesProject { - if includeCompleted || task.Status != service.TaskStatus_TASK_STATUS_COMPLETED { - workloadCount++ - } - } - } - } - - response.Result = append(response.Result, &service.ResolveEmployeeCurrentWorkloadResult{ - CurrentWorkload: workloadCount, - }) - } - - return response, nil -} - -// ResolveMilestoneDaysUntilDue implements projects.ProjectsServiceServer. -func (p *ProjectsService) ResolveMilestoneDaysUntilDue(ctx context.Context, req *service.ResolveMilestoneDaysUntilDueRequest) (*service.ResolveMilestoneDaysUntilDueResponse, error) { - p.lock.RLock() - defer p.lock.RUnlock() - - response := &service.ResolveMilestoneDaysUntilDueResponse{ - Result: make([]*service.ResolveMilestoneDaysUntilDueResult, 0, len(req.Context)), - } - - for _, context := range req.Context { - // Use fromDate if provided, otherwise use current date - fromDate := time.Now() - if req.FieldArgs != nil && req.FieldArgs.FromDate != nil { - parsedDate, err := time.Parse("2006-01-02", req.FieldArgs.FromDate.Value) - if err == nil { - fromDate = parsedDate - } - } - - var daysUntilDue *wrapperspb.Int32Value - if context.EndDate != nil { - endDate, err := time.Parse("2006-01-02", context.EndDate.Value) - if err == nil { - days := int32(endDate.Sub(fromDate).Hours() / 24) - daysUntilDue = &wrapperspb.Int32Value{Value: days} - } - } - - response.Result = append(response.Result, &service.ResolveMilestoneDaysUntilDueResult{ - DaysUntilDue: daysUntilDue, - }) - } - - return response, nil -} - -// ResolveMilestoneIsAtRisk implements projects.ProjectsServiceServer. -func (p *ProjectsService) ResolveMilestoneIsAtRisk(ctx context.Context, req *service.ResolveMilestoneIsAtRiskRequest) (*service.ResolveMilestoneIsAtRiskResponse, error) { - p.lock.RLock() - defer p.lock.RUnlock() - - response := &service.ResolveMilestoneIsAtRiskResponse{ - Result: make([]*service.ResolveMilestoneIsAtRiskResult, 0, len(req.Context)), - } - - // Default threshold is 70% - if completion is below this and status is not completed, it's at risk - threshold := 70.0 - if req.FieldArgs != nil && req.FieldArgs.Threshold != nil { - threshold = req.FieldArgs.Threshold.Value - } - - for _, context := range req.Context { - isAtRisk := false - - // Check if milestone is delayed or at risk - if context.Status == service.MilestoneStatus_MILESTONE_STATUS_DELAYED { - isAtRisk = true - } else if context.Status != service.MilestoneStatus_MILESTONE_STATUS_COMPLETED { - // Check if completion percentage is below threshold - if context.CompletionPercentage != nil && context.CompletionPercentage.Value < threshold { - // Also check if we're close to or past the end date - if context.EndDate != nil { - endDate, err := time.Parse("2006-01-02", context.EndDate.Value) - if err == nil { - daysUntilDue := time.Until(endDate).Hours() / 24 - // If less than 7 days remaining and not on track, it's at risk - if daysUntilDue < 7 { - isAtRisk = true - } - } - } - } - } - - response.Result = append(response.Result, &service.ResolveMilestoneIsAtRiskResult{ - IsAtRisk: isAtRisk, - }) - } - - return response, nil -} - -// ResolveProjectCompletionRate implements projects.ProjectsServiceServer. -func (p *ProjectsService) ResolveProjectCompletionRate(ctx context.Context, req *service.ResolveProjectCompletionRateRequest) (*service.ResolveProjectCompletionRateResponse, error) { - p.lock.RLock() - defer p.lock.RUnlock() - - response := &service.ResolveProjectCompletionRateResponse{ - Result: make([]*service.ResolveProjectCompletionRateResult, 0, len(req.Context)), - } - - for _, context := range req.Context { - tasks := data.GetTasksByProjectID(context.Id) - - if len(tasks) == 0 { - response.Result = append(response.Result, &service.ResolveProjectCompletionRateResult{ - CompletionRate: 0.0, - }) - continue - } - - completedCount := 0 - for _, task := range tasks { - if task.Status == service.TaskStatus_TASK_STATUS_COMPLETED { - completedCount++ - } - } - - // If includeSubtasks is true, we could count subtasks too - // For demo purposes, we'll just use the top-level tasks - completionRate := float64(completedCount) / float64(len(tasks)) * 100.0 - - response.Result = append(response.Result, &service.ResolveProjectCompletionRateResult{ - CompletionRate: completionRate, - }) - } - - return response, nil -} - -// ResolveProjectEstimatedDaysRemaining implements projects.ProjectsServiceServer. -func (p *ProjectsService) ResolveProjectEstimatedDaysRemaining(ctx context.Context, req *service.ResolveProjectEstimatedDaysRemainingRequest) (*service.ResolveProjectEstimatedDaysRemainingResponse, error) { - p.lock.RLock() - defer p.lock.RUnlock() - - response := &service.ResolveProjectEstimatedDaysRemainingResponse{ - Result: make([]*service.ResolveProjectEstimatedDaysRemainingResult, 0, len(req.Context)), - } - - for _, context := range req.Context { - // Use fromDate if provided, otherwise use current date - fromDate := time.Now() - if req.FieldArgs != nil && req.FieldArgs.FromDate != nil { - parsedDate, err := time.Parse("2006-01-02", req.FieldArgs.FromDate.Value) - if err == nil { - fromDate = parsedDate - } - } - - var daysRemaining *wrapperspb.Int32Value - if context.EndDate != nil { - endDate, err := time.Parse("2006-01-02", context.EndDate.Value) - if err == nil { - days := int32(endDate.Sub(fromDate).Hours() / 24) - daysRemaining = &wrapperspb.Int32Value{Value: days} - } - } - - response.Result = append(response.Result, &service.ResolveProjectEstimatedDaysRemainingResult{ - EstimatedDaysRemaining: daysRemaining, - }) - } - - return response, nil -} - -// ResolveProjectFilteredTasks implements projects.ProjectsServiceServer. -func (p *ProjectsService) ResolveProjectFilteredTasks(ctx context.Context, req *service.ResolveProjectFilteredTasksRequest) (*service.ResolveProjectFilteredTasksResponse, error) { - p.lock.RLock() - defer p.lock.RUnlock() - - response := &service.ResolveProjectFilteredTasksResponse{ - Result: make([]*service.ResolveProjectFilteredTasksResult, 0, len(req.Context)), - } - - for _, context := range req.Context { - tasks := data.GetTasksByProjectID(context.Id) - - // Filter by status if provided - if req.FieldArgs != nil && req.FieldArgs.Status != service.TaskStatus_TASK_STATUS_UNSPECIFIED { - filtered := make([]*service.Task, 0) - for _, task := range tasks { - if task.Status == req.FieldArgs.Status { - filtered = append(filtered, task) - } - } - tasks = filtered - } - - // Filter by priority if provided - if req.FieldArgs != nil && req.FieldArgs.Priority != service.TaskPriority_TASK_PRIORITY_UNSPECIFIED { - filtered := make([]*service.Task, 0) - for _, task := range tasks { - if task.Priority == req.FieldArgs.Priority { - filtered = append(filtered, task) - } - } - tasks = filtered - } - - // Apply limit if provided - if req.FieldArgs != nil && req.FieldArgs.Limit != nil && req.FieldArgs.Limit.Value > 0 { - limit := int(req.FieldArgs.Limit.Value) - if len(tasks) > limit { - tasks = tasks[:limit] - } - } - - // Populate tasks - response.Result = append(response.Result, &service.ResolveProjectFilteredTasksResult{ - FilteredTasks: p.populateTasksList(tasks), - }) - } - - return response, nil -} - -// ResolveTaskIsBlocked implements projects.ProjectsServiceServer. -func (p *ProjectsService) ResolveTaskIsBlocked(ctx context.Context, req *service.ResolveTaskIsBlockedRequest) (*service.ResolveTaskIsBlockedResponse, error) { - p.lock.RLock() - defer p.lock.RUnlock() - - response := &service.ResolveTaskIsBlockedResponse{ - Result: make([]*service.ResolveTaskIsBlockedResult, 0, len(req.Context)), - } - - for _, context := range req.Context { - isBlocked := false - - // Task is blocked if its status is BLOCKED - if context.Status == service.TaskStatus_TASK_STATUS_BLOCKED { - isBlocked = true - } - - // If checkDependencies is true, also check if any dependencies are not completed - if req.FieldArgs != nil && req.FieldArgs.CheckDependencies != nil && req.FieldArgs.CheckDependencies.Value { - // For demo purposes, we'll check the task's dependencies field - // In a real implementation, you'd look up the actual dependency tasks - // and check their status - task := data.GetTaskByID(context.Id) - if task != nil && task.Dependencies != nil && len(task.Dependencies) > 0 { - for _, dep := range task.Dependencies { - if dep != nil && dep.Status != service.TaskStatus_TASK_STATUS_COMPLETED { - isBlocked = true - break - } - } - } - } - - response.Result = append(response.Result, &service.ResolveTaskIsBlockedResult{ - IsBlocked: isBlocked, - }) - } - - return response, nil -} - -// ResolveTaskTotalEffort implements projects.ProjectsServiceServer. -func (p *ProjectsService) ResolveTaskTotalEffort(ctx context.Context, req *service.ResolveTaskTotalEffortRequest) (*service.ResolveTaskTotalEffortResponse, error) { - p.lock.RLock() - defer p.lock.RUnlock() - - response := &service.ResolveTaskTotalEffortResponse{ - Result: make([]*service.ResolveTaskTotalEffortResult, 0, len(req.Context)), - } - - for _, context := range req.Context { - var totalEffort *wrapperspb.DoubleValue - - // Calculate total effort as actual hours if available, otherwise estimated hours - if context.ActualHours != nil { - totalEffort = &wrapperspb.DoubleValue{Value: context.ActualHours.Value} - } else if context.EstimatedHours != nil { - totalEffort = &wrapperspb.DoubleValue{Value: context.EstimatedHours.Value} - } - - // If includeSubtasks is true, add subtask effort - if req.FieldArgs != nil && req.FieldArgs.IncludeSubtasks != nil && req.FieldArgs.IncludeSubtasks.Value { - task := data.GetTaskByID(context.Id) - if task != nil && task.Subtasks != nil && task.Subtasks.List != nil { - for _, subtask := range task.Subtasks.List.Items { - if subtask != nil { - var subtaskEffort float64 - if subtask.ActualHours != nil { - subtaskEffort = subtask.ActualHours.Value - } else if subtask.EstimatedHours != nil { - subtaskEffort = subtask.EstimatedHours.Value - } - if totalEffort == nil { - totalEffort = &wrapperspb.DoubleValue{Value: subtaskEffort} - } else { - totalEffort.Value += subtaskEffort - } - } - } - } - } - - response.Result = append(response.Result, &service.ResolveTaskTotalEffortResult{ - TotalEffort: totalEffort, - }) - } - - return response, nil -} - -// Helper functions to populate relationships -func (p *ProjectsService) populateProjectRelationships(project *service.Project) *service.Project { - // Create a copy to avoid modifying the original - populatedProject := &service.Project{ - Id: project.Id, - Name: project.Name, - Description: project.Description, - Status: project.Status, - StartDate: project.StartDate, - EndDate: project.EndDate, - MilestoneIds: project.MilestoneIds, - Progress: project.Progress, - // Populate relationships with populated versions - Milestones: p.populateMilestonesList(data.GetMilestonesByProjectID(project.Id)), - Tasks: p.populateTasksList(data.GetTasksByProjectID(project.Id)), - TeamMembers: data.GetTeamMembersByProjectId(project.Id), - RelatedProducts: p.getRelatedProductsByProjectId(project.Id), - // Populate all new fields with helper functions - Tags: project.Tags, // Keep original tags - AlternativeProjects: data.GetAlternativeProjects(project.Id), - Dependencies: data.GetProjectDependencies(project.Id), - ResourceGroups: data.GetResourceGroups(project.Id), - TasksByPhase: data.GetTasksByPhase(project.Id), - MilestoneGroups: data.GetMilestoneGroups(project.Id), - PriorityMatrix: data.GetPriorityMatrix(project.Id), - } - - return populatedProject -} - -// Helper function to populate a list of milestones with their relationships -func (p *ProjectsService) populateMilestonesList(milestones []*service.Milestone) []*service.Milestone { - var populatedMilestones []*service.Milestone - for _, milestone := range milestones { - populatedMilestones = append(populatedMilestones, data.PopulateMilestoneRelationships(milestone)) - } - return populatedMilestones -} - -// Helper function to populate a list of tasks with their relationships -func (p *ProjectsService) populateTasksList(tasks []*service.Task) []*service.Task { - var populatedTasks []*service.Task - for _, task := range tasks { - populatedTasks = append(populatedTasks, data.PopulateTaskRelationships(task)) - } - return populatedTasks -} - -func (p *ProjectsService) populateProjectUpdateRelationships(update *service.ProjectUpdate) *service.ProjectUpdate { - // ProjectUpdate now only has ID references - no nested objects to populate - return update -} - -func (p *ProjectsService) getRelatedProductsByProjectId(projectId string) []*service.Product { - var products []*service.Product - - // Use the configurable mapping instead of hardcoded switch-case - if productUpcs, exists := projectToProductMap[projectId]; exists { - for _, upc := range productUpcs { - if product := data.GetProductByUpc(upc); product != nil { - products = append(products, product) - } - } - } - - return products -} - // LookupMilestoneById implements projects.ProjectsServiceServer. func (p *ProjectsService) LookupMilestoneById(ctx context.Context, req *service.LookupMilestoneByIdRequest) (*service.LookupMilestoneByIdResponse, error) { logger := hclog.FromContext(ctx) diff --git a/demo/pkg/subgraphs/projects/src/service/service_resolve.go b/demo/pkg/subgraphs/projects/src/service/service_resolve.go new file mode 100644 index 0000000000..c3f6373b47 --- /dev/null +++ b/demo/pkg/subgraphs/projects/src/service/service_resolve.go @@ -0,0 +1,645 @@ +package service + +import ( + "context" + "math" + "strings" + "time" + + "github.com/hashicorp/go-hclog" + service "github.com/wundergraph/cosmo/demo/pkg/subgraphs/projects/generated" + "github.com/wundergraph/cosmo/demo/pkg/subgraphs/projects/src/data" + "google.golang.org/protobuf/types/known/wrapperspb" +) + +// ResolveProjectCriticalDeadline implements projects.ProjectsServiceServer. +func (p *ProjectsService) ResolveProjectCriticalDeadline(_ context.Context, req *service.ResolveProjectCriticalDeadlineRequest) (*service.ResolveProjectCriticalDeadlineResponse, error) { + p.lock.RLock() + defer p.lock.RUnlock() + + response := &service.ResolveProjectCriticalDeadlineResponse{ + Result: make([]*service.ResolveProjectCriticalDeadlineResult, 0, len(req.Context)), + } + + // Default to 30 days if not specified + withinDays := 30 + if req.FieldArgs != nil && req.FieldArgs.WithinDays != nil { + withinDays = int(req.FieldArgs.WithinDays.Value) + } + + for _, context := range req.Context { + var criticalDeadline *service.Timestamped + + // Get milestones for this project + milestones := data.GetMilestonesByProjectID(context.Id) + + // Find the nearest upcoming deadline that's within the specified days + var nearestMilestone *service.Milestone + var nearestDays int = withinDays + 1 // Start with value beyond threshold + + now := time.Now() + for _, milestone := range milestones { + // Only consider incomplete milestones with an end date + if milestone.Status == service.MilestoneStatus_MILESTONE_STATUS_COMPLETED { + continue + } + + if milestone.EndDate != nil { + endDate, err := time.Parse("2006-01-02", milestone.EndDate.Value) + if err == nil { + daysUntil := int(math.Abs(endDate.Sub(now).Hours() / 24)) + // Check if it's within our window and closer than what we've found + if daysUntil >= 0 && daysUntil <= withinDays && daysUntil < nearestDays { + nearestDays = daysUntil + nearestMilestone = milestone + } + } + } + } + + // If we found a critical milestone, return it + if nearestMilestone != nil { + criticalDeadline = &service.Timestamped{ + Instance: &service.Timestamped_Milestone{ + Milestone: data.PopulateMilestoneRelationships(nearestMilestone), + }, + } + } else { + // Check if the project itself has a critical deadline + if context.Status != service.ProjectStatus_PROJECT_STATUS_COMPLETED { + project := data.GetProjectByID(context.Id) + if project != nil && project.EndDate != nil { + endDate, err := time.Parse("2006-01-02", project.EndDate.Value) + if err == nil { + daysUntil := int(math.Abs(endDate.Sub(now).Hours() / 24)) + if daysUntil >= 0 && daysUntil <= withinDays { + criticalDeadline = &service.Timestamped{ + Instance: &service.Timestamped_Project{ + Project: p.populateProjectRelationships(project), + }, + } + } + } + } + } + } + + response.Result = append(response.Result, &service.ResolveProjectCriticalDeadlineResult{ + CriticalDeadline: criticalDeadline, + }) + } + + return response, nil +} + +// ResolveProjectTopPriorityItem implements projects.ProjectsServiceServer. +func (p *ProjectsService) ResolveProjectTopPriorityItem(ctx context.Context, req *service.ResolveProjectTopPriorityItemRequest) (*service.ResolveProjectTopPriorityItemResponse, error) { + logger := hclog.FromContext(ctx) + + p.lock.RLock() + defer p.lock.RUnlock() + + response := &service.ResolveProjectTopPriorityItemResponse{ + Result: make([]*service.ResolveProjectTopPriorityItemResult, 0, len(req.Context)), + } + + for _, context := range req.Context { + logger.Info("Processing context", "project_id", context.Id, "status", context.Status) + var topPriorityItem *service.ProjectSearchResult + + // Filter by category if provided + category := "" + if req.FieldArgs != nil && req.FieldArgs.Category != nil { + category = strings.ToLower(req.FieldArgs.Category.Value) + } + + // Check for highest priority task if category allows + if category == "" || category == "task" { + // Get tasks for this project + tasks := data.GetTasksByProjectID(context.Id) + + // Find the highest priority incomplete task + var topTask *service.Task + highestPriority := service.TaskPriority_TASK_PRIORITY_UNSPECIFIED + + for _, task := range tasks { + // Skip completed tasks + if task.Status == service.TaskStatus_TASK_STATUS_COMPLETED { + continue + } + + // Compare priorities (higher enum value = higher priority) + if topTask == nil || task.Priority > highestPriority { + highestPriority = task.Priority + topTask = task + } + } + + if topTask != nil { + topPriorityItem = &service.ProjectSearchResult{ + Value: &service.ProjectSearchResult_Task{ + Task: data.PopulateTaskRelationships(topTask), + }, + } + } + } + + // If no task found and category allows, check for at-risk milestones + if topPriorityItem == nil && (category == "" || category == "milestone") { + milestones := data.GetMilestonesByProjectID(context.Id) + for _, milestone := range milestones { + if milestone.Status == service.MilestoneStatus_MILESTONE_STATUS_DELAYED || + milestone.Status == service.MilestoneStatus_MILESTONE_STATUS_PENDING { + topPriorityItem = &service.ProjectSearchResult{ + Value: &service.ProjectSearchResult_Milestone{ + Milestone: data.PopulateMilestoneRelationships(milestone), + }, + } + break + } + } + } + + // If still nothing found and category allows, return the project itself if it needs attention + if topPriorityItem == nil && (category == "" || category == "project") { + if context.Status == service.ProjectStatus_PROJECT_STATUS_ON_HOLD || + context.Status == service.ProjectStatus_PROJECT_STATUS_PLANNING { + project := data.GetProjectByID(context.Id) + if project != nil { + topPriorityItem = &service.ProjectSearchResult{ + Value: &service.ProjectSearchResult_Project{ + Project: p.populateProjectRelationships(project), + }, + } + } + } + } + + response.Result = append(response.Result, &service.ResolveProjectTopPriorityItemResult{ + TopPriorityItem: topPriorityItem, + }) + } + + return response, nil +} + +// ResolveEmployeeAverageTaskCompletionDays implements projects.ProjectsServiceServer. +func (p *ProjectsService) ResolveEmployeeAverageTaskCompletionDays(ctx context.Context, req *service.ResolveEmployeeAverageTaskCompletionDaysRequest) (*service.ResolveEmployeeAverageTaskCompletionDaysResponse, error) { + p.lock.RLock() + defer p.lock.RUnlock() + + response := &service.ResolveEmployeeAverageTaskCompletionDaysResponse{ + Result: make([]*service.ResolveEmployeeAverageTaskCompletionDaysResult, 0, len(req.Context)), + } + + for _, context := range req.Context { + employeeID := context.Id + var totalDays float64 + var taskCount int + + // Find completed tasks for this employee + for _, task := range data.ServiceTasks { + if task.AssigneeId != nil && task.AssigneeId.Value == employeeID { + // Filter by project if specified + matchesProject := true + if req.FieldArgs != nil && req.FieldArgs.ProjectId != nil { + matchesProject = task.ProjectId == req.FieldArgs.ProjectId.Value + } + + // Filter by priority if specified + matchesPriority := true + if req.FieldArgs != nil && req.FieldArgs.Priority != service.TaskPriority_TASK_PRIORITY_UNSPECIFIED { + matchesPriority = task.Priority == req.FieldArgs.Priority + } + + // Only count completed tasks with creation and completion dates + if matchesProject && matchesPriority && + task.Status == service.TaskStatus_TASK_STATUS_COMPLETED && + task.CreatedAt != nil && task.CompletedAt != nil { + createdAt, err1 := time.Parse(time.RFC3339, task.CreatedAt.Value) + completedAt, err2 := time.Parse(time.RFC3339, task.CompletedAt.Value) + if err1 == nil && err2 == nil { + days := completedAt.Sub(createdAt).Hours() / 24 + totalDays += days + taskCount++ + } + } + } + } + + var averageDays *wrapperspb.DoubleValue + if taskCount > 0 { + averageDays = &wrapperspb.DoubleValue{Value: totalDays / float64(taskCount)} + } + + response.Result = append(response.Result, &service.ResolveEmployeeAverageTaskCompletionDaysResult{ + AverageTaskCompletionDays: averageDays, + }) + } + + return response, nil +} + +// ResolveEmployeeCurrentWorkload implements projects.ProjectsServiceServer. +func (p *ProjectsService) ResolveEmployeeCurrentWorkload(ctx context.Context, req *service.ResolveEmployeeCurrentWorkloadRequest) (*service.ResolveEmployeeCurrentWorkloadResponse, error) { + p.lock.RLock() + defer p.lock.RUnlock() + + response := &service.ResolveEmployeeCurrentWorkloadResponse{ + Result: make([]*service.ResolveEmployeeCurrentWorkloadResult, 0, len(req.Context)), + } + + for _, context := range req.Context { + employeeID := context.Id + workloadCount := int32(0) + + // Count tasks assigned to this employee + for _, task := range data.ServiceTasks { + if task.AssigneeId != nil && task.AssigneeId.Value == employeeID { + // Check if we should include completed tasks + includeCompleted := false + if req.FieldArgs != nil && req.FieldArgs.IncludeCompleted != nil { + includeCompleted = req.FieldArgs.IncludeCompleted.Value + } + + // Filter by project if specified + matchesProject := true + if req.FieldArgs != nil && req.FieldArgs.ProjectId != nil { + matchesProject = task.ProjectId == req.FieldArgs.ProjectId.Value + } + + if matchesProject { + if includeCompleted || task.Status != service.TaskStatus_TASK_STATUS_COMPLETED { + workloadCount++ + } + } + } + } + + response.Result = append(response.Result, &service.ResolveEmployeeCurrentWorkloadResult{ + CurrentWorkload: workloadCount, + }) + } + + return response, nil +} + +// ResolveMilestoneDaysUntilDue implements projects.ProjectsServiceServer. +func (p *ProjectsService) ResolveMilestoneDaysUntilDue(ctx context.Context, req *service.ResolveMilestoneDaysUntilDueRequest) (*service.ResolveMilestoneDaysUntilDueResponse, error) { + p.lock.RLock() + defer p.lock.RUnlock() + + response := &service.ResolveMilestoneDaysUntilDueResponse{ + Result: make([]*service.ResolveMilestoneDaysUntilDueResult, 0, len(req.Context)), + } + + for _, context := range req.Context { + // Use fromDate if provided, otherwise use current date + fromDate := time.Now() + if req.FieldArgs != nil && req.FieldArgs.FromDate != nil { + parsedDate, err := time.Parse("2006-01-02", req.FieldArgs.FromDate.Value) + if err == nil { + fromDate = parsedDate + } + } + + var daysUntilDue *wrapperspb.Int32Value + if context.EndDate != nil { + endDate, err := time.Parse("2006-01-02", context.EndDate.Value) + if err == nil { + days := int32(endDate.Sub(fromDate).Hours() / 24) + daysUntilDue = &wrapperspb.Int32Value{Value: days} + } + } + + response.Result = append(response.Result, &service.ResolveMilestoneDaysUntilDueResult{ + DaysUntilDue: daysUntilDue, + }) + } + + return response, nil +} + +// ResolveMilestoneIsAtRisk implements projects.ProjectsServiceServer. +func (p *ProjectsService) ResolveMilestoneIsAtRisk(ctx context.Context, req *service.ResolveMilestoneIsAtRiskRequest) (*service.ResolveMilestoneIsAtRiskResponse, error) { + p.lock.RLock() + defer p.lock.RUnlock() + + response := &service.ResolveMilestoneIsAtRiskResponse{ + Result: make([]*service.ResolveMilestoneIsAtRiskResult, 0, len(req.Context)), + } + + // Default threshold is 70% - if completion is below this and status is not completed, it's at risk + threshold := 70.0 + if req.FieldArgs != nil && req.FieldArgs.Threshold != nil { + threshold = req.FieldArgs.Threshold.Value + } + + for _, context := range req.Context { + isAtRisk := false + + // Check if milestone is delayed or at risk + if context.Status == service.MilestoneStatus_MILESTONE_STATUS_DELAYED { + isAtRisk = true + } else if context.Status != service.MilestoneStatus_MILESTONE_STATUS_COMPLETED { + // Check if completion percentage is below threshold + if context.CompletionPercentage != nil && context.CompletionPercentage.Value < threshold { + // Also check if we're close to or past the end date + if context.EndDate != nil { + endDate, err := time.Parse("2006-01-02", context.EndDate.Value) + if err == nil { + daysUntilDue := time.Until(endDate).Hours() / 24 + // If less than 7 days remaining and not on track, it's at risk + if daysUntilDue < 7 { + isAtRisk = true + } + } + } + } + } + + response.Result = append(response.Result, &service.ResolveMilestoneIsAtRiskResult{ + IsAtRisk: isAtRisk, + }) + } + + return response, nil +} + +// ResolveProjectCompletionRate implements projects.ProjectsServiceServer. +func (p *ProjectsService) ResolveProjectCompletionRate(ctx context.Context, req *service.ResolveProjectCompletionRateRequest) (*service.ResolveProjectCompletionRateResponse, error) { + p.lock.RLock() + defer p.lock.RUnlock() + + response := &service.ResolveProjectCompletionRateResponse{ + Result: make([]*service.ResolveProjectCompletionRateResult, 0, len(req.Context)), + } + + for _, context := range req.Context { + tasks := data.GetTasksByProjectID(context.Id) + + if len(tasks) == 0 { + response.Result = append(response.Result, &service.ResolveProjectCompletionRateResult{ + CompletionRate: 0.0, + }) + continue + } + + completedCount := 0 + for _, task := range tasks { + if task.Status == service.TaskStatus_TASK_STATUS_COMPLETED { + completedCount++ + } + } + + // If includeSubtasks is true, we could count subtasks too + // For demo purposes, we'll just use the top-level tasks + completionRate := float64(completedCount) / float64(len(tasks)) * 100.0 + + response.Result = append(response.Result, &service.ResolveProjectCompletionRateResult{ + CompletionRate: completionRate, + }) + } + + return response, nil +} + +// ResolveProjectEstimatedDaysRemaining implements projects.ProjectsServiceServer. +func (p *ProjectsService) ResolveProjectEstimatedDaysRemaining(ctx context.Context, req *service.ResolveProjectEstimatedDaysRemainingRequest) (*service.ResolveProjectEstimatedDaysRemainingResponse, error) { + p.lock.RLock() + defer p.lock.RUnlock() + + response := &service.ResolveProjectEstimatedDaysRemainingResponse{ + Result: make([]*service.ResolveProjectEstimatedDaysRemainingResult, 0, len(req.Context)), + } + + for _, context := range req.Context { + // Use fromDate if provided, otherwise use current date + fromDate := time.Now() + if req.FieldArgs != nil && req.FieldArgs.FromDate != nil { + parsedDate, err := time.Parse("2006-01-02", req.FieldArgs.FromDate.Value) + if err == nil { + fromDate = parsedDate + } + } + + var daysRemaining *wrapperspb.Int32Value + if context.EndDate != nil { + endDate, err := time.Parse("2006-01-02", context.EndDate.Value) + if err == nil { + days := int32(endDate.Sub(fromDate).Hours() / 24) + daysRemaining = &wrapperspb.Int32Value{Value: days} + } + } + + response.Result = append(response.Result, &service.ResolveProjectEstimatedDaysRemainingResult{ + EstimatedDaysRemaining: daysRemaining, + }) + } + + return response, nil +} + +// ResolveProjectFilteredTasks implements projects.ProjectsServiceServer. +func (p *ProjectsService) ResolveProjectFilteredTasks(ctx context.Context, req *service.ResolveProjectFilteredTasksRequest) (*service.ResolveProjectFilteredTasksResponse, error) { + p.lock.RLock() + defer p.lock.RUnlock() + + response := &service.ResolveProjectFilteredTasksResponse{ + Result: make([]*service.ResolveProjectFilteredTasksResult, 0, len(req.Context)), + } + + for _, context := range req.Context { + tasks := data.GetTasksByProjectID(context.Id) + + // Filter by status if provided + if req.FieldArgs != nil && req.FieldArgs.Status != service.TaskStatus_TASK_STATUS_UNSPECIFIED { + filtered := make([]*service.Task, 0) + for _, task := range tasks { + if task.Status == req.FieldArgs.Status { + filtered = append(filtered, task) + } + } + tasks = filtered + } + + // Filter by priority if provided + if req.FieldArgs != nil && req.FieldArgs.Priority != service.TaskPriority_TASK_PRIORITY_UNSPECIFIED { + filtered := make([]*service.Task, 0) + for _, task := range tasks { + if task.Priority == req.FieldArgs.Priority { + filtered = append(filtered, task) + } + } + tasks = filtered + } + + // Apply limit if provided + if req.FieldArgs != nil && req.FieldArgs.Limit != nil && req.FieldArgs.Limit.Value > 0 { + limit := int(req.FieldArgs.Limit.Value) + if len(tasks) > limit { + tasks = tasks[:limit] + } + } + + // Populate tasks + response.Result = append(response.Result, &service.ResolveProjectFilteredTasksResult{ + FilteredTasks: p.populateTasksList(tasks), + }) + } + + return response, nil +} + +// ResolveTaskIsBlocked implements projects.ProjectsServiceServer. +func (p *ProjectsService) ResolveTaskIsBlocked(ctx context.Context, req *service.ResolveTaskIsBlockedRequest) (*service.ResolveTaskIsBlockedResponse, error) { + p.lock.RLock() + defer p.lock.RUnlock() + + response := &service.ResolveTaskIsBlockedResponse{ + Result: make([]*service.ResolveTaskIsBlockedResult, 0, len(req.Context)), + } + + for _, context := range req.Context { + isBlocked := false + + // Task is blocked if its status is BLOCKED + if context.Status == service.TaskStatus_TASK_STATUS_BLOCKED { + isBlocked = true + } + + // If checkDependencies is true, also check if any dependencies are not completed + if req.FieldArgs != nil && req.FieldArgs.CheckDependencies != nil && req.FieldArgs.CheckDependencies.Value { + // For demo purposes, we'll check the task's dependencies field + // In a real implementation, you'd look up the actual dependency tasks + // and check their status + task := data.GetTaskByID(context.Id) + if task != nil && task.Dependencies != nil && len(task.Dependencies) > 0 { + for _, dep := range task.Dependencies { + if dep != nil && dep.Status != service.TaskStatus_TASK_STATUS_COMPLETED { + isBlocked = true + break + } + } + } + } + + response.Result = append(response.Result, &service.ResolveTaskIsBlockedResult{ + IsBlocked: isBlocked, + }) + } + + return response, nil +} + +// ResolveTaskTotalEffort implements projects.ProjectsServiceServer. +func (p *ProjectsService) ResolveTaskTotalEffort(ctx context.Context, req *service.ResolveTaskTotalEffortRequest) (*service.ResolveTaskTotalEffortResponse, error) { + p.lock.RLock() + defer p.lock.RUnlock() + + response := &service.ResolveTaskTotalEffortResponse{ + Result: make([]*service.ResolveTaskTotalEffortResult, 0, len(req.Context)), + } + + for _, context := range req.Context { + var totalEffort *wrapperspb.DoubleValue + + // Calculate total effort as actual hours if available, otherwise estimated hours + if context.ActualHours != nil { + totalEffort = &wrapperspb.DoubleValue{Value: context.ActualHours.Value} + } else if context.EstimatedHours != nil { + totalEffort = &wrapperspb.DoubleValue{Value: context.EstimatedHours.Value} + } + + // If includeSubtasks is true, add subtask effort + if req.FieldArgs != nil && req.FieldArgs.IncludeSubtasks != nil && req.FieldArgs.IncludeSubtasks.Value { + task := data.GetTaskByID(context.Id) + if task != nil && task.Subtasks != nil && task.Subtasks.List != nil { + for _, subtask := range task.Subtasks.List.Items { + if subtask != nil { + var subtaskEffort float64 + if subtask.ActualHours != nil { + subtaskEffort = subtask.ActualHours.Value + } else if subtask.EstimatedHours != nil { + subtaskEffort = subtask.EstimatedHours.Value + } + if totalEffort == nil { + totalEffort = &wrapperspb.DoubleValue{Value: subtaskEffort} + } else { + totalEffort.Value += subtaskEffort + } + } + } + } + } + + response.Result = append(response.Result, &service.ResolveTaskTotalEffortResult{ + TotalEffort: totalEffort, + }) + } + + return response, nil +} + +// ResolveProjectSubProjects resolves the subProjects field for Project entities. +// It returns a list of child/sub-projects for each parent project context. +// The includeArchived argument controls whether completed (archived) projects are included. +// This field resolver supports recursive queries, allowing nested subProjects selections. +func (p *ProjectsService) ResolveProjectSubProjects(_ context.Context, req *service.ResolveProjectSubProjectsRequest) (*service.ResolveProjectSubProjectsResponse, error) { + p.lock.RLock() + defer p.lock.RUnlock() + + response := &service.ResolveProjectSubProjectsResponse{ + Result: make([]*service.ResolveProjectSubProjectsResult, 0, len(req.Context)), + } + + // Check if archived projects should be included (defaults to true if not specified) + includeArchived := true + if req.FieldArgs != nil && req.FieldArgs.IncludeArchived != nil { + includeArchived = req.FieldArgs.IncludeArchived.Value + } + + // Define parent-to-subproject relationships using actual project IDs + // This creates a hierarchy: 1 -> [2,3], 2 -> [4,5], 3 -> [6,7], etc. + subProjectMapping := map[string][]string{ + "1": {"2", "3"}, + "2": {"4", "5"}, + "3": {"6", "7"}, + "4": {"1"}, + "5": {"2"}, + "6": {"3"}, + "7": {"4"}, + } + + for _, ctx := range req.Context { + subProjects := make([]*service.Project, 0) + + // Get sub-project IDs for this parent project + subProjectIDs, exists := subProjectMapping[ctx.Id] + if !exists { + // Default: return first two projects as sub-projects + subProjectIDs = []string{"1", "2"} + } + + for _, subProjectID := range subProjectIDs { + project := data.GetProjectByID(subProjectID) + if project == nil { + continue + } + + // Skip archived (completed) projects if not included + if !includeArchived && project.Status == service.ProjectStatus_PROJECT_STATUS_COMPLETED { + continue + } + + // Populate relationships using the helper function + subProjects = append(subProjects, p.populateProjectRelationships(project)) + } + + response.Result = append(response.Result, &service.ResolveProjectSubProjectsResult{ + SubProjects: subProjects, + }) + } + + return response, nil +} diff --git a/demo/pkg/subgraphs/projects/src/service/util.go b/demo/pkg/subgraphs/projects/src/service/util.go new file mode 100644 index 0000000000..a4148578ff --- /dev/null +++ b/demo/pkg/subgraphs/projects/src/service/util.go @@ -0,0 +1,74 @@ +package service + +import ( + service "github.com/wundergraph/cosmo/demo/pkg/subgraphs/projects/generated" + "github.com/wundergraph/cosmo/demo/pkg/subgraphs/projects/src/data" +) + +// Helper functions to populate relationships +func (p *ProjectsService) populateProjectRelationships(project *service.Project) *service.Project { + // Create a copy to avoid modifying the original + populatedProject := &service.Project{ + Id: project.Id, + Name: project.Name, + Description: project.Description, + Status: project.Status, + StartDate: project.StartDate, + EndDate: project.EndDate, + MilestoneIds: project.MilestoneIds, + Progress: project.Progress, + // Populate relationships with populated versions + Milestones: p.populateMilestonesList(data.GetMilestonesByProjectID(project.Id)), + Tasks: p.populateTasksList(data.GetTasksByProjectID(project.Id)), + TeamMembers: data.GetTeamMembersByProjectId(project.Id), + RelatedProducts: p.getRelatedProductsByProjectId(project.Id), + // Populate all new fields with helper functions + Tags: project.Tags, // Keep original tags + AlternativeProjects: data.GetAlternativeProjects(project.Id), + Dependencies: data.GetProjectDependencies(project.Id), + ResourceGroups: data.GetResourceGroups(project.Id), + TasksByPhase: data.GetTasksByPhase(project.Id), + MilestoneGroups: data.GetMilestoneGroups(project.Id), + PriorityMatrix: data.GetPriorityMatrix(project.Id), + } + + return populatedProject +} + +// Helper function to populate a list of milestones with their relationships +func (p *ProjectsService) populateMilestonesList(milestones []*service.Milestone) []*service.Milestone { + var populatedMilestones []*service.Milestone + for _, milestone := range milestones { + populatedMilestones = append(populatedMilestones, data.PopulateMilestoneRelationships(milestone)) + } + return populatedMilestones +} + +// Helper function to populate a list of tasks with their relationships +func (p *ProjectsService) populateTasksList(tasks []*service.Task) []*service.Task { + var populatedTasks []*service.Task + for _, task := range tasks { + populatedTasks = append(populatedTasks, data.PopulateTaskRelationships(task)) + } + return populatedTasks +} + +func (p *ProjectsService) populateProjectUpdateRelationships(update *service.ProjectUpdate) *service.ProjectUpdate { + // ProjectUpdate now only has ID references - no nested objects to populate + return update +} + +func (p *ProjectsService) getRelatedProductsByProjectId(projectId string) []*service.Product { + var products []*service.Product + + // Use the configurable mapping instead of hardcoded switch-case + if productUpcs, exists := projectToProductMap[projectId]; exists { + for _, upc := range productUpcs { + if product := data.GetProductByUpc(upc); product != nil { + products = append(products, product) + } + } + } + + return products +} diff --git a/router-tests/go.mod b/router-tests/go.mod index e6e074c5e6..3de9ec5fcf 100644 --- a/router-tests/go.mod +++ b/router-tests/go.mod @@ -26,7 +26,7 @@ require ( github.com/wundergraph/cosmo/demo/pkg/subgraphs/projects v0.0.0-20250715110703-10f2e5f9c79e github.com/wundergraph/cosmo/router v0.0.0-20251125205644-175f80c4e6d9 github.com/wundergraph/cosmo/router-plugin v0.0.0-20250808194725-de123ba1c65e - github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.243 + github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.245 go.opentelemetry.io/otel v1.36.0 go.opentelemetry.io/otel/sdk v1.36.0 go.opentelemetry.io/otel/sdk/metric v1.36.0 diff --git a/router-tests/go.sum b/router-tests/go.sum index d0beca0648..dc73f635fd 100644 --- a/router-tests/go.sum +++ b/router-tests/go.sum @@ -352,8 +352,8 @@ github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/ github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= github.com/wundergraph/astjson v0.0.0-20250106123708-be463c97e083 h1:8/D7f8gKxTBjW+SZK4mhxTTBVpxcqeBgWF1Rfmltbfk= github.com/wundergraph/astjson v0.0.0-20250106123708-be463c97e083/go.mod h1:eOTL6acwctsN4F3b7YE+eE2t8zcJ/doLm9sZzsxxxrE= -github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.243 h1:yNchVRa9agA6JtK/X9ZBv8BW/8sm4kl2eaFD6rh6D90= -github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.243/go.mod h1:mX25ASEQiKamxaFSK6NZihh0oDCigIuzro30up4mFH4= +github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.245 h1:MYewlXgIhI9jusocPUeyo346J3M5cqzc6ddru1qp+S8= +github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.245/go.mod h1:mX25ASEQiKamxaFSK6NZihh0oDCigIuzro30up4mFH4= github.com/xrash/smetrics v0.0.0-20250705151800-55b8f293f342 h1:FnBeRrxr7OU4VvAzt5X7s6266i6cSVkkFPS0TuXWbIg= github.com/xrash/smetrics v0.0.0-20250705151800-55b8f293f342/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yosida95/uritemplate/v3 v3.0.2 h1:Ed3Oyj9yrmi9087+NczuL5BwkIc4wvTb5zIM+UJPGz4= diff --git a/router-tests/grpc_subgraph_test.go b/router-tests/grpc_subgraph_test.go index bf757e6246..b09154d7a2 100644 --- a/router-tests/grpc_subgraph_test.go +++ b/router-tests/grpc_subgraph_test.go @@ -238,6 +238,26 @@ func TestGRPCSubgraph(t *testing.T) { query: `query { project(id:1) { topPriorityItem { __typename ... on Task { name priority status } } } }`, expected: `{"data":{"project":{"topPriorityItem":{"__typename":"Task","name":"Database Migration","priority":"HIGH","status":"TODO"}}}}`, }, + { + name: "query project with recursive field resolver", + query: `query { project(id:1) { subProjects { id name status } } }`, + expected: `{"data":{"project":{"subProjects":[{"id":"2","name":"Microservices Revolution","status":"ACTIVE"},{"id":"3","name":"AI-Powered Analytics","status":"ACTIVE"}]}}}`, + }, + { + name: "query project with recursive field resolver with multiple levels of recursion", + query: `query { project(id:1) { subProjects { id name status subProjects { id status } } } }`, + expected: `{"data":{"project":{"subProjects":[{"id":"2","name":"Microservices Revolution","status":"ACTIVE","subProjects":[{"id":"4","status":"PLANNING"},{"id":"5","status":"ON_HOLD"}]},{"id":"3","name":"AI-Powered Analytics","status":"ACTIVE","subProjects":[{"id":"6","status":"ACTIVE"},{"id":"7","status":"ACTIVE"}]}]}}}`, + }, + { + name: "query project with normal and recursive field resolver and aliases", + query: `query { project(id:2) { id name urgent: topPriorityItem(category: "task") { __typename } nextDeadline: criticalDeadline(withinDays: 10000) { __typename } subsub: subProjects { id name status } } }`, + expected: `{"data":{"project":{"id":"2","name":"Microservices Revolution","urgent":{"__typename":"Task"},"nextDeadline":{"__typename":"Milestone"},"subsub":[{"id":"4","name":"DevOps Transformation","status":"PLANNING"},{"id":"5","name":"Security Overhaul","status":"ON_HOLD"}]}}}`, + }, + { + name: "query project with normal and recursive field resolver and aliases and multiple levels of recursion and aliases", + query: `{ project(id: 2) { id name urgent: topPriorityItem(category: "task") { __typename } nextDeadline: criticalDeadline(withinDays: 10000) { __typename } subsub: subProjects { id name status otherSubs: subProjects { id name } } } }`, + expected: `{"data":{"project":{"id":"2","name":"Microservices Revolution","urgent":{"__typename":"Task"},"nextDeadline":{"__typename":"Milestone"},"subsub":[{"id":"4","name":"DevOps Transformation","status":"PLANNING","otherSubs":[{"id":"1","name":"Cloud Migration Overhaul"}]},{"id":"5","name":"Security Overhaul","status":"ON_HOLD","otherSubs":[{"id":"2","name":"Microservices Revolution"}]}]}}}`, + }, } testenv.Run(t, &testenv.Config{ RouterConfigJSONTemplate: testenv.ConfigWithGRPCJSONTemplate, diff --git a/router-tests/router_plugin_test.go b/router-tests/router_plugin_test.go index f043532f33..12e9845b9c 100644 --- a/router-tests/router_plugin_test.go +++ b/router-tests/router_plugin_test.go @@ -435,6 +435,26 @@ func TestRouterPluginRequests(t *testing.T) { query: `query { project(id:1) { topPriorityItem { __typename ... on Task { name priority status } } } }`, expected: `{"data":{"project":{"topPriorityItem":{"__typename":"Task","name":"Database Migration","priority":"HIGH","status":"TODO"}}}}`, }, + { + name: "query project with recursive field resolver", + query: `query { project(id:1) { subProjects { id name status } } }`, + expected: `{"data":{"project":{"subProjects":[{"id":"2","name":"Microservices Revolution","status":"ACTIVE"},{"id":"3","name":"AI-Powered Analytics","status":"ACTIVE"}]}}}`, + }, + { + name: "query project with recursive field resolver with multiple levels of recursion", + query: `query { project(id:1) { subProjects { id name status subProjects { id status } } } }`, + expected: `{"data":{"project":{"subProjects":[{"id":"2","name":"Microservices Revolution","status":"ACTIVE","subProjects":[{"id":"4","status":"PLANNING"},{"id":"5","status":"ON_HOLD"}]},{"id":"3","name":"AI-Powered Analytics","status":"ACTIVE","subProjects":[{"id":"6","status":"ACTIVE"},{"id":"7","status":"ACTIVE"}]}]}}}`, + }, + { + name: "query project with normal and recursive field resolver and aliases", + query: `query { project(id:2) { id name urgent: topPriorityItem(category: "task") { __typename } nextDeadline: criticalDeadline(withinDays: 10000) { __typename } subsub: subProjects { id name status } } }`, + expected: `{"data":{"project":{"id":"2","name":"Microservices Revolution","urgent":{"__typename":"Task"},"nextDeadline":{"__typename":"Milestone"},"subsub":[{"id":"4","name":"DevOps Transformation","status":"PLANNING"},{"id":"5","name":"Security Overhaul","status":"ON_HOLD"}]}}}`, + }, + { + name: "query project with normal and recursive field resolver and aliases and multiple levels of recursion and aliases", + query: `{ project(id: 2) { id name urgent: topPriorityItem(category: "task") { __typename } nextDeadline: criticalDeadline(withinDays: 10000) { __typename } subsub: subProjects { id name status otherSubs: subProjects { id name } } } }`, + expected: `{"data":{"project":{"id":"2","name":"Microservices Revolution","urgent":{"__typename":"Task"},"nextDeadline":{"__typename":"Milestone"},"subsub":[{"id":"4","name":"DevOps Transformation","status":"PLANNING","otherSubs":[{"id":"1","name":"Cloud Migration Overhaul"}]},{"id":"5","name":"Security Overhaul","status":"ON_HOLD","otherSubs":[{"id":"2","name":"Microservices Revolution"}]}]}}}`, + }, } testenv.Run(t, &testenv.Config{ RouterConfigJSONTemplate: testenv.ConfigWithPluginsJSONTemplate, diff --git a/router-tests/testenv/testdata/configWithGRPC.json b/router-tests/testenv/testdata/configWithGRPC.json index 544b711210..40f14deb5c 100644 --- a/router-tests/testenv/testdata/configWithGRPC.json +++ b/router-tests/testenv/testdata/configWithGRPC.json @@ -1270,6 +1270,7 @@ "tasksByPhase", "milestoneGroups", "priorityMatrix", + "subProjects", "filteredTasks", "completionRate", "estimatedDaysRemaining", @@ -1356,9 +1357,9 @@ "subscription": { "enabled": true }, "federation": { "enabled": true, - "serviceSdl": "extend schema\n@link(url: \"https://specs.apollo.dev/federation/v2.5\", import: [\"@authenticated\", \"@composeDirective\", \"@external\", \"@extends\", \"@inaccessible\", \"@interfaceObject\", \"@override\", \"@provides\", \"@key\", \"@requires\", \"@requiresScopes\", \"@shareable\", \"@tag\"])\n\nschema {\n query: Query\n mutation: Mutation\n}\n\ntype Query {\n projects: [Project!]!\n project(id: ID!): Project\n projectStatuses: [ProjectStatus!]!\n projectsByStatus(status: ProjectStatus!): [Project!]!\n projectResources(projectId: ID!): [ProjectResource!]!\n searchProjects(query: String!): [ProjectSearchResult!]!\n milestones(projectId: ID!): [Milestone!]!\n tasks(projectId: ID!): [Task!]!\n projectActivities(projectId: ID!): [ProjectActivity!]!\n\n # New query fields with different list patterns\n projectTags: [String] # nullable list of nullable strings\n archivedProjects: [Project]! # non-nullable list of nullable projects\n tasksByPriority(projectId: ID!): [[Task]] # nullable list of nullable lists\n resourceMatrix(projectId: ID!): [[ProjectResource!]!]! # non-nullable list of non-nullable lists\n\n # query to simulate that the service goes down\n killService: Boolean!\n panic: Boolean!\n\n nodesById(id: ID!): [Node!]!\n}\n\ntype Mutation {\n addProject(project: ProjectInput!): Project!\n addMilestone(milestone: MilestoneInput!): Milestone!\n addTask(task: TaskInput!): Task!\n updateProjectStatus(projectId: ID!, status: ProjectStatus!): ProjectUpdate!\n}\n\ninput ProjectInput {\n name: String!\n description: String\n startDate: String # ISO date\n endDate: String # ISO date\n status: ProjectStatus!\n}\n\ninput MilestoneInput {\n projectId: ID!\n name: String!\n description: String\n dueDate: String # ISO date\n status: MilestoneStatus!\n}\n\ninput TaskInput {\n projectId: ID!\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float\n}\n\n# Interfaces\ninterface Node {\n id: ID!\n}\n\ninterface Timestamped {\n startDate: String\n endDate: String\n}\n\ninterface Assignable {\n assigneeId: Int\n}\n\n# Updated Project type implementing interfaces\ntype Project implements Node & Timestamped @key(fields: \"id\") {\n id: ID!\n name: String!\n description: String\n startDate: String # ISO date\n endDate: String # ISO date\n status: ProjectStatus!\n # Federated references:\n teamMembers: [Employee!]!\n relatedProducts: [Product!]! # from products subgraph\n # Project milestones or checkpoints\n milestoneIds: [String!] # Array of milestone identifiers\n\n # New fields for extended functionality\n milestones: [Milestone!]!\n tasks: [Task!]!\n progress: Float # Completion percentage\n\n # New fields with various list patterns for testing\n tags: [String] # nullable list of nullable tags\n alternativeProjects: [Project] # nullable list of nullable projects\n dependencies: [Project!] # nullable list of non-nullable projects\n resourceGroups: [[ProjectResource!]!]! # nested lists: non-nullable list of non-nullable lists\n tasksByPhase: [[Task!]]! # nested lists: non-nullable list of nullable lists\n milestoneGroups: [[Milestone]] # nested lists: nullable list of nullable lists\n priorityMatrix: [[[Task!]!]!] # triple nested: non-nullable list of non-nullable lists of non-nullable lists\n\n # Computed fields with @connect__fieldResolver\n filteredTasks(status: TaskStatus, priority: TaskPriority, limit: Int): [Task!]! @connect__fieldResolver(context: \"id\")\n completionRate(includeSubtasks: Boolean): Float! @connect__fieldResolver(context: \"id startDate endDate status\")\n estimatedDaysRemaining(fromDate: String): Int @connect__fieldResolver(context: \"id endDate status\")\n criticalDeadline(withinDays: Int): Timestamped @connect__fieldResolver(context: \"id status milestones\")\n topPriorityItem(category: String): ProjectSearchResult @connect__fieldResolver(context: \"id status\")\n}\n\n# New types - simplified with ID references only\ntype Milestone implements Node & Timestamped @key(fields: \"id\") {\n id: ID!\n projectId: ID!\n name: String!\n description: String\n startDate: String # ISO date (when milestone work starts)\n endDate: String # ISO date (milestone due date)\n status: MilestoneStatus!\n completionPercentage: Float\n\n # New fields with different list patterns\n dependencies: [Milestone]! # non-nullable list of nullable milestones\n subtasks: [Task] # nullable list of nullable tasks\n reviewers: [Employee!] # nullable list of non-nullable employees\n\n # Computed fields with @connect__fieldResolver\n isAtRisk(threshold: Float): Boolean! @connect__fieldResolver(context: \"id endDate status completionPercentage\")\n daysUntilDue(fromDate: String): Int @connect__fieldResolver(context: \"endDate\")\n}\n\ntype Task implements Node & Assignable @key(fields: \"id\") {\n id: ID!\n projectId: ID!\n milestoneId: ID\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float @deprecated(reason: \"No more estimations!\")\n actualHours: Float\n createdAt: String # ISO date\n completedAt: String # ISO date\n\n # New fields with different list patterns\n labels: [String] # nullable list of nullable labels\n subtasks: [Task!] # nullable list of non-nullable subtasks\n dependencies: [Task]! # non-nullable list of nullable tasks\n attachmentUrls: [String!]! # non-nullable list of non-nullable URLs\n reviewerIds: [Int] # nullable list of nullable reviewer IDs\n\n # Computed fields with @connect__fieldResolver\n isBlocked(checkDependencies: Boolean): Boolean! @connect__fieldResolver(context: \"id status\")\n totalEffort(includeSubtasks: Boolean): Float @connect__fieldResolver(context: \"id estimatedHours actualHours\")\n}\n\ntype ProjectUpdate implements Node {\n id: ID!\n projectId: ID!\n updatedById: Int!\n updateType: ProjectUpdateType!\n description: String!\n timestamp: String! # ISO date\n metadata: String # JSON metadata\n}\n\n# Enums\nenum ProjectStatus {\n PLANNING\n ACTIVE\n COMPLETED\n ON_HOLD\n}\n\nenum MilestoneStatus {\n PENDING\n IN_PROGRESS\n COMPLETED\n DELAYED\n}\n\nenum TaskStatus {\n TODO\n IN_PROGRESS\n REVIEW\n COMPLETED\n BLOCKED\n}\n\nenum TaskPriority {\n LOW\n MEDIUM\n HIGH\n URGENT\n}\n\nenum ProjectUpdateType {\n STATUS_CHANGE\n MILESTONE_ADDED\n TASK_ASSIGNED\n PROGRESS_UPDATE\n TEAM_CHANGE\n}\n\n# Unions\nunion ProjectResource = Employee | Product | Milestone | Task\n\nunion ProjectSearchResult = Project | Milestone | Task\n\nunion ProjectActivity = ProjectUpdate | Milestone | Task\n\n# Federated types (unchanged)\ntype Employee @key(fields: \"id\") {\n id: Int!\n # New field resolved by this subgraph:\n projects: [Project!]\n # New fields for extended functionality\n assignedTasks: [Task!]!\n completedTasks: [Task!]!\n\n # New fields with different list patterns\n skills: [String] # nullable list of nullable skills\n certifications: [String!] # nullable list of non-nullable certifications\n projectHistory: [[Project!]]! # non-nullable list of nullable lists of non-nullable projects\n\n # Computed fields with @connect__fieldResolver\n currentWorkload(includeCompleted: Boolean, projectId: ID): Int! @connect__fieldResolver(context: \"id\")\n averageTaskCompletionDays(projectId: ID, priority: TaskPriority): Float @connect__fieldResolver(context: \"id\")\n}\n\ntype Product @key(fields: \"upc\") {\n upc: String!\n # Projects contributing to this product:\n projects: [Project!]\n\n # New field with nested lists\n featureMatrix: [[String]] # nullable list of nullable lists of nullable features\n}\n" + "serviceSdl": "extend schema\n@link(url: \"https://specs.apollo.dev/federation/v2.5\", import: [\"@authenticated\", \"@composeDirective\", \"@external\", \"@extends\", \"@inaccessible\", \"@interfaceObject\", \"@override\", \"@provides\", \"@key\", \"@requires\", \"@requiresScopes\", \"@shareable\", \"@tag\"])\n\nschema {\n query: Query\n mutation: Mutation\n}\n\ntype Query {\n projects: [Project!]!\n project(id: ID!): Project\n projectStatuses: [ProjectStatus!]!\n projectsByStatus(status: ProjectStatus!): [Project!]!\n projectResources(projectId: ID!): [ProjectResource!]!\n searchProjects(query: String!): [ProjectSearchResult!]!\n milestones(projectId: ID!): [Milestone!]!\n tasks(projectId: ID!): [Task!]!\n projectActivities(projectId: ID!): [ProjectActivity!]!\n\n # New query fields with different list patterns\n projectTags: [String] # nullable list of nullable strings\n archivedProjects: [Project]! # non-nullable list of nullable projects\n tasksByPriority(projectId: ID!): [[Task]] # nullable list of nullable lists\n resourceMatrix(projectId: ID!): [[ProjectResource!]!]! # non-nullable list of non-nullable lists\n\n # query to simulate that the service goes down\n killService: Boolean!\n panic: Boolean!\n\n nodesById(id: ID!): [Node!]!\n}\n\ntype Mutation {\n addProject(project: ProjectInput!): Project!\n addMilestone(milestone: MilestoneInput!): Milestone!\n addTask(task: TaskInput!): Task!\n updateProjectStatus(projectId: ID!, status: ProjectStatus!): ProjectUpdate!\n}\n\ninput ProjectInput {\n name: String!\n description: String\n startDate: String # ISO date\n endDate: String # ISO date\n status: ProjectStatus!\n}\n\ninput MilestoneInput {\n projectId: ID!\n name: String!\n description: String\n dueDate: String # ISO date\n status: MilestoneStatus!\n}\n\ninput TaskInput {\n projectId: ID!\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float\n}\n\n# Interfaces\ninterface Node {\n id: ID!\n}\n\ninterface Timestamped {\n startDate: String\n endDate: String\n}\n\ninterface Assignable {\n assigneeId: Int\n}\n\n# Updated Project type implementing interfaces\ntype Project implements Node & Timestamped @key(fields: \"id\") {\n id: ID!\n name: String!\n description: String\n startDate: String # ISO date\n endDate: String # ISO date\n status: ProjectStatus!\n # Federated references:\n teamMembers: [Employee!]!\n relatedProducts: [Product!]! # from products subgraph\n # Project milestones or checkpoints\n milestoneIds: [String!] # Array of milestone identifiers\n\n # New fields for extended functionality\n milestones: [Milestone!]!\n tasks: [Task!]!\n progress: Float # Completion percentage\n\n # New fields with various list patterns for testing\n tags: [String] # nullable list of nullable tags\n alternativeProjects: [Project] # nullable list of nullable projects\n dependencies: [Project!] # nullable list of non-nullable projects\n resourceGroups: [[ProjectResource!]!]! # nested lists: non-nullable list of non-nullable lists\n tasksByPhase: [[Task!]]! # nested lists: non-nullable list of nullable lists\n milestoneGroups: [[Milestone]] # nested lists: nullable list of nullable lists\n priorityMatrix: [[[Task!]!]!] # triple nested: non-nullable list of non-nullable lists of non-nullable lists\n\n # Recursive field resolver for project hierarchy\n subProjects(includeArchived: Boolean): [Project!]! @connect__fieldResolver(context: \"id name status\")\n\n # Computed fields with @connect__fieldResolver\n filteredTasks(status: TaskStatus, priority: TaskPriority, limit: Int): [Task!]! @connect__fieldResolver(context: \"id\")\n completionRate(includeSubtasks: Boolean): Float! @connect__fieldResolver(context: \"id startDate endDate status\")\n estimatedDaysRemaining(fromDate: String): Int @connect__fieldResolver(context: \"id endDate status\")\n criticalDeadline(withinDays: Int): Timestamped @connect__fieldResolver(context: \"id status milestones\")\n topPriorityItem(category: String): ProjectSearchResult @connect__fieldResolver(context: \"id status\")\n}\n\n# New types - simplified with ID references only\ntype Milestone implements Node & Timestamped @key(fields: \"id\") {\n id: ID!\n projectId: ID!\n name: String!\n description: String\n startDate: String # ISO date (when milestone work starts)\n endDate: String # ISO date (milestone due date)\n status: MilestoneStatus!\n completionPercentage: Float\n\n # New fields with different list patterns\n dependencies: [Milestone]! # non-nullable list of nullable milestones\n subtasks: [Task] # nullable list of nullable tasks\n reviewers: [Employee!] # nullable list of non-nullable employees\n\n # Computed fields with @connect__fieldResolver\n isAtRisk(threshold: Float): Boolean! @connect__fieldResolver(context: \"id endDate status completionPercentage\")\n daysUntilDue(fromDate: String): Int @connect__fieldResolver(context: \"endDate\")\n}\n\ntype Task implements Node & Assignable @key(fields: \"id\") {\n id: ID!\n projectId: ID!\n milestoneId: ID\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float @deprecated(reason: \"No more estimations!\")\n actualHours: Float\n createdAt: String # ISO date\n completedAt: String # ISO date\n\n # New fields with different list patterns\n labels: [String] # nullable list of nullable labels\n subtasks: [Task!] # nullable list of non-nullable subtasks\n dependencies: [Task]! # non-nullable list of nullable tasks\n attachmentUrls: [String!]! # non-nullable list of non-nullable URLs\n reviewerIds: [Int] # nullable list of nullable reviewer IDs\n\n # Computed fields with @connect__fieldResolver\n isBlocked(checkDependencies: Boolean): Boolean! @connect__fieldResolver(context: \"id status\")\n totalEffort(includeSubtasks: Boolean): Float @connect__fieldResolver(context: \"id estimatedHours actualHours\")\n}\n\ntype ProjectUpdate implements Node {\n id: ID!\n projectId: ID!\n updatedById: Int!\n updateType: ProjectUpdateType!\n description: String!\n timestamp: String! # ISO date\n metadata: String # JSON metadata\n}\n\n# Enums\nenum ProjectStatus {\n PLANNING\n ACTIVE\n COMPLETED\n ON_HOLD\n}\n\nenum MilestoneStatus {\n PENDING\n IN_PROGRESS\n COMPLETED\n DELAYED\n}\n\nenum TaskStatus {\n TODO\n IN_PROGRESS\n REVIEW\n COMPLETED\n BLOCKED\n}\n\nenum TaskPriority {\n LOW\n MEDIUM\n HIGH\n URGENT\n}\n\nenum ProjectUpdateType {\n STATUS_CHANGE\n MILESTONE_ADDED\n TASK_ASSIGNED\n PROGRESS_UPDATE\n TEAM_CHANGE\n}\n\n# Unions\nunion ProjectResource = Employee | Product | Milestone | Task\n\nunion ProjectSearchResult = Project | Milestone | Task\n\nunion ProjectActivity = ProjectUpdate | Milestone | Task\n\n# Federated types (unchanged)\ntype Employee @key(fields: \"id\") {\n id: Int!\n # New field resolved by this subgraph:\n projects: [Project!]\n # New fields for extended functionality\n assignedTasks: [Task!]!\n completedTasks: [Task!]!\n\n # New fields with different list patterns\n skills: [String] # nullable list of nullable skills\n certifications: [String!] # nullable list of non-nullable certifications\n projectHistory: [[Project!]]! # non-nullable list of nullable lists of non-nullable projects\n\n # Computed fields with @connect__fieldResolver\n currentWorkload(includeCompleted: Boolean, projectId: ID): Int! @connect__fieldResolver(context: \"id\")\n averageTaskCompletionDays(projectId: ID, priority: TaskPriority): Float @connect__fieldResolver(context: \"id\")\n}\n\ntype Product @key(fields: \"upc\") {\n upc: String!\n # Projects contributing to this product:\n projects: [Project!]\n\n # New field with nested lists\n featureMatrix: [[String]] # nullable list of nullable lists of nullable features\n}\n" }, - "upstreamSchema": { "key": "52c91cae469d049c423debadfdfd37a91cfcdd18" }, + "upstreamSchema": { "key": "34e8a6b5fb00b0e37f716f0005c5bf6eee09c65c" }, "grpc": { "mapping": { "version": 1, @@ -1691,6 +1692,11 @@ { "original": "tasksByPhase", "mapped": "tasks_by_phase" }, { "original": "milestoneGroups", "mapped": "milestone_groups" }, { "original": "priorityMatrix", "mapped": "priority_matrix" }, + { + "original": "subProjects", + "mapped": "sub_projects", + "argumentMappings": [{ "original": "includeArchived", "mapped": "include_archived" }] + }, { "original": "filteredTasks", "mapped": "filtered_tasks", @@ -1879,6 +1885,20 @@ } ], "resolveMappings": [ + { + "type": "LOOKUP_TYPE_RESOLVE", + "lookupMapping": { + "type": "Project", + "fieldMapping": { + "original": "subProjects", + "mapped": "sub_projects", + "argumentMappings": [{ "original": "includeArchived", "mapped": "include_archived" }] + } + }, + "rpc": "ResolveProjectSubProjects", + "request": "ResolveProjectSubProjectsRequest", + "response": "ResolveProjectSubProjectsResponse" + }, { "type": "LOOKUP_TYPE_RESOLVE", "lookupMapping": { @@ -2045,7 +2065,7 @@ } ] }, - "protoSchema": "syntax = \"proto3\";\npackage service;\n\noption go_package = \"github.com/wundergraph/cosmo/demo/pkg/subgraphs/projects\";\n\nimport \"google/protobuf/wrappers.proto\";\n\n// Service definition for ProjectsService\nservice ProjectsService {\n // Lookup Employee entity by id\n rpc LookupEmployeeById(LookupEmployeeByIdRequest) returns (LookupEmployeeByIdResponse) {}\n // Lookup Milestone entity by id\n rpc LookupMilestoneById(LookupMilestoneByIdRequest) returns (LookupMilestoneByIdResponse) {}\n // Lookup Product entity by upc\n rpc LookupProductByUpc(LookupProductByUpcRequest) returns (LookupProductByUpcResponse) {}\n // Lookup Project entity by id\n rpc LookupProjectById(LookupProjectByIdRequest) returns (LookupProjectByIdResponse) {}\n // Lookup Task entity by id\n rpc LookupTaskById(LookupTaskByIdRequest) returns (LookupTaskByIdResponse) {}\n rpc MutationAddMilestone(MutationAddMilestoneRequest) returns (MutationAddMilestoneResponse) {}\n rpc MutationAddProject(MutationAddProjectRequest) returns (MutationAddProjectResponse) {}\n rpc MutationAddTask(MutationAddTaskRequest) returns (MutationAddTaskResponse) {}\n rpc MutationUpdateProjectStatus(MutationUpdateProjectStatusRequest) returns (MutationUpdateProjectStatusResponse) {}\n rpc QueryArchivedProjects(QueryArchivedProjectsRequest) returns (QueryArchivedProjectsResponse) {}\n rpc QueryKillService(QueryKillServiceRequest) returns (QueryKillServiceResponse) {}\n rpc QueryMilestones(QueryMilestonesRequest) returns (QueryMilestonesResponse) {}\n rpc QueryNodesById(QueryNodesByIdRequest) returns (QueryNodesByIdResponse) {}\n rpc QueryPanic(QueryPanicRequest) returns (QueryPanicResponse) {}\n rpc QueryProject(QueryProjectRequest) returns (QueryProjectResponse) {}\n rpc QueryProjectActivities(QueryProjectActivitiesRequest) returns (QueryProjectActivitiesResponse) {}\n rpc QueryProjectResources(QueryProjectResourcesRequest) returns (QueryProjectResourcesResponse) {}\n rpc QueryProjectStatuses(QueryProjectStatusesRequest) returns (QueryProjectStatusesResponse) {}\n rpc QueryProjectTags(QueryProjectTagsRequest) returns (QueryProjectTagsResponse) {}\n rpc QueryProjects(QueryProjectsRequest) returns (QueryProjectsResponse) {}\n rpc QueryProjectsByStatus(QueryProjectsByStatusRequest) returns (QueryProjectsByStatusResponse) {}\n rpc QueryResourceMatrix(QueryResourceMatrixRequest) returns (QueryResourceMatrixResponse) {}\n rpc QuerySearchProjects(QuerySearchProjectsRequest) returns (QuerySearchProjectsResponse) {}\n rpc QueryTasks(QueryTasksRequest) returns (QueryTasksResponse) {}\n rpc QueryTasksByPriority(QueryTasksByPriorityRequest) returns (QueryTasksByPriorityResponse) {}\n rpc ResolveEmployeeAverageTaskCompletionDays(ResolveEmployeeAverageTaskCompletionDaysRequest) returns (ResolveEmployeeAverageTaskCompletionDaysResponse) {}\n rpc ResolveEmployeeCurrentWorkload(ResolveEmployeeCurrentWorkloadRequest) returns (ResolveEmployeeCurrentWorkloadResponse) {}\n rpc ResolveMilestoneDaysUntilDue(ResolveMilestoneDaysUntilDueRequest) returns (ResolveMilestoneDaysUntilDueResponse) {}\n rpc ResolveMilestoneIsAtRisk(ResolveMilestoneIsAtRiskRequest) returns (ResolveMilestoneIsAtRiskResponse) {}\n rpc ResolveProjectCompletionRate(ResolveProjectCompletionRateRequest) returns (ResolveProjectCompletionRateResponse) {}\n rpc ResolveProjectCriticalDeadline(ResolveProjectCriticalDeadlineRequest) returns (ResolveProjectCriticalDeadlineResponse) {}\n rpc ResolveProjectEstimatedDaysRemaining(ResolveProjectEstimatedDaysRemainingRequest) returns (ResolveProjectEstimatedDaysRemainingResponse) {}\n rpc ResolveProjectFilteredTasks(ResolveProjectFilteredTasksRequest) returns (ResolveProjectFilteredTasksResponse) {}\n rpc ResolveProjectTopPriorityItem(ResolveProjectTopPriorityItemRequest) returns (ResolveProjectTopPriorityItemResponse) {}\n rpc ResolveTaskIsBlocked(ResolveTaskIsBlockedRequest) returns (ResolveTaskIsBlockedResponse) {}\n rpc ResolveTaskTotalEffort(ResolveTaskTotalEffortRequest) returns (ResolveTaskTotalEffortResponse) {}\n}\n\n// Wrapper message for a list of Employee.\nmessage ListOfEmployee {\n message List {\n repeated Employee items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Int.\nmessage ListOfInt {\n message List {\n repeated int32 items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Task.\nmessage ListOfListOfListOfTask {\n message List {\n repeated ListOfListOfTask items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Milestone.\nmessage ListOfListOfMilestone {\n message List {\n repeated ListOfMilestone items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Project.\nmessage ListOfListOfProject {\n message List {\n repeated ListOfProject items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of ProjectResource.\nmessage ListOfListOfProjectResource {\n message List {\n repeated ListOfProjectResource items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of String.\nmessage ListOfListOfString {\n message List {\n repeated ListOfString items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Task.\nmessage ListOfListOfTask {\n message List {\n repeated ListOfTask items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Milestone.\nmessage ListOfMilestone {\n message List {\n repeated Milestone items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Project.\nmessage ListOfProject {\n message List {\n repeated Project items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of ProjectResource.\nmessage ListOfProjectResource {\n message List {\n repeated ProjectResource items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of String.\nmessage ListOfString {\n message List {\n repeated string items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Task.\nmessage ListOfTask {\n message List {\n repeated Task items = 1;\n }\n List list = 1;\n}\n// Key message for Project entity lookup\nmessage LookupProjectByIdRequestKey {\n // Key field for Project entity lookup.\n string id = 1;\n}\n\n// Request message for Project entity lookup.\nmessage LookupProjectByIdRequest {\n /*\n * List of keys to look up Project entities.\n * Order matters - each key maps to one entity in LookupProjectByIdResponse.\n */\n repeated LookupProjectByIdRequestKey keys = 1;\n}\n\n// Response message for Project entity lookup.\nmessage LookupProjectByIdResponse {\n /*\n * List of Project entities in the same order as the keys in LookupProjectByIdRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Project result = 1;\n}\n\n// Key message for Milestone entity lookup\nmessage LookupMilestoneByIdRequestKey {\n // Key field for Milestone entity lookup.\n string id = 1;\n}\n\n// Request message for Milestone entity lookup.\nmessage LookupMilestoneByIdRequest {\n /*\n * List of keys to look up Milestone entities.\n * Order matters - each key maps to one entity in LookupMilestoneByIdResponse.\n */\n repeated LookupMilestoneByIdRequestKey keys = 1;\n}\n\n// Response message for Milestone entity lookup.\nmessage LookupMilestoneByIdResponse {\n /*\n * List of Milestone entities in the same order as the keys in LookupMilestoneByIdRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Milestone result = 1;\n}\n\n// Key message for Task entity lookup\nmessage LookupTaskByIdRequestKey {\n // Key field for Task entity lookup.\n string id = 1;\n}\n\n// Request message for Task entity lookup.\nmessage LookupTaskByIdRequest {\n /*\n * List of keys to look up Task entities.\n * Order matters - each key maps to one entity in LookupTaskByIdResponse.\n */\n repeated LookupTaskByIdRequestKey keys = 1;\n}\n\n// Response message for Task entity lookup.\nmessage LookupTaskByIdResponse {\n /*\n * List of Task entities in the same order as the keys in LookupTaskByIdRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Task result = 1;\n}\n\n// Key message for Employee entity lookup\nmessage LookupEmployeeByIdRequestKey {\n // Key field for Employee entity lookup.\n string id = 1;\n}\n\n// Request message for Employee entity lookup.\nmessage LookupEmployeeByIdRequest {\n /*\n * List of keys to look up Employee entities.\n * Order matters - each key maps to one entity in LookupEmployeeByIdResponse.\n */\n repeated LookupEmployeeByIdRequestKey keys = 1;\n}\n\n// Response message for Employee entity lookup.\nmessage LookupEmployeeByIdResponse {\n /*\n * List of Employee entities in the same order as the keys in LookupEmployeeByIdRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Employee result = 1;\n}\n\n// Key message for Product entity lookup\nmessage LookupProductByUpcRequestKey {\n // Key field for Product entity lookup.\n string upc = 1;\n}\n\n// Request message for Product entity lookup.\nmessage LookupProductByUpcRequest {\n /*\n * List of keys to look up Product entities.\n * Order matters - each key maps to one entity in LookupProductByUpcResponse.\n */\n repeated LookupProductByUpcRequestKey keys = 1;\n}\n\n// Response message for Product entity lookup.\nmessage LookupProductByUpcResponse {\n /*\n * List of Product entities in the same order as the keys in LookupProductByUpcRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Product result = 1;\n}\n\n// Request message for projects operation.\nmessage QueryProjectsRequest {\n}\n// Response message for projects operation.\nmessage QueryProjectsResponse {\n repeated Project projects = 1;\n}\n// Request message for project operation.\nmessage QueryProjectRequest {\n string id = 1;\n}\n// Response message for project operation.\nmessage QueryProjectResponse {\n Project project = 1;\n}\n// Request message for projectStatuses operation.\nmessage QueryProjectStatusesRequest {\n}\n// Response message for projectStatuses operation.\nmessage QueryProjectStatusesResponse {\n repeated ProjectStatus project_statuses = 1;\n}\n// Request message for projectsByStatus operation.\nmessage QueryProjectsByStatusRequest {\n ProjectStatus status = 1;\n}\n// Response message for projectsByStatus operation.\nmessage QueryProjectsByStatusResponse {\n repeated Project projects_by_status = 1;\n}\n// Request message for projectResources operation.\nmessage QueryProjectResourcesRequest {\n string project_id = 1;\n}\n// Response message for projectResources operation.\nmessage QueryProjectResourcesResponse {\n repeated ProjectResource project_resources = 1;\n}\n// Request message for searchProjects operation.\nmessage QuerySearchProjectsRequest {\n string query = 1;\n}\n// Response message for searchProjects operation.\nmessage QuerySearchProjectsResponse {\n repeated ProjectSearchResult search_projects = 1;\n}\n// Request message for milestones operation.\nmessage QueryMilestonesRequest {\n string project_id = 1;\n}\n// Response message for milestones operation.\nmessage QueryMilestonesResponse {\n repeated Milestone milestones = 1;\n}\n// Request message for tasks operation.\nmessage QueryTasksRequest {\n string project_id = 1;\n}\n// Response message for tasks operation.\nmessage QueryTasksResponse {\n repeated Task tasks = 1;\n}\n// Request message for projectActivities operation.\nmessage QueryProjectActivitiesRequest {\n string project_id = 1;\n}\n// Response message for projectActivities operation.\nmessage QueryProjectActivitiesResponse {\n repeated ProjectActivity project_activities = 1;\n}\n// Request message for projectTags operation.\nmessage QueryProjectTagsRequest {\n}\n// Response message for projectTags operation.\nmessage QueryProjectTagsResponse {\n ListOfString project_tags = 1;\n}\n// Request message for archivedProjects operation.\nmessage QueryArchivedProjectsRequest {\n}\n// Response message for archivedProjects operation.\nmessage QueryArchivedProjectsResponse {\n repeated Project archived_projects = 1;\n}\n// Request message for tasksByPriority operation.\nmessage QueryTasksByPriorityRequest {\n string project_id = 1;\n}\n// Response message for tasksByPriority operation.\nmessage QueryTasksByPriorityResponse {\n ListOfListOfTask tasks_by_priority = 1;\n}\n// Request message for resourceMatrix operation.\nmessage QueryResourceMatrixRequest {\n string project_id = 1;\n}\n// Response message for resourceMatrix operation.\nmessage QueryResourceMatrixResponse {\n ListOfListOfProjectResource resource_matrix = 1;\n}\n// Request message for killService operation.\nmessage QueryKillServiceRequest {\n}\n// Response message for killService operation.\nmessage QueryKillServiceResponse {\n bool kill_service = 1;\n}\n// Request message for panic operation.\nmessage QueryPanicRequest {\n}\n// Response message for panic operation.\nmessage QueryPanicResponse {\n bool panic = 1;\n}\n// Request message for nodesById operation.\nmessage QueryNodesByIdRequest {\n string id = 1;\n}\n// Response message for nodesById operation.\nmessage QueryNodesByIdResponse {\n repeated Node nodes_by_id = 1;\n}\n// Request message for addProject operation.\nmessage MutationAddProjectRequest {\n ProjectInput project = 1;\n}\n// Response message for addProject operation.\nmessage MutationAddProjectResponse {\n Project add_project = 1;\n}\n// Request message for addMilestone operation.\nmessage MutationAddMilestoneRequest {\n MilestoneInput milestone = 1;\n}\n// Response message for addMilestone operation.\nmessage MutationAddMilestoneResponse {\n Milestone add_milestone = 1;\n}\n// Request message for addTask operation.\nmessage MutationAddTaskRequest {\n TaskInput task = 1;\n}\n// Response message for addTask operation.\nmessage MutationAddTaskResponse {\n Task add_task = 1;\n}\n// Request message for updateProjectStatus operation.\nmessage MutationUpdateProjectStatusRequest {\n string project_id = 1;\n ProjectStatus status = 2;\n}\n// Response message for updateProjectStatus operation.\nmessage MutationUpdateProjectStatusResponse {\n ProjectUpdate update_project_status = 1;\n}\nmessage ResolveProjectFilteredTasksArgs {\n TaskStatus status = 1;\n TaskPriority priority = 2;\n google.protobuf.Int32Value limit = 3;\n}\n\nmessage ResolveProjectFilteredTasksContext {\n string id = 1;\n}\n\nmessage ResolveProjectFilteredTasksRequest {\n // context provides the resolver context for the field filteredTasks of type Project.\n repeated ResolveProjectFilteredTasksContext context = 1;\n // field_args provides the arguments for the resolver field filteredTasks of type Project.\n ResolveProjectFilteredTasksArgs field_args = 2;\n}\n\nmessage ResolveProjectFilteredTasksResult {\n repeated Task filtered_tasks = 1;\n}\n\nmessage ResolveProjectFilteredTasksResponse {\n repeated ResolveProjectFilteredTasksResult result = 1;\n}\n\nmessage ResolveProjectCompletionRateArgs {\n google.protobuf.BoolValue include_subtasks = 1;\n}\n\nmessage ResolveProjectCompletionRateContext {\n string id = 1;\n google.protobuf.StringValue start_date = 2;\n google.protobuf.StringValue end_date = 3;\n ProjectStatus status = 4;\n}\n\nmessage ResolveProjectCompletionRateRequest {\n // context provides the resolver context for the field completionRate of type Project.\n repeated ResolveProjectCompletionRateContext context = 1;\n // field_args provides the arguments for the resolver field completionRate of type Project.\n ResolveProjectCompletionRateArgs field_args = 2;\n}\n\nmessage ResolveProjectCompletionRateResult {\n double completion_rate = 1;\n}\n\nmessage ResolveProjectCompletionRateResponse {\n repeated ResolveProjectCompletionRateResult result = 1;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingArgs {\n google.protobuf.StringValue from_date = 1;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingContext {\n string id = 1;\n google.protobuf.StringValue end_date = 2;\n ProjectStatus status = 3;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingRequest {\n // context provides the resolver context for the field estimatedDaysRemaining of type Project.\n repeated ResolveProjectEstimatedDaysRemainingContext context = 1;\n // field_args provides the arguments for the resolver field estimatedDaysRemaining of type Project.\n ResolveProjectEstimatedDaysRemainingArgs field_args = 2;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingResult {\n google.protobuf.Int32Value estimated_days_remaining = 1;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingResponse {\n repeated ResolveProjectEstimatedDaysRemainingResult result = 1;\n}\n\nmessage ResolveProjectCriticalDeadlineArgs {\n google.protobuf.Int32Value within_days = 1;\n}\n\nmessage ResolveProjectCriticalDeadlineContext {\n string id = 1;\n ProjectStatus status = 2;\n repeated Milestone milestones = 3;\n}\n\nmessage ResolveProjectCriticalDeadlineRequest {\n // context provides the resolver context for the field criticalDeadline of type Project.\n repeated ResolveProjectCriticalDeadlineContext context = 1;\n // field_args provides the arguments for the resolver field criticalDeadline of type Project.\n ResolveProjectCriticalDeadlineArgs field_args = 2;\n}\n\nmessage ResolveProjectCriticalDeadlineResult {\n Timestamped critical_deadline = 1;\n}\n\nmessage ResolveProjectCriticalDeadlineResponse {\n repeated ResolveProjectCriticalDeadlineResult result = 1;\n}\n\nmessage ResolveProjectTopPriorityItemArgs {\n google.protobuf.StringValue category = 1;\n}\n\nmessage ResolveProjectTopPriorityItemContext {\n string id = 1;\n ProjectStatus status = 2;\n}\n\nmessage ResolveProjectTopPriorityItemRequest {\n // context provides the resolver context for the field topPriorityItem of type Project.\n repeated ResolveProjectTopPriorityItemContext context = 1;\n // field_args provides the arguments for the resolver field topPriorityItem of type Project.\n ResolveProjectTopPriorityItemArgs field_args = 2;\n}\n\nmessage ResolveProjectTopPriorityItemResult {\n ProjectSearchResult top_priority_item = 1;\n}\n\nmessage ResolveProjectTopPriorityItemResponse {\n repeated ResolveProjectTopPriorityItemResult result = 1;\n}\n\nmessage ResolveMilestoneIsAtRiskArgs {\n google.protobuf.DoubleValue threshold = 1;\n}\n\nmessage ResolveMilestoneIsAtRiskContext {\n string id = 1;\n google.protobuf.StringValue end_date = 2;\n MilestoneStatus status = 3;\n google.protobuf.DoubleValue completion_percentage = 4;\n}\n\nmessage ResolveMilestoneIsAtRiskRequest {\n // context provides the resolver context for the field isAtRisk of type Milestone.\n repeated ResolveMilestoneIsAtRiskContext context = 1;\n // field_args provides the arguments for the resolver field isAtRisk of type Milestone.\n ResolveMilestoneIsAtRiskArgs field_args = 2;\n}\n\nmessage ResolveMilestoneIsAtRiskResult {\n bool is_at_risk = 1;\n}\n\nmessage ResolveMilestoneIsAtRiskResponse {\n repeated ResolveMilestoneIsAtRiskResult result = 1;\n}\n\nmessage ResolveMilestoneDaysUntilDueArgs {\n google.protobuf.StringValue from_date = 1;\n}\n\nmessage ResolveMilestoneDaysUntilDueContext {\n google.protobuf.StringValue end_date = 1;\n}\n\nmessage ResolveMilestoneDaysUntilDueRequest {\n // context provides the resolver context for the field daysUntilDue of type Milestone.\n repeated ResolveMilestoneDaysUntilDueContext context = 1;\n // field_args provides the arguments for the resolver field daysUntilDue of type Milestone.\n ResolveMilestoneDaysUntilDueArgs field_args = 2;\n}\n\nmessage ResolveMilestoneDaysUntilDueResult {\n google.protobuf.Int32Value days_until_due = 1;\n}\n\nmessage ResolveMilestoneDaysUntilDueResponse {\n repeated ResolveMilestoneDaysUntilDueResult result = 1;\n}\n\nmessage ResolveTaskIsBlockedArgs {\n google.protobuf.BoolValue check_dependencies = 1;\n}\n\nmessage ResolveTaskIsBlockedContext {\n string id = 1;\n TaskStatus status = 2;\n}\n\nmessage ResolveTaskIsBlockedRequest {\n // context provides the resolver context for the field isBlocked of type Task.\n repeated ResolveTaskIsBlockedContext context = 1;\n // field_args provides the arguments for the resolver field isBlocked of type Task.\n ResolveTaskIsBlockedArgs field_args = 2;\n}\n\nmessage ResolveTaskIsBlockedResult {\n bool is_blocked = 1;\n}\n\nmessage ResolveTaskIsBlockedResponse {\n repeated ResolveTaskIsBlockedResult result = 1;\n}\n\nmessage ResolveTaskTotalEffortArgs {\n google.protobuf.BoolValue include_subtasks = 1;\n}\n\nmessage ResolveTaskTotalEffortContext {\n string id = 1;\n google.protobuf.DoubleValue estimated_hours = 2;\n google.protobuf.DoubleValue actual_hours = 3;\n}\n\nmessage ResolveTaskTotalEffortRequest {\n // context provides the resolver context for the field totalEffort of type Task.\n repeated ResolveTaskTotalEffortContext context = 1;\n // field_args provides the arguments for the resolver field totalEffort of type Task.\n ResolveTaskTotalEffortArgs field_args = 2;\n}\n\nmessage ResolveTaskTotalEffortResult {\n google.protobuf.DoubleValue total_effort = 1;\n}\n\nmessage ResolveTaskTotalEffortResponse {\n repeated ResolveTaskTotalEffortResult result = 1;\n}\n\nmessage ResolveEmployeeCurrentWorkloadArgs {\n google.protobuf.BoolValue include_completed = 1;\n google.protobuf.StringValue project_id = 2;\n}\n\nmessage ResolveEmployeeCurrentWorkloadContext {\n int32 id = 1;\n}\n\nmessage ResolveEmployeeCurrentWorkloadRequest {\n // context provides the resolver context for the field currentWorkload of type Employee.\n repeated ResolveEmployeeCurrentWorkloadContext context = 1;\n // field_args provides the arguments for the resolver field currentWorkload of type Employee.\n ResolveEmployeeCurrentWorkloadArgs field_args = 2;\n}\n\nmessage ResolveEmployeeCurrentWorkloadResult {\n int32 current_workload = 1;\n}\n\nmessage ResolveEmployeeCurrentWorkloadResponse {\n repeated ResolveEmployeeCurrentWorkloadResult result = 1;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysArgs {\n google.protobuf.StringValue project_id = 1;\n TaskPriority priority = 2;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysContext {\n int32 id = 1;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysRequest {\n // context provides the resolver context for the field averageTaskCompletionDays of type Employee.\n repeated ResolveEmployeeAverageTaskCompletionDaysContext context = 1;\n // field_args provides the arguments for the resolver field averageTaskCompletionDays of type Employee.\n ResolveEmployeeAverageTaskCompletionDaysArgs field_args = 2;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysResult {\n google.protobuf.DoubleValue average_task_completion_days = 1;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysResponse {\n repeated ResolveEmployeeAverageTaskCompletionDaysResult result = 1;\n}\n\nmessage Project {\n reserved 20 to 24;\n string id = 1;\n string name = 2;\n google.protobuf.StringValue description = 3;\n google.protobuf.StringValue start_date = 4;\n google.protobuf.StringValue end_date = 5;\n ProjectStatus status = 6;\n repeated Employee team_members = 7;\n repeated Product related_products = 8;\n ListOfString milestone_ids = 9;\n repeated Milestone milestones = 10;\n repeated Task tasks = 11;\n google.protobuf.DoubleValue progress = 12;\n ListOfString tags = 13;\n ListOfProject alternative_projects = 14;\n ListOfProject dependencies = 15;\n ListOfListOfProjectResource resource_groups = 16;\n ListOfListOfTask tasks_by_phase = 17;\n ListOfListOfMilestone milestone_groups = 18;\n ListOfListOfListOfTask priority_matrix = 19;\n}\n\nmessage Milestone {\n reserved 12 to 13;\n string id = 1;\n string project_id = 2;\n string name = 3;\n google.protobuf.StringValue description = 4;\n google.protobuf.StringValue start_date = 5;\n google.protobuf.StringValue end_date = 6;\n MilestoneStatus status = 7;\n google.protobuf.DoubleValue completion_percentage = 8;\n repeated Milestone dependencies = 9;\n ListOfTask subtasks = 10;\n ListOfEmployee reviewers = 11;\n}\n\nmessage Task {\n reserved 18 to 19;\n string id = 1;\n string project_id = 2;\n google.protobuf.StringValue milestone_id = 3;\n google.protobuf.Int32Value assignee_id = 4;\n string name = 5;\n google.protobuf.StringValue description = 6;\n TaskPriority priority = 7;\n TaskStatus status = 8;\n // Deprecation notice: No more estimations!\n google.protobuf.DoubleValue estimated_hours = 9 [deprecated = true];\n google.protobuf.DoubleValue actual_hours = 10;\n google.protobuf.StringValue created_at = 11;\n google.protobuf.StringValue completed_at = 12;\n ListOfString labels = 13;\n ListOfTask subtasks = 14;\n repeated Task dependencies = 15;\n repeated string attachment_urls = 16;\n ListOfInt reviewer_ids = 17;\n}\n\nmessage Employee {\n reserved 8 to 9;\n int32 id = 1;\n ListOfProject projects = 2;\n repeated Task assigned_tasks = 3;\n repeated Task completed_tasks = 4;\n ListOfString skills = 5;\n ListOfString certifications = 6;\n ListOfListOfProject project_history = 7;\n}\n\nmessage Product {\n string upc = 1;\n ListOfProject projects = 2;\n ListOfListOfString feature_matrix = 3;\n}\n\nenum ProjectStatus {\n PROJECT_STATUS_UNSPECIFIED = 0;\n PROJECT_STATUS_PLANNING = 1;\n PROJECT_STATUS_ACTIVE = 2;\n PROJECT_STATUS_COMPLETED = 3;\n PROJECT_STATUS_ON_HOLD = 4;\n}\n\nmessage ProjectResource {\n oneof value {\n Employee employee = 1;\n Product product = 2;\n Milestone milestone = 3;\n Task task = 4;\n }\n}\n\nmessage ProjectSearchResult {\n oneof value {\n Project project = 1;\n Milestone milestone = 2;\n Task task = 3;\n }\n}\n\nmessage ProjectActivity {\n oneof value {\n ProjectUpdate project_update = 1;\n Milestone milestone = 2;\n Task task = 3;\n }\n}\n\nmessage Node {\n oneof instance {\n Project project = 1;\n Milestone milestone = 2;\n Task task = 3;\n ProjectUpdate project_update = 4;\n }\n}\n\nmessage ProjectInput {\n string name = 1;\n google.protobuf.StringValue description = 2;\n google.protobuf.StringValue start_date = 3;\n google.protobuf.StringValue end_date = 4;\n ProjectStatus status = 5;\n}\n\nmessage MilestoneInput {\n string project_id = 1;\n string name = 2;\n google.protobuf.StringValue description = 3;\n google.protobuf.StringValue due_date = 4;\n MilestoneStatus status = 5;\n}\n\nmessage TaskInput {\n string project_id = 1;\n google.protobuf.Int32Value assignee_id = 2;\n string name = 3;\n google.protobuf.StringValue description = 4;\n TaskPriority priority = 5;\n TaskStatus status = 6;\n google.protobuf.DoubleValue estimated_hours = 7;\n}\n\nmessage ProjectUpdate {\n string id = 1;\n string project_id = 2;\n int32 updated_by_id = 3;\n ProjectUpdateType update_type = 4;\n string description = 5;\n string timestamp = 6;\n google.protobuf.StringValue metadata = 7;\n}\n\nmessage Timestamped {\n oneof instance {\n Project project = 1;\n Milestone milestone = 2;\n }\n}\n\nmessage Assignable {\n oneof instance {\n Task task = 1;\n }\n}\n\nenum MilestoneStatus {\n MILESTONE_STATUS_UNSPECIFIED = 0;\n MILESTONE_STATUS_PENDING = 1;\n MILESTONE_STATUS_IN_PROGRESS = 2;\n MILESTONE_STATUS_COMPLETED = 3;\n MILESTONE_STATUS_DELAYED = 4;\n}\n\nenum TaskStatus {\n TASK_STATUS_UNSPECIFIED = 0;\n TASK_STATUS_TODO = 1;\n TASK_STATUS_IN_PROGRESS = 2;\n TASK_STATUS_REVIEW = 3;\n TASK_STATUS_COMPLETED = 4;\n TASK_STATUS_BLOCKED = 5;\n}\n\nenum TaskPriority {\n TASK_PRIORITY_UNSPECIFIED = 0;\n TASK_PRIORITY_LOW = 1;\n TASK_PRIORITY_MEDIUM = 2;\n TASK_PRIORITY_HIGH = 3;\n TASK_PRIORITY_URGENT = 4;\n}\n\nenum ProjectUpdateType {\n PROJECT_UPDATE_TYPE_UNSPECIFIED = 0;\n PROJECT_UPDATE_TYPE_STATUS_CHANGE = 1;\n PROJECT_UPDATE_TYPE_MILESTONE_ADDED = 2;\n PROJECT_UPDATE_TYPE_TASK_ASSIGNED = 3;\n PROJECT_UPDATE_TYPE_PROGRESS_UPDATE = 4;\n PROJECT_UPDATE_TYPE_TEAM_CHANGE = 5;\n}" + "protoSchema": "syntax = \"proto3\";\npackage service;\n\noption go_package = \"github.com/wundergraph/cosmo/demo/pkg/subgraphs/projects\";\n\nimport \"google/protobuf/wrappers.proto\";\n\n// Service definition for ProjectsService\nservice ProjectsService {\n // Lookup Employee entity by id\n rpc LookupEmployeeById(LookupEmployeeByIdRequest) returns (LookupEmployeeByIdResponse) {}\n // Lookup Milestone entity by id\n rpc LookupMilestoneById(LookupMilestoneByIdRequest) returns (LookupMilestoneByIdResponse) {}\n // Lookup Product entity by upc\n rpc LookupProductByUpc(LookupProductByUpcRequest) returns (LookupProductByUpcResponse) {}\n // Lookup Project entity by id\n rpc LookupProjectById(LookupProjectByIdRequest) returns (LookupProjectByIdResponse) {}\n // Lookup Task entity by id\n rpc LookupTaskById(LookupTaskByIdRequest) returns (LookupTaskByIdResponse) {}\n rpc MutationAddMilestone(MutationAddMilestoneRequest) returns (MutationAddMilestoneResponse) {}\n rpc MutationAddProject(MutationAddProjectRequest) returns (MutationAddProjectResponse) {}\n rpc MutationAddTask(MutationAddTaskRequest) returns (MutationAddTaskResponse) {}\n rpc MutationUpdateProjectStatus(MutationUpdateProjectStatusRequest) returns (MutationUpdateProjectStatusResponse) {}\n rpc QueryArchivedProjects(QueryArchivedProjectsRequest) returns (QueryArchivedProjectsResponse) {}\n rpc QueryKillService(QueryKillServiceRequest) returns (QueryKillServiceResponse) {}\n rpc QueryMilestones(QueryMilestonesRequest) returns (QueryMilestonesResponse) {}\n rpc QueryNodesById(QueryNodesByIdRequest) returns (QueryNodesByIdResponse) {}\n rpc QueryPanic(QueryPanicRequest) returns (QueryPanicResponse) {}\n rpc QueryProject(QueryProjectRequest) returns (QueryProjectResponse) {}\n rpc QueryProjectActivities(QueryProjectActivitiesRequest) returns (QueryProjectActivitiesResponse) {}\n rpc QueryProjectResources(QueryProjectResourcesRequest) returns (QueryProjectResourcesResponse) {}\n rpc QueryProjectStatuses(QueryProjectStatusesRequest) returns (QueryProjectStatusesResponse) {}\n rpc QueryProjectTags(QueryProjectTagsRequest) returns (QueryProjectTagsResponse) {}\n rpc QueryProjects(QueryProjectsRequest) returns (QueryProjectsResponse) {}\n rpc QueryProjectsByStatus(QueryProjectsByStatusRequest) returns (QueryProjectsByStatusResponse) {}\n rpc QueryResourceMatrix(QueryResourceMatrixRequest) returns (QueryResourceMatrixResponse) {}\n rpc QuerySearchProjects(QuerySearchProjectsRequest) returns (QuerySearchProjectsResponse) {}\n rpc QueryTasks(QueryTasksRequest) returns (QueryTasksResponse) {}\n rpc QueryTasksByPriority(QueryTasksByPriorityRequest) returns (QueryTasksByPriorityResponse) {}\n rpc ResolveEmployeeAverageTaskCompletionDays(ResolveEmployeeAverageTaskCompletionDaysRequest) returns (ResolveEmployeeAverageTaskCompletionDaysResponse) {}\n rpc ResolveEmployeeCurrentWorkload(ResolveEmployeeCurrentWorkloadRequest) returns (ResolveEmployeeCurrentWorkloadResponse) {}\n rpc ResolveMilestoneDaysUntilDue(ResolveMilestoneDaysUntilDueRequest) returns (ResolveMilestoneDaysUntilDueResponse) {}\n rpc ResolveMilestoneIsAtRisk(ResolveMilestoneIsAtRiskRequest) returns (ResolveMilestoneIsAtRiskResponse) {}\n rpc ResolveProjectCompletionRate(ResolveProjectCompletionRateRequest) returns (ResolveProjectCompletionRateResponse) {}\n rpc ResolveProjectCriticalDeadline(ResolveProjectCriticalDeadlineRequest) returns (ResolveProjectCriticalDeadlineResponse) {}\n rpc ResolveProjectEstimatedDaysRemaining(ResolveProjectEstimatedDaysRemainingRequest) returns (ResolveProjectEstimatedDaysRemainingResponse) {}\n rpc ResolveProjectFilteredTasks(ResolveProjectFilteredTasksRequest) returns (ResolveProjectFilteredTasksResponse) {}\n rpc ResolveProjectSubProjects(ResolveProjectSubProjectsRequest) returns (ResolveProjectSubProjectsResponse) {}\n rpc ResolveProjectTopPriorityItem(ResolveProjectTopPriorityItemRequest) returns (ResolveProjectTopPriorityItemResponse) {}\n rpc ResolveTaskIsBlocked(ResolveTaskIsBlockedRequest) returns (ResolveTaskIsBlockedResponse) {}\n rpc ResolveTaskTotalEffort(ResolveTaskTotalEffortRequest) returns (ResolveTaskTotalEffortResponse) {}\n}\n\n// Wrapper message for a list of Employee.\nmessage ListOfEmployee {\n message List {\n repeated Employee items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Int.\nmessage ListOfInt {\n message List {\n repeated int32 items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Task.\nmessage ListOfListOfListOfTask {\n message List {\n repeated ListOfListOfTask items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Milestone.\nmessage ListOfListOfMilestone {\n message List {\n repeated ListOfMilestone items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Project.\nmessage ListOfListOfProject {\n message List {\n repeated ListOfProject items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of ProjectResource.\nmessage ListOfListOfProjectResource {\n message List {\n repeated ListOfProjectResource items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of String.\nmessage ListOfListOfString {\n message List {\n repeated ListOfString items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Task.\nmessage ListOfListOfTask {\n message List {\n repeated ListOfTask items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Milestone.\nmessage ListOfMilestone {\n message List {\n repeated Milestone items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Project.\nmessage ListOfProject {\n message List {\n repeated Project items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of ProjectResource.\nmessage ListOfProjectResource {\n message List {\n repeated ProjectResource items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of String.\nmessage ListOfString {\n message List {\n repeated string items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Task.\nmessage ListOfTask {\n message List {\n repeated Task items = 1;\n }\n List list = 1;\n}\n// Key message for Project entity lookup\nmessage LookupProjectByIdRequestKey {\n // Key field for Project entity lookup.\n string id = 1;\n}\n\n// Request message for Project entity lookup.\nmessage LookupProjectByIdRequest {\n /*\n * List of keys to look up Project entities.\n * Order matters - each key maps to one entity in LookupProjectByIdResponse.\n */\n repeated LookupProjectByIdRequestKey keys = 1;\n}\n\n// Response message for Project entity lookup.\nmessage LookupProjectByIdResponse {\n /*\n * List of Project entities in the same order as the keys in LookupProjectByIdRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Project result = 1;\n}\n\n// Key message for Milestone entity lookup\nmessage LookupMilestoneByIdRequestKey {\n // Key field for Milestone entity lookup.\n string id = 1;\n}\n\n// Request message for Milestone entity lookup.\nmessage LookupMilestoneByIdRequest {\n /*\n * List of keys to look up Milestone entities.\n * Order matters - each key maps to one entity in LookupMilestoneByIdResponse.\n */\n repeated LookupMilestoneByIdRequestKey keys = 1;\n}\n\n// Response message for Milestone entity lookup.\nmessage LookupMilestoneByIdResponse {\n /*\n * List of Milestone entities in the same order as the keys in LookupMilestoneByIdRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Milestone result = 1;\n}\n\n// Key message for Task entity lookup\nmessage LookupTaskByIdRequestKey {\n // Key field for Task entity lookup.\n string id = 1;\n}\n\n// Request message for Task entity lookup.\nmessage LookupTaskByIdRequest {\n /*\n * List of keys to look up Task entities.\n * Order matters - each key maps to one entity in LookupTaskByIdResponse.\n */\n repeated LookupTaskByIdRequestKey keys = 1;\n}\n\n// Response message for Task entity lookup.\nmessage LookupTaskByIdResponse {\n /*\n * List of Task entities in the same order as the keys in LookupTaskByIdRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Task result = 1;\n}\n\n// Key message for Employee entity lookup\nmessage LookupEmployeeByIdRequestKey {\n // Key field for Employee entity lookup.\n string id = 1;\n}\n\n// Request message for Employee entity lookup.\nmessage LookupEmployeeByIdRequest {\n /*\n * List of keys to look up Employee entities.\n * Order matters - each key maps to one entity in LookupEmployeeByIdResponse.\n */\n repeated LookupEmployeeByIdRequestKey keys = 1;\n}\n\n// Response message for Employee entity lookup.\nmessage LookupEmployeeByIdResponse {\n /*\n * List of Employee entities in the same order as the keys in LookupEmployeeByIdRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Employee result = 1;\n}\n\n// Key message for Product entity lookup\nmessage LookupProductByUpcRequestKey {\n // Key field for Product entity lookup.\n string upc = 1;\n}\n\n// Request message for Product entity lookup.\nmessage LookupProductByUpcRequest {\n /*\n * List of keys to look up Product entities.\n * Order matters - each key maps to one entity in LookupProductByUpcResponse.\n */\n repeated LookupProductByUpcRequestKey keys = 1;\n}\n\n// Response message for Product entity lookup.\nmessage LookupProductByUpcResponse {\n /*\n * List of Product entities in the same order as the keys in LookupProductByUpcRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Product result = 1;\n}\n\n// Request message for projects operation.\nmessage QueryProjectsRequest {\n}\n// Response message for projects operation.\nmessage QueryProjectsResponse {\n repeated Project projects = 1;\n}\n// Request message for project operation.\nmessage QueryProjectRequest {\n string id = 1;\n}\n// Response message for project operation.\nmessage QueryProjectResponse {\n Project project = 1;\n}\n// Request message for projectStatuses operation.\nmessage QueryProjectStatusesRequest {\n}\n// Response message for projectStatuses operation.\nmessage QueryProjectStatusesResponse {\n repeated ProjectStatus project_statuses = 1;\n}\n// Request message for projectsByStatus operation.\nmessage QueryProjectsByStatusRequest {\n ProjectStatus status = 1;\n}\n// Response message for projectsByStatus operation.\nmessage QueryProjectsByStatusResponse {\n repeated Project projects_by_status = 1;\n}\n// Request message for projectResources operation.\nmessage QueryProjectResourcesRequest {\n string project_id = 1;\n}\n// Response message for projectResources operation.\nmessage QueryProjectResourcesResponse {\n repeated ProjectResource project_resources = 1;\n}\n// Request message for searchProjects operation.\nmessage QuerySearchProjectsRequest {\n string query = 1;\n}\n// Response message for searchProjects operation.\nmessage QuerySearchProjectsResponse {\n repeated ProjectSearchResult search_projects = 1;\n}\n// Request message for milestones operation.\nmessage QueryMilestonesRequest {\n string project_id = 1;\n}\n// Response message for milestones operation.\nmessage QueryMilestonesResponse {\n repeated Milestone milestones = 1;\n}\n// Request message for tasks operation.\nmessage QueryTasksRequest {\n string project_id = 1;\n}\n// Response message for tasks operation.\nmessage QueryTasksResponse {\n repeated Task tasks = 1;\n}\n// Request message for projectActivities operation.\nmessage QueryProjectActivitiesRequest {\n string project_id = 1;\n}\n// Response message for projectActivities operation.\nmessage QueryProjectActivitiesResponse {\n repeated ProjectActivity project_activities = 1;\n}\n// Request message for projectTags operation.\nmessage QueryProjectTagsRequest {\n}\n// Response message for projectTags operation.\nmessage QueryProjectTagsResponse {\n ListOfString project_tags = 1;\n}\n// Request message for archivedProjects operation.\nmessage QueryArchivedProjectsRequest {\n}\n// Response message for archivedProjects operation.\nmessage QueryArchivedProjectsResponse {\n repeated Project archived_projects = 1;\n}\n// Request message for tasksByPriority operation.\nmessage QueryTasksByPriorityRequest {\n string project_id = 1;\n}\n// Response message for tasksByPriority operation.\nmessage QueryTasksByPriorityResponse {\n ListOfListOfTask tasks_by_priority = 1;\n}\n// Request message for resourceMatrix operation.\nmessage QueryResourceMatrixRequest {\n string project_id = 1;\n}\n// Response message for resourceMatrix operation.\nmessage QueryResourceMatrixResponse {\n ListOfListOfProjectResource resource_matrix = 1;\n}\n// Request message for killService operation.\nmessage QueryKillServiceRequest {\n}\n// Response message for killService operation.\nmessage QueryKillServiceResponse {\n bool kill_service = 1;\n}\n// Request message for panic operation.\nmessage QueryPanicRequest {\n}\n// Response message for panic operation.\nmessage QueryPanicResponse {\n bool panic = 1;\n}\n// Request message for nodesById operation.\nmessage QueryNodesByIdRequest {\n string id = 1;\n}\n// Response message for nodesById operation.\nmessage QueryNodesByIdResponse {\n repeated Node nodes_by_id = 1;\n}\n// Request message for addProject operation.\nmessage MutationAddProjectRequest {\n ProjectInput project = 1;\n}\n// Response message for addProject operation.\nmessage MutationAddProjectResponse {\n Project add_project = 1;\n}\n// Request message for addMilestone operation.\nmessage MutationAddMilestoneRequest {\n MilestoneInput milestone = 1;\n}\n// Response message for addMilestone operation.\nmessage MutationAddMilestoneResponse {\n Milestone add_milestone = 1;\n}\n// Request message for addTask operation.\nmessage MutationAddTaskRequest {\n TaskInput task = 1;\n}\n// Response message for addTask operation.\nmessage MutationAddTaskResponse {\n Task add_task = 1;\n}\n// Request message for updateProjectStatus operation.\nmessage MutationUpdateProjectStatusRequest {\n string project_id = 1;\n ProjectStatus status = 2;\n}\n// Response message for updateProjectStatus operation.\nmessage MutationUpdateProjectStatusResponse {\n ProjectUpdate update_project_status = 1;\n}\nmessage ResolveProjectSubProjectsArgs {\n google.protobuf.BoolValue include_archived = 1;\n}\n\nmessage ResolveProjectSubProjectsContext {\n string id = 1;\n string name = 2;\n ProjectStatus status = 3;\n}\n\nmessage ResolveProjectSubProjectsRequest {\n // context provides the resolver context for the field subProjects of type Project.\n repeated ResolveProjectSubProjectsContext context = 1;\n // field_args provides the arguments for the resolver field subProjects of type Project.\n ResolveProjectSubProjectsArgs field_args = 2;\n}\n\nmessage ResolveProjectSubProjectsResult {\n repeated Project sub_projects = 1;\n}\n\nmessage ResolveProjectSubProjectsResponse {\n repeated ResolveProjectSubProjectsResult result = 1;\n}\n\nmessage ResolveProjectFilteredTasksArgs {\n TaskStatus status = 1;\n TaskPriority priority = 2;\n google.protobuf.Int32Value limit = 3;\n}\n\nmessage ResolveProjectFilteredTasksContext {\n string id = 1;\n}\n\nmessage ResolveProjectFilteredTasksRequest {\n // context provides the resolver context for the field filteredTasks of type Project.\n repeated ResolveProjectFilteredTasksContext context = 1;\n // field_args provides the arguments for the resolver field filteredTasks of type Project.\n ResolveProjectFilteredTasksArgs field_args = 2;\n}\n\nmessage ResolveProjectFilteredTasksResult {\n repeated Task filtered_tasks = 1;\n}\n\nmessage ResolveProjectFilteredTasksResponse {\n repeated ResolveProjectFilteredTasksResult result = 1;\n}\n\nmessage ResolveProjectCompletionRateArgs {\n google.protobuf.BoolValue include_subtasks = 1;\n}\n\nmessage ResolveProjectCompletionRateContext {\n string id = 1;\n google.protobuf.StringValue start_date = 2;\n google.protobuf.StringValue end_date = 3;\n ProjectStatus status = 4;\n}\n\nmessage ResolveProjectCompletionRateRequest {\n // context provides the resolver context for the field completionRate of type Project.\n repeated ResolveProjectCompletionRateContext context = 1;\n // field_args provides the arguments for the resolver field completionRate of type Project.\n ResolveProjectCompletionRateArgs field_args = 2;\n}\n\nmessage ResolveProjectCompletionRateResult {\n double completion_rate = 1;\n}\n\nmessage ResolveProjectCompletionRateResponse {\n repeated ResolveProjectCompletionRateResult result = 1;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingArgs {\n google.protobuf.StringValue from_date = 1;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingContext {\n string id = 1;\n google.protobuf.StringValue end_date = 2;\n ProjectStatus status = 3;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingRequest {\n // context provides the resolver context for the field estimatedDaysRemaining of type Project.\n repeated ResolveProjectEstimatedDaysRemainingContext context = 1;\n // field_args provides the arguments for the resolver field estimatedDaysRemaining of type Project.\n ResolveProjectEstimatedDaysRemainingArgs field_args = 2;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingResult {\n google.protobuf.Int32Value estimated_days_remaining = 1;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingResponse {\n repeated ResolveProjectEstimatedDaysRemainingResult result = 1;\n}\n\nmessage ResolveProjectCriticalDeadlineArgs {\n google.protobuf.Int32Value within_days = 1;\n}\n\nmessage ResolveProjectCriticalDeadlineContext {\n string id = 1;\n ProjectStatus status = 2;\n repeated Milestone milestones = 3;\n}\n\nmessage ResolveProjectCriticalDeadlineRequest {\n // context provides the resolver context for the field criticalDeadline of type Project.\n repeated ResolveProjectCriticalDeadlineContext context = 1;\n // field_args provides the arguments for the resolver field criticalDeadline of type Project.\n ResolveProjectCriticalDeadlineArgs field_args = 2;\n}\n\nmessage ResolveProjectCriticalDeadlineResult {\n Timestamped critical_deadline = 1;\n}\n\nmessage ResolveProjectCriticalDeadlineResponse {\n repeated ResolveProjectCriticalDeadlineResult result = 1;\n}\n\nmessage ResolveProjectTopPriorityItemArgs {\n google.protobuf.StringValue category = 1;\n}\n\nmessage ResolveProjectTopPriorityItemContext {\n string id = 1;\n ProjectStatus status = 2;\n}\n\nmessage ResolveProjectTopPriorityItemRequest {\n // context provides the resolver context for the field topPriorityItem of type Project.\n repeated ResolveProjectTopPriorityItemContext context = 1;\n // field_args provides the arguments for the resolver field topPriorityItem of type Project.\n ResolveProjectTopPriorityItemArgs field_args = 2;\n}\n\nmessage ResolveProjectTopPriorityItemResult {\n ProjectSearchResult top_priority_item = 1;\n}\n\nmessage ResolveProjectTopPriorityItemResponse {\n repeated ResolveProjectTopPriorityItemResult result = 1;\n}\n\nmessage ResolveMilestoneIsAtRiskArgs {\n google.protobuf.DoubleValue threshold = 1;\n}\n\nmessage ResolveMilestoneIsAtRiskContext {\n string id = 1;\n google.protobuf.StringValue end_date = 2;\n MilestoneStatus status = 3;\n google.protobuf.DoubleValue completion_percentage = 4;\n}\n\nmessage ResolveMilestoneIsAtRiskRequest {\n // context provides the resolver context for the field isAtRisk of type Milestone.\n repeated ResolveMilestoneIsAtRiskContext context = 1;\n // field_args provides the arguments for the resolver field isAtRisk of type Milestone.\n ResolveMilestoneIsAtRiskArgs field_args = 2;\n}\n\nmessage ResolveMilestoneIsAtRiskResult {\n bool is_at_risk = 1;\n}\n\nmessage ResolveMilestoneIsAtRiskResponse {\n repeated ResolveMilestoneIsAtRiskResult result = 1;\n}\n\nmessage ResolveMilestoneDaysUntilDueArgs {\n google.protobuf.StringValue from_date = 1;\n}\n\nmessage ResolveMilestoneDaysUntilDueContext {\n google.protobuf.StringValue end_date = 1;\n}\n\nmessage ResolveMilestoneDaysUntilDueRequest {\n // context provides the resolver context for the field daysUntilDue of type Milestone.\n repeated ResolveMilestoneDaysUntilDueContext context = 1;\n // field_args provides the arguments for the resolver field daysUntilDue of type Milestone.\n ResolveMilestoneDaysUntilDueArgs field_args = 2;\n}\n\nmessage ResolveMilestoneDaysUntilDueResult {\n google.protobuf.Int32Value days_until_due = 1;\n}\n\nmessage ResolveMilestoneDaysUntilDueResponse {\n repeated ResolveMilestoneDaysUntilDueResult result = 1;\n}\n\nmessage ResolveTaskIsBlockedArgs {\n google.protobuf.BoolValue check_dependencies = 1;\n}\n\nmessage ResolveTaskIsBlockedContext {\n string id = 1;\n TaskStatus status = 2;\n}\n\nmessage ResolveTaskIsBlockedRequest {\n // context provides the resolver context for the field isBlocked of type Task.\n repeated ResolveTaskIsBlockedContext context = 1;\n // field_args provides the arguments for the resolver field isBlocked of type Task.\n ResolveTaskIsBlockedArgs field_args = 2;\n}\n\nmessage ResolveTaskIsBlockedResult {\n bool is_blocked = 1;\n}\n\nmessage ResolveTaskIsBlockedResponse {\n repeated ResolveTaskIsBlockedResult result = 1;\n}\n\nmessage ResolveTaskTotalEffortArgs {\n google.protobuf.BoolValue include_subtasks = 1;\n}\n\nmessage ResolveTaskTotalEffortContext {\n string id = 1;\n google.protobuf.DoubleValue estimated_hours = 2;\n google.protobuf.DoubleValue actual_hours = 3;\n}\n\nmessage ResolveTaskTotalEffortRequest {\n // context provides the resolver context for the field totalEffort of type Task.\n repeated ResolveTaskTotalEffortContext context = 1;\n // field_args provides the arguments for the resolver field totalEffort of type Task.\n ResolveTaskTotalEffortArgs field_args = 2;\n}\n\nmessage ResolveTaskTotalEffortResult {\n google.protobuf.DoubleValue total_effort = 1;\n}\n\nmessage ResolveTaskTotalEffortResponse {\n repeated ResolveTaskTotalEffortResult result = 1;\n}\n\nmessage ResolveEmployeeCurrentWorkloadArgs {\n google.protobuf.BoolValue include_completed = 1;\n google.protobuf.StringValue project_id = 2;\n}\n\nmessage ResolveEmployeeCurrentWorkloadContext {\n int32 id = 1;\n}\n\nmessage ResolveEmployeeCurrentWorkloadRequest {\n // context provides the resolver context for the field currentWorkload of type Employee.\n repeated ResolveEmployeeCurrentWorkloadContext context = 1;\n // field_args provides the arguments for the resolver field currentWorkload of type Employee.\n ResolveEmployeeCurrentWorkloadArgs field_args = 2;\n}\n\nmessage ResolveEmployeeCurrentWorkloadResult {\n int32 current_workload = 1;\n}\n\nmessage ResolveEmployeeCurrentWorkloadResponse {\n repeated ResolveEmployeeCurrentWorkloadResult result = 1;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysArgs {\n google.protobuf.StringValue project_id = 1;\n TaskPriority priority = 2;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysContext {\n int32 id = 1;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysRequest {\n // context provides the resolver context for the field averageTaskCompletionDays of type Employee.\n repeated ResolveEmployeeAverageTaskCompletionDaysContext context = 1;\n // field_args provides the arguments for the resolver field averageTaskCompletionDays of type Employee.\n ResolveEmployeeAverageTaskCompletionDaysArgs field_args = 2;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysResult {\n google.protobuf.DoubleValue average_task_completion_days = 1;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysResponse {\n repeated ResolveEmployeeAverageTaskCompletionDaysResult result = 1;\n}\n\nmessage Project {\n reserved 20 to 25;\n string id = 1;\n string name = 2;\n google.protobuf.StringValue description = 3;\n google.protobuf.StringValue start_date = 4;\n google.protobuf.StringValue end_date = 5;\n ProjectStatus status = 6;\n repeated Employee team_members = 7;\n repeated Product related_products = 8;\n ListOfString milestone_ids = 9;\n repeated Milestone milestones = 10;\n repeated Task tasks = 11;\n google.protobuf.DoubleValue progress = 12;\n ListOfString tags = 13;\n ListOfProject alternative_projects = 14;\n ListOfProject dependencies = 15;\n ListOfListOfProjectResource resource_groups = 16;\n ListOfListOfTask tasks_by_phase = 17;\n ListOfListOfMilestone milestone_groups = 18;\n ListOfListOfListOfTask priority_matrix = 19;\n}\n\nmessage Milestone {\n reserved 12 to 13;\n string id = 1;\n string project_id = 2;\n string name = 3;\n google.protobuf.StringValue description = 4;\n google.protobuf.StringValue start_date = 5;\n google.protobuf.StringValue end_date = 6;\n MilestoneStatus status = 7;\n google.protobuf.DoubleValue completion_percentage = 8;\n repeated Milestone dependencies = 9;\n ListOfTask subtasks = 10;\n ListOfEmployee reviewers = 11;\n}\n\nmessage Task {\n reserved 18 to 19;\n string id = 1;\n string project_id = 2;\n google.protobuf.StringValue milestone_id = 3;\n google.protobuf.Int32Value assignee_id = 4;\n string name = 5;\n google.protobuf.StringValue description = 6;\n TaskPriority priority = 7;\n TaskStatus status = 8;\n // Deprecation notice: No more estimations!\n google.protobuf.DoubleValue estimated_hours = 9 [deprecated = true];\n google.protobuf.DoubleValue actual_hours = 10;\n google.protobuf.StringValue created_at = 11;\n google.protobuf.StringValue completed_at = 12;\n ListOfString labels = 13;\n ListOfTask subtasks = 14;\n repeated Task dependencies = 15;\n repeated string attachment_urls = 16;\n ListOfInt reviewer_ids = 17;\n}\n\nmessage Employee {\n reserved 8 to 9;\n int32 id = 1;\n ListOfProject projects = 2;\n repeated Task assigned_tasks = 3;\n repeated Task completed_tasks = 4;\n ListOfString skills = 5;\n ListOfString certifications = 6;\n ListOfListOfProject project_history = 7;\n}\n\nmessage Product {\n string upc = 1;\n ListOfProject projects = 2;\n ListOfListOfString feature_matrix = 3;\n}\n\nenum ProjectStatus {\n PROJECT_STATUS_UNSPECIFIED = 0;\n PROJECT_STATUS_PLANNING = 1;\n PROJECT_STATUS_ACTIVE = 2;\n PROJECT_STATUS_COMPLETED = 3;\n PROJECT_STATUS_ON_HOLD = 4;\n}\n\nmessage ProjectResource {\n oneof value {\n Employee employee = 1;\n Product product = 2;\n Milestone milestone = 3;\n Task task = 4;\n }\n}\n\nmessage ProjectSearchResult {\n oneof value {\n Project project = 1;\n Milestone milestone = 2;\n Task task = 3;\n }\n}\n\nmessage ProjectActivity {\n oneof value {\n ProjectUpdate project_update = 1;\n Milestone milestone = 2;\n Task task = 3;\n }\n}\n\nmessage Node {\n oneof instance {\n Project project = 1;\n Milestone milestone = 2;\n Task task = 3;\n ProjectUpdate project_update = 4;\n }\n}\n\nmessage ProjectInput {\n string name = 1;\n google.protobuf.StringValue description = 2;\n google.protobuf.StringValue start_date = 3;\n google.protobuf.StringValue end_date = 4;\n ProjectStatus status = 5;\n}\n\nmessage MilestoneInput {\n string project_id = 1;\n string name = 2;\n google.protobuf.StringValue description = 3;\n google.protobuf.StringValue due_date = 4;\n MilestoneStatus status = 5;\n}\n\nmessage TaskInput {\n string project_id = 1;\n google.protobuf.Int32Value assignee_id = 2;\n string name = 3;\n google.protobuf.StringValue description = 4;\n TaskPriority priority = 5;\n TaskStatus status = 6;\n google.protobuf.DoubleValue estimated_hours = 7;\n}\n\nmessage ProjectUpdate {\n string id = 1;\n string project_id = 2;\n int32 updated_by_id = 3;\n ProjectUpdateType update_type = 4;\n string description = 5;\n string timestamp = 6;\n google.protobuf.StringValue metadata = 7;\n}\n\nmessage Timestamped {\n oneof instance {\n Project project = 1;\n Milestone milestone = 2;\n }\n}\n\nmessage Assignable {\n oneof instance {\n Task task = 1;\n }\n}\n\nenum MilestoneStatus {\n MILESTONE_STATUS_UNSPECIFIED = 0;\n MILESTONE_STATUS_PENDING = 1;\n MILESTONE_STATUS_IN_PROGRESS = 2;\n MILESTONE_STATUS_COMPLETED = 3;\n MILESTONE_STATUS_DELAYED = 4;\n}\n\nenum TaskStatus {\n TASK_STATUS_UNSPECIFIED = 0;\n TASK_STATUS_TODO = 1;\n TASK_STATUS_IN_PROGRESS = 2;\n TASK_STATUS_REVIEW = 3;\n TASK_STATUS_COMPLETED = 4;\n TASK_STATUS_BLOCKED = 5;\n}\n\nenum TaskPriority {\n TASK_PRIORITY_UNSPECIFIED = 0;\n TASK_PRIORITY_LOW = 1;\n TASK_PRIORITY_MEDIUM = 2;\n TASK_PRIORITY_HIGH = 3;\n TASK_PRIORITY_URGENT = 4;\n}\n\nenum ProjectUpdateType {\n PROJECT_UPDATE_TYPE_UNSPECIFIED = 0;\n PROJECT_UPDATE_TYPE_STATUS_CHANGE = 1;\n PROJECT_UPDATE_TYPE_MILESTONE_ADDED = 2;\n PROJECT_UPDATE_TYPE_TASK_ASSIGNED = 3;\n PROJECT_UPDATE_TYPE_PROGRESS_UPDATE = 4;\n PROJECT_UPDATE_TYPE_TEAM_CHANGE = 5;\n}" } }, "requestTimeoutSeconds": "10", @@ -2357,6 +2377,11 @@ "fieldName": "urls", "argumentsConfiguration": [{ "name": "products", "sourceType": "FIELD_ARGUMENT" }] }, + { + "typeName": "Project", + "fieldName": "subProjects", + "argumentsConfiguration": [{ "name": "includeArchived", "sourceType": "FIELD_ARGUMENT" }] + }, { "typeName": "Project", "fieldName": "filteredTasks", @@ -2507,7 +2532,7 @@ "authorizationConfiguration": { "requiresAuthentication": true } } ], - "graphqlSchema": "schema {\n query: Query\n mutation: Mutation\n subscription: Subscription\n}\n\ndirective @tag(name: String!) repeatable on ARGUMENT_DEFINITION | ENUM | ENUM_VALUE | FIELD_DEFINITION | INPUT_FIELD_DEFINITION | INPUT_OBJECT | INTERFACE | OBJECT | SCALAR | UNION\n\ndirective @requiresScopes(scopes: [[openfed__Scope!]!]!) on ENUM | FIELD_DEFINITION | INTERFACE | OBJECT | SCALAR\n\ndirective @authenticated on ENUM | FIELD_DEFINITION | INTERFACE | OBJECT | SCALAR\n\ndirective @inaccessible on ARGUMENT_DEFINITION | ENUM | ENUM_VALUE | FIELD_DEFINITION | INPUT_FIELD_DEFINITION | INPUT_OBJECT | INTERFACE | OBJECT | SCALAR | UNION\n\nscalar openfed__Scope\n\ntype Query {\n employee(id: Int!): Employee\n employeeAsList(id: Int!): [Employee]\n employees: [Employee]\n products: [Products!]!\n teammates(team: Department!): [Employee!]!\n firstEmployee: Employee! @tag(name: \"internal\")\n findEmployeesBy(criteria: FindEmployeeCriteria!): [Employee!]!\n \"\"\" This is a GraphQL query that retrieves a list of employees.\"\"\"\n findEmployees(criteria: SearchInput): [Employee!]!\n productTypes: [Products!]!\n topSecretFederationFacts: [TopSecretFact!]! @requiresScopes(scopes: [[\"read:fact\"], [\"read:all\"]])\n factTypes: [TopSecretFactType!]\n sharedThings(numOfA: Int!, numOfB: Int!): [Thing!]!\n \"\"\"Returns the value of the received HTTP header.\"\"\"\n headerValue(name: String!): String!\n \"\"\"Returns the value of the given key in the WS initial payload.\"\"\"\n initPayloadValue(key: String!): String!\n initialPayload: Map\n \"\"\"Returns response after the given delay\"\"\"\n delay(response: String!, ms: Int!): String!\n bigResponse(artificialDelay: Int! = 0, bigObjects: Int! = 100, nestedObjects: Int! = 100, deeplyNestedObjects: Int! = 100): [BigObject!]!\n longResponse(artificialDelay: Int! = 0, bytes: Int!): String\n bigAbstractResponse: BigAbstractResponse\n rootFieldWithListArg(arg: [String!]!): [String!]!\n rootFieldWithNestedListArg(arg: [[String!]!]!): [[String!]!]!\n rootFieldWithListOfInputArg(arg: [InputType!]!): [InputResponse!]!\n rootFieldWithListOfEnumArg(arg: [EnumType!]!): [EnumType!]!\n rootFieldWithInput(arg: InputArg!): String!\n floatField(arg: Float): Float\n secret: Secret @requiresScopes(scopes: [[\"read:secret\"]])\n projects: [Project!]!\n project(id: ID!): Project\n projectStatuses: [ProjectStatus!]!\n projectsByStatus(status: ProjectStatus!): [Project!]!\n projectResources(projectId: ID!): [ProjectResource!]!\n searchProjects(query: String!): [ProjectSearchResult!]!\n milestones(projectId: ID!): [Milestone!]!\n tasks(projectId: ID!): [Task!]!\n projectActivities(projectId: ID!): [ProjectActivity!]!\n projectTags: [String]\n archivedProjects: [Project]!\n tasksByPriority(projectId: ID!): [[Task]]\n resourceMatrix(projectId: ID!): [[ProjectResource!]!]!\n killService: Boolean!\n panic: Boolean!\n nodesById(id: ID!): [Node!]!\n}\n\nscalar Upload\n\ntype Mutation {\n updateEmployeeTag(id: Int!, tag: String!): Employee\n singleUpload(file: Upload!): Boolean!\n singleUploadWithInput(arg: FileUpload!): Boolean!\n multipleUpload(files: [Upload!]!): Boolean!\n addFact(fact: TopSecretFactInput!): TopSecretFact! @requiresScopes(scopes: [[\"write:fact\"], [\"write:all\"]])\n \"\"\" This mutation updates the availability status of an employee in the system.\n \"\"\"\n updateAvailability(employeeID: Int!, isAvailable: Boolean!): Employee!\n \"\"\" This mutation update the mood of an employee. \"\"\"\n updateMood(employeeID: Int!, mood: Mood!): Employee!\n addProject(project: ProjectInput!): Project!\n addMilestone(milestone: MilestoneInput!): Milestone!\n addTask(task: TaskInput!): Task!\n updateProjectStatus(projectId: ID!, status: ProjectStatus!): ProjectUpdate!\n}\n\ninput FileUpload {\n nested: DeeplyNestedFileUpload\n nestedList: [Upload!]\n}\n\ninput DeeplyNestedFileUpload {\n file: Upload!\n}\n\ntype Subscription {\n \"\"\"`currentTime` will return a stream of `Time` objects.\"\"\"\n currentTime: Time!\n countEmp(max: Int!, intervalMilliseconds: Int!): Int!\n countEmp2(max: Int!, intervalMilliseconds: Int!): Int!\n countFor(count: Int!): Int!\n countHob(max: Int!, intervalMilliseconds: Int!): Int!\n \"\"\"Returns a stream with the value of the received HTTP header.\"\"\"\n headerValue(name: String!, repeat: Int): TimestampedString!\n \"\"\"\n Returns a stream with the value of value of the given key in the WS initial payload.\n \"\"\"\n initPayloadValue(key: String!, repeat: Int): TimestampedString!\n \"\"\"Returns a stream with the value of the WS initial payload.\"\"\"\n initialPayload(repeat: Int): Map\n returnsError: String\n}\n\nenum Department {\n ENGINEERING\n MARKETING\n OPERATIONS\n}\n\ninterface RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n}\n\nenum EngineerType {\n BACKEND\n FRONTEND\n FULLSTACK\n}\n\ninterface Identifiable {\n id: Int!\n}\n\nenum OperationType {\n FINANCE\n HUMAN_RESOURCES\n}\n\ntype Details {\n forename: String!\n location: Country!\n surname: String!\n pastLocations: [City!]!\n middlename: String @deprecated(reason: \"No longer supported\")\n hasChildren: Boolean!\n maritalStatus: MaritalStatus\n nationality: Nationality!\n pets: [Pet]\n}\n\ntype City {\n type: String!\n name: String!\n country: Country\n}\n\ntype Country {\n key: CountryKey!\n language: String\n}\n\ntype CountryKey {\n name: String!\n}\n\nenum Mood {\n HAPPY\n SAD\n APATHETIC @inaccessible\n}\n\ntype ErrorWrapper {\n okField: String\n errorField: String\n}\n\ntype Time {\n unixTime: Int!\n timeStamp: String!\n}\n\nunion Products = Consultancy | Cosmo | SDK | Documentation\n\ninterface IProduct {\n upc: ID!\n engineers: [Employee!]!\n}\n\ntype Consultancy {\n upc: ID!\n lead: Employee!\n isLeadAvailable: Boolean\n name: ProductName!\n}\n\ninput FindEmployeeCriteria @oneOf {\n id: Int\n department: Department\n title: String\n}\n\nenum Class {\n FISH\n MAMMAL\n REPTILE\n}\n\nenum Gender {\n FEMALE\n MALE\n UNKNOWN\n}\n\ninterface Animal {\n class: Class!\n gender: Gender!\n}\n\nenum CatType {\n HOME\n STREET\n}\n\nenum DogBreed {\n GOLDEN_RETRIEVER\n POODLE\n ROTTWEILER\n YORKSHIRE_TERRIER\n}\n\nenum MaritalStatus {\n ENGAGED\n MARRIED\n}\n\nenum Nationality {\n AMERICAN\n DUTCH\n ENGLISH\n GERMAN\n INDIAN\n SPANISH\n UKRAINIAN\n}\n\n\"\"\" Allows to filter employees by their details. \"\"\"\ninput SearchInput {\n hasPets: Boolean\n nationality: Nationality\n nested: NestedSearchInput\n}\n\ninput NestedSearchInput {\n maritalStatus: MaritalStatus\n hasChildren: Boolean\n}\n\nenum ExerciseType {\n CALISTHENICS\n HIKING\n SPORT\n STRENGTH_TRAINING\n}\n\ninterface Experience {\n yearsOfExperience: Float!\n}\n\nenum GameGenre {\n ADVENTURE\n BOARD\n FPS\n CARD\n RPG\n ROGUELITE\n SIMULATION\n STRATEGY\n}\n\nenum ProgrammingLanguage {\n CSHARP\n GO\n RUST\n TYPESCRIPT\n}\n\ninterface Hobby {\n employees: [Employee!]!\n}\n\ntype Thing {\n a: String!\n b: String!\n}\n\ninput TopSecretFactInput {\n title: String!\n description: FactContent!\n factType: TopSecretFactType!\n}\n\nenum TopSecretFactType @authenticated {\n DIRECTIVE\n ENTITY\n MISCELLANEOUS\n}\n\ninterface TopSecretFact @authenticated {\n description: FactContent!\n factType: TopSecretFactType\n}\n\nscalar FactContent @requiresScopes(scopes: [[\"read:scalar\"], [\"read:all\"]])\n\nenum ProductName {\n CONSULTANCY\n COSMO\n ENGINE\n FINANCE\n HUMAN_RESOURCES\n MARKETING\n SDK\n}\n\ntype Documentation {\n url(product: ProductName!): String!\n urls(products: [ProductName!]!): [String!]!\n}\n\ntype Secret {\n value: String\n}\n\ninput InputArg {\n enums: [EnumType!]\n enum: EnumType\n string: String\n strings: [String!]\n}\n\nenum EnumType {\n A\n B\n C\n}\n\ninput InputType {\n arg: String!\n}\n\ntype InputResponse {\n arg: String!\n}\n\nscalar Map\n\ntype TimestampedString {\n \"\"\"The value of the string.\"\"\"\n value: String!\n \"\"\"The timestamp when the response was generated.\"\"\"\n unixTime: Int!\n \"\"\"Sequence number\"\"\"\n seq: Int!\n \"\"\"Total number of responses to be sent\"\"\"\n total: Int!\n initialPayload: Map\n}\n\ntype BigObject {\n nestedObjects: [NestedObject!]!\n}\n\ntype NestedObject {\n deeplyNestedObjects: [DeeplyNestedObject!]!\n}\n\ntype DeeplyNestedObject {\n aFieldOnDeeplyNestedObject: String!\n bFieldOnDeeplyNestedObject: Int!\n cFieldOnDeeplyNestedObject: Boolean!\n dFieldOnDeeplyNestedObject: Float!\n eFieldOnDeeplyNestedObject: String!\n fFieldOnDeeplyNestedObject: Int!\n gFieldOnDeeplyNestedObject: Boolean!\n hFieldOnDeeplyNestedObject: Float!\n iFieldOnDeeplyNestedObject: String!\n jFieldOnDeeplyNestedObject: Int!\n kFieldOnDeeplyNestedObject: Boolean!\n lFieldOnDeeplyNestedObject: Float!\n mFieldOnDeeplyNestedObject: String!\n nFieldOnDeeplyNestedObject: Int!\n oFieldOnDeeplyNestedObject: Boolean!\n pFieldOnDeeplyNestedObject: Float!\n qFieldOnDeeplyNestedObject: String!\n rFieldOnDeeplyNestedObject: Int!\n sFieldOnDeeplyNestedObject: Boolean!\n tFieldOnDeeplyNestedObject: Float!\n uFieldOnDeeplyNestedObject: String!\n vFieldOnDeeplyNestedObject: Int!\n wFieldOnDeeplyNestedObject: Boolean!\n xFieldOnDeeplyNestedObject: Float!\n yFieldOnDeeplyNestedObject: String!\n zFieldOnDeeplyNestedObject: Int!\n}\n\nunion BigAbstractResponse = ABigObject | BBigObject | CBigObject | DBigObject | EBigObject | FBigObject | GBigObject | HBigObject | IBigObject | JBigObject | KBigObject | LBigObject | MBigObject | NBigObject | OBigObject | PBigObject | QBigObject | RBigObject | SBigObject | TBigObject | UBigObject | VBigObject | WBigObject | XBigObject | YBigObject | ZBigObject\n\ntype ABigObject {\n aFieldOnABigObject: String!\n bFieldOnABigObject: Int!\n cFieldOnABigObject: Boolean!\n dFieldOnABigObject: Float!\n eFieldOnABigObject: String!\n fFieldOnABigObject: Int!\n gFieldOnABigObject: Boolean!\n hFieldOnABigObject: Float!\n iFieldOnABigObject: String!\n jFieldOnABigObject: Int!\n kFieldOnABigObject: Boolean!\n lFieldOnABigObject: Float!\n mFieldOnABigObject: String!\n nFieldOnABigObject: Int!\n oFieldOnABigObject: Boolean!\n pFieldOnABigObject: Float!\n qFieldOnABigObject: String!\n rFieldOnABigObject: Int!\n sFieldOnABigObject: Boolean!\n tFieldOnABigObject: Float!\n uFieldOnABigObject: String!\n vFieldOnABigObject: Int!\n wFieldOnABigObject: Boolean!\n xFieldOnABigObject: Float!\n yFieldOnABigObject: String!\n zFieldOnABigObject: Int!\n}\n\ntype BBigObject {\n aFieldOnBBigObject: String!\n bFieldOnBBigObject: Int!\n cFieldOnBBigObject: Boolean!\n dFieldOnBBigObject: Float!\n eFieldOnBBigObject: String!\n fFieldOnBBigObject: Int!\n gFieldOnBBigObject: Boolean!\n hFieldOnBBigObject: Float!\n iFieldOnBBigObject: String!\n jFieldOnBBigObject: Int!\n kFieldOnBBigObject: Boolean!\n lFieldOnBBigObject: Float!\n mFieldOnBBigObject: String!\n nFieldOnBBigObject: Int!\n oFieldOnBBigObject: Boolean!\n pFieldOnBBigObject: Float!\n qFieldOnBBigObject: String!\n rFieldOnBBigObject: Int!\n sFieldOnBBigObject: Boolean!\n tFieldOnBBigObject: Float!\n uFieldOnBBigObject: String!\n vFieldOnBBigObject: Int!\n wFieldOnBBigObject: Boolean!\n xFieldOnBBigObject: Float!\n yFieldOnBBigObject: String!\n zFieldOnBBigObject: Int!\n}\n\ntype CBigObject {\n aFieldOnCBigObject: String!\n bFieldOnCBigObject: Int!\n cFieldOnCBigObject: Boolean!\n dFieldOnCBigObject: Float!\n eFieldOnCBigObject: String!\n fFieldOnCBigObject: Int!\n gFieldOnCBigObject: Boolean!\n hFieldOnCBigObject: Float!\n iFieldOnCBigObject: String!\n jFieldOnCBigObject: Int!\n kFieldOnCBigObject: Boolean!\n lFieldOnCBigObject: Float!\n mFieldOnCBigObject: String!\n nFieldOnCBigObject: Int!\n oFieldOnCBigObject: Boolean!\n pFieldOnCBigObject: Float!\n qFieldOnCBigObject: String!\n rFieldOnCBigObject: Int!\n sFieldOnCBigObject: Boolean!\n tFieldOnCBigObject: Float!\n uFieldOnCBigObject: String!\n vFieldOnCBigObject: Int!\n wFieldOnCBigObject: Boolean!\n xFieldOnCBigObject: Float!\n yFieldOnCBigObject: String!\n zFieldOnCBigObject: Int!\n}\n\ntype DBigObject {\n aFieldOnDBigObject: String!\n bFieldOnDBigObject: Int!\n cFieldOnDBigObject: Boolean!\n dFieldOnDBigObject: Float!\n eFieldOnDBigObject: String!\n fFieldOnDBigObject: Int!\n gFieldOnDBigObject: Boolean!\n hFieldOnDBigObject: Float!\n iFieldOnDBigObject: String!\n jFieldOnDBigObject: Int!\n kFieldOnDBigObject: Boolean!\n lFieldOnDBigObject: Float!\n mFieldOnDBigObject: String!\n nFieldOnDBigObject: Int!\n oFieldOnDBigObject: Boolean!\n pFieldOnDBigObject: Float!\n qFieldOnDBigObject: String!\n rFieldOnDBigObject: Int!\n sFieldOnDBigObject: Boolean!\n tFieldOnDBigObject: Float!\n uFieldOnDBigObject: String!\n vFieldOnDBigObject: Int!\n wFieldOnDBigObject: Boolean!\n xFieldOnDBigObject: Float!\n yFieldOnDBigObject: String!\n zFieldOnDBigObject: Int!\n}\n\ntype EBigObject {\n aFieldOnEBigObject: String!\n bFieldOnEBigObject: Int!\n cFieldOnEBigObject: Boolean!\n dFieldOnEBigObject: Float!\n eFieldOnEBigObject: String!\n fFieldOnEBigObject: Int!\n gFieldOnEBigObject: Boolean!\n hFieldOnEBigObject: Float!\n iFieldOnEBigObject: String!\n jFieldOnEBigObject: Int!\n kFieldOnEBigObject: Boolean!\n lFieldOnEBigObject: Float!\n mFieldOnEBigObject: String!\n nFieldOnEBigObject: Int!\n oFieldOnEBigObject: Boolean!\n pFieldOnEBigObject: Float!\n qFieldOnEBigObject: String!\n rFieldOnEBigObject: Int!\n sFieldOnEBigObject: Boolean!\n tFieldOnEBigObject: Float!\n uFieldOnEBigObject: String!\n vFieldOnEBigObject: Int!\n wFieldOnEBigObject: Boolean!\n xFieldOnEBigObject: Float!\n yFieldOnEBigObject: String!\n zFieldOnEBigObject: Int!\n}\n\ntype FBigObject {\n aFieldOnFBigObject: String!\n bFieldOnFBigObject: Int!\n cFieldOnFBigObject: Boolean!\n dFieldOnFBigObject: Float!\n eFieldOnFBigObject: String!\n fFieldOnFBigObject: Int!\n gFieldOnFBigObject: Boolean!\n hFieldOnFBigObject: Float!\n iFieldOnFBigObject: String!\n jFieldOnFBigObject: Int!\n kFieldOnFBigObject: Boolean!\n lFieldOnFBigObject: Float!\n mFieldOnFBigObject: String!\n nFieldOnFBigObject: Int!\n oFieldOnFBigObject: Boolean!\n pFieldOnFBigObject: Float!\n qFieldOnFBigObject: String!\n rFieldOnFBigObject: Int!\n sFieldOnFBigObject: Boolean!\n tFieldOnFBigObject: Float!\n uFieldOnFBigObject: String!\n vFieldOnFBigObject: Int!\n wFieldOnFBigObject: Boolean!\n xFieldOnFBigObject: Float!\n yFieldOnFBigObject: String!\n zFieldOnFBigObject: Int!\n}\n\ntype GBigObject {\n aFieldOnGBigObject: String!\n bFieldOnGBigObject: Int!\n cFieldOnGBigObject: Boolean!\n dFieldOnGBigObject: Float!\n eFieldOnGBigObject: String!\n fFieldOnGBigObject: Int!\n gFieldOnGBigObject: Boolean!\n hFieldOnGBigObject: Float!\n iFieldOnGBigObject: String!\n jFieldOnGBigObject: Int!\n kFieldOnGBigObject: Boolean!\n lFieldOnGBigObject: Float!\n mFieldOnGBigObject: String!\n nFieldOnGBigObject: Int!\n oFieldOnGBigObject: Boolean!\n pFieldOnGBigObject: Float!\n qFieldOnGBigObject: String!\n rFieldOnGBigObject: Int!\n sFieldOnGBigObject: Boolean!\n tFieldOnGBigObject: Float!\n uFieldOnGBigObject: String!\n vFieldOnGBigObject: Int!\n wFieldOnGBigObject: Boolean!\n xFieldOnGBigObject: Float!\n yFieldOnGBigObject: String!\n zFieldOnGBigObject: Int!\n}\n\ntype HBigObject {\n aFieldOnHBigObject: String!\n bFieldOnHBigObject: Int!\n cFieldOnHBigObject: Boolean!\n dFieldOnHBigObject: Float!\n eFieldOnHBigObject: String!\n fFieldOnHBigObject: Int!\n gFieldOnHBigObject: Boolean!\n hFieldOnHBigObject: Float!\n iFieldOnHBigObject: String!\n jFieldOnHBigObject: Int!\n kFieldOnHBigObject: Boolean!\n lFieldOnHBigObject: Float!\n mFieldOnHBigObject: String!\n nFieldOnHBigObject: Int!\n oFieldOnHBigObject: Boolean!\n pFieldOnHBigObject: Float!\n qFieldOnHBigObject: String!\n rFieldOnHBigObject: Int!\n sFieldOnHBigObject: Boolean!\n tFieldOnHBigObject: Float!\n uFieldOnHBigObject: String!\n vFieldOnHBigObject: Int!\n wFieldOnHBigObject: Boolean!\n xFieldOnHBigObject: Float!\n yFieldOnHBigObject: String!\n zFieldOnHBigObject: Int!\n}\n\ntype IBigObject {\n aFieldOnIBigObject: String!\n bFieldOnIBigObject: Int!\n cFieldOnIBigObject: Boolean!\n dFieldOnIBigObject: Float!\n eFieldOnIBigObject: String!\n fFieldOnIBigObject: Int!\n gFieldOnIBigObject: Boolean!\n hFieldOnIBigObject: Float!\n iFieldOnIBigObject: String!\n jFieldOnIBigObject: Int!\n kFieldOnIBigObject: Boolean!\n lFieldOnIBigObject: Float!\n mFieldOnIBigObject: String!\n nFieldOnIBigObject: Int!\n oFieldOnIBigObject: Boolean!\n pFieldOnIBigObject: Float!\n qFieldOnIBigObject: String!\n rFieldOnIBigObject: Int!\n sFieldOnIBigObject: Boolean!\n tFieldOnIBigObject: Float!\n uFieldOnIBigObject: String!\n vFieldOnIBigObject: Int!\n wFieldOnIBigObject: Boolean!\n xFieldOnIBigObject: Float!\n yFieldOnIBigObject: String!\n zFieldOnIBigObject: Int!\n}\n\ntype JBigObject {\n aFieldOnJBigObject: String!\n bFieldOnJBigObject: Int!\n cFieldOnJBigObject: Boolean!\n dFieldOnJBigObject: Float!\n eFieldOnJBigObject: String!\n fFieldOnJBigObject: Int!\n gFieldOnJBigObject: Boolean!\n hFieldOnJBigObject: Float!\n iFieldOnJBigObject: String!\n jFieldOnJBigObject: Int!\n kFieldOnJBigObject: Boolean!\n lFieldOnJBigObject: Float!\n mFieldOnJBigObject: String!\n nFieldOnJBigObject: Int!\n oFieldOnJBigObject: Boolean!\n pFieldOnJBigObject: Float!\n qFieldOnJBigObject: String!\n rFieldOnJBigObject: Int!\n sFieldOnJBigObject: Boolean!\n tFieldOnJBigObject: Float!\n uFieldOnJBigObject: String!\n vFieldOnJBigObject: Int!\n wFieldOnJBigObject: Boolean!\n xFieldOnJBigObject: Float!\n yFieldOnJBigObject: String!\n zFieldOnJBigObject: Int!\n}\n\ntype KBigObject {\n aFieldOnKBigObject: String!\n bFieldOnKBigObject: Int!\n cFieldOnKBigObject: Boolean!\n dFieldOnKBigObject: Float!\n eFieldOnKBigObject: String!\n fFieldOnKBigObject: Int!\n gFieldOnKBigObject: Boolean!\n hFieldOnKBigObject: Float!\n iFieldOnKBigObject: String!\n jFieldOnKBigObject: Int!\n kFieldOnKBigObject: Boolean!\n lFieldOnKBigObject: Float!\n mFieldOnKBigObject: String!\n nFieldOnKBigObject: Int!\n oFieldOnKBigObject: Boolean!\n pFieldOnKBigObject: Float!\n qFieldOnKBigObject: String!\n rFieldOnKBigObject: Int!\n sFieldOnKBigObject: Boolean!\n tFieldOnKBigObject: Float!\n uFieldOnKBigObject: String!\n vFieldOnKBigObject: Int!\n wFieldOnKBigObject: Boolean!\n xFieldOnKBigObject: Float!\n yFieldOnKBigObject: String!\n zFieldOnKBigObject: Int!\n}\n\ntype LBigObject {\n aFieldOnLBigObject: String!\n bFieldOnLBigObject: Int!\n cFieldOnLBigObject: Boolean!\n dFieldOnLBigObject: Float!\n eFieldOnLBigObject: String!\n fFieldOnLBigObject: Int!\n gFieldOnLBigObject: Boolean!\n hFieldOnLBigObject: Float!\n iFieldOnLBigObject: String!\n jFieldOnLBigObject: Int!\n kFieldOnLBigObject: Boolean!\n lFieldOnLBigObject: Float!\n mFieldOnLBigObject: String!\n nFieldOnLBigObject: Int!\n oFieldOnLBigObject: Boolean!\n pFieldOnLBigObject: Float!\n qFieldOnLBigObject: String!\n rFieldOnLBigObject: Int!\n sFieldOnLBigObject: Boolean!\n tFieldOnLBigObject: Float!\n uFieldOnLBigObject: String!\n vFieldOnLBigObject: Int!\n wFieldOnLBigObject: Boolean!\n xFieldOnLBigObject: Float!\n yFieldOnLBigObject: String!\n zFieldOnLBigObject: Int!\n}\n\ntype MBigObject {\n aFieldOnMBigObject: String!\n bFieldOnMBigObject: Int!\n cFieldOnMBigObject: Boolean!\n dFieldOnMBigObject: Float!\n eFieldOnMBigObject: String!\n fFieldOnMBigObject: Int!\n gFieldOnMBigObject: Boolean!\n hFieldOnMBigObject: Float!\n iFieldOnMBigObject: String!\n jFieldOnMBigObject: Int!\n kFieldOnMBigObject: Boolean!\n lFieldOnMBigObject: Float!\n mFieldOnMBigObject: String!\n nFieldOnMBigObject: Int!\n oFieldOnMBigObject: Boolean!\n pFieldOnMBigObject: Float!\n qFieldOnMBigObject: String!\n rFieldOnMBigObject: Int!\n sFieldOnMBigObject: Boolean!\n tFieldOnMBigObject: Float!\n uFieldOnMBigObject: String!\n vFieldOnMBigObject: Int!\n wFieldOnMBigObject: Boolean!\n xFieldOnMBigObject: Float!\n yFieldOnMBigObject: String!\n zFieldOnMBigObject: Int!\n}\n\ntype NBigObject {\n aFieldOnNBigObject: String!\n bFieldOnNBigObject: Int!\n cFieldOnNBigObject: Boolean!\n dFieldOnNBigObject: Float!\n eFieldOnNBigObject: String!\n fFieldOnNBigObject: Int!\n gFieldOnNBigObject: Boolean!\n hFieldOnNBigObject: Float!\n iFieldOnNBigObject: String!\n jFieldOnNBigObject: Int!\n kFieldOnNBigObject: Boolean!\n lFieldOnNBigObject: Float!\n mFieldOnNBigObject: String!\n nFieldOnNBigObject: Int!\n oFieldOnNBigObject: Boolean!\n pFieldOnNBigObject: Float!\n qFieldOnNBigObject: String!\n rFieldOnNBigObject: Int!\n sFieldOnNBigObject: Boolean!\n tFieldOnNBigObject: Float!\n uFieldOnNBigObject: String!\n vFieldOnNBigObject: Int!\n wFieldOnNBigObject: Boolean!\n xFieldOnNBigObject: Float!\n yFieldOnNBigObject: String!\n zFieldOnNBigObject: Int!\n}\n\ntype OBigObject {\n aFieldOnOBigObject: String!\n bFieldOnOBigObject: Int!\n cFieldOnOBigObject: Boolean!\n dFieldOnOBigObject: Float!\n eFieldOnOBigObject: String!\n fFieldOnOBigObject: Int!\n gFieldOnOBigObject: Boolean!\n hFieldOnOBigObject: Float!\n iFieldOnOBigObject: String!\n jFieldOnOBigObject: Int!\n kFieldOnOBigObject: Boolean!\n lFieldOnOBigObject: Float!\n mFieldOnOBigObject: String!\n nFieldOnOBigObject: Int!\n oFieldOnOBigObject: Boolean!\n pFieldOnOBigObject: Float!\n qFieldOnOBigObject: String!\n rFieldOnOBigObject: Int!\n sFieldOnOBigObject: Boolean!\n tFieldOnOBigObject: Float!\n uFieldOnOBigObject: String!\n vFieldOnOBigObject: Int!\n wFieldOnOBigObject: Boolean!\n xFieldOnOBigObject: Float!\n yFieldOnOBigObject: String!\n zFieldOnOBigObject: Int!\n}\n\ntype PBigObject {\n aFieldOnPBigObject: String!\n bFieldOnPBigObject: Int!\n cFieldOnPBigObject: Boolean!\n dFieldOnPBigObject: Float!\n eFieldOnPBigObject: String!\n fFieldOnPBigObject: Int!\n gFieldOnPBigObject: Boolean!\n hFieldOnPBigObject: Float!\n iFieldOnPBigObject: String!\n jFieldOnPBigObject: Int!\n kFieldOnPBigObject: Boolean!\n lFieldOnPBigObject: Float!\n mFieldOnPBigObject: String!\n nFieldOnPBigObject: Int!\n oFieldOnPBigObject: Boolean!\n pFieldOnPBigObject: Float!\n qFieldOnPBigObject: String!\n rFieldOnPBigObject: Int!\n sFieldOnPBigObject: Boolean!\n tFieldOnPBigObject: Float!\n uFieldOnPBigObject: String!\n vFieldOnPBigObject: Int!\n wFieldOnPBigObject: Boolean!\n xFieldOnPBigObject: Float!\n yFieldOnPBigObject: String!\n zFieldOnPBigObject: Int!\n}\n\ntype QBigObject {\n aFieldOnQBigObject: String!\n bFieldOnQBigObject: Int!\n cFieldOnQBigObject: Boolean!\n dFieldOnQBigObject: Float!\n eFieldOnQBigObject: String!\n fFieldOnQBigObject: Int!\n gFieldOnQBigObject: Boolean!\n hFieldOnQBigObject: Float!\n iFieldOnQBigObject: String!\n jFieldOnQBigObject: Int!\n kFieldOnQBigObject: Boolean!\n lFieldOnQBigObject: Float!\n mFieldOnQBigObject: String!\n nFieldOnQBigObject: Int!\n oFieldOnQBigObject: Boolean!\n pFieldOnQBigObject: Float!\n qFieldOnQBigObject: String!\n rFieldOnQBigObject: Int!\n sFieldOnQBigObject: Boolean!\n tFieldOnQBigObject: Float!\n uFieldOnQBigObject: String!\n vFieldOnQBigObject: Int!\n wFieldOnQBigObject: Boolean!\n xFieldOnQBigObject: Float!\n yFieldOnQBigObject: String!\n zFieldOnQBigObject: Int!\n}\n\ntype RBigObject {\n aFieldOnRBigObject: String!\n bFieldOnRBigObject: Int!\n cFieldOnRBigObject: Boolean!\n dFieldOnRBigObject: Float!\n eFieldOnRBigObject: String!\n fFieldOnRBigObject: Int!\n gFieldOnRBigObject: Boolean!\n hFieldOnRBigObject: Float!\n iFieldOnRBigObject: String!\n jFieldOnRBigObject: Int!\n kFieldOnRBigObject: Boolean!\n lFieldOnRBigObject: Float!\n mFieldOnRBigObject: String!\n nFieldOnRBigObject: Int!\n oFieldOnRBigObject: Boolean!\n pFieldOnRBigObject: Float!\n qFieldOnRBigObject: String!\n rFieldOnRBigObject: Int!\n sFieldOnRBigObject: Boolean!\n tFieldOnRBigObject: Float!\n uFieldOnRBigObject: String!\n vFieldOnRBigObject: Int!\n wFieldOnRBigObject: Boolean!\n xFieldOnRBigObject: Float!\n yFieldOnRBigObject: String!\n zFieldOnRBigObject: Int!\n}\n\ntype SBigObject {\n aFieldOnSBigObject: String!\n bFieldOnSBigObject: Int!\n cFieldOnSBigObject: Boolean!\n dFieldOnSBigObject: Float!\n eFieldOnSBigObject: String!\n fFieldOnSBigObject: Int!\n gFieldOnSBigObject: Boolean!\n hFieldOnSBigObject: Float!\n iFieldOnSBigObject: String!\n jFieldOnSBigObject: Int!\n kFieldOnSBigObject: Boolean!\n lFieldOnSBigObject: Float!\n mFieldOnSBigObject: String!\n nFieldOnSBigObject: Int!\n oFieldOnSBigObject: Boolean!\n pFieldOnSBigObject: Float!\n qFieldOnSBigObject: String!\n rFieldOnSBigObject: Int!\n sFieldOnSBigObject: Boolean!\n tFieldOnSBigObject: Float!\n uFieldOnSBigObject: String!\n vFieldOnSBigObject: Int!\n wFieldOnSBigObject: Boolean!\n xFieldOnSBigObject: Float!\n yFieldOnSBigObject: String!\n zFieldOnSBigObject: Int!\n}\n\ntype TBigObject {\n aFieldOnTBigObject: String!\n bFieldOnTBigObject: Int!\n cFieldOnTBigObject: Boolean!\n dFieldOnTBigObject: Float!\n eFieldOnTBigObject: String!\n fFieldOnTBigObject: Int!\n gFieldOnTBigObject: Boolean!\n hFieldOnTBigObject: Float!\n iFieldOnTBigObject: String!\n jFieldOnTBigObject: Int!\n kFieldOnTBigObject: Boolean!\n lFieldOnTBigObject: Float!\n mFieldOnTBigObject: String!\n nFieldOnTBigObject: Int!\n oFieldOnTBigObject: Boolean!\n pFieldOnTBigObject: Float!\n qFieldOnTBigObject: String!\n rFieldOnTBigObject: Int!\n sFieldOnTBigObject: Boolean!\n tFieldOnTBigObject: Float!\n uFieldOnTBigObject: String!\n vFieldOnTBigObject: Int!\n wFieldOnTBigObject: Boolean!\n xFieldOnTBigObject: Float!\n yFieldOnTBigObject: String!\n zFieldOnTBigObject: Int!\n}\n\ntype UBigObject {\n aFieldOnUBigObject: String!\n bFieldOnUBigObject: Int!\n cFieldOnUBigObject: Boolean!\n dFieldOnUBigObject: Float!\n eFieldOnUBigObject: String!\n fFieldOnUBigObject: Int!\n gFieldOnUBigObject: Boolean!\n hFieldOnUBigObject: Float!\n iFieldOnUBigObject: String!\n jFieldOnUBigObject: Int!\n kFieldOnUBigObject: Boolean!\n lFieldOnUBigObject: Float!\n mFieldOnUBigObject: String!\n nFieldOnUBigObject: Int!\n oFieldOnUBigObject: Boolean!\n pFieldOnUBigObject: Float!\n qFieldOnUBigObject: String!\n rFieldOnUBigObject: Int!\n sFieldOnUBigObject: Boolean!\n tFieldOnUBigObject: Float!\n uFieldOnUBigObject: String!\n vFieldOnUBigObject: Int!\n wFieldOnUBigObject: Boolean!\n xFieldOnUBigObject: Float!\n yFieldOnUBigObject: String!\n zFieldOnUBigObject: Int!\n}\n\ntype VBigObject {\n aFieldOnVBigObject: String!\n bFieldOnVBigObject: Int!\n cFieldOnVBigObject: Boolean!\n dFieldOnVBigObject: Float!\n eFieldOnVBigObject: String!\n fFieldOnVBigObject: Int!\n gFieldOnVBigObject: Boolean!\n hFieldOnVBigObject: Float!\n iFieldOnVBigObject: String!\n jFieldOnVBigObject: Int!\n kFieldOnVBigObject: Boolean!\n lFieldOnVBigObject: Float!\n mFieldOnVBigObject: String!\n nFieldOnVBigObject: Int!\n oFieldOnVBigObject: Boolean!\n pFieldOnVBigObject: Float!\n qFieldOnVBigObject: String!\n rFieldOnVBigObject: Int!\n sFieldOnVBigObject: Boolean!\n tFieldOnVBigObject: Float!\n uFieldOnVBigObject: String!\n vFieldOnVBigObject: Int!\n wFieldOnVBigObject: Boolean!\n xFieldOnVBigObject: Float!\n yFieldOnVBigObject: String!\n zFieldOnVBigObject: Int!\n}\n\ntype WBigObject {\n aFieldOnWBigObject: String!\n bFieldOnWBigObject: Int!\n cFieldOnWBigObject: Boolean!\n dFieldOnWBigObject: Float!\n eFieldOnWBigObject: String!\n fFieldOnWBigObject: Int!\n gFieldOnWBigObject: Boolean!\n hFieldOnWBigObject: Float!\n iFieldOnWBigObject: String!\n jFieldOnWBigObject: Int!\n kFieldOnWBigObject: Boolean!\n lFieldOnWBigObject: Float!\n mFieldOnWBigObject: String!\n nFieldOnWBigObject: Int!\n oFieldOnWBigObject: Boolean!\n pFieldOnWBigObject: Float!\n qFieldOnWBigObject: String!\n rFieldOnWBigObject: Int!\n sFieldOnWBigObject: Boolean!\n tFieldOnWBigObject: Float!\n uFieldOnWBigObject: String!\n vFieldOnWBigObject: Int!\n wFieldOnWBigObject: Boolean!\n xFieldOnWBigObject: Float!\n yFieldOnWBigObject: String!\n zFieldOnWBigObject: Int!\n}\n\ntype XBigObject {\n aFieldOnXBigObject: String!\n bFieldOnXBigObject: Int!\n cFieldOnXBigObject: Boolean!\n dFieldOnXBigObject: Float!\n eFieldOnXBigObject: String!\n fFieldOnXBigObject: Int!\n gFieldOnXBigObject: Boolean!\n hFieldOnXBigObject: Float!\n iFieldOnXBigObject: String!\n jFieldOnXBigObject: Int!\n kFieldOnXBigObject: Boolean!\n lFieldOnXBigObject: Float!\n mFieldOnXBigObject: String!\n nFieldOnXBigObject: Int!\n oFieldOnXBigObject: Boolean!\n pFieldOnXBigObject: Float!\n qFieldOnXBigObject: String!\n rFieldOnXBigObject: Int!\n sFieldOnXBigObject: Boolean!\n tFieldOnXBigObject: Float!\n uFieldOnXBigObject: String!\n vFieldOnXBigObject: Int!\n wFieldOnXBigObject: Boolean!\n xFieldOnXBigObject: Float!\n yFieldOnXBigObject: String!\n zFieldOnXBigObject: Int!\n}\n\ntype YBigObject {\n aFieldOnYBigObject: String!\n bFieldOnYBigObject: Int!\n cFieldOnYBigObject: Boolean!\n dFieldOnYBigObject: Float!\n eFieldOnYBigObject: String!\n fFieldOnYBigObject: Int!\n gFieldOnYBigObject: Boolean!\n hFieldOnYBigObject: Float!\n iFieldOnYBigObject: String!\n jFieldOnYBigObject: Int!\n kFieldOnYBigObject: Boolean!\n lFieldOnYBigObject: Float!\n mFieldOnYBigObject: String!\n nFieldOnYBigObject: Int!\n oFieldOnYBigObject: Boolean!\n pFieldOnYBigObject: Float!\n qFieldOnYBigObject: String!\n rFieldOnYBigObject: Int!\n sFieldOnYBigObject: Boolean!\n tFieldOnYBigObject: Float!\n uFieldOnYBigObject: String!\n vFieldOnYBigObject: Int!\n wFieldOnYBigObject: Boolean!\n xFieldOnYBigObject: Float!\n yFieldOnYBigObject: String!\n zFieldOnYBigObject: Int!\n}\n\ntype ZBigObject {\n aFieldOnZBigObject: String!\n bFieldOnZBigObject: Int!\n cFieldOnZBigObject: Boolean!\n dFieldOnZBigObject: Float!\n eFieldOnZBigObject: String!\n fFieldOnZBigObject: Int!\n gFieldOnZBigObject: Boolean!\n hFieldOnZBigObject: Float!\n iFieldOnZBigObject: String!\n jFieldOnZBigObject: Int!\n kFieldOnZBigObject: Boolean!\n lFieldOnZBigObject: Float!\n mFieldOnZBigObject: String!\n nFieldOnZBigObject: Int!\n oFieldOnZBigObject: Boolean!\n pFieldOnZBigObject: Float!\n qFieldOnZBigObject: String!\n rFieldOnZBigObject: Int!\n sFieldOnZBigObject: Boolean!\n tFieldOnZBigObject: Float!\n uFieldOnZBigObject: String!\n vFieldOnZBigObject: Int!\n wFieldOnZBigObject: Boolean!\n xFieldOnZBigObject: Float!\n yFieldOnZBigObject: String!\n zFieldOnZBigObject: Int!\n}\n\ninput ProjectInput {\n name: String!\n description: String\n startDate: String\n endDate: String\n status: ProjectStatus!\n}\n\ninput MilestoneInput {\n projectId: ID!\n name: String!\n description: String\n dueDate: String\n status: MilestoneStatus!\n}\n\ninput TaskInput {\n projectId: ID!\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float\n}\n\ninterface Node {\n id: ID!\n}\n\ninterface Timestamped {\n startDate: String\n endDate: String\n}\n\ninterface Assignable {\n assigneeId: Int\n}\n\nenum ProjectStatus {\n PLANNING\n ACTIVE\n COMPLETED\n ON_HOLD\n}\n\nenum MilestoneStatus {\n PENDING\n IN_PROGRESS\n COMPLETED\n DELAYED\n}\n\nenum TaskStatus {\n TODO\n IN_PROGRESS\n REVIEW\n COMPLETED\n BLOCKED\n}\n\nenum TaskPriority {\n LOW\n MEDIUM\n HIGH\n URGENT\n}\n\nenum ProjectUpdateType {\n STATUS_CHANGE\n MILESTONE_ADDED\n TASK_ASSIGNED\n PROGRESS_UPDATE\n TEAM_CHANGE\n}\n\nunion ProjectResource = Employee | Product | Milestone | Task\n\nunion ProjectSearchResult = Project | Milestone | Task\n\nunion ProjectActivity = ProjectUpdate | Milestone | Task\n\ntype Product {\n upc: String!\n projects: [Project!]\n featureMatrix: [[String]]\n}\n\ntype Engineer implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n engineerType: EngineerType!\n}\n\ntype Marketer implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n}\n\ntype Operator implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n operatorType: [OperationType!]!\n}\n\ntype Employee implements Identifiable {\n details: Details\n id: Int!\n tag: String!\n role: RoleType!\n notes: String\n updatedAt: String!\n startDate: String! @requiresScopes(scopes: [[\"read:employee\", \"read:private\"], [\"read:all\"]])\n currentMood: Mood!\n derivedMood: Mood!\n isAvailable: Boolean\n rootFieldThrowsError: String\n rootFieldErrorWrapper: ErrorWrapper\n hobbies: [Hobby!]\n products: [ProductName!]!\n fieldThrowsError: String\n projects: [Project!]\n assignedTasks: [Task!]!\n completedTasks: [Task!]!\n skills: [String]\n certifications: [String!]\n projectHistory: [[Project!]]!\n currentWorkload(includeCompleted: Boolean, projectId: ID): Int!\n averageTaskCompletionDays(projectId: ID, priority: TaskPriority): Float\n}\n\ntype Cosmo implements IProduct {\n upc: ID!\n engineers: [Employee!]!\n lead: Employee!\n isLeadAvailable: Boolean\n name: ProductName!\n repositoryURL: String!\n}\n\ntype SDK implements IProduct {\n upc: ID!\n engineers: [Employee!]!\n owner: Employee!\n unicode: String!\n clientLanguages: [ProgrammingLanguage!]!\n}\n\ninterface Pet implements Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Alligator implements Pet & Animal {\n class: Class!\n dangerous: String!\n gender: Gender!\n name: String!\n}\n\ntype Cat implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n type: CatType!\n}\n\ntype Dog implements Pet & Animal {\n breed: DogBreed!\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Mouse implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Pony implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Exercise implements Hobby {\n employees: [Employee!]!\n category: ExerciseType!\n}\n\ntype Flying implements Experience & Hobby {\n employees: [Employee!]!\n planeModels: [String!]!\n yearsOfExperience: Float!\n}\n\ntype Gaming implements Experience & Hobby {\n employees: [Employee!]!\n genres: [GameGenre!]!\n name: String!\n yearsOfExperience: Float!\n}\n\ntype Other implements Hobby {\n employees: [Employee!]!\n name: String!\n}\n\ntype Programming implements Hobby {\n employees: [Employee!]!\n languages: [ProgrammingLanguage!]!\n}\n\ntype Travelling implements Hobby {\n employees: [Employee!]!\n countriesLived: [Country!]!\n}\n\ntype DirectiveFact implements TopSecretFact @authenticated {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype EntityFact implements TopSecretFact @requiresScopes(scopes: [[\"read:entity\"]]) {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype MiscellaneousFact implements TopSecretFact {\n title: String!\n description: FactContent! @requiresScopes(scopes: [[\"read:miscellaneous\"]])\n factType: TopSecretFactType\n}\n\ntype Project implements Node & Timestamped {\n id: ID!\n name: String!\n description: String\n startDate: String\n endDate: String\n status: ProjectStatus!\n teamMembers: [Employee!]!\n relatedProducts: [Product!]!\n milestoneIds: [String!]\n milestones: [Milestone!]!\n tasks: [Task!]!\n progress: Float\n tags: [String]\n alternativeProjects: [Project]\n dependencies: [Project!]\n resourceGroups: [[ProjectResource!]!]!\n tasksByPhase: [[Task!]]!\n milestoneGroups: [[Milestone]]\n priorityMatrix: [[[Task!]!]!]\n filteredTasks(status: TaskStatus, priority: TaskPriority, limit: Int): [Task!]!\n completionRate(includeSubtasks: Boolean): Float!\n estimatedDaysRemaining(fromDate: String): Int\n criticalDeadline(withinDays: Int): Timestamped\n topPriorityItem(category: String): ProjectSearchResult\n}\n\ntype Milestone implements Node & Timestamped {\n id: ID!\n projectId: ID!\n name: String!\n description: String\n startDate: String\n endDate: String\n status: MilestoneStatus!\n completionPercentage: Float\n dependencies: [Milestone]!\n subtasks: [Task]\n reviewers: [Employee!]\n isAtRisk(threshold: Float): Boolean!\n daysUntilDue(fromDate: String): Int\n}\n\ntype Task implements Node & Assignable {\n id: ID!\n projectId: ID!\n milestoneId: ID\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float @deprecated(reason: \"No more estimations!\")\n actualHours: Float\n createdAt: String\n completedAt: String\n labels: [String]\n subtasks: [Task!]\n dependencies: [Task]!\n attachmentUrls: [String!]!\n reviewerIds: [Int]\n isBlocked(checkDependencies: Boolean): Boolean!\n totalEffort(includeSubtasks: Boolean): Float\n}\n\ntype ProjectUpdate implements Node {\n id: ID!\n projectId: ID!\n updatedById: Int!\n updateType: ProjectUpdateType!\n description: String!\n timestamp: String!\n metadata: String\n}", + "graphqlSchema": "schema {\n query: Query\n mutation: Mutation\n subscription: Subscription\n}\n\ndirective @tag(name: String!) repeatable on ARGUMENT_DEFINITION | ENUM | ENUM_VALUE | FIELD_DEFINITION | INPUT_FIELD_DEFINITION | INPUT_OBJECT | INTERFACE | OBJECT | SCALAR | UNION\n\ndirective @requiresScopes(scopes: [[openfed__Scope!]!]!) on ENUM | FIELD_DEFINITION | INTERFACE | OBJECT | SCALAR\n\ndirective @authenticated on ENUM | FIELD_DEFINITION | INTERFACE | OBJECT | SCALAR\n\ndirective @inaccessible on ARGUMENT_DEFINITION | ENUM | ENUM_VALUE | FIELD_DEFINITION | INPUT_FIELD_DEFINITION | INPUT_OBJECT | INTERFACE | OBJECT | SCALAR | UNION\n\nscalar openfed__Scope\n\ntype Query {\n employee(id: Int!): Employee\n employeeAsList(id: Int!): [Employee]\n employees: [Employee]\n products: [Products!]!\n teammates(team: Department!): [Employee!]!\n firstEmployee: Employee! @tag(name: \"internal\")\n findEmployeesBy(criteria: FindEmployeeCriteria!): [Employee!]!\n \"\"\" This is a GraphQL query that retrieves a list of employees.\"\"\"\n findEmployees(criteria: SearchInput): [Employee!]!\n productTypes: [Products!]!\n topSecretFederationFacts: [TopSecretFact!]! @requiresScopes(scopes: [[\"read:fact\"], [\"read:all\"]])\n factTypes: [TopSecretFactType!]\n sharedThings(numOfA: Int!, numOfB: Int!): [Thing!]!\n \"\"\"Returns the value of the received HTTP header.\"\"\"\n headerValue(name: String!): String!\n \"\"\"Returns the value of the given key in the WS initial payload.\"\"\"\n initPayloadValue(key: String!): String!\n initialPayload: Map\n \"\"\"Returns response after the given delay\"\"\"\n delay(response: String!, ms: Int!): String!\n bigResponse(artificialDelay: Int! = 0, bigObjects: Int! = 100, nestedObjects: Int! = 100, deeplyNestedObjects: Int! = 100): [BigObject!]!\n longResponse(artificialDelay: Int! = 0, bytes: Int!): String\n bigAbstractResponse: BigAbstractResponse\n rootFieldWithListArg(arg: [String!]!): [String!]!\n rootFieldWithNestedListArg(arg: [[String!]!]!): [[String!]!]!\n rootFieldWithListOfInputArg(arg: [InputType!]!): [InputResponse!]!\n rootFieldWithListOfEnumArg(arg: [EnumType!]!): [EnumType!]!\n rootFieldWithInput(arg: InputArg!): String!\n floatField(arg: Float): Float\n secret: Secret @requiresScopes(scopes: [[\"read:secret\"]])\n projects: [Project!]!\n project(id: ID!): Project\n projectStatuses: [ProjectStatus!]!\n projectsByStatus(status: ProjectStatus!): [Project!]!\n projectResources(projectId: ID!): [ProjectResource!]!\n searchProjects(query: String!): [ProjectSearchResult!]!\n milestones(projectId: ID!): [Milestone!]!\n tasks(projectId: ID!): [Task!]!\n projectActivities(projectId: ID!): [ProjectActivity!]!\n projectTags: [String]\n archivedProjects: [Project]!\n tasksByPriority(projectId: ID!): [[Task]]\n resourceMatrix(projectId: ID!): [[ProjectResource!]!]!\n killService: Boolean!\n panic: Boolean!\n nodesById(id: ID!): [Node!]!\n}\n\nscalar Upload\n\ntype Mutation {\n updateEmployeeTag(id: Int!, tag: String!): Employee\n singleUpload(file: Upload!): Boolean!\n singleUploadWithInput(arg: FileUpload!): Boolean!\n multipleUpload(files: [Upload!]!): Boolean!\n addFact(fact: TopSecretFactInput!): TopSecretFact! @requiresScopes(scopes: [[\"write:fact\"], [\"write:all\"]])\n \"\"\" This mutation updates the availability status of an employee in the system.\n \"\"\"\n updateAvailability(employeeID: Int!, isAvailable: Boolean!): Employee!\n \"\"\" This mutation update the mood of an employee. \"\"\"\n updateMood(employeeID: Int!, mood: Mood!): Employee!\n addProject(project: ProjectInput!): Project!\n addMilestone(milestone: MilestoneInput!): Milestone!\n addTask(task: TaskInput!): Task!\n updateProjectStatus(projectId: ID!, status: ProjectStatus!): ProjectUpdate!\n}\n\ninput FileUpload {\n nested: DeeplyNestedFileUpload\n nestedList: [Upload!]\n}\n\ninput DeeplyNestedFileUpload {\n file: Upload!\n}\n\ntype Subscription {\n \"\"\"`currentTime` will return a stream of `Time` objects.\"\"\"\n currentTime: Time!\n countEmp(max: Int!, intervalMilliseconds: Int!): Int!\n countEmp2(max: Int!, intervalMilliseconds: Int!): Int!\n countFor(count: Int!): Int!\n countHob(max: Int!, intervalMilliseconds: Int!): Int!\n \"\"\"Returns a stream with the value of the received HTTP header.\"\"\"\n headerValue(name: String!, repeat: Int): TimestampedString!\n \"\"\"\n Returns a stream with the value of value of the given key in the WS initial payload.\n \"\"\"\n initPayloadValue(key: String!, repeat: Int): TimestampedString!\n \"\"\"Returns a stream with the value of the WS initial payload.\"\"\"\n initialPayload(repeat: Int): Map\n returnsError: String\n}\n\nenum Department {\n ENGINEERING\n MARKETING\n OPERATIONS\n}\n\ninterface RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n}\n\nenum EngineerType {\n BACKEND\n FRONTEND\n FULLSTACK\n}\n\ninterface Identifiable {\n id: Int!\n}\n\nenum OperationType {\n FINANCE\n HUMAN_RESOURCES\n}\n\ntype Details {\n forename: String!\n location: Country!\n surname: String!\n pastLocations: [City!]!\n middlename: String @deprecated(reason: \"No longer supported\")\n hasChildren: Boolean!\n maritalStatus: MaritalStatus\n nationality: Nationality!\n pets: [Pet]\n}\n\ntype City {\n type: String!\n name: String!\n country: Country\n}\n\ntype Country {\n key: CountryKey!\n language: String\n}\n\ntype CountryKey {\n name: String!\n}\n\nenum Mood {\n HAPPY\n SAD\n APATHETIC @inaccessible\n}\n\ntype ErrorWrapper {\n okField: String\n errorField: String\n}\n\ntype Time {\n unixTime: Int!\n timeStamp: String!\n}\n\nunion Products = Consultancy | Cosmo | SDK | Documentation\n\ninterface IProduct {\n upc: ID!\n engineers: [Employee!]!\n}\n\ntype Consultancy {\n upc: ID!\n lead: Employee!\n isLeadAvailable: Boolean\n name: ProductName!\n}\n\ninput FindEmployeeCriteria @oneOf {\n id: Int\n department: Department\n title: String\n}\n\nenum Class {\n FISH\n MAMMAL\n REPTILE\n}\n\nenum Gender {\n FEMALE\n MALE\n UNKNOWN\n}\n\ninterface Animal {\n class: Class!\n gender: Gender!\n}\n\nenum CatType {\n HOME\n STREET\n}\n\nenum DogBreed {\n GOLDEN_RETRIEVER\n POODLE\n ROTTWEILER\n YORKSHIRE_TERRIER\n}\n\nenum MaritalStatus {\n ENGAGED\n MARRIED\n}\n\nenum Nationality {\n AMERICAN\n DUTCH\n ENGLISH\n GERMAN\n INDIAN\n SPANISH\n UKRAINIAN\n}\n\n\"\"\" Allows to filter employees by their details. \"\"\"\ninput SearchInput {\n hasPets: Boolean\n nationality: Nationality\n nested: NestedSearchInput\n}\n\ninput NestedSearchInput {\n maritalStatus: MaritalStatus\n hasChildren: Boolean\n}\n\nenum ExerciseType {\n CALISTHENICS\n HIKING\n SPORT\n STRENGTH_TRAINING\n}\n\ninterface Experience {\n yearsOfExperience: Float!\n}\n\nenum GameGenre {\n ADVENTURE\n BOARD\n FPS\n CARD\n RPG\n ROGUELITE\n SIMULATION\n STRATEGY\n}\n\nenum ProgrammingLanguage {\n CSHARP\n GO\n RUST\n TYPESCRIPT\n}\n\ninterface Hobby {\n employees: [Employee!]!\n}\n\ntype Thing {\n a: String!\n b: String!\n}\n\ninput TopSecretFactInput {\n title: String!\n description: FactContent!\n factType: TopSecretFactType!\n}\n\nenum TopSecretFactType @authenticated {\n DIRECTIVE\n ENTITY\n MISCELLANEOUS\n}\n\ninterface TopSecretFact @authenticated {\n description: FactContent!\n factType: TopSecretFactType\n}\n\nscalar FactContent @requiresScopes(scopes: [[\"read:scalar\"], [\"read:all\"]])\n\nenum ProductName {\n CONSULTANCY\n COSMO\n ENGINE\n FINANCE\n HUMAN_RESOURCES\n MARKETING\n SDK\n}\n\ntype Documentation {\n url(product: ProductName!): String!\n urls(products: [ProductName!]!): [String!]!\n}\n\ntype Secret {\n value: String\n}\n\ninput InputArg {\n enums: [EnumType!]\n enum: EnumType\n string: String\n strings: [String!]\n}\n\nenum EnumType {\n A\n B\n C\n}\n\ninput InputType {\n arg: String!\n}\n\ntype InputResponse {\n arg: String!\n}\n\nscalar Map\n\ntype TimestampedString {\n \"\"\"The value of the string.\"\"\"\n value: String!\n \"\"\"The timestamp when the response was generated.\"\"\"\n unixTime: Int!\n \"\"\"Sequence number\"\"\"\n seq: Int!\n \"\"\"Total number of responses to be sent\"\"\"\n total: Int!\n initialPayload: Map\n}\n\ntype BigObject {\n nestedObjects: [NestedObject!]!\n}\n\ntype NestedObject {\n deeplyNestedObjects: [DeeplyNestedObject!]!\n}\n\ntype DeeplyNestedObject {\n aFieldOnDeeplyNestedObject: String!\n bFieldOnDeeplyNestedObject: Int!\n cFieldOnDeeplyNestedObject: Boolean!\n dFieldOnDeeplyNestedObject: Float!\n eFieldOnDeeplyNestedObject: String!\n fFieldOnDeeplyNestedObject: Int!\n gFieldOnDeeplyNestedObject: Boolean!\n hFieldOnDeeplyNestedObject: Float!\n iFieldOnDeeplyNestedObject: String!\n jFieldOnDeeplyNestedObject: Int!\n kFieldOnDeeplyNestedObject: Boolean!\n lFieldOnDeeplyNestedObject: Float!\n mFieldOnDeeplyNestedObject: String!\n nFieldOnDeeplyNestedObject: Int!\n oFieldOnDeeplyNestedObject: Boolean!\n pFieldOnDeeplyNestedObject: Float!\n qFieldOnDeeplyNestedObject: String!\n rFieldOnDeeplyNestedObject: Int!\n sFieldOnDeeplyNestedObject: Boolean!\n tFieldOnDeeplyNestedObject: Float!\n uFieldOnDeeplyNestedObject: String!\n vFieldOnDeeplyNestedObject: Int!\n wFieldOnDeeplyNestedObject: Boolean!\n xFieldOnDeeplyNestedObject: Float!\n yFieldOnDeeplyNestedObject: String!\n zFieldOnDeeplyNestedObject: Int!\n}\n\nunion BigAbstractResponse = ABigObject | BBigObject | CBigObject | DBigObject | EBigObject | FBigObject | GBigObject | HBigObject | IBigObject | JBigObject | KBigObject | LBigObject | MBigObject | NBigObject | OBigObject | PBigObject | QBigObject | RBigObject | SBigObject | TBigObject | UBigObject | VBigObject | WBigObject | XBigObject | YBigObject | ZBigObject\n\ntype ABigObject {\n aFieldOnABigObject: String!\n bFieldOnABigObject: Int!\n cFieldOnABigObject: Boolean!\n dFieldOnABigObject: Float!\n eFieldOnABigObject: String!\n fFieldOnABigObject: Int!\n gFieldOnABigObject: Boolean!\n hFieldOnABigObject: Float!\n iFieldOnABigObject: String!\n jFieldOnABigObject: Int!\n kFieldOnABigObject: Boolean!\n lFieldOnABigObject: Float!\n mFieldOnABigObject: String!\n nFieldOnABigObject: Int!\n oFieldOnABigObject: Boolean!\n pFieldOnABigObject: Float!\n qFieldOnABigObject: String!\n rFieldOnABigObject: Int!\n sFieldOnABigObject: Boolean!\n tFieldOnABigObject: Float!\n uFieldOnABigObject: String!\n vFieldOnABigObject: Int!\n wFieldOnABigObject: Boolean!\n xFieldOnABigObject: Float!\n yFieldOnABigObject: String!\n zFieldOnABigObject: Int!\n}\n\ntype BBigObject {\n aFieldOnBBigObject: String!\n bFieldOnBBigObject: Int!\n cFieldOnBBigObject: Boolean!\n dFieldOnBBigObject: Float!\n eFieldOnBBigObject: String!\n fFieldOnBBigObject: Int!\n gFieldOnBBigObject: Boolean!\n hFieldOnBBigObject: Float!\n iFieldOnBBigObject: String!\n jFieldOnBBigObject: Int!\n kFieldOnBBigObject: Boolean!\n lFieldOnBBigObject: Float!\n mFieldOnBBigObject: String!\n nFieldOnBBigObject: Int!\n oFieldOnBBigObject: Boolean!\n pFieldOnBBigObject: Float!\n qFieldOnBBigObject: String!\n rFieldOnBBigObject: Int!\n sFieldOnBBigObject: Boolean!\n tFieldOnBBigObject: Float!\n uFieldOnBBigObject: String!\n vFieldOnBBigObject: Int!\n wFieldOnBBigObject: Boolean!\n xFieldOnBBigObject: Float!\n yFieldOnBBigObject: String!\n zFieldOnBBigObject: Int!\n}\n\ntype CBigObject {\n aFieldOnCBigObject: String!\n bFieldOnCBigObject: Int!\n cFieldOnCBigObject: Boolean!\n dFieldOnCBigObject: Float!\n eFieldOnCBigObject: String!\n fFieldOnCBigObject: Int!\n gFieldOnCBigObject: Boolean!\n hFieldOnCBigObject: Float!\n iFieldOnCBigObject: String!\n jFieldOnCBigObject: Int!\n kFieldOnCBigObject: Boolean!\n lFieldOnCBigObject: Float!\n mFieldOnCBigObject: String!\n nFieldOnCBigObject: Int!\n oFieldOnCBigObject: Boolean!\n pFieldOnCBigObject: Float!\n qFieldOnCBigObject: String!\n rFieldOnCBigObject: Int!\n sFieldOnCBigObject: Boolean!\n tFieldOnCBigObject: Float!\n uFieldOnCBigObject: String!\n vFieldOnCBigObject: Int!\n wFieldOnCBigObject: Boolean!\n xFieldOnCBigObject: Float!\n yFieldOnCBigObject: String!\n zFieldOnCBigObject: Int!\n}\n\ntype DBigObject {\n aFieldOnDBigObject: String!\n bFieldOnDBigObject: Int!\n cFieldOnDBigObject: Boolean!\n dFieldOnDBigObject: Float!\n eFieldOnDBigObject: String!\n fFieldOnDBigObject: Int!\n gFieldOnDBigObject: Boolean!\n hFieldOnDBigObject: Float!\n iFieldOnDBigObject: String!\n jFieldOnDBigObject: Int!\n kFieldOnDBigObject: Boolean!\n lFieldOnDBigObject: Float!\n mFieldOnDBigObject: String!\n nFieldOnDBigObject: Int!\n oFieldOnDBigObject: Boolean!\n pFieldOnDBigObject: Float!\n qFieldOnDBigObject: String!\n rFieldOnDBigObject: Int!\n sFieldOnDBigObject: Boolean!\n tFieldOnDBigObject: Float!\n uFieldOnDBigObject: String!\n vFieldOnDBigObject: Int!\n wFieldOnDBigObject: Boolean!\n xFieldOnDBigObject: Float!\n yFieldOnDBigObject: String!\n zFieldOnDBigObject: Int!\n}\n\ntype EBigObject {\n aFieldOnEBigObject: String!\n bFieldOnEBigObject: Int!\n cFieldOnEBigObject: Boolean!\n dFieldOnEBigObject: Float!\n eFieldOnEBigObject: String!\n fFieldOnEBigObject: Int!\n gFieldOnEBigObject: Boolean!\n hFieldOnEBigObject: Float!\n iFieldOnEBigObject: String!\n jFieldOnEBigObject: Int!\n kFieldOnEBigObject: Boolean!\n lFieldOnEBigObject: Float!\n mFieldOnEBigObject: String!\n nFieldOnEBigObject: Int!\n oFieldOnEBigObject: Boolean!\n pFieldOnEBigObject: Float!\n qFieldOnEBigObject: String!\n rFieldOnEBigObject: Int!\n sFieldOnEBigObject: Boolean!\n tFieldOnEBigObject: Float!\n uFieldOnEBigObject: String!\n vFieldOnEBigObject: Int!\n wFieldOnEBigObject: Boolean!\n xFieldOnEBigObject: Float!\n yFieldOnEBigObject: String!\n zFieldOnEBigObject: Int!\n}\n\ntype FBigObject {\n aFieldOnFBigObject: String!\n bFieldOnFBigObject: Int!\n cFieldOnFBigObject: Boolean!\n dFieldOnFBigObject: Float!\n eFieldOnFBigObject: String!\n fFieldOnFBigObject: Int!\n gFieldOnFBigObject: Boolean!\n hFieldOnFBigObject: Float!\n iFieldOnFBigObject: String!\n jFieldOnFBigObject: Int!\n kFieldOnFBigObject: Boolean!\n lFieldOnFBigObject: Float!\n mFieldOnFBigObject: String!\n nFieldOnFBigObject: Int!\n oFieldOnFBigObject: Boolean!\n pFieldOnFBigObject: Float!\n qFieldOnFBigObject: String!\n rFieldOnFBigObject: Int!\n sFieldOnFBigObject: Boolean!\n tFieldOnFBigObject: Float!\n uFieldOnFBigObject: String!\n vFieldOnFBigObject: Int!\n wFieldOnFBigObject: Boolean!\n xFieldOnFBigObject: Float!\n yFieldOnFBigObject: String!\n zFieldOnFBigObject: Int!\n}\n\ntype GBigObject {\n aFieldOnGBigObject: String!\n bFieldOnGBigObject: Int!\n cFieldOnGBigObject: Boolean!\n dFieldOnGBigObject: Float!\n eFieldOnGBigObject: String!\n fFieldOnGBigObject: Int!\n gFieldOnGBigObject: Boolean!\n hFieldOnGBigObject: Float!\n iFieldOnGBigObject: String!\n jFieldOnGBigObject: Int!\n kFieldOnGBigObject: Boolean!\n lFieldOnGBigObject: Float!\n mFieldOnGBigObject: String!\n nFieldOnGBigObject: Int!\n oFieldOnGBigObject: Boolean!\n pFieldOnGBigObject: Float!\n qFieldOnGBigObject: String!\n rFieldOnGBigObject: Int!\n sFieldOnGBigObject: Boolean!\n tFieldOnGBigObject: Float!\n uFieldOnGBigObject: String!\n vFieldOnGBigObject: Int!\n wFieldOnGBigObject: Boolean!\n xFieldOnGBigObject: Float!\n yFieldOnGBigObject: String!\n zFieldOnGBigObject: Int!\n}\n\ntype HBigObject {\n aFieldOnHBigObject: String!\n bFieldOnHBigObject: Int!\n cFieldOnHBigObject: Boolean!\n dFieldOnHBigObject: Float!\n eFieldOnHBigObject: String!\n fFieldOnHBigObject: Int!\n gFieldOnHBigObject: Boolean!\n hFieldOnHBigObject: Float!\n iFieldOnHBigObject: String!\n jFieldOnHBigObject: Int!\n kFieldOnHBigObject: Boolean!\n lFieldOnHBigObject: Float!\n mFieldOnHBigObject: String!\n nFieldOnHBigObject: Int!\n oFieldOnHBigObject: Boolean!\n pFieldOnHBigObject: Float!\n qFieldOnHBigObject: String!\n rFieldOnHBigObject: Int!\n sFieldOnHBigObject: Boolean!\n tFieldOnHBigObject: Float!\n uFieldOnHBigObject: String!\n vFieldOnHBigObject: Int!\n wFieldOnHBigObject: Boolean!\n xFieldOnHBigObject: Float!\n yFieldOnHBigObject: String!\n zFieldOnHBigObject: Int!\n}\n\ntype IBigObject {\n aFieldOnIBigObject: String!\n bFieldOnIBigObject: Int!\n cFieldOnIBigObject: Boolean!\n dFieldOnIBigObject: Float!\n eFieldOnIBigObject: String!\n fFieldOnIBigObject: Int!\n gFieldOnIBigObject: Boolean!\n hFieldOnIBigObject: Float!\n iFieldOnIBigObject: String!\n jFieldOnIBigObject: Int!\n kFieldOnIBigObject: Boolean!\n lFieldOnIBigObject: Float!\n mFieldOnIBigObject: String!\n nFieldOnIBigObject: Int!\n oFieldOnIBigObject: Boolean!\n pFieldOnIBigObject: Float!\n qFieldOnIBigObject: String!\n rFieldOnIBigObject: Int!\n sFieldOnIBigObject: Boolean!\n tFieldOnIBigObject: Float!\n uFieldOnIBigObject: String!\n vFieldOnIBigObject: Int!\n wFieldOnIBigObject: Boolean!\n xFieldOnIBigObject: Float!\n yFieldOnIBigObject: String!\n zFieldOnIBigObject: Int!\n}\n\ntype JBigObject {\n aFieldOnJBigObject: String!\n bFieldOnJBigObject: Int!\n cFieldOnJBigObject: Boolean!\n dFieldOnJBigObject: Float!\n eFieldOnJBigObject: String!\n fFieldOnJBigObject: Int!\n gFieldOnJBigObject: Boolean!\n hFieldOnJBigObject: Float!\n iFieldOnJBigObject: String!\n jFieldOnJBigObject: Int!\n kFieldOnJBigObject: Boolean!\n lFieldOnJBigObject: Float!\n mFieldOnJBigObject: String!\n nFieldOnJBigObject: Int!\n oFieldOnJBigObject: Boolean!\n pFieldOnJBigObject: Float!\n qFieldOnJBigObject: String!\n rFieldOnJBigObject: Int!\n sFieldOnJBigObject: Boolean!\n tFieldOnJBigObject: Float!\n uFieldOnJBigObject: String!\n vFieldOnJBigObject: Int!\n wFieldOnJBigObject: Boolean!\n xFieldOnJBigObject: Float!\n yFieldOnJBigObject: String!\n zFieldOnJBigObject: Int!\n}\n\ntype KBigObject {\n aFieldOnKBigObject: String!\n bFieldOnKBigObject: Int!\n cFieldOnKBigObject: Boolean!\n dFieldOnKBigObject: Float!\n eFieldOnKBigObject: String!\n fFieldOnKBigObject: Int!\n gFieldOnKBigObject: Boolean!\n hFieldOnKBigObject: Float!\n iFieldOnKBigObject: String!\n jFieldOnKBigObject: Int!\n kFieldOnKBigObject: Boolean!\n lFieldOnKBigObject: Float!\n mFieldOnKBigObject: String!\n nFieldOnKBigObject: Int!\n oFieldOnKBigObject: Boolean!\n pFieldOnKBigObject: Float!\n qFieldOnKBigObject: String!\n rFieldOnKBigObject: Int!\n sFieldOnKBigObject: Boolean!\n tFieldOnKBigObject: Float!\n uFieldOnKBigObject: String!\n vFieldOnKBigObject: Int!\n wFieldOnKBigObject: Boolean!\n xFieldOnKBigObject: Float!\n yFieldOnKBigObject: String!\n zFieldOnKBigObject: Int!\n}\n\ntype LBigObject {\n aFieldOnLBigObject: String!\n bFieldOnLBigObject: Int!\n cFieldOnLBigObject: Boolean!\n dFieldOnLBigObject: Float!\n eFieldOnLBigObject: String!\n fFieldOnLBigObject: Int!\n gFieldOnLBigObject: Boolean!\n hFieldOnLBigObject: Float!\n iFieldOnLBigObject: String!\n jFieldOnLBigObject: Int!\n kFieldOnLBigObject: Boolean!\n lFieldOnLBigObject: Float!\n mFieldOnLBigObject: String!\n nFieldOnLBigObject: Int!\n oFieldOnLBigObject: Boolean!\n pFieldOnLBigObject: Float!\n qFieldOnLBigObject: String!\n rFieldOnLBigObject: Int!\n sFieldOnLBigObject: Boolean!\n tFieldOnLBigObject: Float!\n uFieldOnLBigObject: String!\n vFieldOnLBigObject: Int!\n wFieldOnLBigObject: Boolean!\n xFieldOnLBigObject: Float!\n yFieldOnLBigObject: String!\n zFieldOnLBigObject: Int!\n}\n\ntype MBigObject {\n aFieldOnMBigObject: String!\n bFieldOnMBigObject: Int!\n cFieldOnMBigObject: Boolean!\n dFieldOnMBigObject: Float!\n eFieldOnMBigObject: String!\n fFieldOnMBigObject: Int!\n gFieldOnMBigObject: Boolean!\n hFieldOnMBigObject: Float!\n iFieldOnMBigObject: String!\n jFieldOnMBigObject: Int!\n kFieldOnMBigObject: Boolean!\n lFieldOnMBigObject: Float!\n mFieldOnMBigObject: String!\n nFieldOnMBigObject: Int!\n oFieldOnMBigObject: Boolean!\n pFieldOnMBigObject: Float!\n qFieldOnMBigObject: String!\n rFieldOnMBigObject: Int!\n sFieldOnMBigObject: Boolean!\n tFieldOnMBigObject: Float!\n uFieldOnMBigObject: String!\n vFieldOnMBigObject: Int!\n wFieldOnMBigObject: Boolean!\n xFieldOnMBigObject: Float!\n yFieldOnMBigObject: String!\n zFieldOnMBigObject: Int!\n}\n\ntype NBigObject {\n aFieldOnNBigObject: String!\n bFieldOnNBigObject: Int!\n cFieldOnNBigObject: Boolean!\n dFieldOnNBigObject: Float!\n eFieldOnNBigObject: String!\n fFieldOnNBigObject: Int!\n gFieldOnNBigObject: Boolean!\n hFieldOnNBigObject: Float!\n iFieldOnNBigObject: String!\n jFieldOnNBigObject: Int!\n kFieldOnNBigObject: Boolean!\n lFieldOnNBigObject: Float!\n mFieldOnNBigObject: String!\n nFieldOnNBigObject: Int!\n oFieldOnNBigObject: Boolean!\n pFieldOnNBigObject: Float!\n qFieldOnNBigObject: String!\n rFieldOnNBigObject: Int!\n sFieldOnNBigObject: Boolean!\n tFieldOnNBigObject: Float!\n uFieldOnNBigObject: String!\n vFieldOnNBigObject: Int!\n wFieldOnNBigObject: Boolean!\n xFieldOnNBigObject: Float!\n yFieldOnNBigObject: String!\n zFieldOnNBigObject: Int!\n}\n\ntype OBigObject {\n aFieldOnOBigObject: String!\n bFieldOnOBigObject: Int!\n cFieldOnOBigObject: Boolean!\n dFieldOnOBigObject: Float!\n eFieldOnOBigObject: String!\n fFieldOnOBigObject: Int!\n gFieldOnOBigObject: Boolean!\n hFieldOnOBigObject: Float!\n iFieldOnOBigObject: String!\n jFieldOnOBigObject: Int!\n kFieldOnOBigObject: Boolean!\n lFieldOnOBigObject: Float!\n mFieldOnOBigObject: String!\n nFieldOnOBigObject: Int!\n oFieldOnOBigObject: Boolean!\n pFieldOnOBigObject: Float!\n qFieldOnOBigObject: String!\n rFieldOnOBigObject: Int!\n sFieldOnOBigObject: Boolean!\n tFieldOnOBigObject: Float!\n uFieldOnOBigObject: String!\n vFieldOnOBigObject: Int!\n wFieldOnOBigObject: Boolean!\n xFieldOnOBigObject: Float!\n yFieldOnOBigObject: String!\n zFieldOnOBigObject: Int!\n}\n\ntype PBigObject {\n aFieldOnPBigObject: String!\n bFieldOnPBigObject: Int!\n cFieldOnPBigObject: Boolean!\n dFieldOnPBigObject: Float!\n eFieldOnPBigObject: String!\n fFieldOnPBigObject: Int!\n gFieldOnPBigObject: Boolean!\n hFieldOnPBigObject: Float!\n iFieldOnPBigObject: String!\n jFieldOnPBigObject: Int!\n kFieldOnPBigObject: Boolean!\n lFieldOnPBigObject: Float!\n mFieldOnPBigObject: String!\n nFieldOnPBigObject: Int!\n oFieldOnPBigObject: Boolean!\n pFieldOnPBigObject: Float!\n qFieldOnPBigObject: String!\n rFieldOnPBigObject: Int!\n sFieldOnPBigObject: Boolean!\n tFieldOnPBigObject: Float!\n uFieldOnPBigObject: String!\n vFieldOnPBigObject: Int!\n wFieldOnPBigObject: Boolean!\n xFieldOnPBigObject: Float!\n yFieldOnPBigObject: String!\n zFieldOnPBigObject: Int!\n}\n\ntype QBigObject {\n aFieldOnQBigObject: String!\n bFieldOnQBigObject: Int!\n cFieldOnQBigObject: Boolean!\n dFieldOnQBigObject: Float!\n eFieldOnQBigObject: String!\n fFieldOnQBigObject: Int!\n gFieldOnQBigObject: Boolean!\n hFieldOnQBigObject: Float!\n iFieldOnQBigObject: String!\n jFieldOnQBigObject: Int!\n kFieldOnQBigObject: Boolean!\n lFieldOnQBigObject: Float!\n mFieldOnQBigObject: String!\n nFieldOnQBigObject: Int!\n oFieldOnQBigObject: Boolean!\n pFieldOnQBigObject: Float!\n qFieldOnQBigObject: String!\n rFieldOnQBigObject: Int!\n sFieldOnQBigObject: Boolean!\n tFieldOnQBigObject: Float!\n uFieldOnQBigObject: String!\n vFieldOnQBigObject: Int!\n wFieldOnQBigObject: Boolean!\n xFieldOnQBigObject: Float!\n yFieldOnQBigObject: String!\n zFieldOnQBigObject: Int!\n}\n\ntype RBigObject {\n aFieldOnRBigObject: String!\n bFieldOnRBigObject: Int!\n cFieldOnRBigObject: Boolean!\n dFieldOnRBigObject: Float!\n eFieldOnRBigObject: String!\n fFieldOnRBigObject: Int!\n gFieldOnRBigObject: Boolean!\n hFieldOnRBigObject: Float!\n iFieldOnRBigObject: String!\n jFieldOnRBigObject: Int!\n kFieldOnRBigObject: Boolean!\n lFieldOnRBigObject: Float!\n mFieldOnRBigObject: String!\n nFieldOnRBigObject: Int!\n oFieldOnRBigObject: Boolean!\n pFieldOnRBigObject: Float!\n qFieldOnRBigObject: String!\n rFieldOnRBigObject: Int!\n sFieldOnRBigObject: Boolean!\n tFieldOnRBigObject: Float!\n uFieldOnRBigObject: String!\n vFieldOnRBigObject: Int!\n wFieldOnRBigObject: Boolean!\n xFieldOnRBigObject: Float!\n yFieldOnRBigObject: String!\n zFieldOnRBigObject: Int!\n}\n\ntype SBigObject {\n aFieldOnSBigObject: String!\n bFieldOnSBigObject: Int!\n cFieldOnSBigObject: Boolean!\n dFieldOnSBigObject: Float!\n eFieldOnSBigObject: String!\n fFieldOnSBigObject: Int!\n gFieldOnSBigObject: Boolean!\n hFieldOnSBigObject: Float!\n iFieldOnSBigObject: String!\n jFieldOnSBigObject: Int!\n kFieldOnSBigObject: Boolean!\n lFieldOnSBigObject: Float!\n mFieldOnSBigObject: String!\n nFieldOnSBigObject: Int!\n oFieldOnSBigObject: Boolean!\n pFieldOnSBigObject: Float!\n qFieldOnSBigObject: String!\n rFieldOnSBigObject: Int!\n sFieldOnSBigObject: Boolean!\n tFieldOnSBigObject: Float!\n uFieldOnSBigObject: String!\n vFieldOnSBigObject: Int!\n wFieldOnSBigObject: Boolean!\n xFieldOnSBigObject: Float!\n yFieldOnSBigObject: String!\n zFieldOnSBigObject: Int!\n}\n\ntype TBigObject {\n aFieldOnTBigObject: String!\n bFieldOnTBigObject: Int!\n cFieldOnTBigObject: Boolean!\n dFieldOnTBigObject: Float!\n eFieldOnTBigObject: String!\n fFieldOnTBigObject: Int!\n gFieldOnTBigObject: Boolean!\n hFieldOnTBigObject: Float!\n iFieldOnTBigObject: String!\n jFieldOnTBigObject: Int!\n kFieldOnTBigObject: Boolean!\n lFieldOnTBigObject: Float!\n mFieldOnTBigObject: String!\n nFieldOnTBigObject: Int!\n oFieldOnTBigObject: Boolean!\n pFieldOnTBigObject: Float!\n qFieldOnTBigObject: String!\n rFieldOnTBigObject: Int!\n sFieldOnTBigObject: Boolean!\n tFieldOnTBigObject: Float!\n uFieldOnTBigObject: String!\n vFieldOnTBigObject: Int!\n wFieldOnTBigObject: Boolean!\n xFieldOnTBigObject: Float!\n yFieldOnTBigObject: String!\n zFieldOnTBigObject: Int!\n}\n\ntype UBigObject {\n aFieldOnUBigObject: String!\n bFieldOnUBigObject: Int!\n cFieldOnUBigObject: Boolean!\n dFieldOnUBigObject: Float!\n eFieldOnUBigObject: String!\n fFieldOnUBigObject: Int!\n gFieldOnUBigObject: Boolean!\n hFieldOnUBigObject: Float!\n iFieldOnUBigObject: String!\n jFieldOnUBigObject: Int!\n kFieldOnUBigObject: Boolean!\n lFieldOnUBigObject: Float!\n mFieldOnUBigObject: String!\n nFieldOnUBigObject: Int!\n oFieldOnUBigObject: Boolean!\n pFieldOnUBigObject: Float!\n qFieldOnUBigObject: String!\n rFieldOnUBigObject: Int!\n sFieldOnUBigObject: Boolean!\n tFieldOnUBigObject: Float!\n uFieldOnUBigObject: String!\n vFieldOnUBigObject: Int!\n wFieldOnUBigObject: Boolean!\n xFieldOnUBigObject: Float!\n yFieldOnUBigObject: String!\n zFieldOnUBigObject: Int!\n}\n\ntype VBigObject {\n aFieldOnVBigObject: String!\n bFieldOnVBigObject: Int!\n cFieldOnVBigObject: Boolean!\n dFieldOnVBigObject: Float!\n eFieldOnVBigObject: String!\n fFieldOnVBigObject: Int!\n gFieldOnVBigObject: Boolean!\n hFieldOnVBigObject: Float!\n iFieldOnVBigObject: String!\n jFieldOnVBigObject: Int!\n kFieldOnVBigObject: Boolean!\n lFieldOnVBigObject: Float!\n mFieldOnVBigObject: String!\n nFieldOnVBigObject: Int!\n oFieldOnVBigObject: Boolean!\n pFieldOnVBigObject: Float!\n qFieldOnVBigObject: String!\n rFieldOnVBigObject: Int!\n sFieldOnVBigObject: Boolean!\n tFieldOnVBigObject: Float!\n uFieldOnVBigObject: String!\n vFieldOnVBigObject: Int!\n wFieldOnVBigObject: Boolean!\n xFieldOnVBigObject: Float!\n yFieldOnVBigObject: String!\n zFieldOnVBigObject: Int!\n}\n\ntype WBigObject {\n aFieldOnWBigObject: String!\n bFieldOnWBigObject: Int!\n cFieldOnWBigObject: Boolean!\n dFieldOnWBigObject: Float!\n eFieldOnWBigObject: String!\n fFieldOnWBigObject: Int!\n gFieldOnWBigObject: Boolean!\n hFieldOnWBigObject: Float!\n iFieldOnWBigObject: String!\n jFieldOnWBigObject: Int!\n kFieldOnWBigObject: Boolean!\n lFieldOnWBigObject: Float!\n mFieldOnWBigObject: String!\n nFieldOnWBigObject: Int!\n oFieldOnWBigObject: Boolean!\n pFieldOnWBigObject: Float!\n qFieldOnWBigObject: String!\n rFieldOnWBigObject: Int!\n sFieldOnWBigObject: Boolean!\n tFieldOnWBigObject: Float!\n uFieldOnWBigObject: String!\n vFieldOnWBigObject: Int!\n wFieldOnWBigObject: Boolean!\n xFieldOnWBigObject: Float!\n yFieldOnWBigObject: String!\n zFieldOnWBigObject: Int!\n}\n\ntype XBigObject {\n aFieldOnXBigObject: String!\n bFieldOnXBigObject: Int!\n cFieldOnXBigObject: Boolean!\n dFieldOnXBigObject: Float!\n eFieldOnXBigObject: String!\n fFieldOnXBigObject: Int!\n gFieldOnXBigObject: Boolean!\n hFieldOnXBigObject: Float!\n iFieldOnXBigObject: String!\n jFieldOnXBigObject: Int!\n kFieldOnXBigObject: Boolean!\n lFieldOnXBigObject: Float!\n mFieldOnXBigObject: String!\n nFieldOnXBigObject: Int!\n oFieldOnXBigObject: Boolean!\n pFieldOnXBigObject: Float!\n qFieldOnXBigObject: String!\n rFieldOnXBigObject: Int!\n sFieldOnXBigObject: Boolean!\n tFieldOnXBigObject: Float!\n uFieldOnXBigObject: String!\n vFieldOnXBigObject: Int!\n wFieldOnXBigObject: Boolean!\n xFieldOnXBigObject: Float!\n yFieldOnXBigObject: String!\n zFieldOnXBigObject: Int!\n}\n\ntype YBigObject {\n aFieldOnYBigObject: String!\n bFieldOnYBigObject: Int!\n cFieldOnYBigObject: Boolean!\n dFieldOnYBigObject: Float!\n eFieldOnYBigObject: String!\n fFieldOnYBigObject: Int!\n gFieldOnYBigObject: Boolean!\n hFieldOnYBigObject: Float!\n iFieldOnYBigObject: String!\n jFieldOnYBigObject: Int!\n kFieldOnYBigObject: Boolean!\n lFieldOnYBigObject: Float!\n mFieldOnYBigObject: String!\n nFieldOnYBigObject: Int!\n oFieldOnYBigObject: Boolean!\n pFieldOnYBigObject: Float!\n qFieldOnYBigObject: String!\n rFieldOnYBigObject: Int!\n sFieldOnYBigObject: Boolean!\n tFieldOnYBigObject: Float!\n uFieldOnYBigObject: String!\n vFieldOnYBigObject: Int!\n wFieldOnYBigObject: Boolean!\n xFieldOnYBigObject: Float!\n yFieldOnYBigObject: String!\n zFieldOnYBigObject: Int!\n}\n\ntype ZBigObject {\n aFieldOnZBigObject: String!\n bFieldOnZBigObject: Int!\n cFieldOnZBigObject: Boolean!\n dFieldOnZBigObject: Float!\n eFieldOnZBigObject: String!\n fFieldOnZBigObject: Int!\n gFieldOnZBigObject: Boolean!\n hFieldOnZBigObject: Float!\n iFieldOnZBigObject: String!\n jFieldOnZBigObject: Int!\n kFieldOnZBigObject: Boolean!\n lFieldOnZBigObject: Float!\n mFieldOnZBigObject: String!\n nFieldOnZBigObject: Int!\n oFieldOnZBigObject: Boolean!\n pFieldOnZBigObject: Float!\n qFieldOnZBigObject: String!\n rFieldOnZBigObject: Int!\n sFieldOnZBigObject: Boolean!\n tFieldOnZBigObject: Float!\n uFieldOnZBigObject: String!\n vFieldOnZBigObject: Int!\n wFieldOnZBigObject: Boolean!\n xFieldOnZBigObject: Float!\n yFieldOnZBigObject: String!\n zFieldOnZBigObject: Int!\n}\n\ninput ProjectInput {\n name: String!\n description: String\n startDate: String\n endDate: String\n status: ProjectStatus!\n}\n\ninput MilestoneInput {\n projectId: ID!\n name: String!\n description: String\n dueDate: String\n status: MilestoneStatus!\n}\n\ninput TaskInput {\n projectId: ID!\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float\n}\n\ninterface Node {\n id: ID!\n}\n\ninterface Timestamped {\n startDate: String\n endDate: String\n}\n\ninterface Assignable {\n assigneeId: Int\n}\n\nenum ProjectStatus {\n PLANNING\n ACTIVE\n COMPLETED\n ON_HOLD\n}\n\nenum MilestoneStatus {\n PENDING\n IN_PROGRESS\n COMPLETED\n DELAYED\n}\n\nenum TaskStatus {\n TODO\n IN_PROGRESS\n REVIEW\n COMPLETED\n BLOCKED\n}\n\nenum TaskPriority {\n LOW\n MEDIUM\n HIGH\n URGENT\n}\n\nenum ProjectUpdateType {\n STATUS_CHANGE\n MILESTONE_ADDED\n TASK_ASSIGNED\n PROGRESS_UPDATE\n TEAM_CHANGE\n}\n\nunion ProjectResource = Employee | Product | Milestone | Task\n\nunion ProjectSearchResult = Project | Milestone | Task\n\nunion ProjectActivity = ProjectUpdate | Milestone | Task\n\ntype Product {\n upc: String!\n projects: [Project!]\n featureMatrix: [[String]]\n}\n\ntype Engineer implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n engineerType: EngineerType!\n}\n\ntype Marketer implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n}\n\ntype Operator implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n operatorType: [OperationType!]!\n}\n\ntype Employee implements Identifiable {\n details: Details\n id: Int!\n tag: String!\n role: RoleType!\n notes: String\n updatedAt: String!\n startDate: String! @requiresScopes(scopes: [[\"read:employee\", \"read:private\"], [\"read:all\"]])\n currentMood: Mood!\n derivedMood: Mood!\n isAvailable: Boolean\n rootFieldThrowsError: String\n rootFieldErrorWrapper: ErrorWrapper\n hobbies: [Hobby!]\n products: [ProductName!]!\n fieldThrowsError: String\n projects: [Project!]\n assignedTasks: [Task!]!\n completedTasks: [Task!]!\n skills: [String]\n certifications: [String!]\n projectHistory: [[Project!]]!\n currentWorkload(includeCompleted: Boolean, projectId: ID): Int!\n averageTaskCompletionDays(projectId: ID, priority: TaskPriority): Float\n}\n\ntype Cosmo implements IProduct {\n upc: ID!\n engineers: [Employee!]!\n lead: Employee!\n isLeadAvailable: Boolean\n name: ProductName!\n repositoryURL: String!\n}\n\ntype SDK implements IProduct {\n upc: ID!\n engineers: [Employee!]!\n owner: Employee!\n unicode: String!\n clientLanguages: [ProgrammingLanguage!]!\n}\n\ninterface Pet implements Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Alligator implements Pet & Animal {\n class: Class!\n dangerous: String!\n gender: Gender!\n name: String!\n}\n\ntype Cat implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n type: CatType!\n}\n\ntype Dog implements Pet & Animal {\n breed: DogBreed!\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Mouse implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Pony implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Exercise implements Hobby {\n employees: [Employee!]!\n category: ExerciseType!\n}\n\ntype Flying implements Experience & Hobby {\n employees: [Employee!]!\n planeModels: [String!]!\n yearsOfExperience: Float!\n}\n\ntype Gaming implements Experience & Hobby {\n employees: [Employee!]!\n genres: [GameGenre!]!\n name: String!\n yearsOfExperience: Float!\n}\n\ntype Other implements Hobby {\n employees: [Employee!]!\n name: String!\n}\n\ntype Programming implements Hobby {\n employees: [Employee!]!\n languages: [ProgrammingLanguage!]!\n}\n\ntype Travelling implements Hobby {\n employees: [Employee!]!\n countriesLived: [Country!]!\n}\n\ntype DirectiveFact implements TopSecretFact @authenticated {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype EntityFact implements TopSecretFact @requiresScopes(scopes: [[\"read:entity\"]]) {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype MiscellaneousFact implements TopSecretFact {\n title: String!\n description: FactContent! @requiresScopes(scopes: [[\"read:miscellaneous\"]])\n factType: TopSecretFactType\n}\n\ntype Project implements Node & Timestamped {\n id: ID!\n name: String!\n description: String\n startDate: String\n endDate: String\n status: ProjectStatus!\n teamMembers: [Employee!]!\n relatedProducts: [Product!]!\n milestoneIds: [String!]\n milestones: [Milestone!]!\n tasks: [Task!]!\n progress: Float\n tags: [String]\n alternativeProjects: [Project]\n dependencies: [Project!]\n resourceGroups: [[ProjectResource!]!]!\n tasksByPhase: [[Task!]]!\n milestoneGroups: [[Milestone]]\n priorityMatrix: [[[Task!]!]!]\n subProjects(includeArchived: Boolean): [Project!]!\n filteredTasks(status: TaskStatus, priority: TaskPriority, limit: Int): [Task!]!\n completionRate(includeSubtasks: Boolean): Float!\n estimatedDaysRemaining(fromDate: String): Int\n criticalDeadline(withinDays: Int): Timestamped\n topPriorityItem(category: String): ProjectSearchResult\n}\n\ntype Milestone implements Node & Timestamped {\n id: ID!\n projectId: ID!\n name: String!\n description: String\n startDate: String\n endDate: String\n status: MilestoneStatus!\n completionPercentage: Float\n dependencies: [Milestone]!\n subtasks: [Task]\n reviewers: [Employee!]\n isAtRisk(threshold: Float): Boolean!\n daysUntilDue(fromDate: String): Int\n}\n\ntype Task implements Node & Assignable {\n id: ID!\n projectId: ID!\n milestoneId: ID\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float @deprecated(reason: \"No more estimations!\")\n actualHours: Float\n createdAt: String\n completedAt: String\n labels: [String]\n subtasks: [Task!]\n dependencies: [Task]!\n attachmentUrls: [String!]!\n reviewerIds: [Int]\n isBlocked(checkDependencies: Boolean): Boolean!\n totalEffort(includeSubtasks: Boolean): Float\n}\n\ntype ProjectUpdate implements Node {\n id: ID!\n projectId: ID!\n updatedById: Int!\n updateType: ProjectUpdateType!\n description: String!\n timestamp: String!\n metadata: String\n}", "stringStorage": { "73e7c8ef50d3dc0c5d564e34702baf455be9cee3": "schema {\n query: Query\n mutation: Mutation\n subscription: Subscription\n}\n\ndirective @external on FIELD_DEFINITION | OBJECT\n\ndirective @goField(forceResolver: Boolean, name: String, omittable: Boolean) on FIELD_DEFINITION | INPUT_FIELD_DEFINITION\n\ndirective @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT\n\ndirective @link(as: String, for: link__Purpose, import: [link__Import], url: String!) repeatable on SCHEMA\n\ndirective @openfed__requireFetchReasons repeatable on FIELD_DEFINITION | INTERFACE | OBJECT\n\ndirective @requires(fields: openfed__FieldSet!) on FIELD_DEFINITION\n\ndirective @requiresScopes(scopes: [[openfed__Scope!]!]!) on ENUM | FIELD_DEFINITION | INTERFACE | OBJECT | SCALAR\n\ndirective @shareable repeatable on FIELD_DEFINITION | OBJECT\n\ndirective @tag(name: String!) repeatable on ARGUMENT_DEFINITION | ENUM | ENUM_VALUE | FIELD_DEFINITION | INPUT_FIELD_DEFINITION | INPUT_OBJECT | INTERFACE | OBJECT | SCALAR | UNION\n\ntype City {\n country: Country\n name: String!\n type: String!\n}\n\ntype Consultancy @key(fields: \"upc\") {\n isLeadAvailable: Boolean @requires(fields: \"lead { isAvailable }\")\n lead: Employee!\n upc: ID!\n}\n\ntype Cosmo implements IProduct @key(fields: \"upc\") {\n engineers: [Employee!]!\n isLeadAvailable: Boolean @requires(fields: \"lead { isAvailable }\")\n lead: Employee!\n upc: ID!\n}\n\ntype Country @key(fields: \"key { name }\", resolvable: false) {\n key: CountryKey!\n}\n\ntype CountryKey {\n name: String!\n}\n\ninput DeeplyNestedFileUpload {\n file: Upload!\n}\n\nenum Department {\n ENGINEERING\n MARKETING\n OPERATIONS\n}\n\ntype Details {\n forename: String! @shareable\n location: Country!\n pastLocations: [City!]!\n surname: String! @shareable\n}\n\ntype Employee implements Identifiable @key(fields: \"id\") {\n currentMood: Mood! @external\n derivedMood: Mood! @requires(fields: \"currentMood\")\n details: Details! @shareable\n id: Int!\n isAvailable: Boolean @external\n notes: String @shareable\n role: RoleType!\n rootFieldErrorWrapper: ErrorWrapper @goField(forceResolver: true)\n rootFieldThrowsError: String @goField(forceResolver: true)\n startDate: String! @requiresScopes(scopes: [[\"read:employee\", \"read:private\"], [\"read:all\"]])\n tag: String!\n updatedAt: String!\n}\n\ntype Engineer implements RoleType {\n departments: [Department!]!\n employees: [Employee!]! @goField(forceResolver: true)\n engineerType: EngineerType!\n title: [String!]!\n}\n\nenum EngineerType {\n BACKEND\n FRONTEND\n FULLSTACK\n}\n\ntype ErrorWrapper {\n errorField: String @goField(forceResolver: true)\n okField: String\n}\n\ninput FileUpload {\n nested: DeeplyNestedFileUpload\n nestedList: [Upload!]\n}\n\ninput FindEmployeeCriteria @oneOf {\n department: Department\n id: Int\n title: String\n}\n\ninterface IProduct {\n engineers: [Employee!]!\n upc: ID!\n}\n\ninterface Identifiable {\n id: Int! @openfed__requireFetchReasons\n}\n\ntype Marketer implements RoleType {\n departments: [Department!]!\n employees: [Employee!]! @goField(forceResolver: true)\n title: [String!]!\n}\n\nenum Mood {\n HAPPY\n SAD\n}\n\ntype Mutation {\n multipleUpload(files: [Upload!]!): Boolean!\n singleUpload(file: Upload!): Boolean!\n singleUploadWithInput(arg: FileUpload!): Boolean!\n updateEmployeeTag(id: Int!, tag: String!): Employee\n}\n\nenum OperationType {\n FINANCE\n HUMAN_RESOURCES\n}\n\ntype Operator implements RoleType {\n departments: [Department!]!\n employees: [Employee!]! @goField(forceResolver: true)\n operatorType: [OperationType!]!\n title: [String!]!\n}\n\nunion Products = Consultancy | Cosmo | SDK\n\ntype Query {\n employee(id: Int!): Employee @openfed__requireFetchReasons\n employeeAsList(id: Int!): [Employee]\n employees: [Employee]\n findEmployeesBy(criteria: FindEmployeeCriteria!): [Employee!]!\n firstEmployee: Employee! @tag(name: \"internal\")\n products: [Products!]!\n teammates(team: Department!): [Employee!]!\n}\n\ninterface RoleType {\n departments: [Department!]!\n employees: [Employee!]! @goField(forceResolver: true)\n title: [String!]!\n}\n\ntype SDK implements IProduct @key(fields: \"upc\") {\n engineers: [Employee!]!\n owner: Employee!\n unicode: String!\n upc: ID!\n}\n\ntype Subscription {\n countEmp(intervalMilliseconds: Int!, max: Int!): Int!\n countEmp2(intervalMilliseconds: Int!, max: Int!): Int!\n countFor(count: Int!): Int!\n \"\"\"`currentTime` will return a stream of `Time` objects.\"\"\"\n currentTime: Time!\n}\n\ntype Time {\n timeStamp: String!\n unixTime: Int!\n}\n\nscalar Upload\n\nscalar link__Import\n\nenum link__Purpose {\n EXECUTION\n SECURITY\n}\n\nscalar openfed__FieldSet\n\nscalar openfed__Scope", "2265a44afac63dcf9da5f7ee5ff35c7a6dc8adff": "schema {\n query: Query\n}\n\ndirective @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT\n\ndirective @link(as: String, for: link__Purpose, import: [link__Import], url: String!) repeatable on SCHEMA\n\ndirective @shareable repeatable on FIELD_DEFINITION | OBJECT\n\ntype Alligator implements Animal & Pet {\n class: Class!\n dangerous: String!\n gender: Gender!\n name: String!\n}\n\ninterface Animal {\n class: Class!\n gender: Gender!\n}\n\ntype Cat implements Animal & Pet {\n class: Class!\n gender: Gender!\n name: String!\n type: CatType!\n}\n\nenum CatType {\n HOME\n STREET\n}\n\nenum Class {\n FISH\n MAMMAL\n REPTILE\n}\n\ntype Details {\n forename: String! @shareable\n hasChildren: Boolean!\n maritalStatus: MaritalStatus\n middlename: String @deprecated(reason: \"No longer supported\")\n nationality: Nationality!\n pets: [Pet]\n surname: String! @shareable\n}\n\ntype Dog implements Animal & Pet {\n breed: DogBreed!\n class: Class!\n gender: Gender!\n name: String!\n}\n\nenum DogBreed {\n GOLDEN_RETRIEVER\n POODLE\n ROTTWEILER\n YORKSHIRE_TERRIER\n}\n\ntype Employee @key(fields: \"id\") {\n details: Details @shareable\n id: Int!\n}\n\nenum Gender {\n FEMALE\n MALE\n UNKNOWN\n}\n\nenum MaritalStatus {\n ENGAGED\n MARRIED\n}\n\ntype Mouse implements Animal & Pet {\n class: Class!\n gender: Gender!\n name: String!\n}\n\nenum Nationality {\n AMERICAN\n DUTCH\n ENGLISH\n GERMAN\n INDIAN\n SPANISH\n UKRAINIAN\n}\n\ninput NestedSearchInput {\n hasChildren: Boolean\n maritalStatus: MaritalStatus\n}\n\ninterface Pet implements Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Pony implements Animal & Pet {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Query {\n \"\"\" This is a GraphQL query that retrieves a list of employees.\"\"\"\n findEmployees(criteria: SearchInput): [Employee!]!\n}\n\n\"\"\" Allows to filter employees by their details. \"\"\"\ninput SearchInput {\n hasPets: Boolean\n nationality: Nationality\n nested: NestedSearchInput\n}\n\nscalar link__Import\n\nenum link__Purpose {\n EXECUTION\n SECURITY\n}\n\nscalar openfed__FieldSet", @@ -2517,9 +2542,9 @@ "865e365ca4e3de8aec4ccd25e875ca9a82a7edde": "schema {\n mutation: Mutation\n}\n\ndirective @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT\n\ndirective @link(as: String, for: link__Purpose, import: [link__Import], url: String!) repeatable on SCHEMA\n\ntype Employee @key(fields: \"id\") {\n id: Int!\n isAvailable: Boolean\n}\n\ntype Mutation {\n \"\"\" This mutation updates the availability status of an employee in the system.\n \"\"\"\n updateAvailability(employeeID: Int!, isAvailable: Boolean!): Employee!\n}\n\nscalar link__Import\n\nenum link__Purpose {\n EXECUTION\n SECURITY\n}\n\nscalar openfed__FieldSet", "10eccb92890a5709d24ac8c1293264d758b997c7": "schema {\n mutation: Mutation\n}\n\ndirective @inaccessible on ARGUMENT_DEFINITION | ENUM | ENUM_VALUE | FIELD_DEFINITION | INPUT_FIELD_DEFINITION | INPUT_OBJECT | INTERFACE | OBJECT | SCALAR | UNION\n\ndirective @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT\n\ndirective @link(as: String, for: link__Purpose, import: [link__Import], url: String!) repeatable on SCHEMA\n\ntype Employee @key(fields: \"id\") {\n currentMood: Mood!\n id: Int!\n}\n\nenum Mood {\n APATHETIC @inaccessible\n HAPPY\n SAD\n}\n\ntype Mutation {\n \"\"\" This mutation update the mood of an employee. \"\"\"\n updateMood(employeeID: Int!, mood: Mood!): Employee!\n}\n\nscalar link__Import\n\nenum link__Purpose {\n EXECUTION\n SECURITY\n}\n\nscalar openfed__FieldSet", "0c7a814514a54c0b54af7ea5fa33730a321921e6": "directive @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT\n\ndirective @link(as: String, for: link__Purpose, import: [link__Import], url: String!) repeatable on SCHEMA\n\ntype Country @key(fields: \"key { name }\") {\n key: CountryKey!\n language: String\n}\n\ntype CountryKey {\n name: String!\n}\n\nscalar link__Import\n\nenum link__Purpose {\n EXECUTION\n SECURITY\n}\n\nscalar openfed__FieldSet", - "52c91cae469d049c423debadfdfd37a91cfcdd18": "schema @link(url: \"https://specs.apollo.dev/federation/v2.5\", import: [\"@authenticated\", \"@composeDirective\", \"@external\", \"@extends\", \"@inaccessible\", \"@interfaceObject\", \"@override\", \"@provides\", \"@key\", \"@requires\", \"@requiresScopes\", \"@shareable\", \"@tag\"]) {\n query: Query\n mutation: Mutation\n}\n\ndirective @connect__fieldResolver(context: openfed__FieldSet!) on FIELD_DEFINITION\n\ndirective @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT\n\ndirective @link(as: String, for: link__Purpose, import: [link__Import], url: String!) repeatable on SCHEMA\n\ninterface Assignable {\n assigneeId: Int\n}\n\ntype Employee @key(fields: \"id\") {\n assignedTasks: [Task!]!\n averageTaskCompletionDays(priority: TaskPriority, projectId: ID): Float @connect__fieldResolver(context: \"id\")\n certifications: [String!]\n completedTasks: [Task!]!\n currentWorkload(includeCompleted: Boolean, projectId: ID): Int! @connect__fieldResolver(context: \"id\")\n id: Int!\n projectHistory: [[Project!]]!\n projects: [Project!]\n skills: [String]\n}\n\ntype Milestone implements Node & Timestamped @key(fields: \"id\") {\n completionPercentage: Float\n daysUntilDue(fromDate: String): Int @connect__fieldResolver(context: \"endDate\")\n dependencies: [Milestone]!\n description: String\n endDate: String\n id: ID!\n isAtRisk(threshold: Float): Boolean! @connect__fieldResolver(context: \"id endDate status completionPercentage\")\n name: String!\n projectId: ID!\n reviewers: [Employee!]\n startDate: String\n status: MilestoneStatus!\n subtasks: [Task]\n}\n\ninput MilestoneInput {\n description: String\n dueDate: String\n name: String!\n projectId: ID!\n status: MilestoneStatus!\n}\n\nenum MilestoneStatus {\n COMPLETED\n DELAYED\n IN_PROGRESS\n PENDING\n}\n\ntype Mutation {\n addMilestone(milestone: MilestoneInput!): Milestone!\n addProject(project: ProjectInput!): Project!\n addTask(task: TaskInput!): Task!\n updateProjectStatus(projectId: ID!, status: ProjectStatus!): ProjectUpdate!\n}\n\ninterface Node {\n id: ID!\n}\n\ntype Product @key(fields: \"upc\") {\n featureMatrix: [[String]]\n projects: [Project!]\n upc: String!\n}\n\ntype Project implements Node & Timestamped @key(fields: \"id\") {\n alternativeProjects: [Project]\n completionRate(includeSubtasks: Boolean): Float! @connect__fieldResolver(context: \"id startDate endDate status\")\n criticalDeadline(withinDays: Int): Timestamped @connect__fieldResolver(context: \"id status milestones\")\n dependencies: [Project!]\n description: String\n endDate: String\n estimatedDaysRemaining(fromDate: String): Int @connect__fieldResolver(context: \"id endDate status\")\n filteredTasks(limit: Int, priority: TaskPriority, status: TaskStatus): [Task!]! @connect__fieldResolver(context: \"id\")\n id: ID!\n milestoneGroups: [[Milestone]]\n milestoneIds: [String!]\n milestones: [Milestone!]!\n name: String!\n priorityMatrix: [[[Task!]!]!]\n progress: Float\n relatedProducts: [Product!]!\n resourceGroups: [[ProjectResource!]!]!\n startDate: String\n status: ProjectStatus!\n tags: [String]\n tasks: [Task!]!\n tasksByPhase: [[Task!]]!\n teamMembers: [Employee!]!\n topPriorityItem(category: String): ProjectSearchResult @connect__fieldResolver(context: \"id status\")\n}\n\nunion ProjectActivity = Milestone | ProjectUpdate | Task\n\ninput ProjectInput {\n description: String\n endDate: String\n name: String!\n startDate: String\n status: ProjectStatus!\n}\n\nunion ProjectResource = Employee | Milestone | Product | Task\n\nunion ProjectSearchResult = Milestone | Project | Task\n\nenum ProjectStatus {\n ACTIVE\n COMPLETED\n ON_HOLD\n PLANNING\n}\n\ntype ProjectUpdate implements Node {\n description: String!\n id: ID!\n metadata: String\n projectId: ID!\n timestamp: String!\n updateType: ProjectUpdateType!\n updatedById: Int!\n}\n\nenum ProjectUpdateType {\n MILESTONE_ADDED\n PROGRESS_UPDATE\n STATUS_CHANGE\n TASK_ASSIGNED\n TEAM_CHANGE\n}\n\ntype Query {\n archivedProjects: [Project]!\n killService: Boolean!\n milestones(projectId: ID!): [Milestone!]!\n nodesById(id: ID!): [Node!]!\n panic: Boolean!\n project(id: ID!): Project\n projectActivities(projectId: ID!): [ProjectActivity!]!\n projectResources(projectId: ID!): [ProjectResource!]!\n projectStatuses: [ProjectStatus!]!\n projectTags: [String]\n projects: [Project!]!\n projectsByStatus(status: ProjectStatus!): [Project!]!\n resourceMatrix(projectId: ID!): [[ProjectResource!]!]!\n searchProjects(query: String!): [ProjectSearchResult!]!\n tasks(projectId: ID!): [Task!]!\n tasksByPriority(projectId: ID!): [[Task]]\n}\n\ntype Task implements Assignable & Node @key(fields: \"id\") {\n actualHours: Float\n assigneeId: Int\n attachmentUrls: [String!]!\n completedAt: String\n createdAt: String\n dependencies: [Task]!\n description: String\n estimatedHours: Float @deprecated(reason: \"No more estimations!\")\n id: ID!\n isBlocked(checkDependencies: Boolean): Boolean! @connect__fieldResolver(context: \"id status\")\n labels: [String]\n milestoneId: ID\n name: String!\n priority: TaskPriority!\n projectId: ID!\n reviewerIds: [Int]\n status: TaskStatus!\n subtasks: [Task!]\n totalEffort(includeSubtasks: Boolean): Float @connect__fieldResolver(context: \"id estimatedHours actualHours\")\n}\n\ninput TaskInput {\n assigneeId: Int\n description: String\n estimatedHours: Float\n name: String!\n priority: TaskPriority!\n projectId: ID!\n status: TaskStatus!\n}\n\nenum TaskPriority {\n HIGH\n LOW\n MEDIUM\n URGENT\n}\n\nenum TaskStatus {\n BLOCKED\n COMPLETED\n IN_PROGRESS\n REVIEW\n TODO\n}\n\ninterface Timestamped {\n endDate: String\n startDate: String\n}\n\nscalar link__Import\n\nenum link__Purpose {\n EXECUTION\n SECURITY\n}\n\nscalar openfed__FieldSet" + "34e8a6b5fb00b0e37f716f0005c5bf6eee09c65c": "schema @link(url: \"https://specs.apollo.dev/federation/v2.5\", import: [\"@authenticated\", \"@composeDirective\", \"@external\", \"@extends\", \"@inaccessible\", \"@interfaceObject\", \"@override\", \"@provides\", \"@key\", \"@requires\", \"@requiresScopes\", \"@shareable\", \"@tag\"]) {\n query: Query\n mutation: Mutation\n}\n\ndirective @connect__fieldResolver(context: openfed__FieldSet!) on FIELD_DEFINITION\n\ndirective @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT\n\ndirective @link(as: String, for: link__Purpose, import: [link__Import], url: String!) repeatable on SCHEMA\n\ninterface Assignable {\n assigneeId: Int\n}\n\ntype Employee @key(fields: \"id\") {\n assignedTasks: [Task!]!\n averageTaskCompletionDays(priority: TaskPriority, projectId: ID): Float @connect__fieldResolver(context: \"id\")\n certifications: [String!]\n completedTasks: [Task!]!\n currentWorkload(includeCompleted: Boolean, projectId: ID): Int! @connect__fieldResolver(context: \"id\")\n id: Int!\n projectHistory: [[Project!]]!\n projects: [Project!]\n skills: [String]\n}\n\ntype Milestone implements Node & Timestamped @key(fields: \"id\") {\n completionPercentage: Float\n daysUntilDue(fromDate: String): Int @connect__fieldResolver(context: \"endDate\")\n dependencies: [Milestone]!\n description: String\n endDate: String\n id: ID!\n isAtRisk(threshold: Float): Boolean! @connect__fieldResolver(context: \"id endDate status completionPercentage\")\n name: String!\n projectId: ID!\n reviewers: [Employee!]\n startDate: String\n status: MilestoneStatus!\n subtasks: [Task]\n}\n\ninput MilestoneInput {\n description: String\n dueDate: String\n name: String!\n projectId: ID!\n status: MilestoneStatus!\n}\n\nenum MilestoneStatus {\n COMPLETED\n DELAYED\n IN_PROGRESS\n PENDING\n}\n\ntype Mutation {\n addMilestone(milestone: MilestoneInput!): Milestone!\n addProject(project: ProjectInput!): Project!\n addTask(task: TaskInput!): Task!\n updateProjectStatus(projectId: ID!, status: ProjectStatus!): ProjectUpdate!\n}\n\ninterface Node {\n id: ID!\n}\n\ntype Product @key(fields: \"upc\") {\n featureMatrix: [[String]]\n projects: [Project!]\n upc: String!\n}\n\ntype Project implements Node & Timestamped @key(fields: \"id\") {\n alternativeProjects: [Project]\n completionRate(includeSubtasks: Boolean): Float! @connect__fieldResolver(context: \"id startDate endDate status\")\n criticalDeadline(withinDays: Int): Timestamped @connect__fieldResolver(context: \"id status milestones\")\n dependencies: [Project!]\n description: String\n endDate: String\n estimatedDaysRemaining(fromDate: String): Int @connect__fieldResolver(context: \"id endDate status\")\n filteredTasks(limit: Int, priority: TaskPriority, status: TaskStatus): [Task!]! @connect__fieldResolver(context: \"id\")\n id: ID!\n milestoneGroups: [[Milestone]]\n milestoneIds: [String!]\n milestones: [Milestone!]!\n name: String!\n priorityMatrix: [[[Task!]!]!]\n progress: Float\n relatedProducts: [Product!]!\n resourceGroups: [[ProjectResource!]!]!\n startDate: String\n status: ProjectStatus!\n subProjects(includeArchived: Boolean): [Project!]! @connect__fieldResolver(context: \"id name status\")\n tags: [String]\n tasks: [Task!]!\n tasksByPhase: [[Task!]]!\n teamMembers: [Employee!]!\n topPriorityItem(category: String): ProjectSearchResult @connect__fieldResolver(context: \"id status\")\n}\n\nunion ProjectActivity = Milestone | ProjectUpdate | Task\n\ninput ProjectInput {\n description: String\n endDate: String\n name: String!\n startDate: String\n status: ProjectStatus!\n}\n\nunion ProjectResource = Employee | Milestone | Product | Task\n\nunion ProjectSearchResult = Milestone | Project | Task\n\nenum ProjectStatus {\n ACTIVE\n COMPLETED\n ON_HOLD\n PLANNING\n}\n\ntype ProjectUpdate implements Node {\n description: String!\n id: ID!\n metadata: String\n projectId: ID!\n timestamp: String!\n updateType: ProjectUpdateType!\n updatedById: Int!\n}\n\nenum ProjectUpdateType {\n MILESTONE_ADDED\n PROGRESS_UPDATE\n STATUS_CHANGE\n TASK_ASSIGNED\n TEAM_CHANGE\n}\n\ntype Query {\n archivedProjects: [Project]!\n killService: Boolean!\n milestones(projectId: ID!): [Milestone!]!\n nodesById(id: ID!): [Node!]!\n panic: Boolean!\n project(id: ID!): Project\n projectActivities(projectId: ID!): [ProjectActivity!]!\n projectResources(projectId: ID!): [ProjectResource!]!\n projectStatuses: [ProjectStatus!]!\n projectTags: [String]\n projects: [Project!]!\n projectsByStatus(status: ProjectStatus!): [Project!]!\n resourceMatrix(projectId: ID!): [[ProjectResource!]!]!\n searchProjects(query: String!): [ProjectSearchResult!]!\n tasks(projectId: ID!): [Task!]!\n tasksByPriority(projectId: ID!): [[Task]]\n}\n\ntype Task implements Assignable & Node @key(fields: \"id\") {\n actualHours: Float\n assigneeId: Int\n attachmentUrls: [String!]!\n completedAt: String\n createdAt: String\n dependencies: [Task]!\n description: String\n estimatedHours: Float @deprecated(reason: \"No more estimations!\")\n id: ID!\n isBlocked(checkDependencies: Boolean): Boolean! @connect__fieldResolver(context: \"id status\")\n labels: [String]\n milestoneId: ID\n name: String!\n priority: TaskPriority!\n projectId: ID!\n reviewerIds: [Int]\n status: TaskStatus!\n subtasks: [Task!]\n totalEffort(includeSubtasks: Boolean): Float @connect__fieldResolver(context: \"id estimatedHours actualHours\")\n}\n\ninput TaskInput {\n assigneeId: Int\n description: String\n estimatedHours: Float\n name: String!\n priority: TaskPriority!\n projectId: ID!\n status: TaskStatus!\n}\n\nenum TaskPriority {\n HIGH\n LOW\n MEDIUM\n URGENT\n}\n\nenum TaskStatus {\n BLOCKED\n COMPLETED\n IN_PROGRESS\n REVIEW\n TODO\n}\n\ninterface Timestamped {\n endDate: String\n startDate: String\n}\n\nscalar link__Import\n\nenum link__Purpose {\n EXECUTION\n SECURITY\n}\n\nscalar openfed__FieldSet" }, - "graphqlClientSchema": "schema {\n query: Query\n mutation: Mutation\n subscription: Subscription\n}\n\ntype Query {\n employee(id: Int!): Employee\n employeeAsList(id: Int!): [Employee]\n employees: [Employee]\n products: [Products!]!\n teammates(team: Department!): [Employee!]!\n firstEmployee: Employee!\n findEmployeesBy(criteria: FindEmployeeCriteria!): [Employee!]!\n \"\"\" This is a GraphQL query that retrieves a list of employees.\"\"\"\n findEmployees(criteria: SearchInput): [Employee!]!\n productTypes: [Products!]!\n topSecretFederationFacts: [TopSecretFact!]!\n factTypes: [TopSecretFactType!]\n sharedThings(numOfA: Int!, numOfB: Int!): [Thing!]!\n \"\"\"Returns the value of the received HTTP header.\"\"\"\n headerValue(name: String!): String!\n \"\"\"Returns the value of the given key in the WS initial payload.\"\"\"\n initPayloadValue(key: String!): String!\n initialPayload: Map\n \"\"\"Returns response after the given delay\"\"\"\n delay(response: String!, ms: Int!): String!\n bigResponse(artificialDelay: Int! = 0, bigObjects: Int! = 100, nestedObjects: Int! = 100, deeplyNestedObjects: Int! = 100): [BigObject!]!\n longResponse(artificialDelay: Int! = 0, bytes: Int!): String\n bigAbstractResponse: BigAbstractResponse\n rootFieldWithListArg(arg: [String!]!): [String!]!\n rootFieldWithNestedListArg(arg: [[String!]!]!): [[String!]!]!\n rootFieldWithListOfInputArg(arg: [InputType!]!): [InputResponse!]!\n rootFieldWithListOfEnumArg(arg: [EnumType!]!): [EnumType!]!\n rootFieldWithInput(arg: InputArg!): String!\n floatField(arg: Float): Float\n secret: Secret\n projects: [Project!]!\n project(id: ID!): Project\n projectStatuses: [ProjectStatus!]!\n projectsByStatus(status: ProjectStatus!): [Project!]!\n projectResources(projectId: ID!): [ProjectResource!]!\n searchProjects(query: String!): [ProjectSearchResult!]!\n milestones(projectId: ID!): [Milestone!]!\n tasks(projectId: ID!): [Task!]!\n projectActivities(projectId: ID!): [ProjectActivity!]!\n projectTags: [String]\n archivedProjects: [Project]!\n tasksByPriority(projectId: ID!): [[Task]]\n resourceMatrix(projectId: ID!): [[ProjectResource!]!]!\n killService: Boolean!\n panic: Boolean!\n nodesById(id: ID!): [Node!]!\n}\n\nscalar Upload\n\ntype Mutation {\n updateEmployeeTag(id: Int!, tag: String!): Employee\n singleUpload(file: Upload!): Boolean!\n singleUploadWithInput(arg: FileUpload!): Boolean!\n multipleUpload(files: [Upload!]!): Boolean!\n addFact(fact: TopSecretFactInput!): TopSecretFact!\n \"\"\" This mutation updates the availability status of an employee in the system.\n \"\"\"\n updateAvailability(employeeID: Int!, isAvailable: Boolean!): Employee!\n \"\"\" This mutation update the mood of an employee. \"\"\"\n updateMood(employeeID: Int!, mood: Mood!): Employee!\n addProject(project: ProjectInput!): Project!\n addMilestone(milestone: MilestoneInput!): Milestone!\n addTask(task: TaskInput!): Task!\n updateProjectStatus(projectId: ID!, status: ProjectStatus!): ProjectUpdate!\n}\n\ninput FileUpload {\n nested: DeeplyNestedFileUpload\n nestedList: [Upload!]\n}\n\ninput DeeplyNestedFileUpload {\n file: Upload!\n}\n\ntype Subscription {\n \"\"\"`currentTime` will return a stream of `Time` objects.\"\"\"\n currentTime: Time!\n countEmp(max: Int!, intervalMilliseconds: Int!): Int!\n countEmp2(max: Int!, intervalMilliseconds: Int!): Int!\n countFor(count: Int!): Int!\n countHob(max: Int!, intervalMilliseconds: Int!): Int!\n \"\"\"Returns a stream with the value of the received HTTP header.\"\"\"\n headerValue(name: String!, repeat: Int): TimestampedString!\n \"\"\"\n Returns a stream with the value of value of the given key in the WS initial payload.\n \"\"\"\n initPayloadValue(key: String!, repeat: Int): TimestampedString!\n \"\"\"Returns a stream with the value of the WS initial payload.\"\"\"\n initialPayload(repeat: Int): Map\n returnsError: String\n}\n\nenum Department {\n ENGINEERING\n MARKETING\n OPERATIONS\n}\n\ninterface RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n}\n\nenum EngineerType {\n BACKEND\n FRONTEND\n FULLSTACK\n}\n\ninterface Identifiable {\n id: Int!\n}\n\nenum OperationType {\n FINANCE\n HUMAN_RESOURCES\n}\n\ntype Details {\n forename: String!\n location: Country!\n surname: String!\n pastLocations: [City!]!\n middlename: String @deprecated(reason: \"No longer supported\")\n hasChildren: Boolean!\n maritalStatus: MaritalStatus\n nationality: Nationality!\n pets: [Pet]\n}\n\ntype City {\n type: String!\n name: String!\n country: Country\n}\n\ntype Country {\n key: CountryKey!\n language: String\n}\n\ntype CountryKey {\n name: String!\n}\n\nenum Mood {\n HAPPY\n SAD\n}\n\ntype ErrorWrapper {\n okField: String\n errorField: String\n}\n\ntype Time {\n unixTime: Int!\n timeStamp: String!\n}\n\nunion Products = Consultancy | Cosmo | SDK | Documentation\n\ninterface IProduct {\n upc: ID!\n engineers: [Employee!]!\n}\n\ntype Consultancy {\n upc: ID!\n lead: Employee!\n isLeadAvailable: Boolean\n name: ProductName!\n}\n\ninput FindEmployeeCriteria @oneOf {\n id: Int\n department: Department\n title: String\n}\n\nenum Class {\n FISH\n MAMMAL\n REPTILE\n}\n\nenum Gender {\n FEMALE\n MALE\n UNKNOWN\n}\n\ninterface Animal {\n class: Class!\n gender: Gender!\n}\n\nenum CatType {\n HOME\n STREET\n}\n\nenum DogBreed {\n GOLDEN_RETRIEVER\n POODLE\n ROTTWEILER\n YORKSHIRE_TERRIER\n}\n\nenum MaritalStatus {\n ENGAGED\n MARRIED\n}\n\nenum Nationality {\n AMERICAN\n DUTCH\n ENGLISH\n GERMAN\n INDIAN\n SPANISH\n UKRAINIAN\n}\n\n\"\"\" Allows to filter employees by their details. \"\"\"\ninput SearchInput {\n hasPets: Boolean\n nationality: Nationality\n nested: NestedSearchInput\n}\n\ninput NestedSearchInput {\n maritalStatus: MaritalStatus\n hasChildren: Boolean\n}\n\nenum ExerciseType {\n CALISTHENICS\n HIKING\n SPORT\n STRENGTH_TRAINING\n}\n\ninterface Experience {\n yearsOfExperience: Float!\n}\n\nenum GameGenre {\n ADVENTURE\n BOARD\n FPS\n CARD\n RPG\n ROGUELITE\n SIMULATION\n STRATEGY\n}\n\nenum ProgrammingLanguage {\n CSHARP\n GO\n RUST\n TYPESCRIPT\n}\n\ninterface Hobby {\n employees: [Employee!]!\n}\n\ntype Thing {\n a: String!\n b: String!\n}\n\ninput TopSecretFactInput {\n title: String!\n description: FactContent!\n factType: TopSecretFactType!\n}\n\nenum TopSecretFactType {\n DIRECTIVE\n ENTITY\n MISCELLANEOUS\n}\n\ninterface TopSecretFact {\n description: FactContent!\n factType: TopSecretFactType\n}\n\nscalar FactContent\n\nenum ProductName {\n CONSULTANCY\n COSMO\n ENGINE\n FINANCE\n HUMAN_RESOURCES\n MARKETING\n SDK\n}\n\ntype Documentation {\n url(product: ProductName!): String!\n urls(products: [ProductName!]!): [String!]!\n}\n\ntype Secret {\n value: String\n}\n\ninput InputArg {\n enums: [EnumType!]\n enum: EnumType\n string: String\n strings: [String!]\n}\n\nenum EnumType {\n A\n B\n C\n}\n\ninput InputType {\n arg: String!\n}\n\ntype InputResponse {\n arg: String!\n}\n\nscalar Map\n\ntype TimestampedString {\n \"\"\"The value of the string.\"\"\"\n value: String!\n \"\"\"The timestamp when the response was generated.\"\"\"\n unixTime: Int!\n \"\"\"Sequence number\"\"\"\n seq: Int!\n \"\"\"Total number of responses to be sent\"\"\"\n total: Int!\n initialPayload: Map\n}\n\ntype BigObject {\n nestedObjects: [NestedObject!]!\n}\n\ntype NestedObject {\n deeplyNestedObjects: [DeeplyNestedObject!]!\n}\n\ntype DeeplyNestedObject {\n aFieldOnDeeplyNestedObject: String!\n bFieldOnDeeplyNestedObject: Int!\n cFieldOnDeeplyNestedObject: Boolean!\n dFieldOnDeeplyNestedObject: Float!\n eFieldOnDeeplyNestedObject: String!\n fFieldOnDeeplyNestedObject: Int!\n gFieldOnDeeplyNestedObject: Boolean!\n hFieldOnDeeplyNestedObject: Float!\n iFieldOnDeeplyNestedObject: String!\n jFieldOnDeeplyNestedObject: Int!\n kFieldOnDeeplyNestedObject: Boolean!\n lFieldOnDeeplyNestedObject: Float!\n mFieldOnDeeplyNestedObject: String!\n nFieldOnDeeplyNestedObject: Int!\n oFieldOnDeeplyNestedObject: Boolean!\n pFieldOnDeeplyNestedObject: Float!\n qFieldOnDeeplyNestedObject: String!\n rFieldOnDeeplyNestedObject: Int!\n sFieldOnDeeplyNestedObject: Boolean!\n tFieldOnDeeplyNestedObject: Float!\n uFieldOnDeeplyNestedObject: String!\n vFieldOnDeeplyNestedObject: Int!\n wFieldOnDeeplyNestedObject: Boolean!\n xFieldOnDeeplyNestedObject: Float!\n yFieldOnDeeplyNestedObject: String!\n zFieldOnDeeplyNestedObject: Int!\n}\n\nunion BigAbstractResponse = ABigObject | BBigObject | CBigObject | DBigObject | EBigObject | FBigObject | GBigObject | HBigObject | IBigObject | JBigObject | KBigObject | LBigObject | MBigObject | NBigObject | OBigObject | PBigObject | QBigObject | RBigObject | SBigObject | TBigObject | UBigObject | VBigObject | WBigObject | XBigObject | YBigObject | ZBigObject\n\ntype ABigObject {\n aFieldOnABigObject: String!\n bFieldOnABigObject: Int!\n cFieldOnABigObject: Boolean!\n dFieldOnABigObject: Float!\n eFieldOnABigObject: String!\n fFieldOnABigObject: Int!\n gFieldOnABigObject: Boolean!\n hFieldOnABigObject: Float!\n iFieldOnABigObject: String!\n jFieldOnABigObject: Int!\n kFieldOnABigObject: Boolean!\n lFieldOnABigObject: Float!\n mFieldOnABigObject: String!\n nFieldOnABigObject: Int!\n oFieldOnABigObject: Boolean!\n pFieldOnABigObject: Float!\n qFieldOnABigObject: String!\n rFieldOnABigObject: Int!\n sFieldOnABigObject: Boolean!\n tFieldOnABigObject: Float!\n uFieldOnABigObject: String!\n vFieldOnABigObject: Int!\n wFieldOnABigObject: Boolean!\n xFieldOnABigObject: Float!\n yFieldOnABigObject: String!\n zFieldOnABigObject: Int!\n}\n\ntype BBigObject {\n aFieldOnBBigObject: String!\n bFieldOnBBigObject: Int!\n cFieldOnBBigObject: Boolean!\n dFieldOnBBigObject: Float!\n eFieldOnBBigObject: String!\n fFieldOnBBigObject: Int!\n gFieldOnBBigObject: Boolean!\n hFieldOnBBigObject: Float!\n iFieldOnBBigObject: String!\n jFieldOnBBigObject: Int!\n kFieldOnBBigObject: Boolean!\n lFieldOnBBigObject: Float!\n mFieldOnBBigObject: String!\n nFieldOnBBigObject: Int!\n oFieldOnBBigObject: Boolean!\n pFieldOnBBigObject: Float!\n qFieldOnBBigObject: String!\n rFieldOnBBigObject: Int!\n sFieldOnBBigObject: Boolean!\n tFieldOnBBigObject: Float!\n uFieldOnBBigObject: String!\n vFieldOnBBigObject: Int!\n wFieldOnBBigObject: Boolean!\n xFieldOnBBigObject: Float!\n yFieldOnBBigObject: String!\n zFieldOnBBigObject: Int!\n}\n\ntype CBigObject {\n aFieldOnCBigObject: String!\n bFieldOnCBigObject: Int!\n cFieldOnCBigObject: Boolean!\n dFieldOnCBigObject: Float!\n eFieldOnCBigObject: String!\n fFieldOnCBigObject: Int!\n gFieldOnCBigObject: Boolean!\n hFieldOnCBigObject: Float!\n iFieldOnCBigObject: String!\n jFieldOnCBigObject: Int!\n kFieldOnCBigObject: Boolean!\n lFieldOnCBigObject: Float!\n mFieldOnCBigObject: String!\n nFieldOnCBigObject: Int!\n oFieldOnCBigObject: Boolean!\n pFieldOnCBigObject: Float!\n qFieldOnCBigObject: String!\n rFieldOnCBigObject: Int!\n sFieldOnCBigObject: Boolean!\n tFieldOnCBigObject: Float!\n uFieldOnCBigObject: String!\n vFieldOnCBigObject: Int!\n wFieldOnCBigObject: Boolean!\n xFieldOnCBigObject: Float!\n yFieldOnCBigObject: String!\n zFieldOnCBigObject: Int!\n}\n\ntype DBigObject {\n aFieldOnDBigObject: String!\n bFieldOnDBigObject: Int!\n cFieldOnDBigObject: Boolean!\n dFieldOnDBigObject: Float!\n eFieldOnDBigObject: String!\n fFieldOnDBigObject: Int!\n gFieldOnDBigObject: Boolean!\n hFieldOnDBigObject: Float!\n iFieldOnDBigObject: String!\n jFieldOnDBigObject: Int!\n kFieldOnDBigObject: Boolean!\n lFieldOnDBigObject: Float!\n mFieldOnDBigObject: String!\n nFieldOnDBigObject: Int!\n oFieldOnDBigObject: Boolean!\n pFieldOnDBigObject: Float!\n qFieldOnDBigObject: String!\n rFieldOnDBigObject: Int!\n sFieldOnDBigObject: Boolean!\n tFieldOnDBigObject: Float!\n uFieldOnDBigObject: String!\n vFieldOnDBigObject: Int!\n wFieldOnDBigObject: Boolean!\n xFieldOnDBigObject: Float!\n yFieldOnDBigObject: String!\n zFieldOnDBigObject: Int!\n}\n\ntype EBigObject {\n aFieldOnEBigObject: String!\n bFieldOnEBigObject: Int!\n cFieldOnEBigObject: Boolean!\n dFieldOnEBigObject: Float!\n eFieldOnEBigObject: String!\n fFieldOnEBigObject: Int!\n gFieldOnEBigObject: Boolean!\n hFieldOnEBigObject: Float!\n iFieldOnEBigObject: String!\n jFieldOnEBigObject: Int!\n kFieldOnEBigObject: Boolean!\n lFieldOnEBigObject: Float!\n mFieldOnEBigObject: String!\n nFieldOnEBigObject: Int!\n oFieldOnEBigObject: Boolean!\n pFieldOnEBigObject: Float!\n qFieldOnEBigObject: String!\n rFieldOnEBigObject: Int!\n sFieldOnEBigObject: Boolean!\n tFieldOnEBigObject: Float!\n uFieldOnEBigObject: String!\n vFieldOnEBigObject: Int!\n wFieldOnEBigObject: Boolean!\n xFieldOnEBigObject: Float!\n yFieldOnEBigObject: String!\n zFieldOnEBigObject: Int!\n}\n\ntype FBigObject {\n aFieldOnFBigObject: String!\n bFieldOnFBigObject: Int!\n cFieldOnFBigObject: Boolean!\n dFieldOnFBigObject: Float!\n eFieldOnFBigObject: String!\n fFieldOnFBigObject: Int!\n gFieldOnFBigObject: Boolean!\n hFieldOnFBigObject: Float!\n iFieldOnFBigObject: String!\n jFieldOnFBigObject: Int!\n kFieldOnFBigObject: Boolean!\n lFieldOnFBigObject: Float!\n mFieldOnFBigObject: String!\n nFieldOnFBigObject: Int!\n oFieldOnFBigObject: Boolean!\n pFieldOnFBigObject: Float!\n qFieldOnFBigObject: String!\n rFieldOnFBigObject: Int!\n sFieldOnFBigObject: Boolean!\n tFieldOnFBigObject: Float!\n uFieldOnFBigObject: String!\n vFieldOnFBigObject: Int!\n wFieldOnFBigObject: Boolean!\n xFieldOnFBigObject: Float!\n yFieldOnFBigObject: String!\n zFieldOnFBigObject: Int!\n}\n\ntype GBigObject {\n aFieldOnGBigObject: String!\n bFieldOnGBigObject: Int!\n cFieldOnGBigObject: Boolean!\n dFieldOnGBigObject: Float!\n eFieldOnGBigObject: String!\n fFieldOnGBigObject: Int!\n gFieldOnGBigObject: Boolean!\n hFieldOnGBigObject: Float!\n iFieldOnGBigObject: String!\n jFieldOnGBigObject: Int!\n kFieldOnGBigObject: Boolean!\n lFieldOnGBigObject: Float!\n mFieldOnGBigObject: String!\n nFieldOnGBigObject: Int!\n oFieldOnGBigObject: Boolean!\n pFieldOnGBigObject: Float!\n qFieldOnGBigObject: String!\n rFieldOnGBigObject: Int!\n sFieldOnGBigObject: Boolean!\n tFieldOnGBigObject: Float!\n uFieldOnGBigObject: String!\n vFieldOnGBigObject: Int!\n wFieldOnGBigObject: Boolean!\n xFieldOnGBigObject: Float!\n yFieldOnGBigObject: String!\n zFieldOnGBigObject: Int!\n}\n\ntype HBigObject {\n aFieldOnHBigObject: String!\n bFieldOnHBigObject: Int!\n cFieldOnHBigObject: Boolean!\n dFieldOnHBigObject: Float!\n eFieldOnHBigObject: String!\n fFieldOnHBigObject: Int!\n gFieldOnHBigObject: Boolean!\n hFieldOnHBigObject: Float!\n iFieldOnHBigObject: String!\n jFieldOnHBigObject: Int!\n kFieldOnHBigObject: Boolean!\n lFieldOnHBigObject: Float!\n mFieldOnHBigObject: String!\n nFieldOnHBigObject: Int!\n oFieldOnHBigObject: Boolean!\n pFieldOnHBigObject: Float!\n qFieldOnHBigObject: String!\n rFieldOnHBigObject: Int!\n sFieldOnHBigObject: Boolean!\n tFieldOnHBigObject: Float!\n uFieldOnHBigObject: String!\n vFieldOnHBigObject: Int!\n wFieldOnHBigObject: Boolean!\n xFieldOnHBigObject: Float!\n yFieldOnHBigObject: String!\n zFieldOnHBigObject: Int!\n}\n\ntype IBigObject {\n aFieldOnIBigObject: String!\n bFieldOnIBigObject: Int!\n cFieldOnIBigObject: Boolean!\n dFieldOnIBigObject: Float!\n eFieldOnIBigObject: String!\n fFieldOnIBigObject: Int!\n gFieldOnIBigObject: Boolean!\n hFieldOnIBigObject: Float!\n iFieldOnIBigObject: String!\n jFieldOnIBigObject: Int!\n kFieldOnIBigObject: Boolean!\n lFieldOnIBigObject: Float!\n mFieldOnIBigObject: String!\n nFieldOnIBigObject: Int!\n oFieldOnIBigObject: Boolean!\n pFieldOnIBigObject: Float!\n qFieldOnIBigObject: String!\n rFieldOnIBigObject: Int!\n sFieldOnIBigObject: Boolean!\n tFieldOnIBigObject: Float!\n uFieldOnIBigObject: String!\n vFieldOnIBigObject: Int!\n wFieldOnIBigObject: Boolean!\n xFieldOnIBigObject: Float!\n yFieldOnIBigObject: String!\n zFieldOnIBigObject: Int!\n}\n\ntype JBigObject {\n aFieldOnJBigObject: String!\n bFieldOnJBigObject: Int!\n cFieldOnJBigObject: Boolean!\n dFieldOnJBigObject: Float!\n eFieldOnJBigObject: String!\n fFieldOnJBigObject: Int!\n gFieldOnJBigObject: Boolean!\n hFieldOnJBigObject: Float!\n iFieldOnJBigObject: String!\n jFieldOnJBigObject: Int!\n kFieldOnJBigObject: Boolean!\n lFieldOnJBigObject: Float!\n mFieldOnJBigObject: String!\n nFieldOnJBigObject: Int!\n oFieldOnJBigObject: Boolean!\n pFieldOnJBigObject: Float!\n qFieldOnJBigObject: String!\n rFieldOnJBigObject: Int!\n sFieldOnJBigObject: Boolean!\n tFieldOnJBigObject: Float!\n uFieldOnJBigObject: String!\n vFieldOnJBigObject: Int!\n wFieldOnJBigObject: Boolean!\n xFieldOnJBigObject: Float!\n yFieldOnJBigObject: String!\n zFieldOnJBigObject: Int!\n}\n\ntype KBigObject {\n aFieldOnKBigObject: String!\n bFieldOnKBigObject: Int!\n cFieldOnKBigObject: Boolean!\n dFieldOnKBigObject: Float!\n eFieldOnKBigObject: String!\n fFieldOnKBigObject: Int!\n gFieldOnKBigObject: Boolean!\n hFieldOnKBigObject: Float!\n iFieldOnKBigObject: String!\n jFieldOnKBigObject: Int!\n kFieldOnKBigObject: Boolean!\n lFieldOnKBigObject: Float!\n mFieldOnKBigObject: String!\n nFieldOnKBigObject: Int!\n oFieldOnKBigObject: Boolean!\n pFieldOnKBigObject: Float!\n qFieldOnKBigObject: String!\n rFieldOnKBigObject: Int!\n sFieldOnKBigObject: Boolean!\n tFieldOnKBigObject: Float!\n uFieldOnKBigObject: String!\n vFieldOnKBigObject: Int!\n wFieldOnKBigObject: Boolean!\n xFieldOnKBigObject: Float!\n yFieldOnKBigObject: String!\n zFieldOnKBigObject: Int!\n}\n\ntype LBigObject {\n aFieldOnLBigObject: String!\n bFieldOnLBigObject: Int!\n cFieldOnLBigObject: Boolean!\n dFieldOnLBigObject: Float!\n eFieldOnLBigObject: String!\n fFieldOnLBigObject: Int!\n gFieldOnLBigObject: Boolean!\n hFieldOnLBigObject: Float!\n iFieldOnLBigObject: String!\n jFieldOnLBigObject: Int!\n kFieldOnLBigObject: Boolean!\n lFieldOnLBigObject: Float!\n mFieldOnLBigObject: String!\n nFieldOnLBigObject: Int!\n oFieldOnLBigObject: Boolean!\n pFieldOnLBigObject: Float!\n qFieldOnLBigObject: String!\n rFieldOnLBigObject: Int!\n sFieldOnLBigObject: Boolean!\n tFieldOnLBigObject: Float!\n uFieldOnLBigObject: String!\n vFieldOnLBigObject: Int!\n wFieldOnLBigObject: Boolean!\n xFieldOnLBigObject: Float!\n yFieldOnLBigObject: String!\n zFieldOnLBigObject: Int!\n}\n\ntype MBigObject {\n aFieldOnMBigObject: String!\n bFieldOnMBigObject: Int!\n cFieldOnMBigObject: Boolean!\n dFieldOnMBigObject: Float!\n eFieldOnMBigObject: String!\n fFieldOnMBigObject: Int!\n gFieldOnMBigObject: Boolean!\n hFieldOnMBigObject: Float!\n iFieldOnMBigObject: String!\n jFieldOnMBigObject: Int!\n kFieldOnMBigObject: Boolean!\n lFieldOnMBigObject: Float!\n mFieldOnMBigObject: String!\n nFieldOnMBigObject: Int!\n oFieldOnMBigObject: Boolean!\n pFieldOnMBigObject: Float!\n qFieldOnMBigObject: String!\n rFieldOnMBigObject: Int!\n sFieldOnMBigObject: Boolean!\n tFieldOnMBigObject: Float!\n uFieldOnMBigObject: String!\n vFieldOnMBigObject: Int!\n wFieldOnMBigObject: Boolean!\n xFieldOnMBigObject: Float!\n yFieldOnMBigObject: String!\n zFieldOnMBigObject: Int!\n}\n\ntype NBigObject {\n aFieldOnNBigObject: String!\n bFieldOnNBigObject: Int!\n cFieldOnNBigObject: Boolean!\n dFieldOnNBigObject: Float!\n eFieldOnNBigObject: String!\n fFieldOnNBigObject: Int!\n gFieldOnNBigObject: Boolean!\n hFieldOnNBigObject: Float!\n iFieldOnNBigObject: String!\n jFieldOnNBigObject: Int!\n kFieldOnNBigObject: Boolean!\n lFieldOnNBigObject: Float!\n mFieldOnNBigObject: String!\n nFieldOnNBigObject: Int!\n oFieldOnNBigObject: Boolean!\n pFieldOnNBigObject: Float!\n qFieldOnNBigObject: String!\n rFieldOnNBigObject: Int!\n sFieldOnNBigObject: Boolean!\n tFieldOnNBigObject: Float!\n uFieldOnNBigObject: String!\n vFieldOnNBigObject: Int!\n wFieldOnNBigObject: Boolean!\n xFieldOnNBigObject: Float!\n yFieldOnNBigObject: String!\n zFieldOnNBigObject: Int!\n}\n\ntype OBigObject {\n aFieldOnOBigObject: String!\n bFieldOnOBigObject: Int!\n cFieldOnOBigObject: Boolean!\n dFieldOnOBigObject: Float!\n eFieldOnOBigObject: String!\n fFieldOnOBigObject: Int!\n gFieldOnOBigObject: Boolean!\n hFieldOnOBigObject: Float!\n iFieldOnOBigObject: String!\n jFieldOnOBigObject: Int!\n kFieldOnOBigObject: Boolean!\n lFieldOnOBigObject: Float!\n mFieldOnOBigObject: String!\n nFieldOnOBigObject: Int!\n oFieldOnOBigObject: Boolean!\n pFieldOnOBigObject: Float!\n qFieldOnOBigObject: String!\n rFieldOnOBigObject: Int!\n sFieldOnOBigObject: Boolean!\n tFieldOnOBigObject: Float!\n uFieldOnOBigObject: String!\n vFieldOnOBigObject: Int!\n wFieldOnOBigObject: Boolean!\n xFieldOnOBigObject: Float!\n yFieldOnOBigObject: String!\n zFieldOnOBigObject: Int!\n}\n\ntype PBigObject {\n aFieldOnPBigObject: String!\n bFieldOnPBigObject: Int!\n cFieldOnPBigObject: Boolean!\n dFieldOnPBigObject: Float!\n eFieldOnPBigObject: String!\n fFieldOnPBigObject: Int!\n gFieldOnPBigObject: Boolean!\n hFieldOnPBigObject: Float!\n iFieldOnPBigObject: String!\n jFieldOnPBigObject: Int!\n kFieldOnPBigObject: Boolean!\n lFieldOnPBigObject: Float!\n mFieldOnPBigObject: String!\n nFieldOnPBigObject: Int!\n oFieldOnPBigObject: Boolean!\n pFieldOnPBigObject: Float!\n qFieldOnPBigObject: String!\n rFieldOnPBigObject: Int!\n sFieldOnPBigObject: Boolean!\n tFieldOnPBigObject: Float!\n uFieldOnPBigObject: String!\n vFieldOnPBigObject: Int!\n wFieldOnPBigObject: Boolean!\n xFieldOnPBigObject: Float!\n yFieldOnPBigObject: String!\n zFieldOnPBigObject: Int!\n}\n\ntype QBigObject {\n aFieldOnQBigObject: String!\n bFieldOnQBigObject: Int!\n cFieldOnQBigObject: Boolean!\n dFieldOnQBigObject: Float!\n eFieldOnQBigObject: String!\n fFieldOnQBigObject: Int!\n gFieldOnQBigObject: Boolean!\n hFieldOnQBigObject: Float!\n iFieldOnQBigObject: String!\n jFieldOnQBigObject: Int!\n kFieldOnQBigObject: Boolean!\n lFieldOnQBigObject: Float!\n mFieldOnQBigObject: String!\n nFieldOnQBigObject: Int!\n oFieldOnQBigObject: Boolean!\n pFieldOnQBigObject: Float!\n qFieldOnQBigObject: String!\n rFieldOnQBigObject: Int!\n sFieldOnQBigObject: Boolean!\n tFieldOnQBigObject: Float!\n uFieldOnQBigObject: String!\n vFieldOnQBigObject: Int!\n wFieldOnQBigObject: Boolean!\n xFieldOnQBigObject: Float!\n yFieldOnQBigObject: String!\n zFieldOnQBigObject: Int!\n}\n\ntype RBigObject {\n aFieldOnRBigObject: String!\n bFieldOnRBigObject: Int!\n cFieldOnRBigObject: Boolean!\n dFieldOnRBigObject: Float!\n eFieldOnRBigObject: String!\n fFieldOnRBigObject: Int!\n gFieldOnRBigObject: Boolean!\n hFieldOnRBigObject: Float!\n iFieldOnRBigObject: String!\n jFieldOnRBigObject: Int!\n kFieldOnRBigObject: Boolean!\n lFieldOnRBigObject: Float!\n mFieldOnRBigObject: String!\n nFieldOnRBigObject: Int!\n oFieldOnRBigObject: Boolean!\n pFieldOnRBigObject: Float!\n qFieldOnRBigObject: String!\n rFieldOnRBigObject: Int!\n sFieldOnRBigObject: Boolean!\n tFieldOnRBigObject: Float!\n uFieldOnRBigObject: String!\n vFieldOnRBigObject: Int!\n wFieldOnRBigObject: Boolean!\n xFieldOnRBigObject: Float!\n yFieldOnRBigObject: String!\n zFieldOnRBigObject: Int!\n}\n\ntype SBigObject {\n aFieldOnSBigObject: String!\n bFieldOnSBigObject: Int!\n cFieldOnSBigObject: Boolean!\n dFieldOnSBigObject: Float!\n eFieldOnSBigObject: String!\n fFieldOnSBigObject: Int!\n gFieldOnSBigObject: Boolean!\n hFieldOnSBigObject: Float!\n iFieldOnSBigObject: String!\n jFieldOnSBigObject: Int!\n kFieldOnSBigObject: Boolean!\n lFieldOnSBigObject: Float!\n mFieldOnSBigObject: String!\n nFieldOnSBigObject: Int!\n oFieldOnSBigObject: Boolean!\n pFieldOnSBigObject: Float!\n qFieldOnSBigObject: String!\n rFieldOnSBigObject: Int!\n sFieldOnSBigObject: Boolean!\n tFieldOnSBigObject: Float!\n uFieldOnSBigObject: String!\n vFieldOnSBigObject: Int!\n wFieldOnSBigObject: Boolean!\n xFieldOnSBigObject: Float!\n yFieldOnSBigObject: String!\n zFieldOnSBigObject: Int!\n}\n\ntype TBigObject {\n aFieldOnTBigObject: String!\n bFieldOnTBigObject: Int!\n cFieldOnTBigObject: Boolean!\n dFieldOnTBigObject: Float!\n eFieldOnTBigObject: String!\n fFieldOnTBigObject: Int!\n gFieldOnTBigObject: Boolean!\n hFieldOnTBigObject: Float!\n iFieldOnTBigObject: String!\n jFieldOnTBigObject: Int!\n kFieldOnTBigObject: Boolean!\n lFieldOnTBigObject: Float!\n mFieldOnTBigObject: String!\n nFieldOnTBigObject: Int!\n oFieldOnTBigObject: Boolean!\n pFieldOnTBigObject: Float!\n qFieldOnTBigObject: String!\n rFieldOnTBigObject: Int!\n sFieldOnTBigObject: Boolean!\n tFieldOnTBigObject: Float!\n uFieldOnTBigObject: String!\n vFieldOnTBigObject: Int!\n wFieldOnTBigObject: Boolean!\n xFieldOnTBigObject: Float!\n yFieldOnTBigObject: String!\n zFieldOnTBigObject: Int!\n}\n\ntype UBigObject {\n aFieldOnUBigObject: String!\n bFieldOnUBigObject: Int!\n cFieldOnUBigObject: Boolean!\n dFieldOnUBigObject: Float!\n eFieldOnUBigObject: String!\n fFieldOnUBigObject: Int!\n gFieldOnUBigObject: Boolean!\n hFieldOnUBigObject: Float!\n iFieldOnUBigObject: String!\n jFieldOnUBigObject: Int!\n kFieldOnUBigObject: Boolean!\n lFieldOnUBigObject: Float!\n mFieldOnUBigObject: String!\n nFieldOnUBigObject: Int!\n oFieldOnUBigObject: Boolean!\n pFieldOnUBigObject: Float!\n qFieldOnUBigObject: String!\n rFieldOnUBigObject: Int!\n sFieldOnUBigObject: Boolean!\n tFieldOnUBigObject: Float!\n uFieldOnUBigObject: String!\n vFieldOnUBigObject: Int!\n wFieldOnUBigObject: Boolean!\n xFieldOnUBigObject: Float!\n yFieldOnUBigObject: String!\n zFieldOnUBigObject: Int!\n}\n\ntype VBigObject {\n aFieldOnVBigObject: String!\n bFieldOnVBigObject: Int!\n cFieldOnVBigObject: Boolean!\n dFieldOnVBigObject: Float!\n eFieldOnVBigObject: String!\n fFieldOnVBigObject: Int!\n gFieldOnVBigObject: Boolean!\n hFieldOnVBigObject: Float!\n iFieldOnVBigObject: String!\n jFieldOnVBigObject: Int!\n kFieldOnVBigObject: Boolean!\n lFieldOnVBigObject: Float!\n mFieldOnVBigObject: String!\n nFieldOnVBigObject: Int!\n oFieldOnVBigObject: Boolean!\n pFieldOnVBigObject: Float!\n qFieldOnVBigObject: String!\n rFieldOnVBigObject: Int!\n sFieldOnVBigObject: Boolean!\n tFieldOnVBigObject: Float!\n uFieldOnVBigObject: String!\n vFieldOnVBigObject: Int!\n wFieldOnVBigObject: Boolean!\n xFieldOnVBigObject: Float!\n yFieldOnVBigObject: String!\n zFieldOnVBigObject: Int!\n}\n\ntype WBigObject {\n aFieldOnWBigObject: String!\n bFieldOnWBigObject: Int!\n cFieldOnWBigObject: Boolean!\n dFieldOnWBigObject: Float!\n eFieldOnWBigObject: String!\n fFieldOnWBigObject: Int!\n gFieldOnWBigObject: Boolean!\n hFieldOnWBigObject: Float!\n iFieldOnWBigObject: String!\n jFieldOnWBigObject: Int!\n kFieldOnWBigObject: Boolean!\n lFieldOnWBigObject: Float!\n mFieldOnWBigObject: String!\n nFieldOnWBigObject: Int!\n oFieldOnWBigObject: Boolean!\n pFieldOnWBigObject: Float!\n qFieldOnWBigObject: String!\n rFieldOnWBigObject: Int!\n sFieldOnWBigObject: Boolean!\n tFieldOnWBigObject: Float!\n uFieldOnWBigObject: String!\n vFieldOnWBigObject: Int!\n wFieldOnWBigObject: Boolean!\n xFieldOnWBigObject: Float!\n yFieldOnWBigObject: String!\n zFieldOnWBigObject: Int!\n}\n\ntype XBigObject {\n aFieldOnXBigObject: String!\n bFieldOnXBigObject: Int!\n cFieldOnXBigObject: Boolean!\n dFieldOnXBigObject: Float!\n eFieldOnXBigObject: String!\n fFieldOnXBigObject: Int!\n gFieldOnXBigObject: Boolean!\n hFieldOnXBigObject: Float!\n iFieldOnXBigObject: String!\n jFieldOnXBigObject: Int!\n kFieldOnXBigObject: Boolean!\n lFieldOnXBigObject: Float!\n mFieldOnXBigObject: String!\n nFieldOnXBigObject: Int!\n oFieldOnXBigObject: Boolean!\n pFieldOnXBigObject: Float!\n qFieldOnXBigObject: String!\n rFieldOnXBigObject: Int!\n sFieldOnXBigObject: Boolean!\n tFieldOnXBigObject: Float!\n uFieldOnXBigObject: String!\n vFieldOnXBigObject: Int!\n wFieldOnXBigObject: Boolean!\n xFieldOnXBigObject: Float!\n yFieldOnXBigObject: String!\n zFieldOnXBigObject: Int!\n}\n\ntype YBigObject {\n aFieldOnYBigObject: String!\n bFieldOnYBigObject: Int!\n cFieldOnYBigObject: Boolean!\n dFieldOnYBigObject: Float!\n eFieldOnYBigObject: String!\n fFieldOnYBigObject: Int!\n gFieldOnYBigObject: Boolean!\n hFieldOnYBigObject: Float!\n iFieldOnYBigObject: String!\n jFieldOnYBigObject: Int!\n kFieldOnYBigObject: Boolean!\n lFieldOnYBigObject: Float!\n mFieldOnYBigObject: String!\n nFieldOnYBigObject: Int!\n oFieldOnYBigObject: Boolean!\n pFieldOnYBigObject: Float!\n qFieldOnYBigObject: String!\n rFieldOnYBigObject: Int!\n sFieldOnYBigObject: Boolean!\n tFieldOnYBigObject: Float!\n uFieldOnYBigObject: String!\n vFieldOnYBigObject: Int!\n wFieldOnYBigObject: Boolean!\n xFieldOnYBigObject: Float!\n yFieldOnYBigObject: String!\n zFieldOnYBigObject: Int!\n}\n\ntype ZBigObject {\n aFieldOnZBigObject: String!\n bFieldOnZBigObject: Int!\n cFieldOnZBigObject: Boolean!\n dFieldOnZBigObject: Float!\n eFieldOnZBigObject: String!\n fFieldOnZBigObject: Int!\n gFieldOnZBigObject: Boolean!\n hFieldOnZBigObject: Float!\n iFieldOnZBigObject: String!\n jFieldOnZBigObject: Int!\n kFieldOnZBigObject: Boolean!\n lFieldOnZBigObject: Float!\n mFieldOnZBigObject: String!\n nFieldOnZBigObject: Int!\n oFieldOnZBigObject: Boolean!\n pFieldOnZBigObject: Float!\n qFieldOnZBigObject: String!\n rFieldOnZBigObject: Int!\n sFieldOnZBigObject: Boolean!\n tFieldOnZBigObject: Float!\n uFieldOnZBigObject: String!\n vFieldOnZBigObject: Int!\n wFieldOnZBigObject: Boolean!\n xFieldOnZBigObject: Float!\n yFieldOnZBigObject: String!\n zFieldOnZBigObject: Int!\n}\n\ninput ProjectInput {\n name: String!\n description: String\n startDate: String\n endDate: String\n status: ProjectStatus!\n}\n\ninput MilestoneInput {\n projectId: ID!\n name: String!\n description: String\n dueDate: String\n status: MilestoneStatus!\n}\n\ninput TaskInput {\n projectId: ID!\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float\n}\n\ninterface Node {\n id: ID!\n}\n\ninterface Timestamped {\n startDate: String\n endDate: String\n}\n\ninterface Assignable {\n assigneeId: Int\n}\n\nenum ProjectStatus {\n PLANNING\n ACTIVE\n COMPLETED\n ON_HOLD\n}\n\nenum MilestoneStatus {\n PENDING\n IN_PROGRESS\n COMPLETED\n DELAYED\n}\n\nenum TaskStatus {\n TODO\n IN_PROGRESS\n REVIEW\n COMPLETED\n BLOCKED\n}\n\nenum TaskPriority {\n LOW\n MEDIUM\n HIGH\n URGENT\n}\n\nenum ProjectUpdateType {\n STATUS_CHANGE\n MILESTONE_ADDED\n TASK_ASSIGNED\n PROGRESS_UPDATE\n TEAM_CHANGE\n}\n\nunion ProjectResource = Employee | Product | Milestone | Task\n\nunion ProjectSearchResult = Project | Milestone | Task\n\nunion ProjectActivity = ProjectUpdate | Milestone | Task\n\ntype Product {\n upc: String!\n projects: [Project!]\n featureMatrix: [[String]]\n}\n\ntype Engineer implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n engineerType: EngineerType!\n}\n\ntype Marketer implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n}\n\ntype Operator implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n operatorType: [OperationType!]!\n}\n\ntype Employee implements Identifiable {\n details: Details\n id: Int!\n tag: String!\n role: RoleType!\n notes: String\n updatedAt: String!\n startDate: String!\n currentMood: Mood!\n derivedMood: Mood!\n isAvailable: Boolean\n rootFieldThrowsError: String\n rootFieldErrorWrapper: ErrorWrapper\n hobbies: [Hobby!]\n products: [ProductName!]!\n fieldThrowsError: String\n projects: [Project!]\n assignedTasks: [Task!]!\n completedTasks: [Task!]!\n skills: [String]\n certifications: [String!]\n projectHistory: [[Project!]]!\n currentWorkload(includeCompleted: Boolean, projectId: ID): Int!\n averageTaskCompletionDays(projectId: ID, priority: TaskPriority): Float\n}\n\ntype Cosmo implements IProduct {\n upc: ID!\n engineers: [Employee!]!\n lead: Employee!\n isLeadAvailable: Boolean\n name: ProductName!\n repositoryURL: String!\n}\n\ntype SDK implements IProduct {\n upc: ID!\n engineers: [Employee!]!\n owner: Employee!\n unicode: String!\n clientLanguages: [ProgrammingLanguage!]!\n}\n\ninterface Pet implements Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Alligator implements Pet & Animal {\n class: Class!\n dangerous: String!\n gender: Gender!\n name: String!\n}\n\ntype Cat implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n type: CatType!\n}\n\ntype Dog implements Pet & Animal {\n breed: DogBreed!\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Mouse implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Pony implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Exercise implements Hobby {\n employees: [Employee!]!\n category: ExerciseType!\n}\n\ntype Flying implements Experience & Hobby {\n employees: [Employee!]!\n planeModels: [String!]!\n yearsOfExperience: Float!\n}\n\ntype Gaming implements Experience & Hobby {\n employees: [Employee!]!\n genres: [GameGenre!]!\n name: String!\n yearsOfExperience: Float!\n}\n\ntype Other implements Hobby {\n employees: [Employee!]!\n name: String!\n}\n\ntype Programming implements Hobby {\n employees: [Employee!]!\n languages: [ProgrammingLanguage!]!\n}\n\ntype Travelling implements Hobby {\n employees: [Employee!]!\n countriesLived: [Country!]!\n}\n\ntype DirectiveFact implements TopSecretFact {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype EntityFact implements TopSecretFact {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype MiscellaneousFact implements TopSecretFact {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype Project implements Node & Timestamped {\n id: ID!\n name: String!\n description: String\n startDate: String\n endDate: String\n status: ProjectStatus!\n teamMembers: [Employee!]!\n relatedProducts: [Product!]!\n milestoneIds: [String!]\n milestones: [Milestone!]!\n tasks: [Task!]!\n progress: Float\n tags: [String]\n alternativeProjects: [Project]\n dependencies: [Project!]\n resourceGroups: [[ProjectResource!]!]!\n tasksByPhase: [[Task!]]!\n milestoneGroups: [[Milestone]]\n priorityMatrix: [[[Task!]!]!]\n filteredTasks(status: TaskStatus, priority: TaskPriority, limit: Int): [Task!]!\n completionRate(includeSubtasks: Boolean): Float!\n estimatedDaysRemaining(fromDate: String): Int\n criticalDeadline(withinDays: Int): Timestamped\n topPriorityItem(category: String): ProjectSearchResult\n}\n\ntype Milestone implements Node & Timestamped {\n id: ID!\n projectId: ID!\n name: String!\n description: String\n startDate: String\n endDate: String\n status: MilestoneStatus!\n completionPercentage: Float\n dependencies: [Milestone]!\n subtasks: [Task]\n reviewers: [Employee!]\n isAtRisk(threshold: Float): Boolean!\n daysUntilDue(fromDate: String): Int\n}\n\ntype Task implements Node & Assignable {\n id: ID!\n projectId: ID!\n milestoneId: ID\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float @deprecated(reason: \"No more estimations!\")\n actualHours: Float\n createdAt: String\n completedAt: String\n labels: [String]\n subtasks: [Task!]\n dependencies: [Task]!\n attachmentUrls: [String!]!\n reviewerIds: [Int]\n isBlocked(checkDependencies: Boolean): Boolean!\n totalEffort(includeSubtasks: Boolean): Float\n}\n\ntype ProjectUpdate implements Node {\n id: ID!\n projectId: ID!\n updatedById: Int!\n updateType: ProjectUpdateType!\n description: String!\n timestamp: String!\n metadata: String\n}" + "graphqlClientSchema": "schema {\n query: Query\n mutation: Mutation\n subscription: Subscription\n}\n\ntype Query {\n employee(id: Int!): Employee\n employeeAsList(id: Int!): [Employee]\n employees: [Employee]\n products: [Products!]!\n teammates(team: Department!): [Employee!]!\n firstEmployee: Employee!\n findEmployeesBy(criteria: FindEmployeeCriteria!): [Employee!]!\n \"\"\" This is a GraphQL query that retrieves a list of employees.\"\"\"\n findEmployees(criteria: SearchInput): [Employee!]!\n productTypes: [Products!]!\n topSecretFederationFacts: [TopSecretFact!]!\n factTypes: [TopSecretFactType!]\n sharedThings(numOfA: Int!, numOfB: Int!): [Thing!]!\n \"\"\"Returns the value of the received HTTP header.\"\"\"\n headerValue(name: String!): String!\n \"\"\"Returns the value of the given key in the WS initial payload.\"\"\"\n initPayloadValue(key: String!): String!\n initialPayload: Map\n \"\"\"Returns response after the given delay\"\"\"\n delay(response: String!, ms: Int!): String!\n bigResponse(artificialDelay: Int! = 0, bigObjects: Int! = 100, nestedObjects: Int! = 100, deeplyNestedObjects: Int! = 100): [BigObject!]!\n longResponse(artificialDelay: Int! = 0, bytes: Int!): String\n bigAbstractResponse: BigAbstractResponse\n rootFieldWithListArg(arg: [String!]!): [String!]!\n rootFieldWithNestedListArg(arg: [[String!]!]!): [[String!]!]!\n rootFieldWithListOfInputArg(arg: [InputType!]!): [InputResponse!]!\n rootFieldWithListOfEnumArg(arg: [EnumType!]!): [EnumType!]!\n rootFieldWithInput(arg: InputArg!): String!\n floatField(arg: Float): Float\n secret: Secret\n projects: [Project!]!\n project(id: ID!): Project\n projectStatuses: [ProjectStatus!]!\n projectsByStatus(status: ProjectStatus!): [Project!]!\n projectResources(projectId: ID!): [ProjectResource!]!\n searchProjects(query: String!): [ProjectSearchResult!]!\n milestones(projectId: ID!): [Milestone!]!\n tasks(projectId: ID!): [Task!]!\n projectActivities(projectId: ID!): [ProjectActivity!]!\n projectTags: [String]\n archivedProjects: [Project]!\n tasksByPriority(projectId: ID!): [[Task]]\n resourceMatrix(projectId: ID!): [[ProjectResource!]!]!\n killService: Boolean!\n panic: Boolean!\n nodesById(id: ID!): [Node!]!\n}\n\nscalar Upload\n\ntype Mutation {\n updateEmployeeTag(id: Int!, tag: String!): Employee\n singleUpload(file: Upload!): Boolean!\n singleUploadWithInput(arg: FileUpload!): Boolean!\n multipleUpload(files: [Upload!]!): Boolean!\n addFact(fact: TopSecretFactInput!): TopSecretFact!\n \"\"\" This mutation updates the availability status of an employee in the system.\n \"\"\"\n updateAvailability(employeeID: Int!, isAvailable: Boolean!): Employee!\n \"\"\" This mutation update the mood of an employee. \"\"\"\n updateMood(employeeID: Int!, mood: Mood!): Employee!\n addProject(project: ProjectInput!): Project!\n addMilestone(milestone: MilestoneInput!): Milestone!\n addTask(task: TaskInput!): Task!\n updateProjectStatus(projectId: ID!, status: ProjectStatus!): ProjectUpdate!\n}\n\ninput FileUpload {\n nested: DeeplyNestedFileUpload\n nestedList: [Upload!]\n}\n\ninput DeeplyNestedFileUpload {\n file: Upload!\n}\n\ntype Subscription {\n \"\"\"`currentTime` will return a stream of `Time` objects.\"\"\"\n currentTime: Time!\n countEmp(max: Int!, intervalMilliseconds: Int!): Int!\n countEmp2(max: Int!, intervalMilliseconds: Int!): Int!\n countFor(count: Int!): Int!\n countHob(max: Int!, intervalMilliseconds: Int!): Int!\n \"\"\"Returns a stream with the value of the received HTTP header.\"\"\"\n headerValue(name: String!, repeat: Int): TimestampedString!\n \"\"\"\n Returns a stream with the value of value of the given key in the WS initial payload.\n \"\"\"\n initPayloadValue(key: String!, repeat: Int): TimestampedString!\n \"\"\"Returns a stream with the value of the WS initial payload.\"\"\"\n initialPayload(repeat: Int): Map\n returnsError: String\n}\n\nenum Department {\n ENGINEERING\n MARKETING\n OPERATIONS\n}\n\ninterface RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n}\n\nenum EngineerType {\n BACKEND\n FRONTEND\n FULLSTACK\n}\n\ninterface Identifiable {\n id: Int!\n}\n\nenum OperationType {\n FINANCE\n HUMAN_RESOURCES\n}\n\ntype Details {\n forename: String!\n location: Country!\n surname: String!\n pastLocations: [City!]!\n middlename: String @deprecated(reason: \"No longer supported\")\n hasChildren: Boolean!\n maritalStatus: MaritalStatus\n nationality: Nationality!\n pets: [Pet]\n}\n\ntype City {\n type: String!\n name: String!\n country: Country\n}\n\ntype Country {\n key: CountryKey!\n language: String\n}\n\ntype CountryKey {\n name: String!\n}\n\nenum Mood {\n HAPPY\n SAD\n}\n\ntype ErrorWrapper {\n okField: String\n errorField: String\n}\n\ntype Time {\n unixTime: Int!\n timeStamp: String!\n}\n\nunion Products = Consultancy | Cosmo | SDK | Documentation\n\ninterface IProduct {\n upc: ID!\n engineers: [Employee!]!\n}\n\ntype Consultancy {\n upc: ID!\n lead: Employee!\n isLeadAvailable: Boolean\n name: ProductName!\n}\n\ninput FindEmployeeCriteria @oneOf {\n id: Int\n department: Department\n title: String\n}\n\nenum Class {\n FISH\n MAMMAL\n REPTILE\n}\n\nenum Gender {\n FEMALE\n MALE\n UNKNOWN\n}\n\ninterface Animal {\n class: Class!\n gender: Gender!\n}\n\nenum CatType {\n HOME\n STREET\n}\n\nenum DogBreed {\n GOLDEN_RETRIEVER\n POODLE\n ROTTWEILER\n YORKSHIRE_TERRIER\n}\n\nenum MaritalStatus {\n ENGAGED\n MARRIED\n}\n\nenum Nationality {\n AMERICAN\n DUTCH\n ENGLISH\n GERMAN\n INDIAN\n SPANISH\n UKRAINIAN\n}\n\n\"\"\" Allows to filter employees by their details. \"\"\"\ninput SearchInput {\n hasPets: Boolean\n nationality: Nationality\n nested: NestedSearchInput\n}\n\ninput NestedSearchInput {\n maritalStatus: MaritalStatus\n hasChildren: Boolean\n}\n\nenum ExerciseType {\n CALISTHENICS\n HIKING\n SPORT\n STRENGTH_TRAINING\n}\n\ninterface Experience {\n yearsOfExperience: Float!\n}\n\nenum GameGenre {\n ADVENTURE\n BOARD\n FPS\n CARD\n RPG\n ROGUELITE\n SIMULATION\n STRATEGY\n}\n\nenum ProgrammingLanguage {\n CSHARP\n GO\n RUST\n TYPESCRIPT\n}\n\ninterface Hobby {\n employees: [Employee!]!\n}\n\ntype Thing {\n a: String!\n b: String!\n}\n\ninput TopSecretFactInput {\n title: String!\n description: FactContent!\n factType: TopSecretFactType!\n}\n\nenum TopSecretFactType {\n DIRECTIVE\n ENTITY\n MISCELLANEOUS\n}\n\ninterface TopSecretFact {\n description: FactContent!\n factType: TopSecretFactType\n}\n\nscalar FactContent\n\nenum ProductName {\n CONSULTANCY\n COSMO\n ENGINE\n FINANCE\n HUMAN_RESOURCES\n MARKETING\n SDK\n}\n\ntype Documentation {\n url(product: ProductName!): String!\n urls(products: [ProductName!]!): [String!]!\n}\n\ntype Secret {\n value: String\n}\n\ninput InputArg {\n enums: [EnumType!]\n enum: EnumType\n string: String\n strings: [String!]\n}\n\nenum EnumType {\n A\n B\n C\n}\n\ninput InputType {\n arg: String!\n}\n\ntype InputResponse {\n arg: String!\n}\n\nscalar Map\n\ntype TimestampedString {\n \"\"\"The value of the string.\"\"\"\n value: String!\n \"\"\"The timestamp when the response was generated.\"\"\"\n unixTime: Int!\n \"\"\"Sequence number\"\"\"\n seq: Int!\n \"\"\"Total number of responses to be sent\"\"\"\n total: Int!\n initialPayload: Map\n}\n\ntype BigObject {\n nestedObjects: [NestedObject!]!\n}\n\ntype NestedObject {\n deeplyNestedObjects: [DeeplyNestedObject!]!\n}\n\ntype DeeplyNestedObject {\n aFieldOnDeeplyNestedObject: String!\n bFieldOnDeeplyNestedObject: Int!\n cFieldOnDeeplyNestedObject: Boolean!\n dFieldOnDeeplyNestedObject: Float!\n eFieldOnDeeplyNestedObject: String!\n fFieldOnDeeplyNestedObject: Int!\n gFieldOnDeeplyNestedObject: Boolean!\n hFieldOnDeeplyNestedObject: Float!\n iFieldOnDeeplyNestedObject: String!\n jFieldOnDeeplyNestedObject: Int!\n kFieldOnDeeplyNestedObject: Boolean!\n lFieldOnDeeplyNestedObject: Float!\n mFieldOnDeeplyNestedObject: String!\n nFieldOnDeeplyNestedObject: Int!\n oFieldOnDeeplyNestedObject: Boolean!\n pFieldOnDeeplyNestedObject: Float!\n qFieldOnDeeplyNestedObject: String!\n rFieldOnDeeplyNestedObject: Int!\n sFieldOnDeeplyNestedObject: Boolean!\n tFieldOnDeeplyNestedObject: Float!\n uFieldOnDeeplyNestedObject: String!\n vFieldOnDeeplyNestedObject: Int!\n wFieldOnDeeplyNestedObject: Boolean!\n xFieldOnDeeplyNestedObject: Float!\n yFieldOnDeeplyNestedObject: String!\n zFieldOnDeeplyNestedObject: Int!\n}\n\nunion BigAbstractResponse = ABigObject | BBigObject | CBigObject | DBigObject | EBigObject | FBigObject | GBigObject | HBigObject | IBigObject | JBigObject | KBigObject | LBigObject | MBigObject | NBigObject | OBigObject | PBigObject | QBigObject | RBigObject | SBigObject | TBigObject | UBigObject | VBigObject | WBigObject | XBigObject | YBigObject | ZBigObject\n\ntype ABigObject {\n aFieldOnABigObject: String!\n bFieldOnABigObject: Int!\n cFieldOnABigObject: Boolean!\n dFieldOnABigObject: Float!\n eFieldOnABigObject: String!\n fFieldOnABigObject: Int!\n gFieldOnABigObject: Boolean!\n hFieldOnABigObject: Float!\n iFieldOnABigObject: String!\n jFieldOnABigObject: Int!\n kFieldOnABigObject: Boolean!\n lFieldOnABigObject: Float!\n mFieldOnABigObject: String!\n nFieldOnABigObject: Int!\n oFieldOnABigObject: Boolean!\n pFieldOnABigObject: Float!\n qFieldOnABigObject: String!\n rFieldOnABigObject: Int!\n sFieldOnABigObject: Boolean!\n tFieldOnABigObject: Float!\n uFieldOnABigObject: String!\n vFieldOnABigObject: Int!\n wFieldOnABigObject: Boolean!\n xFieldOnABigObject: Float!\n yFieldOnABigObject: String!\n zFieldOnABigObject: Int!\n}\n\ntype BBigObject {\n aFieldOnBBigObject: String!\n bFieldOnBBigObject: Int!\n cFieldOnBBigObject: Boolean!\n dFieldOnBBigObject: Float!\n eFieldOnBBigObject: String!\n fFieldOnBBigObject: Int!\n gFieldOnBBigObject: Boolean!\n hFieldOnBBigObject: Float!\n iFieldOnBBigObject: String!\n jFieldOnBBigObject: Int!\n kFieldOnBBigObject: Boolean!\n lFieldOnBBigObject: Float!\n mFieldOnBBigObject: String!\n nFieldOnBBigObject: Int!\n oFieldOnBBigObject: Boolean!\n pFieldOnBBigObject: Float!\n qFieldOnBBigObject: String!\n rFieldOnBBigObject: Int!\n sFieldOnBBigObject: Boolean!\n tFieldOnBBigObject: Float!\n uFieldOnBBigObject: String!\n vFieldOnBBigObject: Int!\n wFieldOnBBigObject: Boolean!\n xFieldOnBBigObject: Float!\n yFieldOnBBigObject: String!\n zFieldOnBBigObject: Int!\n}\n\ntype CBigObject {\n aFieldOnCBigObject: String!\n bFieldOnCBigObject: Int!\n cFieldOnCBigObject: Boolean!\n dFieldOnCBigObject: Float!\n eFieldOnCBigObject: String!\n fFieldOnCBigObject: Int!\n gFieldOnCBigObject: Boolean!\n hFieldOnCBigObject: Float!\n iFieldOnCBigObject: String!\n jFieldOnCBigObject: Int!\n kFieldOnCBigObject: Boolean!\n lFieldOnCBigObject: Float!\n mFieldOnCBigObject: String!\n nFieldOnCBigObject: Int!\n oFieldOnCBigObject: Boolean!\n pFieldOnCBigObject: Float!\n qFieldOnCBigObject: String!\n rFieldOnCBigObject: Int!\n sFieldOnCBigObject: Boolean!\n tFieldOnCBigObject: Float!\n uFieldOnCBigObject: String!\n vFieldOnCBigObject: Int!\n wFieldOnCBigObject: Boolean!\n xFieldOnCBigObject: Float!\n yFieldOnCBigObject: String!\n zFieldOnCBigObject: Int!\n}\n\ntype DBigObject {\n aFieldOnDBigObject: String!\n bFieldOnDBigObject: Int!\n cFieldOnDBigObject: Boolean!\n dFieldOnDBigObject: Float!\n eFieldOnDBigObject: String!\n fFieldOnDBigObject: Int!\n gFieldOnDBigObject: Boolean!\n hFieldOnDBigObject: Float!\n iFieldOnDBigObject: String!\n jFieldOnDBigObject: Int!\n kFieldOnDBigObject: Boolean!\n lFieldOnDBigObject: Float!\n mFieldOnDBigObject: String!\n nFieldOnDBigObject: Int!\n oFieldOnDBigObject: Boolean!\n pFieldOnDBigObject: Float!\n qFieldOnDBigObject: String!\n rFieldOnDBigObject: Int!\n sFieldOnDBigObject: Boolean!\n tFieldOnDBigObject: Float!\n uFieldOnDBigObject: String!\n vFieldOnDBigObject: Int!\n wFieldOnDBigObject: Boolean!\n xFieldOnDBigObject: Float!\n yFieldOnDBigObject: String!\n zFieldOnDBigObject: Int!\n}\n\ntype EBigObject {\n aFieldOnEBigObject: String!\n bFieldOnEBigObject: Int!\n cFieldOnEBigObject: Boolean!\n dFieldOnEBigObject: Float!\n eFieldOnEBigObject: String!\n fFieldOnEBigObject: Int!\n gFieldOnEBigObject: Boolean!\n hFieldOnEBigObject: Float!\n iFieldOnEBigObject: String!\n jFieldOnEBigObject: Int!\n kFieldOnEBigObject: Boolean!\n lFieldOnEBigObject: Float!\n mFieldOnEBigObject: String!\n nFieldOnEBigObject: Int!\n oFieldOnEBigObject: Boolean!\n pFieldOnEBigObject: Float!\n qFieldOnEBigObject: String!\n rFieldOnEBigObject: Int!\n sFieldOnEBigObject: Boolean!\n tFieldOnEBigObject: Float!\n uFieldOnEBigObject: String!\n vFieldOnEBigObject: Int!\n wFieldOnEBigObject: Boolean!\n xFieldOnEBigObject: Float!\n yFieldOnEBigObject: String!\n zFieldOnEBigObject: Int!\n}\n\ntype FBigObject {\n aFieldOnFBigObject: String!\n bFieldOnFBigObject: Int!\n cFieldOnFBigObject: Boolean!\n dFieldOnFBigObject: Float!\n eFieldOnFBigObject: String!\n fFieldOnFBigObject: Int!\n gFieldOnFBigObject: Boolean!\n hFieldOnFBigObject: Float!\n iFieldOnFBigObject: String!\n jFieldOnFBigObject: Int!\n kFieldOnFBigObject: Boolean!\n lFieldOnFBigObject: Float!\n mFieldOnFBigObject: String!\n nFieldOnFBigObject: Int!\n oFieldOnFBigObject: Boolean!\n pFieldOnFBigObject: Float!\n qFieldOnFBigObject: String!\n rFieldOnFBigObject: Int!\n sFieldOnFBigObject: Boolean!\n tFieldOnFBigObject: Float!\n uFieldOnFBigObject: String!\n vFieldOnFBigObject: Int!\n wFieldOnFBigObject: Boolean!\n xFieldOnFBigObject: Float!\n yFieldOnFBigObject: String!\n zFieldOnFBigObject: Int!\n}\n\ntype GBigObject {\n aFieldOnGBigObject: String!\n bFieldOnGBigObject: Int!\n cFieldOnGBigObject: Boolean!\n dFieldOnGBigObject: Float!\n eFieldOnGBigObject: String!\n fFieldOnGBigObject: Int!\n gFieldOnGBigObject: Boolean!\n hFieldOnGBigObject: Float!\n iFieldOnGBigObject: String!\n jFieldOnGBigObject: Int!\n kFieldOnGBigObject: Boolean!\n lFieldOnGBigObject: Float!\n mFieldOnGBigObject: String!\n nFieldOnGBigObject: Int!\n oFieldOnGBigObject: Boolean!\n pFieldOnGBigObject: Float!\n qFieldOnGBigObject: String!\n rFieldOnGBigObject: Int!\n sFieldOnGBigObject: Boolean!\n tFieldOnGBigObject: Float!\n uFieldOnGBigObject: String!\n vFieldOnGBigObject: Int!\n wFieldOnGBigObject: Boolean!\n xFieldOnGBigObject: Float!\n yFieldOnGBigObject: String!\n zFieldOnGBigObject: Int!\n}\n\ntype HBigObject {\n aFieldOnHBigObject: String!\n bFieldOnHBigObject: Int!\n cFieldOnHBigObject: Boolean!\n dFieldOnHBigObject: Float!\n eFieldOnHBigObject: String!\n fFieldOnHBigObject: Int!\n gFieldOnHBigObject: Boolean!\n hFieldOnHBigObject: Float!\n iFieldOnHBigObject: String!\n jFieldOnHBigObject: Int!\n kFieldOnHBigObject: Boolean!\n lFieldOnHBigObject: Float!\n mFieldOnHBigObject: String!\n nFieldOnHBigObject: Int!\n oFieldOnHBigObject: Boolean!\n pFieldOnHBigObject: Float!\n qFieldOnHBigObject: String!\n rFieldOnHBigObject: Int!\n sFieldOnHBigObject: Boolean!\n tFieldOnHBigObject: Float!\n uFieldOnHBigObject: String!\n vFieldOnHBigObject: Int!\n wFieldOnHBigObject: Boolean!\n xFieldOnHBigObject: Float!\n yFieldOnHBigObject: String!\n zFieldOnHBigObject: Int!\n}\n\ntype IBigObject {\n aFieldOnIBigObject: String!\n bFieldOnIBigObject: Int!\n cFieldOnIBigObject: Boolean!\n dFieldOnIBigObject: Float!\n eFieldOnIBigObject: String!\n fFieldOnIBigObject: Int!\n gFieldOnIBigObject: Boolean!\n hFieldOnIBigObject: Float!\n iFieldOnIBigObject: String!\n jFieldOnIBigObject: Int!\n kFieldOnIBigObject: Boolean!\n lFieldOnIBigObject: Float!\n mFieldOnIBigObject: String!\n nFieldOnIBigObject: Int!\n oFieldOnIBigObject: Boolean!\n pFieldOnIBigObject: Float!\n qFieldOnIBigObject: String!\n rFieldOnIBigObject: Int!\n sFieldOnIBigObject: Boolean!\n tFieldOnIBigObject: Float!\n uFieldOnIBigObject: String!\n vFieldOnIBigObject: Int!\n wFieldOnIBigObject: Boolean!\n xFieldOnIBigObject: Float!\n yFieldOnIBigObject: String!\n zFieldOnIBigObject: Int!\n}\n\ntype JBigObject {\n aFieldOnJBigObject: String!\n bFieldOnJBigObject: Int!\n cFieldOnJBigObject: Boolean!\n dFieldOnJBigObject: Float!\n eFieldOnJBigObject: String!\n fFieldOnJBigObject: Int!\n gFieldOnJBigObject: Boolean!\n hFieldOnJBigObject: Float!\n iFieldOnJBigObject: String!\n jFieldOnJBigObject: Int!\n kFieldOnJBigObject: Boolean!\n lFieldOnJBigObject: Float!\n mFieldOnJBigObject: String!\n nFieldOnJBigObject: Int!\n oFieldOnJBigObject: Boolean!\n pFieldOnJBigObject: Float!\n qFieldOnJBigObject: String!\n rFieldOnJBigObject: Int!\n sFieldOnJBigObject: Boolean!\n tFieldOnJBigObject: Float!\n uFieldOnJBigObject: String!\n vFieldOnJBigObject: Int!\n wFieldOnJBigObject: Boolean!\n xFieldOnJBigObject: Float!\n yFieldOnJBigObject: String!\n zFieldOnJBigObject: Int!\n}\n\ntype KBigObject {\n aFieldOnKBigObject: String!\n bFieldOnKBigObject: Int!\n cFieldOnKBigObject: Boolean!\n dFieldOnKBigObject: Float!\n eFieldOnKBigObject: String!\n fFieldOnKBigObject: Int!\n gFieldOnKBigObject: Boolean!\n hFieldOnKBigObject: Float!\n iFieldOnKBigObject: String!\n jFieldOnKBigObject: Int!\n kFieldOnKBigObject: Boolean!\n lFieldOnKBigObject: Float!\n mFieldOnKBigObject: String!\n nFieldOnKBigObject: Int!\n oFieldOnKBigObject: Boolean!\n pFieldOnKBigObject: Float!\n qFieldOnKBigObject: String!\n rFieldOnKBigObject: Int!\n sFieldOnKBigObject: Boolean!\n tFieldOnKBigObject: Float!\n uFieldOnKBigObject: String!\n vFieldOnKBigObject: Int!\n wFieldOnKBigObject: Boolean!\n xFieldOnKBigObject: Float!\n yFieldOnKBigObject: String!\n zFieldOnKBigObject: Int!\n}\n\ntype LBigObject {\n aFieldOnLBigObject: String!\n bFieldOnLBigObject: Int!\n cFieldOnLBigObject: Boolean!\n dFieldOnLBigObject: Float!\n eFieldOnLBigObject: String!\n fFieldOnLBigObject: Int!\n gFieldOnLBigObject: Boolean!\n hFieldOnLBigObject: Float!\n iFieldOnLBigObject: String!\n jFieldOnLBigObject: Int!\n kFieldOnLBigObject: Boolean!\n lFieldOnLBigObject: Float!\n mFieldOnLBigObject: String!\n nFieldOnLBigObject: Int!\n oFieldOnLBigObject: Boolean!\n pFieldOnLBigObject: Float!\n qFieldOnLBigObject: String!\n rFieldOnLBigObject: Int!\n sFieldOnLBigObject: Boolean!\n tFieldOnLBigObject: Float!\n uFieldOnLBigObject: String!\n vFieldOnLBigObject: Int!\n wFieldOnLBigObject: Boolean!\n xFieldOnLBigObject: Float!\n yFieldOnLBigObject: String!\n zFieldOnLBigObject: Int!\n}\n\ntype MBigObject {\n aFieldOnMBigObject: String!\n bFieldOnMBigObject: Int!\n cFieldOnMBigObject: Boolean!\n dFieldOnMBigObject: Float!\n eFieldOnMBigObject: String!\n fFieldOnMBigObject: Int!\n gFieldOnMBigObject: Boolean!\n hFieldOnMBigObject: Float!\n iFieldOnMBigObject: String!\n jFieldOnMBigObject: Int!\n kFieldOnMBigObject: Boolean!\n lFieldOnMBigObject: Float!\n mFieldOnMBigObject: String!\n nFieldOnMBigObject: Int!\n oFieldOnMBigObject: Boolean!\n pFieldOnMBigObject: Float!\n qFieldOnMBigObject: String!\n rFieldOnMBigObject: Int!\n sFieldOnMBigObject: Boolean!\n tFieldOnMBigObject: Float!\n uFieldOnMBigObject: String!\n vFieldOnMBigObject: Int!\n wFieldOnMBigObject: Boolean!\n xFieldOnMBigObject: Float!\n yFieldOnMBigObject: String!\n zFieldOnMBigObject: Int!\n}\n\ntype NBigObject {\n aFieldOnNBigObject: String!\n bFieldOnNBigObject: Int!\n cFieldOnNBigObject: Boolean!\n dFieldOnNBigObject: Float!\n eFieldOnNBigObject: String!\n fFieldOnNBigObject: Int!\n gFieldOnNBigObject: Boolean!\n hFieldOnNBigObject: Float!\n iFieldOnNBigObject: String!\n jFieldOnNBigObject: Int!\n kFieldOnNBigObject: Boolean!\n lFieldOnNBigObject: Float!\n mFieldOnNBigObject: String!\n nFieldOnNBigObject: Int!\n oFieldOnNBigObject: Boolean!\n pFieldOnNBigObject: Float!\n qFieldOnNBigObject: String!\n rFieldOnNBigObject: Int!\n sFieldOnNBigObject: Boolean!\n tFieldOnNBigObject: Float!\n uFieldOnNBigObject: String!\n vFieldOnNBigObject: Int!\n wFieldOnNBigObject: Boolean!\n xFieldOnNBigObject: Float!\n yFieldOnNBigObject: String!\n zFieldOnNBigObject: Int!\n}\n\ntype OBigObject {\n aFieldOnOBigObject: String!\n bFieldOnOBigObject: Int!\n cFieldOnOBigObject: Boolean!\n dFieldOnOBigObject: Float!\n eFieldOnOBigObject: String!\n fFieldOnOBigObject: Int!\n gFieldOnOBigObject: Boolean!\n hFieldOnOBigObject: Float!\n iFieldOnOBigObject: String!\n jFieldOnOBigObject: Int!\n kFieldOnOBigObject: Boolean!\n lFieldOnOBigObject: Float!\n mFieldOnOBigObject: String!\n nFieldOnOBigObject: Int!\n oFieldOnOBigObject: Boolean!\n pFieldOnOBigObject: Float!\n qFieldOnOBigObject: String!\n rFieldOnOBigObject: Int!\n sFieldOnOBigObject: Boolean!\n tFieldOnOBigObject: Float!\n uFieldOnOBigObject: String!\n vFieldOnOBigObject: Int!\n wFieldOnOBigObject: Boolean!\n xFieldOnOBigObject: Float!\n yFieldOnOBigObject: String!\n zFieldOnOBigObject: Int!\n}\n\ntype PBigObject {\n aFieldOnPBigObject: String!\n bFieldOnPBigObject: Int!\n cFieldOnPBigObject: Boolean!\n dFieldOnPBigObject: Float!\n eFieldOnPBigObject: String!\n fFieldOnPBigObject: Int!\n gFieldOnPBigObject: Boolean!\n hFieldOnPBigObject: Float!\n iFieldOnPBigObject: String!\n jFieldOnPBigObject: Int!\n kFieldOnPBigObject: Boolean!\n lFieldOnPBigObject: Float!\n mFieldOnPBigObject: String!\n nFieldOnPBigObject: Int!\n oFieldOnPBigObject: Boolean!\n pFieldOnPBigObject: Float!\n qFieldOnPBigObject: String!\n rFieldOnPBigObject: Int!\n sFieldOnPBigObject: Boolean!\n tFieldOnPBigObject: Float!\n uFieldOnPBigObject: String!\n vFieldOnPBigObject: Int!\n wFieldOnPBigObject: Boolean!\n xFieldOnPBigObject: Float!\n yFieldOnPBigObject: String!\n zFieldOnPBigObject: Int!\n}\n\ntype QBigObject {\n aFieldOnQBigObject: String!\n bFieldOnQBigObject: Int!\n cFieldOnQBigObject: Boolean!\n dFieldOnQBigObject: Float!\n eFieldOnQBigObject: String!\n fFieldOnQBigObject: Int!\n gFieldOnQBigObject: Boolean!\n hFieldOnQBigObject: Float!\n iFieldOnQBigObject: String!\n jFieldOnQBigObject: Int!\n kFieldOnQBigObject: Boolean!\n lFieldOnQBigObject: Float!\n mFieldOnQBigObject: String!\n nFieldOnQBigObject: Int!\n oFieldOnQBigObject: Boolean!\n pFieldOnQBigObject: Float!\n qFieldOnQBigObject: String!\n rFieldOnQBigObject: Int!\n sFieldOnQBigObject: Boolean!\n tFieldOnQBigObject: Float!\n uFieldOnQBigObject: String!\n vFieldOnQBigObject: Int!\n wFieldOnQBigObject: Boolean!\n xFieldOnQBigObject: Float!\n yFieldOnQBigObject: String!\n zFieldOnQBigObject: Int!\n}\n\ntype RBigObject {\n aFieldOnRBigObject: String!\n bFieldOnRBigObject: Int!\n cFieldOnRBigObject: Boolean!\n dFieldOnRBigObject: Float!\n eFieldOnRBigObject: String!\n fFieldOnRBigObject: Int!\n gFieldOnRBigObject: Boolean!\n hFieldOnRBigObject: Float!\n iFieldOnRBigObject: String!\n jFieldOnRBigObject: Int!\n kFieldOnRBigObject: Boolean!\n lFieldOnRBigObject: Float!\n mFieldOnRBigObject: String!\n nFieldOnRBigObject: Int!\n oFieldOnRBigObject: Boolean!\n pFieldOnRBigObject: Float!\n qFieldOnRBigObject: String!\n rFieldOnRBigObject: Int!\n sFieldOnRBigObject: Boolean!\n tFieldOnRBigObject: Float!\n uFieldOnRBigObject: String!\n vFieldOnRBigObject: Int!\n wFieldOnRBigObject: Boolean!\n xFieldOnRBigObject: Float!\n yFieldOnRBigObject: String!\n zFieldOnRBigObject: Int!\n}\n\ntype SBigObject {\n aFieldOnSBigObject: String!\n bFieldOnSBigObject: Int!\n cFieldOnSBigObject: Boolean!\n dFieldOnSBigObject: Float!\n eFieldOnSBigObject: String!\n fFieldOnSBigObject: Int!\n gFieldOnSBigObject: Boolean!\n hFieldOnSBigObject: Float!\n iFieldOnSBigObject: String!\n jFieldOnSBigObject: Int!\n kFieldOnSBigObject: Boolean!\n lFieldOnSBigObject: Float!\n mFieldOnSBigObject: String!\n nFieldOnSBigObject: Int!\n oFieldOnSBigObject: Boolean!\n pFieldOnSBigObject: Float!\n qFieldOnSBigObject: String!\n rFieldOnSBigObject: Int!\n sFieldOnSBigObject: Boolean!\n tFieldOnSBigObject: Float!\n uFieldOnSBigObject: String!\n vFieldOnSBigObject: Int!\n wFieldOnSBigObject: Boolean!\n xFieldOnSBigObject: Float!\n yFieldOnSBigObject: String!\n zFieldOnSBigObject: Int!\n}\n\ntype TBigObject {\n aFieldOnTBigObject: String!\n bFieldOnTBigObject: Int!\n cFieldOnTBigObject: Boolean!\n dFieldOnTBigObject: Float!\n eFieldOnTBigObject: String!\n fFieldOnTBigObject: Int!\n gFieldOnTBigObject: Boolean!\n hFieldOnTBigObject: Float!\n iFieldOnTBigObject: String!\n jFieldOnTBigObject: Int!\n kFieldOnTBigObject: Boolean!\n lFieldOnTBigObject: Float!\n mFieldOnTBigObject: String!\n nFieldOnTBigObject: Int!\n oFieldOnTBigObject: Boolean!\n pFieldOnTBigObject: Float!\n qFieldOnTBigObject: String!\n rFieldOnTBigObject: Int!\n sFieldOnTBigObject: Boolean!\n tFieldOnTBigObject: Float!\n uFieldOnTBigObject: String!\n vFieldOnTBigObject: Int!\n wFieldOnTBigObject: Boolean!\n xFieldOnTBigObject: Float!\n yFieldOnTBigObject: String!\n zFieldOnTBigObject: Int!\n}\n\ntype UBigObject {\n aFieldOnUBigObject: String!\n bFieldOnUBigObject: Int!\n cFieldOnUBigObject: Boolean!\n dFieldOnUBigObject: Float!\n eFieldOnUBigObject: String!\n fFieldOnUBigObject: Int!\n gFieldOnUBigObject: Boolean!\n hFieldOnUBigObject: Float!\n iFieldOnUBigObject: String!\n jFieldOnUBigObject: Int!\n kFieldOnUBigObject: Boolean!\n lFieldOnUBigObject: Float!\n mFieldOnUBigObject: String!\n nFieldOnUBigObject: Int!\n oFieldOnUBigObject: Boolean!\n pFieldOnUBigObject: Float!\n qFieldOnUBigObject: String!\n rFieldOnUBigObject: Int!\n sFieldOnUBigObject: Boolean!\n tFieldOnUBigObject: Float!\n uFieldOnUBigObject: String!\n vFieldOnUBigObject: Int!\n wFieldOnUBigObject: Boolean!\n xFieldOnUBigObject: Float!\n yFieldOnUBigObject: String!\n zFieldOnUBigObject: Int!\n}\n\ntype VBigObject {\n aFieldOnVBigObject: String!\n bFieldOnVBigObject: Int!\n cFieldOnVBigObject: Boolean!\n dFieldOnVBigObject: Float!\n eFieldOnVBigObject: String!\n fFieldOnVBigObject: Int!\n gFieldOnVBigObject: Boolean!\n hFieldOnVBigObject: Float!\n iFieldOnVBigObject: String!\n jFieldOnVBigObject: Int!\n kFieldOnVBigObject: Boolean!\n lFieldOnVBigObject: Float!\n mFieldOnVBigObject: String!\n nFieldOnVBigObject: Int!\n oFieldOnVBigObject: Boolean!\n pFieldOnVBigObject: Float!\n qFieldOnVBigObject: String!\n rFieldOnVBigObject: Int!\n sFieldOnVBigObject: Boolean!\n tFieldOnVBigObject: Float!\n uFieldOnVBigObject: String!\n vFieldOnVBigObject: Int!\n wFieldOnVBigObject: Boolean!\n xFieldOnVBigObject: Float!\n yFieldOnVBigObject: String!\n zFieldOnVBigObject: Int!\n}\n\ntype WBigObject {\n aFieldOnWBigObject: String!\n bFieldOnWBigObject: Int!\n cFieldOnWBigObject: Boolean!\n dFieldOnWBigObject: Float!\n eFieldOnWBigObject: String!\n fFieldOnWBigObject: Int!\n gFieldOnWBigObject: Boolean!\n hFieldOnWBigObject: Float!\n iFieldOnWBigObject: String!\n jFieldOnWBigObject: Int!\n kFieldOnWBigObject: Boolean!\n lFieldOnWBigObject: Float!\n mFieldOnWBigObject: String!\n nFieldOnWBigObject: Int!\n oFieldOnWBigObject: Boolean!\n pFieldOnWBigObject: Float!\n qFieldOnWBigObject: String!\n rFieldOnWBigObject: Int!\n sFieldOnWBigObject: Boolean!\n tFieldOnWBigObject: Float!\n uFieldOnWBigObject: String!\n vFieldOnWBigObject: Int!\n wFieldOnWBigObject: Boolean!\n xFieldOnWBigObject: Float!\n yFieldOnWBigObject: String!\n zFieldOnWBigObject: Int!\n}\n\ntype XBigObject {\n aFieldOnXBigObject: String!\n bFieldOnXBigObject: Int!\n cFieldOnXBigObject: Boolean!\n dFieldOnXBigObject: Float!\n eFieldOnXBigObject: String!\n fFieldOnXBigObject: Int!\n gFieldOnXBigObject: Boolean!\n hFieldOnXBigObject: Float!\n iFieldOnXBigObject: String!\n jFieldOnXBigObject: Int!\n kFieldOnXBigObject: Boolean!\n lFieldOnXBigObject: Float!\n mFieldOnXBigObject: String!\n nFieldOnXBigObject: Int!\n oFieldOnXBigObject: Boolean!\n pFieldOnXBigObject: Float!\n qFieldOnXBigObject: String!\n rFieldOnXBigObject: Int!\n sFieldOnXBigObject: Boolean!\n tFieldOnXBigObject: Float!\n uFieldOnXBigObject: String!\n vFieldOnXBigObject: Int!\n wFieldOnXBigObject: Boolean!\n xFieldOnXBigObject: Float!\n yFieldOnXBigObject: String!\n zFieldOnXBigObject: Int!\n}\n\ntype YBigObject {\n aFieldOnYBigObject: String!\n bFieldOnYBigObject: Int!\n cFieldOnYBigObject: Boolean!\n dFieldOnYBigObject: Float!\n eFieldOnYBigObject: String!\n fFieldOnYBigObject: Int!\n gFieldOnYBigObject: Boolean!\n hFieldOnYBigObject: Float!\n iFieldOnYBigObject: String!\n jFieldOnYBigObject: Int!\n kFieldOnYBigObject: Boolean!\n lFieldOnYBigObject: Float!\n mFieldOnYBigObject: String!\n nFieldOnYBigObject: Int!\n oFieldOnYBigObject: Boolean!\n pFieldOnYBigObject: Float!\n qFieldOnYBigObject: String!\n rFieldOnYBigObject: Int!\n sFieldOnYBigObject: Boolean!\n tFieldOnYBigObject: Float!\n uFieldOnYBigObject: String!\n vFieldOnYBigObject: Int!\n wFieldOnYBigObject: Boolean!\n xFieldOnYBigObject: Float!\n yFieldOnYBigObject: String!\n zFieldOnYBigObject: Int!\n}\n\ntype ZBigObject {\n aFieldOnZBigObject: String!\n bFieldOnZBigObject: Int!\n cFieldOnZBigObject: Boolean!\n dFieldOnZBigObject: Float!\n eFieldOnZBigObject: String!\n fFieldOnZBigObject: Int!\n gFieldOnZBigObject: Boolean!\n hFieldOnZBigObject: Float!\n iFieldOnZBigObject: String!\n jFieldOnZBigObject: Int!\n kFieldOnZBigObject: Boolean!\n lFieldOnZBigObject: Float!\n mFieldOnZBigObject: String!\n nFieldOnZBigObject: Int!\n oFieldOnZBigObject: Boolean!\n pFieldOnZBigObject: Float!\n qFieldOnZBigObject: String!\n rFieldOnZBigObject: Int!\n sFieldOnZBigObject: Boolean!\n tFieldOnZBigObject: Float!\n uFieldOnZBigObject: String!\n vFieldOnZBigObject: Int!\n wFieldOnZBigObject: Boolean!\n xFieldOnZBigObject: Float!\n yFieldOnZBigObject: String!\n zFieldOnZBigObject: Int!\n}\n\ninput ProjectInput {\n name: String!\n description: String\n startDate: String\n endDate: String\n status: ProjectStatus!\n}\n\ninput MilestoneInput {\n projectId: ID!\n name: String!\n description: String\n dueDate: String\n status: MilestoneStatus!\n}\n\ninput TaskInput {\n projectId: ID!\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float\n}\n\ninterface Node {\n id: ID!\n}\n\ninterface Timestamped {\n startDate: String\n endDate: String\n}\n\ninterface Assignable {\n assigneeId: Int\n}\n\nenum ProjectStatus {\n PLANNING\n ACTIVE\n COMPLETED\n ON_HOLD\n}\n\nenum MilestoneStatus {\n PENDING\n IN_PROGRESS\n COMPLETED\n DELAYED\n}\n\nenum TaskStatus {\n TODO\n IN_PROGRESS\n REVIEW\n COMPLETED\n BLOCKED\n}\n\nenum TaskPriority {\n LOW\n MEDIUM\n HIGH\n URGENT\n}\n\nenum ProjectUpdateType {\n STATUS_CHANGE\n MILESTONE_ADDED\n TASK_ASSIGNED\n PROGRESS_UPDATE\n TEAM_CHANGE\n}\n\nunion ProjectResource = Employee | Product | Milestone | Task\n\nunion ProjectSearchResult = Project | Milestone | Task\n\nunion ProjectActivity = ProjectUpdate | Milestone | Task\n\ntype Product {\n upc: String!\n projects: [Project!]\n featureMatrix: [[String]]\n}\n\ntype Engineer implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n engineerType: EngineerType!\n}\n\ntype Marketer implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n}\n\ntype Operator implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n operatorType: [OperationType!]!\n}\n\ntype Employee implements Identifiable {\n details: Details\n id: Int!\n tag: String!\n role: RoleType!\n notes: String\n updatedAt: String!\n startDate: String!\n currentMood: Mood!\n derivedMood: Mood!\n isAvailable: Boolean\n rootFieldThrowsError: String\n rootFieldErrorWrapper: ErrorWrapper\n hobbies: [Hobby!]\n products: [ProductName!]!\n fieldThrowsError: String\n projects: [Project!]\n assignedTasks: [Task!]!\n completedTasks: [Task!]!\n skills: [String]\n certifications: [String!]\n projectHistory: [[Project!]]!\n currentWorkload(includeCompleted: Boolean, projectId: ID): Int!\n averageTaskCompletionDays(projectId: ID, priority: TaskPriority): Float\n}\n\ntype Cosmo implements IProduct {\n upc: ID!\n engineers: [Employee!]!\n lead: Employee!\n isLeadAvailable: Boolean\n name: ProductName!\n repositoryURL: String!\n}\n\ntype SDK implements IProduct {\n upc: ID!\n engineers: [Employee!]!\n owner: Employee!\n unicode: String!\n clientLanguages: [ProgrammingLanguage!]!\n}\n\ninterface Pet implements Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Alligator implements Pet & Animal {\n class: Class!\n dangerous: String!\n gender: Gender!\n name: String!\n}\n\ntype Cat implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n type: CatType!\n}\n\ntype Dog implements Pet & Animal {\n breed: DogBreed!\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Mouse implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Pony implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Exercise implements Hobby {\n employees: [Employee!]!\n category: ExerciseType!\n}\n\ntype Flying implements Experience & Hobby {\n employees: [Employee!]!\n planeModels: [String!]!\n yearsOfExperience: Float!\n}\n\ntype Gaming implements Experience & Hobby {\n employees: [Employee!]!\n genres: [GameGenre!]!\n name: String!\n yearsOfExperience: Float!\n}\n\ntype Other implements Hobby {\n employees: [Employee!]!\n name: String!\n}\n\ntype Programming implements Hobby {\n employees: [Employee!]!\n languages: [ProgrammingLanguage!]!\n}\n\ntype Travelling implements Hobby {\n employees: [Employee!]!\n countriesLived: [Country!]!\n}\n\ntype DirectiveFact implements TopSecretFact {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype EntityFact implements TopSecretFact {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype MiscellaneousFact implements TopSecretFact {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype Project implements Node & Timestamped {\n id: ID!\n name: String!\n description: String\n startDate: String\n endDate: String\n status: ProjectStatus!\n teamMembers: [Employee!]!\n relatedProducts: [Product!]!\n milestoneIds: [String!]\n milestones: [Milestone!]!\n tasks: [Task!]!\n progress: Float\n tags: [String]\n alternativeProjects: [Project]\n dependencies: [Project!]\n resourceGroups: [[ProjectResource!]!]!\n tasksByPhase: [[Task!]]!\n milestoneGroups: [[Milestone]]\n priorityMatrix: [[[Task!]!]!]\n subProjects(includeArchived: Boolean): [Project!]!\n filteredTasks(status: TaskStatus, priority: TaskPriority, limit: Int): [Task!]!\n completionRate(includeSubtasks: Boolean): Float!\n estimatedDaysRemaining(fromDate: String): Int\n criticalDeadline(withinDays: Int): Timestamped\n topPriorityItem(category: String): ProjectSearchResult\n}\n\ntype Milestone implements Node & Timestamped {\n id: ID!\n projectId: ID!\n name: String!\n description: String\n startDate: String\n endDate: String\n status: MilestoneStatus!\n completionPercentage: Float\n dependencies: [Milestone]!\n subtasks: [Task]\n reviewers: [Employee!]\n isAtRisk(threshold: Float): Boolean!\n daysUntilDue(fromDate: String): Int\n}\n\ntype Task implements Node & Assignable {\n id: ID!\n projectId: ID!\n milestoneId: ID\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float @deprecated(reason: \"No more estimations!\")\n actualHours: Float\n createdAt: String\n completedAt: String\n labels: [String]\n subtasks: [Task!]\n dependencies: [Task]!\n attachmentUrls: [String!]!\n reviewerIds: [Int]\n isBlocked(checkDependencies: Boolean): Boolean!\n totalEffort(includeSubtasks: Boolean): Float\n}\n\ntype ProjectUpdate implements Node {\n id: ID!\n projectId: ID!\n updatedById: Int!\n updateType: ProjectUpdateType!\n description: String!\n timestamp: String!\n metadata: String\n}" }, "version": "00000000-0000-0000-0000-000000000000", "subgraphs": [ diff --git a/router-tests/testenv/testdata/configWithPlugins.json b/router-tests/testenv/testdata/configWithPlugins.json index 4e72d2889a..93fbf4b31c 100644 --- a/router-tests/testenv/testdata/configWithPlugins.json +++ b/router-tests/testenv/testdata/configWithPlugins.json @@ -1270,6 +1270,7 @@ "tasksByPhase", "milestoneGroups", "priorityMatrix", + "subProjects", "filteredTasks", "completionRate", "estimatedDaysRemaining", @@ -1356,9 +1357,9 @@ "subscription": { "enabled": true }, "federation": { "enabled": true, - "serviceSdl": "extend schema\n@link(url: \"https://specs.apollo.dev/federation/v2.5\", import: [\"@authenticated\", \"@composeDirective\", \"@external\", \"@extends\", \"@inaccessible\", \"@interfaceObject\", \"@override\", \"@provides\", \"@key\", \"@requires\", \"@requiresScopes\", \"@shareable\", \"@tag\"])\n\nschema {\n query: Query\n mutation: Mutation\n}\n\ntype Query {\n projects: [Project!]!\n project(id: ID!): Project\n projectStatuses: [ProjectStatus!]!\n projectsByStatus(status: ProjectStatus!): [Project!]!\n projectResources(projectId: ID!): [ProjectResource!]!\n searchProjects(query: String!): [ProjectSearchResult!]!\n milestones(projectId: ID!): [Milestone!]!\n tasks(projectId: ID!): [Task!]!\n projectActivities(projectId: ID!): [ProjectActivity!]!\n\n # New query fields with different list patterns\n projectTags: [String] # nullable list of nullable strings\n archivedProjects: [Project]! # non-nullable list of nullable projects\n tasksByPriority(projectId: ID!): [[Task]] # nullable list of nullable lists\n resourceMatrix(projectId: ID!): [[ProjectResource!]!]! # non-nullable list of non-nullable lists\n\n # query to simulate that the service goes down\n killService: Boolean!\n panic: Boolean!\n\n nodesById(id: ID!): [Node!]!\n}\n\ntype Mutation {\n addProject(project: ProjectInput!): Project!\n addMilestone(milestone: MilestoneInput!): Milestone!\n addTask(task: TaskInput!): Task!\n updateProjectStatus(projectId: ID!, status: ProjectStatus!): ProjectUpdate!\n}\n\ninput ProjectInput {\n name: String!\n description: String\n startDate: String # ISO date\n endDate: String # ISO date\n status: ProjectStatus!\n}\n\ninput MilestoneInput {\n projectId: ID!\n name: String!\n description: String\n dueDate: String # ISO date\n status: MilestoneStatus!\n}\n\ninput TaskInput {\n projectId: ID!\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float\n}\n\n# Interfaces\ninterface Node {\n id: ID!\n}\n\ninterface Timestamped {\n startDate: String\n endDate: String\n}\n\ninterface Assignable {\n assigneeId: Int\n}\n\n# Updated Project type implementing interfaces\ntype Project implements Node & Timestamped @key(fields: \"id\") {\n id: ID!\n name: String!\n description: String\n startDate: String # ISO date\n endDate: String # ISO date\n status: ProjectStatus!\n # Federated references:\n teamMembers: [Employee!]!\n relatedProducts: [Product!]! # from products subgraph\n # Project milestones or checkpoints\n milestoneIds: [String!] # Array of milestone identifiers\n\n # New fields for extended functionality\n milestones: [Milestone!]!\n tasks: [Task!]!\n progress: Float # Completion percentage\n\n # New fields with various list patterns for testing\n tags: [String] # nullable list of nullable tags\n alternativeProjects: [Project] # nullable list of nullable projects\n dependencies: [Project!] # nullable list of non-nullable projects\n resourceGroups: [[ProjectResource!]!]! # nested lists: non-nullable list of non-nullable lists\n tasksByPhase: [[Task!]]! # nested lists: non-nullable list of nullable lists\n milestoneGroups: [[Milestone]] # nested lists: nullable list of nullable lists\n priorityMatrix: [[[Task!]!]!] # triple nested: non-nullable list of non-nullable lists of non-nullable lists\n\n # Computed fields with @connect__fieldResolver\n filteredTasks(status: TaskStatus, priority: TaskPriority, limit: Int): [Task!]! @connect__fieldResolver(context: \"id\")\n completionRate(includeSubtasks: Boolean): Float! @connect__fieldResolver(context: \"id startDate endDate status\")\n estimatedDaysRemaining(fromDate: String): Int @connect__fieldResolver(context: \"id endDate status\")\n criticalDeadline(withinDays: Int): Timestamped @connect__fieldResolver(context: \"id status milestones\")\n topPriorityItem(category: String): ProjectSearchResult @connect__fieldResolver(context: \"id status\")\n}\n\n# New types - simplified with ID references only\ntype Milestone implements Node & Timestamped @key(fields: \"id\") {\n id: ID!\n projectId: ID!\n name: String!\n description: String\n startDate: String # ISO date (when milestone work starts)\n endDate: String # ISO date (milestone due date)\n status: MilestoneStatus!\n completionPercentage: Float\n\n # New fields with different list patterns\n dependencies: [Milestone]! # non-nullable list of nullable milestones\n subtasks: [Task] # nullable list of nullable tasks\n reviewers: [Employee!] # nullable list of non-nullable employees\n\n # Computed fields with @connect__fieldResolver\n isAtRisk(threshold: Float): Boolean! @connect__fieldResolver(context: \"id endDate status completionPercentage\")\n daysUntilDue(fromDate: String): Int @connect__fieldResolver(context: \"endDate\")\n}\n\ntype Task implements Node & Assignable @key(fields: \"id\") {\n id: ID!\n projectId: ID!\n milestoneId: ID\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float @deprecated(reason: \"No more estimations!\")\n actualHours: Float\n createdAt: String # ISO date\n completedAt: String # ISO date\n\n # New fields with different list patterns\n labels: [String] # nullable list of nullable labels\n subtasks: [Task!] # nullable list of non-nullable subtasks\n dependencies: [Task]! # non-nullable list of nullable tasks\n attachmentUrls: [String!]! # non-nullable list of non-nullable URLs\n reviewerIds: [Int] # nullable list of nullable reviewer IDs\n\n # Computed fields with @connect__fieldResolver\n isBlocked(checkDependencies: Boolean): Boolean! @connect__fieldResolver(context: \"id status\")\n totalEffort(includeSubtasks: Boolean): Float @connect__fieldResolver(context: \"id estimatedHours actualHours\")\n}\n\ntype ProjectUpdate implements Node {\n id: ID!\n projectId: ID!\n updatedById: Int!\n updateType: ProjectUpdateType!\n description: String!\n timestamp: String! # ISO date\n metadata: String # JSON metadata\n}\n\n# Enums\nenum ProjectStatus {\n PLANNING\n ACTIVE\n COMPLETED\n ON_HOLD\n}\n\nenum MilestoneStatus {\n PENDING\n IN_PROGRESS\n COMPLETED\n DELAYED\n}\n\nenum TaskStatus {\n TODO\n IN_PROGRESS\n REVIEW\n COMPLETED\n BLOCKED\n}\n\nenum TaskPriority {\n LOW\n MEDIUM\n HIGH\n URGENT\n}\n\nenum ProjectUpdateType {\n STATUS_CHANGE\n MILESTONE_ADDED\n TASK_ASSIGNED\n PROGRESS_UPDATE\n TEAM_CHANGE\n}\n\n# Unions\nunion ProjectResource = Employee | Product | Milestone | Task\n\nunion ProjectSearchResult = Project | Milestone | Task\n\nunion ProjectActivity = ProjectUpdate | Milestone | Task\n\n# Federated types (unchanged)\ntype Employee @key(fields: \"id\") {\n id: Int!\n # New field resolved by this subgraph:\n projects: [Project!]\n # New fields for extended functionality\n assignedTasks: [Task!]!\n completedTasks: [Task!]!\n\n # New fields with different list patterns\n skills: [String] # nullable list of nullable skills\n certifications: [String!] # nullable list of non-nullable certifications\n projectHistory: [[Project!]]! # non-nullable list of nullable lists of non-nullable projects\n\n # Computed fields with @connect__fieldResolver\n currentWorkload(includeCompleted: Boolean, projectId: ID): Int! @connect__fieldResolver(context: \"id\")\n averageTaskCompletionDays(projectId: ID, priority: TaskPriority): Float @connect__fieldResolver(context: \"id\")\n}\n\ntype Product @key(fields: \"upc\") {\n upc: String!\n # Projects contributing to this product:\n projects: [Project!]\n\n # New field with nested lists\n featureMatrix: [[String]] # nullable list of nullable lists of nullable features\n}\n" + "serviceSdl": "extend schema\n@link(url: \"https://specs.apollo.dev/federation/v2.5\", import: [\"@authenticated\", \"@composeDirective\", \"@external\", \"@extends\", \"@inaccessible\", \"@interfaceObject\", \"@override\", \"@provides\", \"@key\", \"@requires\", \"@requiresScopes\", \"@shareable\", \"@tag\"])\n\nschema {\n query: Query\n mutation: Mutation\n}\n\ntype Query {\n projects: [Project!]!\n project(id: ID!): Project\n projectStatuses: [ProjectStatus!]!\n projectsByStatus(status: ProjectStatus!): [Project!]!\n projectResources(projectId: ID!): [ProjectResource!]!\n searchProjects(query: String!): [ProjectSearchResult!]!\n milestones(projectId: ID!): [Milestone!]!\n tasks(projectId: ID!): [Task!]!\n projectActivities(projectId: ID!): [ProjectActivity!]!\n\n # New query fields with different list patterns\n projectTags: [String] # nullable list of nullable strings\n archivedProjects: [Project]! # non-nullable list of nullable projects\n tasksByPriority(projectId: ID!): [[Task]] # nullable list of nullable lists\n resourceMatrix(projectId: ID!): [[ProjectResource!]!]! # non-nullable list of non-nullable lists\n\n # query to simulate that the service goes down\n killService: Boolean!\n panic: Boolean!\n\n nodesById(id: ID!): [Node!]!\n}\n\ntype Mutation {\n addProject(project: ProjectInput!): Project!\n addMilestone(milestone: MilestoneInput!): Milestone!\n addTask(task: TaskInput!): Task!\n updateProjectStatus(projectId: ID!, status: ProjectStatus!): ProjectUpdate!\n}\n\ninput ProjectInput {\n name: String!\n description: String\n startDate: String # ISO date\n endDate: String # ISO date\n status: ProjectStatus!\n}\n\ninput MilestoneInput {\n projectId: ID!\n name: String!\n description: String\n dueDate: String # ISO date\n status: MilestoneStatus!\n}\n\ninput TaskInput {\n projectId: ID!\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float\n}\n\n# Interfaces\ninterface Node {\n id: ID!\n}\n\ninterface Timestamped {\n startDate: String\n endDate: String\n}\n\ninterface Assignable {\n assigneeId: Int\n}\n\n# Updated Project type implementing interfaces\ntype Project implements Node & Timestamped @key(fields: \"id\") {\n id: ID!\n name: String!\n description: String\n startDate: String # ISO date\n endDate: String # ISO date\n status: ProjectStatus!\n # Federated references:\n teamMembers: [Employee!]!\n relatedProducts: [Product!]! # from products subgraph\n # Project milestones or checkpoints\n milestoneIds: [String!] # Array of milestone identifiers\n\n # New fields for extended functionality\n milestones: [Milestone!]!\n tasks: [Task!]!\n progress: Float # Completion percentage\n\n # New fields with various list patterns for testing\n tags: [String] # nullable list of nullable tags\n alternativeProjects: [Project] # nullable list of nullable projects\n dependencies: [Project!] # nullable list of non-nullable projects\n resourceGroups: [[ProjectResource!]!]! # nested lists: non-nullable list of non-nullable lists\n tasksByPhase: [[Task!]]! # nested lists: non-nullable list of nullable lists\n milestoneGroups: [[Milestone]] # nested lists: nullable list of nullable lists\n priorityMatrix: [[[Task!]!]!] # triple nested: non-nullable list of non-nullable lists of non-nullable lists\n\n # Recursive field resolver for project hierarchy\n subProjects(includeArchived: Boolean): [Project!]! @connect__fieldResolver(context: \"id name status\")\n\n # Computed fields with @connect__fieldResolver\n filteredTasks(status: TaskStatus, priority: TaskPriority, limit: Int): [Task!]! @connect__fieldResolver(context: \"id\")\n completionRate(includeSubtasks: Boolean): Float! @connect__fieldResolver(context: \"id startDate endDate status\")\n estimatedDaysRemaining(fromDate: String): Int @connect__fieldResolver(context: \"id endDate status\")\n criticalDeadline(withinDays: Int): Timestamped @connect__fieldResolver(context: \"id status milestones\")\n topPriorityItem(category: String): ProjectSearchResult @connect__fieldResolver(context: \"id status\")\n}\n\n# New types - simplified with ID references only\ntype Milestone implements Node & Timestamped @key(fields: \"id\") {\n id: ID!\n projectId: ID!\n name: String!\n description: String\n startDate: String # ISO date (when milestone work starts)\n endDate: String # ISO date (milestone due date)\n status: MilestoneStatus!\n completionPercentage: Float\n\n # New fields with different list patterns\n dependencies: [Milestone]! # non-nullable list of nullable milestones\n subtasks: [Task] # nullable list of nullable tasks\n reviewers: [Employee!] # nullable list of non-nullable employees\n\n # Computed fields with @connect__fieldResolver\n isAtRisk(threshold: Float): Boolean! @connect__fieldResolver(context: \"id endDate status completionPercentage\")\n daysUntilDue(fromDate: String): Int @connect__fieldResolver(context: \"endDate\")\n}\n\ntype Task implements Node & Assignable @key(fields: \"id\") {\n id: ID!\n projectId: ID!\n milestoneId: ID\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float @deprecated(reason: \"No more estimations!\")\n actualHours: Float\n createdAt: String # ISO date\n completedAt: String # ISO date\n\n # New fields with different list patterns\n labels: [String] # nullable list of nullable labels\n subtasks: [Task!] # nullable list of non-nullable subtasks\n dependencies: [Task]! # non-nullable list of nullable tasks\n attachmentUrls: [String!]! # non-nullable list of non-nullable URLs\n reviewerIds: [Int] # nullable list of nullable reviewer IDs\n\n # Computed fields with @connect__fieldResolver\n isBlocked(checkDependencies: Boolean): Boolean! @connect__fieldResolver(context: \"id status\")\n totalEffort(includeSubtasks: Boolean): Float @connect__fieldResolver(context: \"id estimatedHours actualHours\")\n}\n\ntype ProjectUpdate implements Node {\n id: ID!\n projectId: ID!\n updatedById: Int!\n updateType: ProjectUpdateType!\n description: String!\n timestamp: String! # ISO date\n metadata: String # JSON metadata\n}\n\n# Enums\nenum ProjectStatus {\n PLANNING\n ACTIVE\n COMPLETED\n ON_HOLD\n}\n\nenum MilestoneStatus {\n PENDING\n IN_PROGRESS\n COMPLETED\n DELAYED\n}\n\nenum TaskStatus {\n TODO\n IN_PROGRESS\n REVIEW\n COMPLETED\n BLOCKED\n}\n\nenum TaskPriority {\n LOW\n MEDIUM\n HIGH\n URGENT\n}\n\nenum ProjectUpdateType {\n STATUS_CHANGE\n MILESTONE_ADDED\n TASK_ASSIGNED\n PROGRESS_UPDATE\n TEAM_CHANGE\n}\n\n# Unions\nunion ProjectResource = Employee | Product | Milestone | Task\n\nunion ProjectSearchResult = Project | Milestone | Task\n\nunion ProjectActivity = ProjectUpdate | Milestone | Task\n\n# Federated types (unchanged)\ntype Employee @key(fields: \"id\") {\n id: Int!\n # New field resolved by this subgraph:\n projects: [Project!]\n # New fields for extended functionality\n assignedTasks: [Task!]!\n completedTasks: [Task!]!\n\n # New fields with different list patterns\n skills: [String] # nullable list of nullable skills\n certifications: [String!] # nullable list of non-nullable certifications\n projectHistory: [[Project!]]! # non-nullable list of nullable lists of non-nullable projects\n\n # Computed fields with @connect__fieldResolver\n currentWorkload(includeCompleted: Boolean, projectId: ID): Int! @connect__fieldResolver(context: \"id\")\n averageTaskCompletionDays(projectId: ID, priority: TaskPriority): Float @connect__fieldResolver(context: \"id\")\n}\n\ntype Product @key(fields: \"upc\") {\n upc: String!\n # Projects contributing to this product:\n projects: [Project!]\n\n # New field with nested lists\n featureMatrix: [[String]] # nullable list of nullable lists of nullable features\n}\n" }, - "upstreamSchema": { "key": "52c91cae469d049c423debadfdfd37a91cfcdd18" }, + "upstreamSchema": { "key": "34e8a6b5fb00b0e37f716f0005c5bf6eee09c65c" }, "grpc": { "mapping": { "version": 1, @@ -1691,6 +1692,11 @@ { "original": "tasksByPhase", "mapped": "tasks_by_phase" }, { "original": "milestoneGroups", "mapped": "milestone_groups" }, { "original": "priorityMatrix", "mapped": "priority_matrix" }, + { + "original": "subProjects", + "mapped": "sub_projects", + "argumentMappings": [{ "original": "includeArchived", "mapped": "include_archived" }] + }, { "original": "filteredTasks", "mapped": "filtered_tasks", @@ -1879,6 +1885,20 @@ } ], "resolveMappings": [ + { + "type": "LOOKUP_TYPE_RESOLVE", + "lookupMapping": { + "type": "Project", + "fieldMapping": { + "original": "subProjects", + "mapped": "sub_projects", + "argumentMappings": [{ "original": "includeArchived", "mapped": "include_archived" }] + } + }, + "rpc": "ResolveProjectSubProjects", + "request": "ResolveProjectSubProjectsRequest", + "response": "ResolveProjectSubProjectsResponse" + }, { "type": "LOOKUP_TYPE_RESOLVE", "lookupMapping": { @@ -2045,7 +2065,7 @@ } ] }, - "protoSchema": "syntax = \"proto3\";\npackage service;\n\noption go_package = \"github.com/wundergraph/cosmo/demo/pkg/subgraphs/projects\";\n\nimport \"google/protobuf/wrappers.proto\";\n\n// Service definition for ProjectsService\nservice ProjectsService {\n // Lookup Employee entity by id\n rpc LookupEmployeeById(LookupEmployeeByIdRequest) returns (LookupEmployeeByIdResponse) {}\n // Lookup Milestone entity by id\n rpc LookupMilestoneById(LookupMilestoneByIdRequest) returns (LookupMilestoneByIdResponse) {}\n // Lookup Product entity by upc\n rpc LookupProductByUpc(LookupProductByUpcRequest) returns (LookupProductByUpcResponse) {}\n // Lookup Project entity by id\n rpc LookupProjectById(LookupProjectByIdRequest) returns (LookupProjectByIdResponse) {}\n // Lookup Task entity by id\n rpc LookupTaskById(LookupTaskByIdRequest) returns (LookupTaskByIdResponse) {}\n rpc MutationAddMilestone(MutationAddMilestoneRequest) returns (MutationAddMilestoneResponse) {}\n rpc MutationAddProject(MutationAddProjectRequest) returns (MutationAddProjectResponse) {}\n rpc MutationAddTask(MutationAddTaskRequest) returns (MutationAddTaskResponse) {}\n rpc MutationUpdateProjectStatus(MutationUpdateProjectStatusRequest) returns (MutationUpdateProjectStatusResponse) {}\n rpc QueryArchivedProjects(QueryArchivedProjectsRequest) returns (QueryArchivedProjectsResponse) {}\n rpc QueryKillService(QueryKillServiceRequest) returns (QueryKillServiceResponse) {}\n rpc QueryMilestones(QueryMilestonesRequest) returns (QueryMilestonesResponse) {}\n rpc QueryNodesById(QueryNodesByIdRequest) returns (QueryNodesByIdResponse) {}\n rpc QueryPanic(QueryPanicRequest) returns (QueryPanicResponse) {}\n rpc QueryProject(QueryProjectRequest) returns (QueryProjectResponse) {}\n rpc QueryProjectActivities(QueryProjectActivitiesRequest) returns (QueryProjectActivitiesResponse) {}\n rpc QueryProjectResources(QueryProjectResourcesRequest) returns (QueryProjectResourcesResponse) {}\n rpc QueryProjectStatuses(QueryProjectStatusesRequest) returns (QueryProjectStatusesResponse) {}\n rpc QueryProjectTags(QueryProjectTagsRequest) returns (QueryProjectTagsResponse) {}\n rpc QueryProjects(QueryProjectsRequest) returns (QueryProjectsResponse) {}\n rpc QueryProjectsByStatus(QueryProjectsByStatusRequest) returns (QueryProjectsByStatusResponse) {}\n rpc QueryResourceMatrix(QueryResourceMatrixRequest) returns (QueryResourceMatrixResponse) {}\n rpc QuerySearchProjects(QuerySearchProjectsRequest) returns (QuerySearchProjectsResponse) {}\n rpc QueryTasks(QueryTasksRequest) returns (QueryTasksResponse) {}\n rpc QueryTasksByPriority(QueryTasksByPriorityRequest) returns (QueryTasksByPriorityResponse) {}\n rpc ResolveEmployeeAverageTaskCompletionDays(ResolveEmployeeAverageTaskCompletionDaysRequest) returns (ResolveEmployeeAverageTaskCompletionDaysResponse) {}\n rpc ResolveEmployeeCurrentWorkload(ResolveEmployeeCurrentWorkloadRequest) returns (ResolveEmployeeCurrentWorkloadResponse) {}\n rpc ResolveMilestoneDaysUntilDue(ResolveMilestoneDaysUntilDueRequest) returns (ResolveMilestoneDaysUntilDueResponse) {}\n rpc ResolveMilestoneIsAtRisk(ResolveMilestoneIsAtRiskRequest) returns (ResolveMilestoneIsAtRiskResponse) {}\n rpc ResolveProjectCompletionRate(ResolveProjectCompletionRateRequest) returns (ResolveProjectCompletionRateResponse) {}\n rpc ResolveProjectCriticalDeadline(ResolveProjectCriticalDeadlineRequest) returns (ResolveProjectCriticalDeadlineResponse) {}\n rpc ResolveProjectEstimatedDaysRemaining(ResolveProjectEstimatedDaysRemainingRequest) returns (ResolveProjectEstimatedDaysRemainingResponse) {}\n rpc ResolveProjectFilteredTasks(ResolveProjectFilteredTasksRequest) returns (ResolveProjectFilteredTasksResponse) {}\n rpc ResolveProjectTopPriorityItem(ResolveProjectTopPriorityItemRequest) returns (ResolveProjectTopPriorityItemResponse) {}\n rpc ResolveTaskIsBlocked(ResolveTaskIsBlockedRequest) returns (ResolveTaskIsBlockedResponse) {}\n rpc ResolveTaskTotalEffort(ResolveTaskTotalEffortRequest) returns (ResolveTaskTotalEffortResponse) {}\n}\n\n// Wrapper message for a list of Employee.\nmessage ListOfEmployee {\n message List {\n repeated Employee items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Int.\nmessage ListOfInt {\n message List {\n repeated int32 items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Task.\nmessage ListOfListOfListOfTask {\n message List {\n repeated ListOfListOfTask items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Milestone.\nmessage ListOfListOfMilestone {\n message List {\n repeated ListOfMilestone items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Project.\nmessage ListOfListOfProject {\n message List {\n repeated ListOfProject items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of ProjectResource.\nmessage ListOfListOfProjectResource {\n message List {\n repeated ListOfProjectResource items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of String.\nmessage ListOfListOfString {\n message List {\n repeated ListOfString items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Task.\nmessage ListOfListOfTask {\n message List {\n repeated ListOfTask items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Milestone.\nmessage ListOfMilestone {\n message List {\n repeated Milestone items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Project.\nmessage ListOfProject {\n message List {\n repeated Project items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of ProjectResource.\nmessage ListOfProjectResource {\n message List {\n repeated ProjectResource items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of String.\nmessage ListOfString {\n message List {\n repeated string items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Task.\nmessage ListOfTask {\n message List {\n repeated Task items = 1;\n }\n List list = 1;\n}\n// Key message for Project entity lookup\nmessage LookupProjectByIdRequestKey {\n // Key field for Project entity lookup.\n string id = 1;\n}\n\n// Request message for Project entity lookup.\nmessage LookupProjectByIdRequest {\n /*\n * List of keys to look up Project entities.\n * Order matters - each key maps to one entity in LookupProjectByIdResponse.\n */\n repeated LookupProjectByIdRequestKey keys = 1;\n}\n\n// Response message for Project entity lookup.\nmessage LookupProjectByIdResponse {\n /*\n * List of Project entities in the same order as the keys in LookupProjectByIdRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Project result = 1;\n}\n\n// Key message for Milestone entity lookup\nmessage LookupMilestoneByIdRequestKey {\n // Key field for Milestone entity lookup.\n string id = 1;\n}\n\n// Request message for Milestone entity lookup.\nmessage LookupMilestoneByIdRequest {\n /*\n * List of keys to look up Milestone entities.\n * Order matters - each key maps to one entity in LookupMilestoneByIdResponse.\n */\n repeated LookupMilestoneByIdRequestKey keys = 1;\n}\n\n// Response message for Milestone entity lookup.\nmessage LookupMilestoneByIdResponse {\n /*\n * List of Milestone entities in the same order as the keys in LookupMilestoneByIdRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Milestone result = 1;\n}\n\n// Key message for Task entity lookup\nmessage LookupTaskByIdRequestKey {\n // Key field for Task entity lookup.\n string id = 1;\n}\n\n// Request message for Task entity lookup.\nmessage LookupTaskByIdRequest {\n /*\n * List of keys to look up Task entities.\n * Order matters - each key maps to one entity in LookupTaskByIdResponse.\n */\n repeated LookupTaskByIdRequestKey keys = 1;\n}\n\n// Response message for Task entity lookup.\nmessage LookupTaskByIdResponse {\n /*\n * List of Task entities in the same order as the keys in LookupTaskByIdRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Task result = 1;\n}\n\n// Key message for Employee entity lookup\nmessage LookupEmployeeByIdRequestKey {\n // Key field for Employee entity lookup.\n string id = 1;\n}\n\n// Request message for Employee entity lookup.\nmessage LookupEmployeeByIdRequest {\n /*\n * List of keys to look up Employee entities.\n * Order matters - each key maps to one entity in LookupEmployeeByIdResponse.\n */\n repeated LookupEmployeeByIdRequestKey keys = 1;\n}\n\n// Response message for Employee entity lookup.\nmessage LookupEmployeeByIdResponse {\n /*\n * List of Employee entities in the same order as the keys in LookupEmployeeByIdRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Employee result = 1;\n}\n\n// Key message for Product entity lookup\nmessage LookupProductByUpcRequestKey {\n // Key field for Product entity lookup.\n string upc = 1;\n}\n\n// Request message for Product entity lookup.\nmessage LookupProductByUpcRequest {\n /*\n * List of keys to look up Product entities.\n * Order matters - each key maps to one entity in LookupProductByUpcResponse.\n */\n repeated LookupProductByUpcRequestKey keys = 1;\n}\n\n// Response message for Product entity lookup.\nmessage LookupProductByUpcResponse {\n /*\n * List of Product entities in the same order as the keys in LookupProductByUpcRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Product result = 1;\n}\n\n// Request message for projects operation.\nmessage QueryProjectsRequest {\n}\n// Response message for projects operation.\nmessage QueryProjectsResponse {\n repeated Project projects = 1;\n}\n// Request message for project operation.\nmessage QueryProjectRequest {\n string id = 1;\n}\n// Response message for project operation.\nmessage QueryProjectResponse {\n Project project = 1;\n}\n// Request message for projectStatuses operation.\nmessage QueryProjectStatusesRequest {\n}\n// Response message for projectStatuses operation.\nmessage QueryProjectStatusesResponse {\n repeated ProjectStatus project_statuses = 1;\n}\n// Request message for projectsByStatus operation.\nmessage QueryProjectsByStatusRequest {\n ProjectStatus status = 1;\n}\n// Response message for projectsByStatus operation.\nmessage QueryProjectsByStatusResponse {\n repeated Project projects_by_status = 1;\n}\n// Request message for projectResources operation.\nmessage QueryProjectResourcesRequest {\n string project_id = 1;\n}\n// Response message for projectResources operation.\nmessage QueryProjectResourcesResponse {\n repeated ProjectResource project_resources = 1;\n}\n// Request message for searchProjects operation.\nmessage QuerySearchProjectsRequest {\n string query = 1;\n}\n// Response message for searchProjects operation.\nmessage QuerySearchProjectsResponse {\n repeated ProjectSearchResult search_projects = 1;\n}\n// Request message for milestones operation.\nmessage QueryMilestonesRequest {\n string project_id = 1;\n}\n// Response message for milestones operation.\nmessage QueryMilestonesResponse {\n repeated Milestone milestones = 1;\n}\n// Request message for tasks operation.\nmessage QueryTasksRequest {\n string project_id = 1;\n}\n// Response message for tasks operation.\nmessage QueryTasksResponse {\n repeated Task tasks = 1;\n}\n// Request message for projectActivities operation.\nmessage QueryProjectActivitiesRequest {\n string project_id = 1;\n}\n// Response message for projectActivities operation.\nmessage QueryProjectActivitiesResponse {\n repeated ProjectActivity project_activities = 1;\n}\n// Request message for projectTags operation.\nmessage QueryProjectTagsRequest {\n}\n// Response message for projectTags operation.\nmessage QueryProjectTagsResponse {\n ListOfString project_tags = 1;\n}\n// Request message for archivedProjects operation.\nmessage QueryArchivedProjectsRequest {\n}\n// Response message for archivedProjects operation.\nmessage QueryArchivedProjectsResponse {\n repeated Project archived_projects = 1;\n}\n// Request message for tasksByPriority operation.\nmessage QueryTasksByPriorityRequest {\n string project_id = 1;\n}\n// Response message for tasksByPriority operation.\nmessage QueryTasksByPriorityResponse {\n ListOfListOfTask tasks_by_priority = 1;\n}\n// Request message for resourceMatrix operation.\nmessage QueryResourceMatrixRequest {\n string project_id = 1;\n}\n// Response message for resourceMatrix operation.\nmessage QueryResourceMatrixResponse {\n ListOfListOfProjectResource resource_matrix = 1;\n}\n// Request message for killService operation.\nmessage QueryKillServiceRequest {\n}\n// Response message for killService operation.\nmessage QueryKillServiceResponse {\n bool kill_service = 1;\n}\n// Request message for panic operation.\nmessage QueryPanicRequest {\n}\n// Response message for panic operation.\nmessage QueryPanicResponse {\n bool panic = 1;\n}\n// Request message for nodesById operation.\nmessage QueryNodesByIdRequest {\n string id = 1;\n}\n// Response message for nodesById operation.\nmessage QueryNodesByIdResponse {\n repeated Node nodes_by_id = 1;\n}\n// Request message for addProject operation.\nmessage MutationAddProjectRequest {\n ProjectInput project = 1;\n}\n// Response message for addProject operation.\nmessage MutationAddProjectResponse {\n Project add_project = 1;\n}\n// Request message for addMilestone operation.\nmessage MutationAddMilestoneRequest {\n MilestoneInput milestone = 1;\n}\n// Response message for addMilestone operation.\nmessage MutationAddMilestoneResponse {\n Milestone add_milestone = 1;\n}\n// Request message for addTask operation.\nmessage MutationAddTaskRequest {\n TaskInput task = 1;\n}\n// Response message for addTask operation.\nmessage MutationAddTaskResponse {\n Task add_task = 1;\n}\n// Request message for updateProjectStatus operation.\nmessage MutationUpdateProjectStatusRequest {\n string project_id = 1;\n ProjectStatus status = 2;\n}\n// Response message for updateProjectStatus operation.\nmessage MutationUpdateProjectStatusResponse {\n ProjectUpdate update_project_status = 1;\n}\nmessage ResolveProjectFilteredTasksArgs {\n TaskStatus status = 1;\n TaskPriority priority = 2;\n google.protobuf.Int32Value limit = 3;\n}\n\nmessage ResolveProjectFilteredTasksContext {\n string id = 1;\n}\n\nmessage ResolveProjectFilteredTasksRequest {\n // context provides the resolver context for the field filteredTasks of type Project.\n repeated ResolveProjectFilteredTasksContext context = 1;\n // field_args provides the arguments for the resolver field filteredTasks of type Project.\n ResolveProjectFilteredTasksArgs field_args = 2;\n}\n\nmessage ResolveProjectFilteredTasksResult {\n repeated Task filtered_tasks = 1;\n}\n\nmessage ResolveProjectFilteredTasksResponse {\n repeated ResolveProjectFilteredTasksResult result = 1;\n}\n\nmessage ResolveProjectCompletionRateArgs {\n google.protobuf.BoolValue include_subtasks = 1;\n}\n\nmessage ResolveProjectCompletionRateContext {\n string id = 1;\n google.protobuf.StringValue start_date = 2;\n google.protobuf.StringValue end_date = 3;\n ProjectStatus status = 4;\n}\n\nmessage ResolveProjectCompletionRateRequest {\n // context provides the resolver context for the field completionRate of type Project.\n repeated ResolveProjectCompletionRateContext context = 1;\n // field_args provides the arguments for the resolver field completionRate of type Project.\n ResolveProjectCompletionRateArgs field_args = 2;\n}\n\nmessage ResolveProjectCompletionRateResult {\n double completion_rate = 1;\n}\n\nmessage ResolveProjectCompletionRateResponse {\n repeated ResolveProjectCompletionRateResult result = 1;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingArgs {\n google.protobuf.StringValue from_date = 1;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingContext {\n string id = 1;\n google.protobuf.StringValue end_date = 2;\n ProjectStatus status = 3;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingRequest {\n // context provides the resolver context for the field estimatedDaysRemaining of type Project.\n repeated ResolveProjectEstimatedDaysRemainingContext context = 1;\n // field_args provides the arguments for the resolver field estimatedDaysRemaining of type Project.\n ResolveProjectEstimatedDaysRemainingArgs field_args = 2;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingResult {\n google.protobuf.Int32Value estimated_days_remaining = 1;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingResponse {\n repeated ResolveProjectEstimatedDaysRemainingResult result = 1;\n}\n\nmessage ResolveProjectCriticalDeadlineArgs {\n google.protobuf.Int32Value within_days = 1;\n}\n\nmessage ResolveProjectCriticalDeadlineContext {\n string id = 1;\n ProjectStatus status = 2;\n repeated Milestone milestones = 3;\n}\n\nmessage ResolveProjectCriticalDeadlineRequest {\n // context provides the resolver context for the field criticalDeadline of type Project.\n repeated ResolveProjectCriticalDeadlineContext context = 1;\n // field_args provides the arguments for the resolver field criticalDeadline of type Project.\n ResolveProjectCriticalDeadlineArgs field_args = 2;\n}\n\nmessage ResolveProjectCriticalDeadlineResult {\n Timestamped critical_deadline = 1;\n}\n\nmessage ResolveProjectCriticalDeadlineResponse {\n repeated ResolveProjectCriticalDeadlineResult result = 1;\n}\n\nmessage ResolveProjectTopPriorityItemArgs {\n google.protobuf.StringValue category = 1;\n}\n\nmessage ResolveProjectTopPriorityItemContext {\n string id = 1;\n ProjectStatus status = 2;\n}\n\nmessage ResolveProjectTopPriorityItemRequest {\n // context provides the resolver context for the field topPriorityItem of type Project.\n repeated ResolveProjectTopPriorityItemContext context = 1;\n // field_args provides the arguments for the resolver field topPriorityItem of type Project.\n ResolveProjectTopPriorityItemArgs field_args = 2;\n}\n\nmessage ResolveProjectTopPriorityItemResult {\n ProjectSearchResult top_priority_item = 1;\n}\n\nmessage ResolveProjectTopPriorityItemResponse {\n repeated ResolveProjectTopPriorityItemResult result = 1;\n}\n\nmessage ResolveMilestoneIsAtRiskArgs {\n google.protobuf.DoubleValue threshold = 1;\n}\n\nmessage ResolveMilestoneIsAtRiskContext {\n string id = 1;\n google.protobuf.StringValue end_date = 2;\n MilestoneStatus status = 3;\n google.protobuf.DoubleValue completion_percentage = 4;\n}\n\nmessage ResolveMilestoneIsAtRiskRequest {\n // context provides the resolver context for the field isAtRisk of type Milestone.\n repeated ResolveMilestoneIsAtRiskContext context = 1;\n // field_args provides the arguments for the resolver field isAtRisk of type Milestone.\n ResolveMilestoneIsAtRiskArgs field_args = 2;\n}\n\nmessage ResolveMilestoneIsAtRiskResult {\n bool is_at_risk = 1;\n}\n\nmessage ResolveMilestoneIsAtRiskResponse {\n repeated ResolveMilestoneIsAtRiskResult result = 1;\n}\n\nmessage ResolveMilestoneDaysUntilDueArgs {\n google.protobuf.StringValue from_date = 1;\n}\n\nmessage ResolveMilestoneDaysUntilDueContext {\n google.protobuf.StringValue end_date = 1;\n}\n\nmessage ResolveMilestoneDaysUntilDueRequest {\n // context provides the resolver context for the field daysUntilDue of type Milestone.\n repeated ResolveMilestoneDaysUntilDueContext context = 1;\n // field_args provides the arguments for the resolver field daysUntilDue of type Milestone.\n ResolveMilestoneDaysUntilDueArgs field_args = 2;\n}\n\nmessage ResolveMilestoneDaysUntilDueResult {\n google.protobuf.Int32Value days_until_due = 1;\n}\n\nmessage ResolveMilestoneDaysUntilDueResponse {\n repeated ResolveMilestoneDaysUntilDueResult result = 1;\n}\n\nmessage ResolveTaskIsBlockedArgs {\n google.protobuf.BoolValue check_dependencies = 1;\n}\n\nmessage ResolveTaskIsBlockedContext {\n string id = 1;\n TaskStatus status = 2;\n}\n\nmessage ResolveTaskIsBlockedRequest {\n // context provides the resolver context for the field isBlocked of type Task.\n repeated ResolveTaskIsBlockedContext context = 1;\n // field_args provides the arguments for the resolver field isBlocked of type Task.\n ResolveTaskIsBlockedArgs field_args = 2;\n}\n\nmessage ResolveTaskIsBlockedResult {\n bool is_blocked = 1;\n}\n\nmessage ResolveTaskIsBlockedResponse {\n repeated ResolveTaskIsBlockedResult result = 1;\n}\n\nmessage ResolveTaskTotalEffortArgs {\n google.protobuf.BoolValue include_subtasks = 1;\n}\n\nmessage ResolveTaskTotalEffortContext {\n string id = 1;\n google.protobuf.DoubleValue estimated_hours = 2;\n google.protobuf.DoubleValue actual_hours = 3;\n}\n\nmessage ResolveTaskTotalEffortRequest {\n // context provides the resolver context for the field totalEffort of type Task.\n repeated ResolveTaskTotalEffortContext context = 1;\n // field_args provides the arguments for the resolver field totalEffort of type Task.\n ResolveTaskTotalEffortArgs field_args = 2;\n}\n\nmessage ResolveTaskTotalEffortResult {\n google.protobuf.DoubleValue total_effort = 1;\n}\n\nmessage ResolveTaskTotalEffortResponse {\n repeated ResolveTaskTotalEffortResult result = 1;\n}\n\nmessage ResolveEmployeeCurrentWorkloadArgs {\n google.protobuf.BoolValue include_completed = 1;\n google.protobuf.StringValue project_id = 2;\n}\n\nmessage ResolveEmployeeCurrentWorkloadContext {\n int32 id = 1;\n}\n\nmessage ResolveEmployeeCurrentWorkloadRequest {\n // context provides the resolver context for the field currentWorkload of type Employee.\n repeated ResolveEmployeeCurrentWorkloadContext context = 1;\n // field_args provides the arguments for the resolver field currentWorkload of type Employee.\n ResolveEmployeeCurrentWorkloadArgs field_args = 2;\n}\n\nmessage ResolveEmployeeCurrentWorkloadResult {\n int32 current_workload = 1;\n}\n\nmessage ResolveEmployeeCurrentWorkloadResponse {\n repeated ResolveEmployeeCurrentWorkloadResult result = 1;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysArgs {\n google.protobuf.StringValue project_id = 1;\n TaskPriority priority = 2;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysContext {\n int32 id = 1;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysRequest {\n // context provides the resolver context for the field averageTaskCompletionDays of type Employee.\n repeated ResolveEmployeeAverageTaskCompletionDaysContext context = 1;\n // field_args provides the arguments for the resolver field averageTaskCompletionDays of type Employee.\n ResolveEmployeeAverageTaskCompletionDaysArgs field_args = 2;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysResult {\n google.protobuf.DoubleValue average_task_completion_days = 1;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysResponse {\n repeated ResolveEmployeeAverageTaskCompletionDaysResult result = 1;\n}\n\nmessage Project {\n reserved 20 to 24;\n string id = 1;\n string name = 2;\n google.protobuf.StringValue description = 3;\n google.protobuf.StringValue start_date = 4;\n google.protobuf.StringValue end_date = 5;\n ProjectStatus status = 6;\n repeated Employee team_members = 7;\n repeated Product related_products = 8;\n ListOfString milestone_ids = 9;\n repeated Milestone milestones = 10;\n repeated Task tasks = 11;\n google.protobuf.DoubleValue progress = 12;\n ListOfString tags = 13;\n ListOfProject alternative_projects = 14;\n ListOfProject dependencies = 15;\n ListOfListOfProjectResource resource_groups = 16;\n ListOfListOfTask tasks_by_phase = 17;\n ListOfListOfMilestone milestone_groups = 18;\n ListOfListOfListOfTask priority_matrix = 19;\n}\n\nmessage Milestone {\n reserved 12 to 13;\n string id = 1;\n string project_id = 2;\n string name = 3;\n google.protobuf.StringValue description = 4;\n google.protobuf.StringValue start_date = 5;\n google.protobuf.StringValue end_date = 6;\n MilestoneStatus status = 7;\n google.protobuf.DoubleValue completion_percentage = 8;\n repeated Milestone dependencies = 9;\n ListOfTask subtasks = 10;\n ListOfEmployee reviewers = 11;\n}\n\nmessage Task {\n reserved 18 to 19;\n string id = 1;\n string project_id = 2;\n google.protobuf.StringValue milestone_id = 3;\n google.protobuf.Int32Value assignee_id = 4;\n string name = 5;\n google.protobuf.StringValue description = 6;\n TaskPriority priority = 7;\n TaskStatus status = 8;\n // Deprecation notice: No more estimations!\n google.protobuf.DoubleValue estimated_hours = 9 [deprecated = true];\n google.protobuf.DoubleValue actual_hours = 10;\n google.protobuf.StringValue created_at = 11;\n google.protobuf.StringValue completed_at = 12;\n ListOfString labels = 13;\n ListOfTask subtasks = 14;\n repeated Task dependencies = 15;\n repeated string attachment_urls = 16;\n ListOfInt reviewer_ids = 17;\n}\n\nmessage Employee {\n reserved 8 to 9;\n int32 id = 1;\n ListOfProject projects = 2;\n repeated Task assigned_tasks = 3;\n repeated Task completed_tasks = 4;\n ListOfString skills = 5;\n ListOfString certifications = 6;\n ListOfListOfProject project_history = 7;\n}\n\nmessage Product {\n string upc = 1;\n ListOfProject projects = 2;\n ListOfListOfString feature_matrix = 3;\n}\n\nenum ProjectStatus {\n PROJECT_STATUS_UNSPECIFIED = 0;\n PROJECT_STATUS_PLANNING = 1;\n PROJECT_STATUS_ACTIVE = 2;\n PROJECT_STATUS_COMPLETED = 3;\n PROJECT_STATUS_ON_HOLD = 4;\n}\n\nmessage ProjectResource {\n oneof value {\n Employee employee = 1;\n Product product = 2;\n Milestone milestone = 3;\n Task task = 4;\n }\n}\n\nmessage ProjectSearchResult {\n oneof value {\n Project project = 1;\n Milestone milestone = 2;\n Task task = 3;\n }\n}\n\nmessage ProjectActivity {\n oneof value {\n ProjectUpdate project_update = 1;\n Milestone milestone = 2;\n Task task = 3;\n }\n}\n\nmessage Node {\n oneof instance {\n Project project = 1;\n Milestone milestone = 2;\n Task task = 3;\n ProjectUpdate project_update = 4;\n }\n}\n\nmessage ProjectInput {\n string name = 1;\n google.protobuf.StringValue description = 2;\n google.protobuf.StringValue start_date = 3;\n google.protobuf.StringValue end_date = 4;\n ProjectStatus status = 5;\n}\n\nmessage MilestoneInput {\n string project_id = 1;\n string name = 2;\n google.protobuf.StringValue description = 3;\n google.protobuf.StringValue due_date = 4;\n MilestoneStatus status = 5;\n}\n\nmessage TaskInput {\n string project_id = 1;\n google.protobuf.Int32Value assignee_id = 2;\n string name = 3;\n google.protobuf.StringValue description = 4;\n TaskPriority priority = 5;\n TaskStatus status = 6;\n google.protobuf.DoubleValue estimated_hours = 7;\n}\n\nmessage ProjectUpdate {\n string id = 1;\n string project_id = 2;\n int32 updated_by_id = 3;\n ProjectUpdateType update_type = 4;\n string description = 5;\n string timestamp = 6;\n google.protobuf.StringValue metadata = 7;\n}\n\nmessage Timestamped {\n oneof instance {\n Project project = 1;\n Milestone milestone = 2;\n }\n}\n\nmessage Assignable {\n oneof instance {\n Task task = 1;\n }\n}\n\nenum MilestoneStatus {\n MILESTONE_STATUS_UNSPECIFIED = 0;\n MILESTONE_STATUS_PENDING = 1;\n MILESTONE_STATUS_IN_PROGRESS = 2;\n MILESTONE_STATUS_COMPLETED = 3;\n MILESTONE_STATUS_DELAYED = 4;\n}\n\nenum TaskStatus {\n TASK_STATUS_UNSPECIFIED = 0;\n TASK_STATUS_TODO = 1;\n TASK_STATUS_IN_PROGRESS = 2;\n TASK_STATUS_REVIEW = 3;\n TASK_STATUS_COMPLETED = 4;\n TASK_STATUS_BLOCKED = 5;\n}\n\nenum TaskPriority {\n TASK_PRIORITY_UNSPECIFIED = 0;\n TASK_PRIORITY_LOW = 1;\n TASK_PRIORITY_MEDIUM = 2;\n TASK_PRIORITY_HIGH = 3;\n TASK_PRIORITY_URGENT = 4;\n}\n\nenum ProjectUpdateType {\n PROJECT_UPDATE_TYPE_UNSPECIFIED = 0;\n PROJECT_UPDATE_TYPE_STATUS_CHANGE = 1;\n PROJECT_UPDATE_TYPE_MILESTONE_ADDED = 2;\n PROJECT_UPDATE_TYPE_TASK_ASSIGNED = 3;\n PROJECT_UPDATE_TYPE_PROGRESS_UPDATE = 4;\n PROJECT_UPDATE_TYPE_TEAM_CHANGE = 5;\n}", + "protoSchema": "syntax = \"proto3\";\npackage service;\n\noption go_package = \"github.com/wundergraph/cosmo/demo/pkg/subgraphs/projects\";\n\nimport \"google/protobuf/wrappers.proto\";\n\n// Service definition for ProjectsService\nservice ProjectsService {\n // Lookup Employee entity by id\n rpc LookupEmployeeById(LookupEmployeeByIdRequest) returns (LookupEmployeeByIdResponse) {}\n // Lookup Milestone entity by id\n rpc LookupMilestoneById(LookupMilestoneByIdRequest) returns (LookupMilestoneByIdResponse) {}\n // Lookup Product entity by upc\n rpc LookupProductByUpc(LookupProductByUpcRequest) returns (LookupProductByUpcResponse) {}\n // Lookup Project entity by id\n rpc LookupProjectById(LookupProjectByIdRequest) returns (LookupProjectByIdResponse) {}\n // Lookup Task entity by id\n rpc LookupTaskById(LookupTaskByIdRequest) returns (LookupTaskByIdResponse) {}\n rpc MutationAddMilestone(MutationAddMilestoneRequest) returns (MutationAddMilestoneResponse) {}\n rpc MutationAddProject(MutationAddProjectRequest) returns (MutationAddProjectResponse) {}\n rpc MutationAddTask(MutationAddTaskRequest) returns (MutationAddTaskResponse) {}\n rpc MutationUpdateProjectStatus(MutationUpdateProjectStatusRequest) returns (MutationUpdateProjectStatusResponse) {}\n rpc QueryArchivedProjects(QueryArchivedProjectsRequest) returns (QueryArchivedProjectsResponse) {}\n rpc QueryKillService(QueryKillServiceRequest) returns (QueryKillServiceResponse) {}\n rpc QueryMilestones(QueryMilestonesRequest) returns (QueryMilestonesResponse) {}\n rpc QueryNodesById(QueryNodesByIdRequest) returns (QueryNodesByIdResponse) {}\n rpc QueryPanic(QueryPanicRequest) returns (QueryPanicResponse) {}\n rpc QueryProject(QueryProjectRequest) returns (QueryProjectResponse) {}\n rpc QueryProjectActivities(QueryProjectActivitiesRequest) returns (QueryProjectActivitiesResponse) {}\n rpc QueryProjectResources(QueryProjectResourcesRequest) returns (QueryProjectResourcesResponse) {}\n rpc QueryProjectStatuses(QueryProjectStatusesRequest) returns (QueryProjectStatusesResponse) {}\n rpc QueryProjectTags(QueryProjectTagsRequest) returns (QueryProjectTagsResponse) {}\n rpc QueryProjects(QueryProjectsRequest) returns (QueryProjectsResponse) {}\n rpc QueryProjectsByStatus(QueryProjectsByStatusRequest) returns (QueryProjectsByStatusResponse) {}\n rpc QueryResourceMatrix(QueryResourceMatrixRequest) returns (QueryResourceMatrixResponse) {}\n rpc QuerySearchProjects(QuerySearchProjectsRequest) returns (QuerySearchProjectsResponse) {}\n rpc QueryTasks(QueryTasksRequest) returns (QueryTasksResponse) {}\n rpc QueryTasksByPriority(QueryTasksByPriorityRequest) returns (QueryTasksByPriorityResponse) {}\n rpc ResolveEmployeeAverageTaskCompletionDays(ResolveEmployeeAverageTaskCompletionDaysRequest) returns (ResolveEmployeeAverageTaskCompletionDaysResponse) {}\n rpc ResolveEmployeeCurrentWorkload(ResolveEmployeeCurrentWorkloadRequest) returns (ResolveEmployeeCurrentWorkloadResponse) {}\n rpc ResolveMilestoneDaysUntilDue(ResolveMilestoneDaysUntilDueRequest) returns (ResolveMilestoneDaysUntilDueResponse) {}\n rpc ResolveMilestoneIsAtRisk(ResolveMilestoneIsAtRiskRequest) returns (ResolveMilestoneIsAtRiskResponse) {}\n rpc ResolveProjectCompletionRate(ResolveProjectCompletionRateRequest) returns (ResolveProjectCompletionRateResponse) {}\n rpc ResolveProjectCriticalDeadline(ResolveProjectCriticalDeadlineRequest) returns (ResolveProjectCriticalDeadlineResponse) {}\n rpc ResolveProjectEstimatedDaysRemaining(ResolveProjectEstimatedDaysRemainingRequest) returns (ResolveProjectEstimatedDaysRemainingResponse) {}\n rpc ResolveProjectFilteredTasks(ResolveProjectFilteredTasksRequest) returns (ResolveProjectFilteredTasksResponse) {}\n rpc ResolveProjectSubProjects(ResolveProjectSubProjectsRequest) returns (ResolveProjectSubProjectsResponse) {}\n rpc ResolveProjectTopPriorityItem(ResolveProjectTopPriorityItemRequest) returns (ResolveProjectTopPriorityItemResponse) {}\n rpc ResolveTaskIsBlocked(ResolveTaskIsBlockedRequest) returns (ResolveTaskIsBlockedResponse) {}\n rpc ResolveTaskTotalEffort(ResolveTaskTotalEffortRequest) returns (ResolveTaskTotalEffortResponse) {}\n}\n\n// Wrapper message for a list of Employee.\nmessage ListOfEmployee {\n message List {\n repeated Employee items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Int.\nmessage ListOfInt {\n message List {\n repeated int32 items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Task.\nmessage ListOfListOfListOfTask {\n message List {\n repeated ListOfListOfTask items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Milestone.\nmessage ListOfListOfMilestone {\n message List {\n repeated ListOfMilestone items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Project.\nmessage ListOfListOfProject {\n message List {\n repeated ListOfProject items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of ProjectResource.\nmessage ListOfListOfProjectResource {\n message List {\n repeated ListOfProjectResource items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of String.\nmessage ListOfListOfString {\n message List {\n repeated ListOfString items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Task.\nmessage ListOfListOfTask {\n message List {\n repeated ListOfTask items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Milestone.\nmessage ListOfMilestone {\n message List {\n repeated Milestone items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Project.\nmessage ListOfProject {\n message List {\n repeated Project items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of ProjectResource.\nmessage ListOfProjectResource {\n message List {\n repeated ProjectResource items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of String.\nmessage ListOfString {\n message List {\n repeated string items = 1;\n }\n List list = 1;\n}\n// Wrapper message for a list of Task.\nmessage ListOfTask {\n message List {\n repeated Task items = 1;\n }\n List list = 1;\n}\n// Key message for Project entity lookup\nmessage LookupProjectByIdRequestKey {\n // Key field for Project entity lookup.\n string id = 1;\n}\n\n// Request message for Project entity lookup.\nmessage LookupProjectByIdRequest {\n /*\n * List of keys to look up Project entities.\n * Order matters - each key maps to one entity in LookupProjectByIdResponse.\n */\n repeated LookupProjectByIdRequestKey keys = 1;\n}\n\n// Response message for Project entity lookup.\nmessage LookupProjectByIdResponse {\n /*\n * List of Project entities in the same order as the keys in LookupProjectByIdRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Project result = 1;\n}\n\n// Key message for Milestone entity lookup\nmessage LookupMilestoneByIdRequestKey {\n // Key field for Milestone entity lookup.\n string id = 1;\n}\n\n// Request message for Milestone entity lookup.\nmessage LookupMilestoneByIdRequest {\n /*\n * List of keys to look up Milestone entities.\n * Order matters - each key maps to one entity in LookupMilestoneByIdResponse.\n */\n repeated LookupMilestoneByIdRequestKey keys = 1;\n}\n\n// Response message for Milestone entity lookup.\nmessage LookupMilestoneByIdResponse {\n /*\n * List of Milestone entities in the same order as the keys in LookupMilestoneByIdRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Milestone result = 1;\n}\n\n// Key message for Task entity lookup\nmessage LookupTaskByIdRequestKey {\n // Key field for Task entity lookup.\n string id = 1;\n}\n\n// Request message for Task entity lookup.\nmessage LookupTaskByIdRequest {\n /*\n * List of keys to look up Task entities.\n * Order matters - each key maps to one entity in LookupTaskByIdResponse.\n */\n repeated LookupTaskByIdRequestKey keys = 1;\n}\n\n// Response message for Task entity lookup.\nmessage LookupTaskByIdResponse {\n /*\n * List of Task entities in the same order as the keys in LookupTaskByIdRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Task result = 1;\n}\n\n// Key message for Employee entity lookup\nmessage LookupEmployeeByIdRequestKey {\n // Key field for Employee entity lookup.\n string id = 1;\n}\n\n// Request message for Employee entity lookup.\nmessage LookupEmployeeByIdRequest {\n /*\n * List of keys to look up Employee entities.\n * Order matters - each key maps to one entity in LookupEmployeeByIdResponse.\n */\n repeated LookupEmployeeByIdRequestKey keys = 1;\n}\n\n// Response message for Employee entity lookup.\nmessage LookupEmployeeByIdResponse {\n /*\n * List of Employee entities in the same order as the keys in LookupEmployeeByIdRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Employee result = 1;\n}\n\n// Key message for Product entity lookup\nmessage LookupProductByUpcRequestKey {\n // Key field for Product entity lookup.\n string upc = 1;\n}\n\n// Request message for Product entity lookup.\nmessage LookupProductByUpcRequest {\n /*\n * List of keys to look up Product entities.\n * Order matters - each key maps to one entity in LookupProductByUpcResponse.\n */\n repeated LookupProductByUpcRequestKey keys = 1;\n}\n\n// Response message for Product entity lookup.\nmessage LookupProductByUpcResponse {\n /*\n * List of Product entities in the same order as the keys in LookupProductByUpcRequest.\n * Always return the same number of entities as keys. Use null for entities that cannot be found.\n * \n * Example:\n * LookupUserByIdRequest:\n * keys:\n * - id: 1\n * - id: 2\n * LookupUserByIdResponse:\n * result:\n * - id: 1 # User with id 1 found\n * - null # User with id 2 not found\n */\n repeated Product result = 1;\n}\n\n// Request message for projects operation.\nmessage QueryProjectsRequest {\n}\n// Response message for projects operation.\nmessage QueryProjectsResponse {\n repeated Project projects = 1;\n}\n// Request message for project operation.\nmessage QueryProjectRequest {\n string id = 1;\n}\n// Response message for project operation.\nmessage QueryProjectResponse {\n Project project = 1;\n}\n// Request message for projectStatuses operation.\nmessage QueryProjectStatusesRequest {\n}\n// Response message for projectStatuses operation.\nmessage QueryProjectStatusesResponse {\n repeated ProjectStatus project_statuses = 1;\n}\n// Request message for projectsByStatus operation.\nmessage QueryProjectsByStatusRequest {\n ProjectStatus status = 1;\n}\n// Response message for projectsByStatus operation.\nmessage QueryProjectsByStatusResponse {\n repeated Project projects_by_status = 1;\n}\n// Request message for projectResources operation.\nmessage QueryProjectResourcesRequest {\n string project_id = 1;\n}\n// Response message for projectResources operation.\nmessage QueryProjectResourcesResponse {\n repeated ProjectResource project_resources = 1;\n}\n// Request message for searchProjects operation.\nmessage QuerySearchProjectsRequest {\n string query = 1;\n}\n// Response message for searchProjects operation.\nmessage QuerySearchProjectsResponse {\n repeated ProjectSearchResult search_projects = 1;\n}\n// Request message for milestones operation.\nmessage QueryMilestonesRequest {\n string project_id = 1;\n}\n// Response message for milestones operation.\nmessage QueryMilestonesResponse {\n repeated Milestone milestones = 1;\n}\n// Request message for tasks operation.\nmessage QueryTasksRequest {\n string project_id = 1;\n}\n// Response message for tasks operation.\nmessage QueryTasksResponse {\n repeated Task tasks = 1;\n}\n// Request message for projectActivities operation.\nmessage QueryProjectActivitiesRequest {\n string project_id = 1;\n}\n// Response message for projectActivities operation.\nmessage QueryProjectActivitiesResponse {\n repeated ProjectActivity project_activities = 1;\n}\n// Request message for projectTags operation.\nmessage QueryProjectTagsRequest {\n}\n// Response message for projectTags operation.\nmessage QueryProjectTagsResponse {\n ListOfString project_tags = 1;\n}\n// Request message for archivedProjects operation.\nmessage QueryArchivedProjectsRequest {\n}\n// Response message for archivedProjects operation.\nmessage QueryArchivedProjectsResponse {\n repeated Project archived_projects = 1;\n}\n// Request message for tasksByPriority operation.\nmessage QueryTasksByPriorityRequest {\n string project_id = 1;\n}\n// Response message for tasksByPriority operation.\nmessage QueryTasksByPriorityResponse {\n ListOfListOfTask tasks_by_priority = 1;\n}\n// Request message for resourceMatrix operation.\nmessage QueryResourceMatrixRequest {\n string project_id = 1;\n}\n// Response message for resourceMatrix operation.\nmessage QueryResourceMatrixResponse {\n ListOfListOfProjectResource resource_matrix = 1;\n}\n// Request message for killService operation.\nmessage QueryKillServiceRequest {\n}\n// Response message for killService operation.\nmessage QueryKillServiceResponse {\n bool kill_service = 1;\n}\n// Request message for panic operation.\nmessage QueryPanicRequest {\n}\n// Response message for panic operation.\nmessage QueryPanicResponse {\n bool panic = 1;\n}\n// Request message for nodesById operation.\nmessage QueryNodesByIdRequest {\n string id = 1;\n}\n// Response message for nodesById operation.\nmessage QueryNodesByIdResponse {\n repeated Node nodes_by_id = 1;\n}\n// Request message for addProject operation.\nmessage MutationAddProjectRequest {\n ProjectInput project = 1;\n}\n// Response message for addProject operation.\nmessage MutationAddProjectResponse {\n Project add_project = 1;\n}\n// Request message for addMilestone operation.\nmessage MutationAddMilestoneRequest {\n MilestoneInput milestone = 1;\n}\n// Response message for addMilestone operation.\nmessage MutationAddMilestoneResponse {\n Milestone add_milestone = 1;\n}\n// Request message for addTask operation.\nmessage MutationAddTaskRequest {\n TaskInput task = 1;\n}\n// Response message for addTask operation.\nmessage MutationAddTaskResponse {\n Task add_task = 1;\n}\n// Request message for updateProjectStatus operation.\nmessage MutationUpdateProjectStatusRequest {\n string project_id = 1;\n ProjectStatus status = 2;\n}\n// Response message for updateProjectStatus operation.\nmessage MutationUpdateProjectStatusResponse {\n ProjectUpdate update_project_status = 1;\n}\nmessage ResolveProjectSubProjectsArgs {\n google.protobuf.BoolValue include_archived = 1;\n}\n\nmessage ResolveProjectSubProjectsContext {\n string id = 1;\n string name = 2;\n ProjectStatus status = 3;\n}\n\nmessage ResolveProjectSubProjectsRequest {\n // context provides the resolver context for the field subProjects of type Project.\n repeated ResolveProjectSubProjectsContext context = 1;\n // field_args provides the arguments for the resolver field subProjects of type Project.\n ResolveProjectSubProjectsArgs field_args = 2;\n}\n\nmessage ResolveProjectSubProjectsResult {\n repeated Project sub_projects = 1;\n}\n\nmessage ResolveProjectSubProjectsResponse {\n repeated ResolveProjectSubProjectsResult result = 1;\n}\n\nmessage ResolveProjectFilteredTasksArgs {\n TaskStatus status = 1;\n TaskPriority priority = 2;\n google.protobuf.Int32Value limit = 3;\n}\n\nmessage ResolveProjectFilteredTasksContext {\n string id = 1;\n}\n\nmessage ResolveProjectFilteredTasksRequest {\n // context provides the resolver context for the field filteredTasks of type Project.\n repeated ResolveProjectFilteredTasksContext context = 1;\n // field_args provides the arguments for the resolver field filteredTasks of type Project.\n ResolveProjectFilteredTasksArgs field_args = 2;\n}\n\nmessage ResolveProjectFilteredTasksResult {\n repeated Task filtered_tasks = 1;\n}\n\nmessage ResolveProjectFilteredTasksResponse {\n repeated ResolveProjectFilteredTasksResult result = 1;\n}\n\nmessage ResolveProjectCompletionRateArgs {\n google.protobuf.BoolValue include_subtasks = 1;\n}\n\nmessage ResolveProjectCompletionRateContext {\n string id = 1;\n google.protobuf.StringValue start_date = 2;\n google.protobuf.StringValue end_date = 3;\n ProjectStatus status = 4;\n}\n\nmessage ResolveProjectCompletionRateRequest {\n // context provides the resolver context for the field completionRate of type Project.\n repeated ResolveProjectCompletionRateContext context = 1;\n // field_args provides the arguments for the resolver field completionRate of type Project.\n ResolveProjectCompletionRateArgs field_args = 2;\n}\n\nmessage ResolveProjectCompletionRateResult {\n double completion_rate = 1;\n}\n\nmessage ResolveProjectCompletionRateResponse {\n repeated ResolveProjectCompletionRateResult result = 1;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingArgs {\n google.protobuf.StringValue from_date = 1;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingContext {\n string id = 1;\n google.protobuf.StringValue end_date = 2;\n ProjectStatus status = 3;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingRequest {\n // context provides the resolver context for the field estimatedDaysRemaining of type Project.\n repeated ResolveProjectEstimatedDaysRemainingContext context = 1;\n // field_args provides the arguments for the resolver field estimatedDaysRemaining of type Project.\n ResolveProjectEstimatedDaysRemainingArgs field_args = 2;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingResult {\n google.protobuf.Int32Value estimated_days_remaining = 1;\n}\n\nmessage ResolveProjectEstimatedDaysRemainingResponse {\n repeated ResolveProjectEstimatedDaysRemainingResult result = 1;\n}\n\nmessage ResolveProjectCriticalDeadlineArgs {\n google.protobuf.Int32Value within_days = 1;\n}\n\nmessage ResolveProjectCriticalDeadlineContext {\n string id = 1;\n ProjectStatus status = 2;\n repeated Milestone milestones = 3;\n}\n\nmessage ResolveProjectCriticalDeadlineRequest {\n // context provides the resolver context for the field criticalDeadline of type Project.\n repeated ResolveProjectCriticalDeadlineContext context = 1;\n // field_args provides the arguments for the resolver field criticalDeadline of type Project.\n ResolveProjectCriticalDeadlineArgs field_args = 2;\n}\n\nmessage ResolveProjectCriticalDeadlineResult {\n Timestamped critical_deadline = 1;\n}\n\nmessage ResolveProjectCriticalDeadlineResponse {\n repeated ResolveProjectCriticalDeadlineResult result = 1;\n}\n\nmessage ResolveProjectTopPriorityItemArgs {\n google.protobuf.StringValue category = 1;\n}\n\nmessage ResolveProjectTopPriorityItemContext {\n string id = 1;\n ProjectStatus status = 2;\n}\n\nmessage ResolveProjectTopPriorityItemRequest {\n // context provides the resolver context for the field topPriorityItem of type Project.\n repeated ResolveProjectTopPriorityItemContext context = 1;\n // field_args provides the arguments for the resolver field topPriorityItem of type Project.\n ResolveProjectTopPriorityItemArgs field_args = 2;\n}\n\nmessage ResolveProjectTopPriorityItemResult {\n ProjectSearchResult top_priority_item = 1;\n}\n\nmessage ResolveProjectTopPriorityItemResponse {\n repeated ResolveProjectTopPriorityItemResult result = 1;\n}\n\nmessage ResolveMilestoneIsAtRiskArgs {\n google.protobuf.DoubleValue threshold = 1;\n}\n\nmessage ResolveMilestoneIsAtRiskContext {\n string id = 1;\n google.protobuf.StringValue end_date = 2;\n MilestoneStatus status = 3;\n google.protobuf.DoubleValue completion_percentage = 4;\n}\n\nmessage ResolveMilestoneIsAtRiskRequest {\n // context provides the resolver context for the field isAtRisk of type Milestone.\n repeated ResolveMilestoneIsAtRiskContext context = 1;\n // field_args provides the arguments for the resolver field isAtRisk of type Milestone.\n ResolveMilestoneIsAtRiskArgs field_args = 2;\n}\n\nmessage ResolveMilestoneIsAtRiskResult {\n bool is_at_risk = 1;\n}\n\nmessage ResolveMilestoneIsAtRiskResponse {\n repeated ResolveMilestoneIsAtRiskResult result = 1;\n}\n\nmessage ResolveMilestoneDaysUntilDueArgs {\n google.protobuf.StringValue from_date = 1;\n}\n\nmessage ResolveMilestoneDaysUntilDueContext {\n google.protobuf.StringValue end_date = 1;\n}\n\nmessage ResolveMilestoneDaysUntilDueRequest {\n // context provides the resolver context for the field daysUntilDue of type Milestone.\n repeated ResolveMilestoneDaysUntilDueContext context = 1;\n // field_args provides the arguments for the resolver field daysUntilDue of type Milestone.\n ResolveMilestoneDaysUntilDueArgs field_args = 2;\n}\n\nmessage ResolveMilestoneDaysUntilDueResult {\n google.protobuf.Int32Value days_until_due = 1;\n}\n\nmessage ResolveMilestoneDaysUntilDueResponse {\n repeated ResolveMilestoneDaysUntilDueResult result = 1;\n}\n\nmessage ResolveTaskIsBlockedArgs {\n google.protobuf.BoolValue check_dependencies = 1;\n}\n\nmessage ResolveTaskIsBlockedContext {\n string id = 1;\n TaskStatus status = 2;\n}\n\nmessage ResolveTaskIsBlockedRequest {\n // context provides the resolver context for the field isBlocked of type Task.\n repeated ResolveTaskIsBlockedContext context = 1;\n // field_args provides the arguments for the resolver field isBlocked of type Task.\n ResolveTaskIsBlockedArgs field_args = 2;\n}\n\nmessage ResolveTaskIsBlockedResult {\n bool is_blocked = 1;\n}\n\nmessage ResolveTaskIsBlockedResponse {\n repeated ResolveTaskIsBlockedResult result = 1;\n}\n\nmessage ResolveTaskTotalEffortArgs {\n google.protobuf.BoolValue include_subtasks = 1;\n}\n\nmessage ResolveTaskTotalEffortContext {\n string id = 1;\n google.protobuf.DoubleValue estimated_hours = 2;\n google.protobuf.DoubleValue actual_hours = 3;\n}\n\nmessage ResolveTaskTotalEffortRequest {\n // context provides the resolver context for the field totalEffort of type Task.\n repeated ResolveTaskTotalEffortContext context = 1;\n // field_args provides the arguments for the resolver field totalEffort of type Task.\n ResolveTaskTotalEffortArgs field_args = 2;\n}\n\nmessage ResolveTaskTotalEffortResult {\n google.protobuf.DoubleValue total_effort = 1;\n}\n\nmessage ResolveTaskTotalEffortResponse {\n repeated ResolveTaskTotalEffortResult result = 1;\n}\n\nmessage ResolveEmployeeCurrentWorkloadArgs {\n google.protobuf.BoolValue include_completed = 1;\n google.protobuf.StringValue project_id = 2;\n}\n\nmessage ResolveEmployeeCurrentWorkloadContext {\n int32 id = 1;\n}\n\nmessage ResolveEmployeeCurrentWorkloadRequest {\n // context provides the resolver context for the field currentWorkload of type Employee.\n repeated ResolveEmployeeCurrentWorkloadContext context = 1;\n // field_args provides the arguments for the resolver field currentWorkload of type Employee.\n ResolveEmployeeCurrentWorkloadArgs field_args = 2;\n}\n\nmessage ResolveEmployeeCurrentWorkloadResult {\n int32 current_workload = 1;\n}\n\nmessage ResolveEmployeeCurrentWorkloadResponse {\n repeated ResolveEmployeeCurrentWorkloadResult result = 1;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysArgs {\n google.protobuf.StringValue project_id = 1;\n TaskPriority priority = 2;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysContext {\n int32 id = 1;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysRequest {\n // context provides the resolver context for the field averageTaskCompletionDays of type Employee.\n repeated ResolveEmployeeAverageTaskCompletionDaysContext context = 1;\n // field_args provides the arguments for the resolver field averageTaskCompletionDays of type Employee.\n ResolveEmployeeAverageTaskCompletionDaysArgs field_args = 2;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysResult {\n google.protobuf.DoubleValue average_task_completion_days = 1;\n}\n\nmessage ResolveEmployeeAverageTaskCompletionDaysResponse {\n repeated ResolveEmployeeAverageTaskCompletionDaysResult result = 1;\n}\n\nmessage Project {\n reserved 20 to 25;\n string id = 1;\n string name = 2;\n google.protobuf.StringValue description = 3;\n google.protobuf.StringValue start_date = 4;\n google.protobuf.StringValue end_date = 5;\n ProjectStatus status = 6;\n repeated Employee team_members = 7;\n repeated Product related_products = 8;\n ListOfString milestone_ids = 9;\n repeated Milestone milestones = 10;\n repeated Task tasks = 11;\n google.protobuf.DoubleValue progress = 12;\n ListOfString tags = 13;\n ListOfProject alternative_projects = 14;\n ListOfProject dependencies = 15;\n ListOfListOfProjectResource resource_groups = 16;\n ListOfListOfTask tasks_by_phase = 17;\n ListOfListOfMilestone milestone_groups = 18;\n ListOfListOfListOfTask priority_matrix = 19;\n}\n\nmessage Milestone {\n reserved 12 to 13;\n string id = 1;\n string project_id = 2;\n string name = 3;\n google.protobuf.StringValue description = 4;\n google.protobuf.StringValue start_date = 5;\n google.protobuf.StringValue end_date = 6;\n MilestoneStatus status = 7;\n google.protobuf.DoubleValue completion_percentage = 8;\n repeated Milestone dependencies = 9;\n ListOfTask subtasks = 10;\n ListOfEmployee reviewers = 11;\n}\n\nmessage Task {\n reserved 18 to 19;\n string id = 1;\n string project_id = 2;\n google.protobuf.StringValue milestone_id = 3;\n google.protobuf.Int32Value assignee_id = 4;\n string name = 5;\n google.protobuf.StringValue description = 6;\n TaskPriority priority = 7;\n TaskStatus status = 8;\n // Deprecation notice: No more estimations!\n google.protobuf.DoubleValue estimated_hours = 9 [deprecated = true];\n google.protobuf.DoubleValue actual_hours = 10;\n google.protobuf.StringValue created_at = 11;\n google.protobuf.StringValue completed_at = 12;\n ListOfString labels = 13;\n ListOfTask subtasks = 14;\n repeated Task dependencies = 15;\n repeated string attachment_urls = 16;\n ListOfInt reviewer_ids = 17;\n}\n\nmessage Employee {\n reserved 8 to 9;\n int32 id = 1;\n ListOfProject projects = 2;\n repeated Task assigned_tasks = 3;\n repeated Task completed_tasks = 4;\n ListOfString skills = 5;\n ListOfString certifications = 6;\n ListOfListOfProject project_history = 7;\n}\n\nmessage Product {\n string upc = 1;\n ListOfProject projects = 2;\n ListOfListOfString feature_matrix = 3;\n}\n\nenum ProjectStatus {\n PROJECT_STATUS_UNSPECIFIED = 0;\n PROJECT_STATUS_PLANNING = 1;\n PROJECT_STATUS_ACTIVE = 2;\n PROJECT_STATUS_COMPLETED = 3;\n PROJECT_STATUS_ON_HOLD = 4;\n}\n\nmessage ProjectResource {\n oneof value {\n Employee employee = 1;\n Product product = 2;\n Milestone milestone = 3;\n Task task = 4;\n }\n}\n\nmessage ProjectSearchResult {\n oneof value {\n Project project = 1;\n Milestone milestone = 2;\n Task task = 3;\n }\n}\n\nmessage ProjectActivity {\n oneof value {\n ProjectUpdate project_update = 1;\n Milestone milestone = 2;\n Task task = 3;\n }\n}\n\nmessage Node {\n oneof instance {\n Project project = 1;\n Milestone milestone = 2;\n Task task = 3;\n ProjectUpdate project_update = 4;\n }\n}\n\nmessage ProjectInput {\n string name = 1;\n google.protobuf.StringValue description = 2;\n google.protobuf.StringValue start_date = 3;\n google.protobuf.StringValue end_date = 4;\n ProjectStatus status = 5;\n}\n\nmessage MilestoneInput {\n string project_id = 1;\n string name = 2;\n google.protobuf.StringValue description = 3;\n google.protobuf.StringValue due_date = 4;\n MilestoneStatus status = 5;\n}\n\nmessage TaskInput {\n string project_id = 1;\n google.protobuf.Int32Value assignee_id = 2;\n string name = 3;\n google.protobuf.StringValue description = 4;\n TaskPriority priority = 5;\n TaskStatus status = 6;\n google.protobuf.DoubleValue estimated_hours = 7;\n}\n\nmessage ProjectUpdate {\n string id = 1;\n string project_id = 2;\n int32 updated_by_id = 3;\n ProjectUpdateType update_type = 4;\n string description = 5;\n string timestamp = 6;\n google.protobuf.StringValue metadata = 7;\n}\n\nmessage Timestamped {\n oneof instance {\n Project project = 1;\n Milestone milestone = 2;\n }\n}\n\nmessage Assignable {\n oneof instance {\n Task task = 1;\n }\n}\n\nenum MilestoneStatus {\n MILESTONE_STATUS_UNSPECIFIED = 0;\n MILESTONE_STATUS_PENDING = 1;\n MILESTONE_STATUS_IN_PROGRESS = 2;\n MILESTONE_STATUS_COMPLETED = 3;\n MILESTONE_STATUS_DELAYED = 4;\n}\n\nenum TaskStatus {\n TASK_STATUS_UNSPECIFIED = 0;\n TASK_STATUS_TODO = 1;\n TASK_STATUS_IN_PROGRESS = 2;\n TASK_STATUS_REVIEW = 3;\n TASK_STATUS_COMPLETED = 4;\n TASK_STATUS_BLOCKED = 5;\n}\n\nenum TaskPriority {\n TASK_PRIORITY_UNSPECIFIED = 0;\n TASK_PRIORITY_LOW = 1;\n TASK_PRIORITY_MEDIUM = 2;\n TASK_PRIORITY_HIGH = 3;\n TASK_PRIORITY_URGENT = 4;\n}\n\nenum ProjectUpdateType {\n PROJECT_UPDATE_TYPE_UNSPECIFIED = 0;\n PROJECT_UPDATE_TYPE_STATUS_CHANGE = 1;\n PROJECT_UPDATE_TYPE_MILESTONE_ADDED = 2;\n PROJECT_UPDATE_TYPE_TASK_ASSIGNED = 3;\n PROJECT_UPDATE_TYPE_PROGRESS_UPDATE = 4;\n PROJECT_UPDATE_TYPE_TEAM_CHANGE = 5;\n}", "plugin": { "name": "projects", "version": "0.0.1" } } }, @@ -2558,6 +2578,11 @@ "fieldName": "urls", "argumentsConfiguration": [{ "name": "products", "sourceType": "FIELD_ARGUMENT" }] }, + { + "typeName": "Project", + "fieldName": "subProjects", + "argumentsConfiguration": [{ "name": "includeArchived", "sourceType": "FIELD_ARGUMENT" }] + }, { "typeName": "Project", "fieldName": "filteredTasks", @@ -2708,7 +2733,7 @@ "authorizationConfiguration": { "requiresAuthentication": true } } ], - "graphqlSchema": "schema {\n query: Query\n mutation: Mutation\n subscription: Subscription\n}\n\ndirective @tag(name: String!) repeatable on ARGUMENT_DEFINITION | ENUM | ENUM_VALUE | FIELD_DEFINITION | INPUT_FIELD_DEFINITION | INPUT_OBJECT | INTERFACE | OBJECT | SCALAR | UNION\n\ndirective @requiresScopes(scopes: [[openfed__Scope!]!]!) on ENUM | FIELD_DEFINITION | INTERFACE | OBJECT | SCALAR\n\ndirective @authenticated on ENUM | FIELD_DEFINITION | INTERFACE | OBJECT | SCALAR\n\ndirective @inaccessible on ARGUMENT_DEFINITION | ENUM | ENUM_VALUE | FIELD_DEFINITION | INPUT_FIELD_DEFINITION | INPUT_OBJECT | INTERFACE | OBJECT | SCALAR | UNION\n\nscalar openfed__Scope\n\ntype Query {\n employee(id: Int!): Employee\n employeeAsList(id: Int!): [Employee]\n employees: [Employee]\n products: [Products!]!\n teammates(team: Department!): [Employee!]!\n firstEmployee: Employee! @tag(name: \"internal\")\n findEmployeesBy(criteria: FindEmployeeCriteria!): [Employee!]!\n \"\"\" This is a GraphQL query that retrieves a list of employees.\"\"\"\n findEmployees(criteria: SearchInput): [Employee!]!\n productTypes: [Products!]!\n topSecretFederationFacts: [TopSecretFact!]! @requiresScopes(scopes: [[\"read:fact\"], [\"read:all\"]])\n factTypes: [TopSecretFactType!]\n sharedThings(numOfA: Int!, numOfB: Int!): [Thing!]!\n \"\"\"Returns the value of the received HTTP header.\"\"\"\n headerValue(name: String!): String!\n \"\"\"Returns the value of the given key in the WS initial payload.\"\"\"\n initPayloadValue(key: String!): String!\n initialPayload: Map\n \"\"\"Returns response after the given delay\"\"\"\n delay(response: String!, ms: Int!): String!\n bigResponse(artificialDelay: Int! = 0, bigObjects: Int! = 100, nestedObjects: Int! = 100, deeplyNestedObjects: Int! = 100): [BigObject!]!\n longResponse(artificialDelay: Int! = 0, bytes: Int!): String\n bigAbstractResponse: BigAbstractResponse\n rootFieldWithListArg(arg: [String!]!): [String!]!\n rootFieldWithNestedListArg(arg: [[String!]!]!): [[String!]!]!\n rootFieldWithListOfInputArg(arg: [InputType!]!): [InputResponse!]!\n rootFieldWithListOfEnumArg(arg: [EnumType!]!): [EnumType!]!\n rootFieldWithInput(arg: InputArg!): String!\n floatField(arg: Float): Float\n secret: Secret @requiresScopes(scopes: [[\"read:secret\"]])\n projects: [Project!]!\n project(id: ID!): Project\n projectStatuses: [ProjectStatus!]!\n projectsByStatus(status: ProjectStatus!): [Project!]!\n projectResources(projectId: ID!): [ProjectResource!]!\n searchProjects(query: String!): [ProjectSearchResult!]!\n milestones(projectId: ID!): [Milestone!]!\n tasks(projectId: ID!): [Task!]!\n projectActivities(projectId: ID!): [ProjectActivity!]!\n projectTags: [String]\n archivedProjects: [Project]!\n tasksByPriority(projectId: ID!): [[Task]]\n resourceMatrix(projectId: ID!): [[ProjectResource!]!]!\n killService: Boolean!\n panic: Boolean!\n nodesById(id: ID!): [Node!]!\n courses: [Course!]!\n course(id: ID!): Course\n lessons(courseId: ID!): [Lesson!]!\n killCoursesService: Boolean!\n throwErrorCourses: Boolean!\n}\n\nscalar Upload\n\ntype Mutation {\n updateEmployeeTag(id: Int!, tag: String!): Employee\n singleUpload(file: Upload!): Boolean!\n singleUploadWithInput(arg: FileUpload!): Boolean!\n multipleUpload(files: [Upload!]!): Boolean!\n addFact(fact: TopSecretFactInput!): TopSecretFact! @requiresScopes(scopes: [[\"write:fact\"], [\"write:all\"]])\n \"\"\" This mutation updates the availability status of an employee in the system.\n \"\"\"\n updateAvailability(employeeID: Int!, isAvailable: Boolean!): Employee!\n \"\"\" This mutation update the mood of an employee. \"\"\"\n updateMood(employeeID: Int!, mood: Mood!): Employee!\n addProject(project: ProjectInput!): Project!\n addMilestone(milestone: MilestoneInput!): Milestone!\n addTask(task: TaskInput!): Task!\n updateProjectStatus(projectId: ID!, status: ProjectStatus!): ProjectUpdate!\n addCourse(title: String!, instructorId: Int!): Course!\n addLesson(courseId: ID!, title: String!, order: Int!): Lesson!\n}\n\ninput FileUpload {\n nested: DeeplyNestedFileUpload\n nestedList: [Upload!]\n}\n\ninput DeeplyNestedFileUpload {\n file: Upload!\n}\n\ntype Subscription {\n \"\"\"`currentTime` will return a stream of `Time` objects.\"\"\"\n currentTime: Time!\n countEmp(max: Int!, intervalMilliseconds: Int!): Int!\n countEmp2(max: Int!, intervalMilliseconds: Int!): Int!\n countFor(count: Int!): Int!\n countHob(max: Int!, intervalMilliseconds: Int!): Int!\n \"\"\"Returns a stream with the value of the received HTTP header.\"\"\"\n headerValue(name: String!, repeat: Int): TimestampedString!\n \"\"\"\n Returns a stream with the value of value of the given key in the WS initial payload.\n \"\"\"\n initPayloadValue(key: String!, repeat: Int): TimestampedString!\n \"\"\"Returns a stream with the value of the WS initial payload.\"\"\"\n initialPayload(repeat: Int): Map\n returnsError: String\n}\n\nenum Department {\n ENGINEERING\n MARKETING\n OPERATIONS\n}\n\ninterface RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n}\n\nenum EngineerType {\n BACKEND\n FRONTEND\n FULLSTACK\n}\n\ninterface Identifiable {\n id: Int!\n}\n\nenum OperationType {\n FINANCE\n HUMAN_RESOURCES\n}\n\ntype Details {\n forename: String!\n location: Country!\n surname: String!\n pastLocations: [City!]!\n middlename: String @deprecated(reason: \"No longer supported\")\n hasChildren: Boolean!\n maritalStatus: MaritalStatus\n nationality: Nationality!\n pets: [Pet]\n}\n\ntype City {\n type: String!\n name: String!\n country: Country\n}\n\ntype Country {\n key: CountryKey!\n language: String\n}\n\ntype CountryKey {\n name: String!\n}\n\nenum Mood {\n HAPPY\n SAD\n APATHETIC @inaccessible\n}\n\ntype ErrorWrapper {\n okField: String\n errorField: String\n}\n\ntype Time {\n unixTime: Int!\n timeStamp: String!\n}\n\nunion Products = Consultancy | Cosmo | SDK | Documentation\n\ninterface IProduct {\n upc: ID!\n engineers: [Employee!]!\n}\n\ntype Consultancy {\n upc: ID!\n lead: Employee!\n isLeadAvailable: Boolean\n name: ProductName!\n}\n\ninput FindEmployeeCriteria @oneOf {\n id: Int\n department: Department\n title: String\n}\n\nenum Class {\n FISH\n MAMMAL\n REPTILE\n}\n\nenum Gender {\n FEMALE\n MALE\n UNKNOWN\n}\n\ninterface Animal {\n class: Class!\n gender: Gender!\n}\n\nenum CatType {\n HOME\n STREET\n}\n\nenum DogBreed {\n GOLDEN_RETRIEVER\n POODLE\n ROTTWEILER\n YORKSHIRE_TERRIER\n}\n\nenum MaritalStatus {\n ENGAGED\n MARRIED\n}\n\nenum Nationality {\n AMERICAN\n DUTCH\n ENGLISH\n GERMAN\n INDIAN\n SPANISH\n UKRAINIAN\n}\n\n\"\"\" Allows to filter employees by their details. \"\"\"\ninput SearchInput {\n hasPets: Boolean\n nationality: Nationality\n nested: NestedSearchInput\n}\n\ninput NestedSearchInput {\n maritalStatus: MaritalStatus\n hasChildren: Boolean\n}\n\nenum ExerciseType {\n CALISTHENICS\n HIKING\n SPORT\n STRENGTH_TRAINING\n}\n\ninterface Experience {\n yearsOfExperience: Float!\n}\n\nenum GameGenre {\n ADVENTURE\n BOARD\n FPS\n CARD\n RPG\n ROGUELITE\n SIMULATION\n STRATEGY\n}\n\nenum ProgrammingLanguage {\n CSHARP\n GO\n RUST\n TYPESCRIPT\n}\n\ninterface Hobby {\n employees: [Employee!]!\n}\n\ntype Thing {\n a: String!\n b: String!\n}\n\ninput TopSecretFactInput {\n title: String!\n description: FactContent!\n factType: TopSecretFactType!\n}\n\nenum TopSecretFactType @authenticated {\n DIRECTIVE\n ENTITY\n MISCELLANEOUS\n}\n\ninterface TopSecretFact @authenticated {\n description: FactContent!\n factType: TopSecretFactType\n}\n\nscalar FactContent @requiresScopes(scopes: [[\"read:scalar\"], [\"read:all\"]])\n\nenum ProductName {\n CONSULTANCY\n COSMO\n ENGINE\n FINANCE\n HUMAN_RESOURCES\n MARKETING\n SDK\n}\n\ntype Documentation {\n url(product: ProductName!): String!\n urls(products: [ProductName!]!): [String!]!\n}\n\ntype Secret {\n value: String\n}\n\ninput InputArg {\n enums: [EnumType!]\n enum: EnumType\n string: String\n strings: [String!]\n}\n\nenum EnumType {\n A\n B\n C\n}\n\ninput InputType {\n arg: String!\n}\n\ntype InputResponse {\n arg: String!\n}\n\nscalar Map\n\ntype TimestampedString {\n \"\"\"The value of the string.\"\"\"\n value: String!\n \"\"\"The timestamp when the response was generated.\"\"\"\n unixTime: Int!\n \"\"\"Sequence number\"\"\"\n seq: Int!\n \"\"\"Total number of responses to be sent\"\"\"\n total: Int!\n initialPayload: Map\n}\n\ntype BigObject {\n nestedObjects: [NestedObject!]!\n}\n\ntype NestedObject {\n deeplyNestedObjects: [DeeplyNestedObject!]!\n}\n\ntype DeeplyNestedObject {\n aFieldOnDeeplyNestedObject: String!\n bFieldOnDeeplyNestedObject: Int!\n cFieldOnDeeplyNestedObject: Boolean!\n dFieldOnDeeplyNestedObject: Float!\n eFieldOnDeeplyNestedObject: String!\n fFieldOnDeeplyNestedObject: Int!\n gFieldOnDeeplyNestedObject: Boolean!\n hFieldOnDeeplyNestedObject: Float!\n iFieldOnDeeplyNestedObject: String!\n jFieldOnDeeplyNestedObject: Int!\n kFieldOnDeeplyNestedObject: Boolean!\n lFieldOnDeeplyNestedObject: Float!\n mFieldOnDeeplyNestedObject: String!\n nFieldOnDeeplyNestedObject: Int!\n oFieldOnDeeplyNestedObject: Boolean!\n pFieldOnDeeplyNestedObject: Float!\n qFieldOnDeeplyNestedObject: String!\n rFieldOnDeeplyNestedObject: Int!\n sFieldOnDeeplyNestedObject: Boolean!\n tFieldOnDeeplyNestedObject: Float!\n uFieldOnDeeplyNestedObject: String!\n vFieldOnDeeplyNestedObject: Int!\n wFieldOnDeeplyNestedObject: Boolean!\n xFieldOnDeeplyNestedObject: Float!\n yFieldOnDeeplyNestedObject: String!\n zFieldOnDeeplyNestedObject: Int!\n}\n\nunion BigAbstractResponse = ABigObject | BBigObject | CBigObject | DBigObject | EBigObject | FBigObject | GBigObject | HBigObject | IBigObject | JBigObject | KBigObject | LBigObject | MBigObject | NBigObject | OBigObject | PBigObject | QBigObject | RBigObject | SBigObject | TBigObject | UBigObject | VBigObject | WBigObject | XBigObject | YBigObject | ZBigObject\n\ntype ABigObject {\n aFieldOnABigObject: String!\n bFieldOnABigObject: Int!\n cFieldOnABigObject: Boolean!\n dFieldOnABigObject: Float!\n eFieldOnABigObject: String!\n fFieldOnABigObject: Int!\n gFieldOnABigObject: Boolean!\n hFieldOnABigObject: Float!\n iFieldOnABigObject: String!\n jFieldOnABigObject: Int!\n kFieldOnABigObject: Boolean!\n lFieldOnABigObject: Float!\n mFieldOnABigObject: String!\n nFieldOnABigObject: Int!\n oFieldOnABigObject: Boolean!\n pFieldOnABigObject: Float!\n qFieldOnABigObject: String!\n rFieldOnABigObject: Int!\n sFieldOnABigObject: Boolean!\n tFieldOnABigObject: Float!\n uFieldOnABigObject: String!\n vFieldOnABigObject: Int!\n wFieldOnABigObject: Boolean!\n xFieldOnABigObject: Float!\n yFieldOnABigObject: String!\n zFieldOnABigObject: Int!\n}\n\ntype BBigObject {\n aFieldOnBBigObject: String!\n bFieldOnBBigObject: Int!\n cFieldOnBBigObject: Boolean!\n dFieldOnBBigObject: Float!\n eFieldOnBBigObject: String!\n fFieldOnBBigObject: Int!\n gFieldOnBBigObject: Boolean!\n hFieldOnBBigObject: Float!\n iFieldOnBBigObject: String!\n jFieldOnBBigObject: Int!\n kFieldOnBBigObject: Boolean!\n lFieldOnBBigObject: Float!\n mFieldOnBBigObject: String!\n nFieldOnBBigObject: Int!\n oFieldOnBBigObject: Boolean!\n pFieldOnBBigObject: Float!\n qFieldOnBBigObject: String!\n rFieldOnBBigObject: Int!\n sFieldOnBBigObject: Boolean!\n tFieldOnBBigObject: Float!\n uFieldOnBBigObject: String!\n vFieldOnBBigObject: Int!\n wFieldOnBBigObject: Boolean!\n xFieldOnBBigObject: Float!\n yFieldOnBBigObject: String!\n zFieldOnBBigObject: Int!\n}\n\ntype CBigObject {\n aFieldOnCBigObject: String!\n bFieldOnCBigObject: Int!\n cFieldOnCBigObject: Boolean!\n dFieldOnCBigObject: Float!\n eFieldOnCBigObject: String!\n fFieldOnCBigObject: Int!\n gFieldOnCBigObject: Boolean!\n hFieldOnCBigObject: Float!\n iFieldOnCBigObject: String!\n jFieldOnCBigObject: Int!\n kFieldOnCBigObject: Boolean!\n lFieldOnCBigObject: Float!\n mFieldOnCBigObject: String!\n nFieldOnCBigObject: Int!\n oFieldOnCBigObject: Boolean!\n pFieldOnCBigObject: Float!\n qFieldOnCBigObject: String!\n rFieldOnCBigObject: Int!\n sFieldOnCBigObject: Boolean!\n tFieldOnCBigObject: Float!\n uFieldOnCBigObject: String!\n vFieldOnCBigObject: Int!\n wFieldOnCBigObject: Boolean!\n xFieldOnCBigObject: Float!\n yFieldOnCBigObject: String!\n zFieldOnCBigObject: Int!\n}\n\ntype DBigObject {\n aFieldOnDBigObject: String!\n bFieldOnDBigObject: Int!\n cFieldOnDBigObject: Boolean!\n dFieldOnDBigObject: Float!\n eFieldOnDBigObject: String!\n fFieldOnDBigObject: Int!\n gFieldOnDBigObject: Boolean!\n hFieldOnDBigObject: Float!\n iFieldOnDBigObject: String!\n jFieldOnDBigObject: Int!\n kFieldOnDBigObject: Boolean!\n lFieldOnDBigObject: Float!\n mFieldOnDBigObject: String!\n nFieldOnDBigObject: Int!\n oFieldOnDBigObject: Boolean!\n pFieldOnDBigObject: Float!\n qFieldOnDBigObject: String!\n rFieldOnDBigObject: Int!\n sFieldOnDBigObject: Boolean!\n tFieldOnDBigObject: Float!\n uFieldOnDBigObject: String!\n vFieldOnDBigObject: Int!\n wFieldOnDBigObject: Boolean!\n xFieldOnDBigObject: Float!\n yFieldOnDBigObject: String!\n zFieldOnDBigObject: Int!\n}\n\ntype EBigObject {\n aFieldOnEBigObject: String!\n bFieldOnEBigObject: Int!\n cFieldOnEBigObject: Boolean!\n dFieldOnEBigObject: Float!\n eFieldOnEBigObject: String!\n fFieldOnEBigObject: Int!\n gFieldOnEBigObject: Boolean!\n hFieldOnEBigObject: Float!\n iFieldOnEBigObject: String!\n jFieldOnEBigObject: Int!\n kFieldOnEBigObject: Boolean!\n lFieldOnEBigObject: Float!\n mFieldOnEBigObject: String!\n nFieldOnEBigObject: Int!\n oFieldOnEBigObject: Boolean!\n pFieldOnEBigObject: Float!\n qFieldOnEBigObject: String!\n rFieldOnEBigObject: Int!\n sFieldOnEBigObject: Boolean!\n tFieldOnEBigObject: Float!\n uFieldOnEBigObject: String!\n vFieldOnEBigObject: Int!\n wFieldOnEBigObject: Boolean!\n xFieldOnEBigObject: Float!\n yFieldOnEBigObject: String!\n zFieldOnEBigObject: Int!\n}\n\ntype FBigObject {\n aFieldOnFBigObject: String!\n bFieldOnFBigObject: Int!\n cFieldOnFBigObject: Boolean!\n dFieldOnFBigObject: Float!\n eFieldOnFBigObject: String!\n fFieldOnFBigObject: Int!\n gFieldOnFBigObject: Boolean!\n hFieldOnFBigObject: Float!\n iFieldOnFBigObject: String!\n jFieldOnFBigObject: Int!\n kFieldOnFBigObject: Boolean!\n lFieldOnFBigObject: Float!\n mFieldOnFBigObject: String!\n nFieldOnFBigObject: Int!\n oFieldOnFBigObject: Boolean!\n pFieldOnFBigObject: Float!\n qFieldOnFBigObject: String!\n rFieldOnFBigObject: Int!\n sFieldOnFBigObject: Boolean!\n tFieldOnFBigObject: Float!\n uFieldOnFBigObject: String!\n vFieldOnFBigObject: Int!\n wFieldOnFBigObject: Boolean!\n xFieldOnFBigObject: Float!\n yFieldOnFBigObject: String!\n zFieldOnFBigObject: Int!\n}\n\ntype GBigObject {\n aFieldOnGBigObject: String!\n bFieldOnGBigObject: Int!\n cFieldOnGBigObject: Boolean!\n dFieldOnGBigObject: Float!\n eFieldOnGBigObject: String!\n fFieldOnGBigObject: Int!\n gFieldOnGBigObject: Boolean!\n hFieldOnGBigObject: Float!\n iFieldOnGBigObject: String!\n jFieldOnGBigObject: Int!\n kFieldOnGBigObject: Boolean!\n lFieldOnGBigObject: Float!\n mFieldOnGBigObject: String!\n nFieldOnGBigObject: Int!\n oFieldOnGBigObject: Boolean!\n pFieldOnGBigObject: Float!\n qFieldOnGBigObject: String!\n rFieldOnGBigObject: Int!\n sFieldOnGBigObject: Boolean!\n tFieldOnGBigObject: Float!\n uFieldOnGBigObject: String!\n vFieldOnGBigObject: Int!\n wFieldOnGBigObject: Boolean!\n xFieldOnGBigObject: Float!\n yFieldOnGBigObject: String!\n zFieldOnGBigObject: Int!\n}\n\ntype HBigObject {\n aFieldOnHBigObject: String!\n bFieldOnHBigObject: Int!\n cFieldOnHBigObject: Boolean!\n dFieldOnHBigObject: Float!\n eFieldOnHBigObject: String!\n fFieldOnHBigObject: Int!\n gFieldOnHBigObject: Boolean!\n hFieldOnHBigObject: Float!\n iFieldOnHBigObject: String!\n jFieldOnHBigObject: Int!\n kFieldOnHBigObject: Boolean!\n lFieldOnHBigObject: Float!\n mFieldOnHBigObject: String!\n nFieldOnHBigObject: Int!\n oFieldOnHBigObject: Boolean!\n pFieldOnHBigObject: Float!\n qFieldOnHBigObject: String!\n rFieldOnHBigObject: Int!\n sFieldOnHBigObject: Boolean!\n tFieldOnHBigObject: Float!\n uFieldOnHBigObject: String!\n vFieldOnHBigObject: Int!\n wFieldOnHBigObject: Boolean!\n xFieldOnHBigObject: Float!\n yFieldOnHBigObject: String!\n zFieldOnHBigObject: Int!\n}\n\ntype IBigObject {\n aFieldOnIBigObject: String!\n bFieldOnIBigObject: Int!\n cFieldOnIBigObject: Boolean!\n dFieldOnIBigObject: Float!\n eFieldOnIBigObject: String!\n fFieldOnIBigObject: Int!\n gFieldOnIBigObject: Boolean!\n hFieldOnIBigObject: Float!\n iFieldOnIBigObject: String!\n jFieldOnIBigObject: Int!\n kFieldOnIBigObject: Boolean!\n lFieldOnIBigObject: Float!\n mFieldOnIBigObject: String!\n nFieldOnIBigObject: Int!\n oFieldOnIBigObject: Boolean!\n pFieldOnIBigObject: Float!\n qFieldOnIBigObject: String!\n rFieldOnIBigObject: Int!\n sFieldOnIBigObject: Boolean!\n tFieldOnIBigObject: Float!\n uFieldOnIBigObject: String!\n vFieldOnIBigObject: Int!\n wFieldOnIBigObject: Boolean!\n xFieldOnIBigObject: Float!\n yFieldOnIBigObject: String!\n zFieldOnIBigObject: Int!\n}\n\ntype JBigObject {\n aFieldOnJBigObject: String!\n bFieldOnJBigObject: Int!\n cFieldOnJBigObject: Boolean!\n dFieldOnJBigObject: Float!\n eFieldOnJBigObject: String!\n fFieldOnJBigObject: Int!\n gFieldOnJBigObject: Boolean!\n hFieldOnJBigObject: Float!\n iFieldOnJBigObject: String!\n jFieldOnJBigObject: Int!\n kFieldOnJBigObject: Boolean!\n lFieldOnJBigObject: Float!\n mFieldOnJBigObject: String!\n nFieldOnJBigObject: Int!\n oFieldOnJBigObject: Boolean!\n pFieldOnJBigObject: Float!\n qFieldOnJBigObject: String!\n rFieldOnJBigObject: Int!\n sFieldOnJBigObject: Boolean!\n tFieldOnJBigObject: Float!\n uFieldOnJBigObject: String!\n vFieldOnJBigObject: Int!\n wFieldOnJBigObject: Boolean!\n xFieldOnJBigObject: Float!\n yFieldOnJBigObject: String!\n zFieldOnJBigObject: Int!\n}\n\ntype KBigObject {\n aFieldOnKBigObject: String!\n bFieldOnKBigObject: Int!\n cFieldOnKBigObject: Boolean!\n dFieldOnKBigObject: Float!\n eFieldOnKBigObject: String!\n fFieldOnKBigObject: Int!\n gFieldOnKBigObject: Boolean!\n hFieldOnKBigObject: Float!\n iFieldOnKBigObject: String!\n jFieldOnKBigObject: Int!\n kFieldOnKBigObject: Boolean!\n lFieldOnKBigObject: Float!\n mFieldOnKBigObject: String!\n nFieldOnKBigObject: Int!\n oFieldOnKBigObject: Boolean!\n pFieldOnKBigObject: Float!\n qFieldOnKBigObject: String!\n rFieldOnKBigObject: Int!\n sFieldOnKBigObject: Boolean!\n tFieldOnKBigObject: Float!\n uFieldOnKBigObject: String!\n vFieldOnKBigObject: Int!\n wFieldOnKBigObject: Boolean!\n xFieldOnKBigObject: Float!\n yFieldOnKBigObject: String!\n zFieldOnKBigObject: Int!\n}\n\ntype LBigObject {\n aFieldOnLBigObject: String!\n bFieldOnLBigObject: Int!\n cFieldOnLBigObject: Boolean!\n dFieldOnLBigObject: Float!\n eFieldOnLBigObject: String!\n fFieldOnLBigObject: Int!\n gFieldOnLBigObject: Boolean!\n hFieldOnLBigObject: Float!\n iFieldOnLBigObject: String!\n jFieldOnLBigObject: Int!\n kFieldOnLBigObject: Boolean!\n lFieldOnLBigObject: Float!\n mFieldOnLBigObject: String!\n nFieldOnLBigObject: Int!\n oFieldOnLBigObject: Boolean!\n pFieldOnLBigObject: Float!\n qFieldOnLBigObject: String!\n rFieldOnLBigObject: Int!\n sFieldOnLBigObject: Boolean!\n tFieldOnLBigObject: Float!\n uFieldOnLBigObject: String!\n vFieldOnLBigObject: Int!\n wFieldOnLBigObject: Boolean!\n xFieldOnLBigObject: Float!\n yFieldOnLBigObject: String!\n zFieldOnLBigObject: Int!\n}\n\ntype MBigObject {\n aFieldOnMBigObject: String!\n bFieldOnMBigObject: Int!\n cFieldOnMBigObject: Boolean!\n dFieldOnMBigObject: Float!\n eFieldOnMBigObject: String!\n fFieldOnMBigObject: Int!\n gFieldOnMBigObject: Boolean!\n hFieldOnMBigObject: Float!\n iFieldOnMBigObject: String!\n jFieldOnMBigObject: Int!\n kFieldOnMBigObject: Boolean!\n lFieldOnMBigObject: Float!\n mFieldOnMBigObject: String!\n nFieldOnMBigObject: Int!\n oFieldOnMBigObject: Boolean!\n pFieldOnMBigObject: Float!\n qFieldOnMBigObject: String!\n rFieldOnMBigObject: Int!\n sFieldOnMBigObject: Boolean!\n tFieldOnMBigObject: Float!\n uFieldOnMBigObject: String!\n vFieldOnMBigObject: Int!\n wFieldOnMBigObject: Boolean!\n xFieldOnMBigObject: Float!\n yFieldOnMBigObject: String!\n zFieldOnMBigObject: Int!\n}\n\ntype NBigObject {\n aFieldOnNBigObject: String!\n bFieldOnNBigObject: Int!\n cFieldOnNBigObject: Boolean!\n dFieldOnNBigObject: Float!\n eFieldOnNBigObject: String!\n fFieldOnNBigObject: Int!\n gFieldOnNBigObject: Boolean!\n hFieldOnNBigObject: Float!\n iFieldOnNBigObject: String!\n jFieldOnNBigObject: Int!\n kFieldOnNBigObject: Boolean!\n lFieldOnNBigObject: Float!\n mFieldOnNBigObject: String!\n nFieldOnNBigObject: Int!\n oFieldOnNBigObject: Boolean!\n pFieldOnNBigObject: Float!\n qFieldOnNBigObject: String!\n rFieldOnNBigObject: Int!\n sFieldOnNBigObject: Boolean!\n tFieldOnNBigObject: Float!\n uFieldOnNBigObject: String!\n vFieldOnNBigObject: Int!\n wFieldOnNBigObject: Boolean!\n xFieldOnNBigObject: Float!\n yFieldOnNBigObject: String!\n zFieldOnNBigObject: Int!\n}\n\ntype OBigObject {\n aFieldOnOBigObject: String!\n bFieldOnOBigObject: Int!\n cFieldOnOBigObject: Boolean!\n dFieldOnOBigObject: Float!\n eFieldOnOBigObject: String!\n fFieldOnOBigObject: Int!\n gFieldOnOBigObject: Boolean!\n hFieldOnOBigObject: Float!\n iFieldOnOBigObject: String!\n jFieldOnOBigObject: Int!\n kFieldOnOBigObject: Boolean!\n lFieldOnOBigObject: Float!\n mFieldOnOBigObject: String!\n nFieldOnOBigObject: Int!\n oFieldOnOBigObject: Boolean!\n pFieldOnOBigObject: Float!\n qFieldOnOBigObject: String!\n rFieldOnOBigObject: Int!\n sFieldOnOBigObject: Boolean!\n tFieldOnOBigObject: Float!\n uFieldOnOBigObject: String!\n vFieldOnOBigObject: Int!\n wFieldOnOBigObject: Boolean!\n xFieldOnOBigObject: Float!\n yFieldOnOBigObject: String!\n zFieldOnOBigObject: Int!\n}\n\ntype PBigObject {\n aFieldOnPBigObject: String!\n bFieldOnPBigObject: Int!\n cFieldOnPBigObject: Boolean!\n dFieldOnPBigObject: Float!\n eFieldOnPBigObject: String!\n fFieldOnPBigObject: Int!\n gFieldOnPBigObject: Boolean!\n hFieldOnPBigObject: Float!\n iFieldOnPBigObject: String!\n jFieldOnPBigObject: Int!\n kFieldOnPBigObject: Boolean!\n lFieldOnPBigObject: Float!\n mFieldOnPBigObject: String!\n nFieldOnPBigObject: Int!\n oFieldOnPBigObject: Boolean!\n pFieldOnPBigObject: Float!\n qFieldOnPBigObject: String!\n rFieldOnPBigObject: Int!\n sFieldOnPBigObject: Boolean!\n tFieldOnPBigObject: Float!\n uFieldOnPBigObject: String!\n vFieldOnPBigObject: Int!\n wFieldOnPBigObject: Boolean!\n xFieldOnPBigObject: Float!\n yFieldOnPBigObject: String!\n zFieldOnPBigObject: Int!\n}\n\ntype QBigObject {\n aFieldOnQBigObject: String!\n bFieldOnQBigObject: Int!\n cFieldOnQBigObject: Boolean!\n dFieldOnQBigObject: Float!\n eFieldOnQBigObject: String!\n fFieldOnQBigObject: Int!\n gFieldOnQBigObject: Boolean!\n hFieldOnQBigObject: Float!\n iFieldOnQBigObject: String!\n jFieldOnQBigObject: Int!\n kFieldOnQBigObject: Boolean!\n lFieldOnQBigObject: Float!\n mFieldOnQBigObject: String!\n nFieldOnQBigObject: Int!\n oFieldOnQBigObject: Boolean!\n pFieldOnQBigObject: Float!\n qFieldOnQBigObject: String!\n rFieldOnQBigObject: Int!\n sFieldOnQBigObject: Boolean!\n tFieldOnQBigObject: Float!\n uFieldOnQBigObject: String!\n vFieldOnQBigObject: Int!\n wFieldOnQBigObject: Boolean!\n xFieldOnQBigObject: Float!\n yFieldOnQBigObject: String!\n zFieldOnQBigObject: Int!\n}\n\ntype RBigObject {\n aFieldOnRBigObject: String!\n bFieldOnRBigObject: Int!\n cFieldOnRBigObject: Boolean!\n dFieldOnRBigObject: Float!\n eFieldOnRBigObject: String!\n fFieldOnRBigObject: Int!\n gFieldOnRBigObject: Boolean!\n hFieldOnRBigObject: Float!\n iFieldOnRBigObject: String!\n jFieldOnRBigObject: Int!\n kFieldOnRBigObject: Boolean!\n lFieldOnRBigObject: Float!\n mFieldOnRBigObject: String!\n nFieldOnRBigObject: Int!\n oFieldOnRBigObject: Boolean!\n pFieldOnRBigObject: Float!\n qFieldOnRBigObject: String!\n rFieldOnRBigObject: Int!\n sFieldOnRBigObject: Boolean!\n tFieldOnRBigObject: Float!\n uFieldOnRBigObject: String!\n vFieldOnRBigObject: Int!\n wFieldOnRBigObject: Boolean!\n xFieldOnRBigObject: Float!\n yFieldOnRBigObject: String!\n zFieldOnRBigObject: Int!\n}\n\ntype SBigObject {\n aFieldOnSBigObject: String!\n bFieldOnSBigObject: Int!\n cFieldOnSBigObject: Boolean!\n dFieldOnSBigObject: Float!\n eFieldOnSBigObject: String!\n fFieldOnSBigObject: Int!\n gFieldOnSBigObject: Boolean!\n hFieldOnSBigObject: Float!\n iFieldOnSBigObject: String!\n jFieldOnSBigObject: Int!\n kFieldOnSBigObject: Boolean!\n lFieldOnSBigObject: Float!\n mFieldOnSBigObject: String!\n nFieldOnSBigObject: Int!\n oFieldOnSBigObject: Boolean!\n pFieldOnSBigObject: Float!\n qFieldOnSBigObject: String!\n rFieldOnSBigObject: Int!\n sFieldOnSBigObject: Boolean!\n tFieldOnSBigObject: Float!\n uFieldOnSBigObject: String!\n vFieldOnSBigObject: Int!\n wFieldOnSBigObject: Boolean!\n xFieldOnSBigObject: Float!\n yFieldOnSBigObject: String!\n zFieldOnSBigObject: Int!\n}\n\ntype TBigObject {\n aFieldOnTBigObject: String!\n bFieldOnTBigObject: Int!\n cFieldOnTBigObject: Boolean!\n dFieldOnTBigObject: Float!\n eFieldOnTBigObject: String!\n fFieldOnTBigObject: Int!\n gFieldOnTBigObject: Boolean!\n hFieldOnTBigObject: Float!\n iFieldOnTBigObject: String!\n jFieldOnTBigObject: Int!\n kFieldOnTBigObject: Boolean!\n lFieldOnTBigObject: Float!\n mFieldOnTBigObject: String!\n nFieldOnTBigObject: Int!\n oFieldOnTBigObject: Boolean!\n pFieldOnTBigObject: Float!\n qFieldOnTBigObject: String!\n rFieldOnTBigObject: Int!\n sFieldOnTBigObject: Boolean!\n tFieldOnTBigObject: Float!\n uFieldOnTBigObject: String!\n vFieldOnTBigObject: Int!\n wFieldOnTBigObject: Boolean!\n xFieldOnTBigObject: Float!\n yFieldOnTBigObject: String!\n zFieldOnTBigObject: Int!\n}\n\ntype UBigObject {\n aFieldOnUBigObject: String!\n bFieldOnUBigObject: Int!\n cFieldOnUBigObject: Boolean!\n dFieldOnUBigObject: Float!\n eFieldOnUBigObject: String!\n fFieldOnUBigObject: Int!\n gFieldOnUBigObject: Boolean!\n hFieldOnUBigObject: Float!\n iFieldOnUBigObject: String!\n jFieldOnUBigObject: Int!\n kFieldOnUBigObject: Boolean!\n lFieldOnUBigObject: Float!\n mFieldOnUBigObject: String!\n nFieldOnUBigObject: Int!\n oFieldOnUBigObject: Boolean!\n pFieldOnUBigObject: Float!\n qFieldOnUBigObject: String!\n rFieldOnUBigObject: Int!\n sFieldOnUBigObject: Boolean!\n tFieldOnUBigObject: Float!\n uFieldOnUBigObject: String!\n vFieldOnUBigObject: Int!\n wFieldOnUBigObject: Boolean!\n xFieldOnUBigObject: Float!\n yFieldOnUBigObject: String!\n zFieldOnUBigObject: Int!\n}\n\ntype VBigObject {\n aFieldOnVBigObject: String!\n bFieldOnVBigObject: Int!\n cFieldOnVBigObject: Boolean!\n dFieldOnVBigObject: Float!\n eFieldOnVBigObject: String!\n fFieldOnVBigObject: Int!\n gFieldOnVBigObject: Boolean!\n hFieldOnVBigObject: Float!\n iFieldOnVBigObject: String!\n jFieldOnVBigObject: Int!\n kFieldOnVBigObject: Boolean!\n lFieldOnVBigObject: Float!\n mFieldOnVBigObject: String!\n nFieldOnVBigObject: Int!\n oFieldOnVBigObject: Boolean!\n pFieldOnVBigObject: Float!\n qFieldOnVBigObject: String!\n rFieldOnVBigObject: Int!\n sFieldOnVBigObject: Boolean!\n tFieldOnVBigObject: Float!\n uFieldOnVBigObject: String!\n vFieldOnVBigObject: Int!\n wFieldOnVBigObject: Boolean!\n xFieldOnVBigObject: Float!\n yFieldOnVBigObject: String!\n zFieldOnVBigObject: Int!\n}\n\ntype WBigObject {\n aFieldOnWBigObject: String!\n bFieldOnWBigObject: Int!\n cFieldOnWBigObject: Boolean!\n dFieldOnWBigObject: Float!\n eFieldOnWBigObject: String!\n fFieldOnWBigObject: Int!\n gFieldOnWBigObject: Boolean!\n hFieldOnWBigObject: Float!\n iFieldOnWBigObject: String!\n jFieldOnWBigObject: Int!\n kFieldOnWBigObject: Boolean!\n lFieldOnWBigObject: Float!\n mFieldOnWBigObject: String!\n nFieldOnWBigObject: Int!\n oFieldOnWBigObject: Boolean!\n pFieldOnWBigObject: Float!\n qFieldOnWBigObject: String!\n rFieldOnWBigObject: Int!\n sFieldOnWBigObject: Boolean!\n tFieldOnWBigObject: Float!\n uFieldOnWBigObject: String!\n vFieldOnWBigObject: Int!\n wFieldOnWBigObject: Boolean!\n xFieldOnWBigObject: Float!\n yFieldOnWBigObject: String!\n zFieldOnWBigObject: Int!\n}\n\ntype XBigObject {\n aFieldOnXBigObject: String!\n bFieldOnXBigObject: Int!\n cFieldOnXBigObject: Boolean!\n dFieldOnXBigObject: Float!\n eFieldOnXBigObject: String!\n fFieldOnXBigObject: Int!\n gFieldOnXBigObject: Boolean!\n hFieldOnXBigObject: Float!\n iFieldOnXBigObject: String!\n jFieldOnXBigObject: Int!\n kFieldOnXBigObject: Boolean!\n lFieldOnXBigObject: Float!\n mFieldOnXBigObject: String!\n nFieldOnXBigObject: Int!\n oFieldOnXBigObject: Boolean!\n pFieldOnXBigObject: Float!\n qFieldOnXBigObject: String!\n rFieldOnXBigObject: Int!\n sFieldOnXBigObject: Boolean!\n tFieldOnXBigObject: Float!\n uFieldOnXBigObject: String!\n vFieldOnXBigObject: Int!\n wFieldOnXBigObject: Boolean!\n xFieldOnXBigObject: Float!\n yFieldOnXBigObject: String!\n zFieldOnXBigObject: Int!\n}\n\ntype YBigObject {\n aFieldOnYBigObject: String!\n bFieldOnYBigObject: Int!\n cFieldOnYBigObject: Boolean!\n dFieldOnYBigObject: Float!\n eFieldOnYBigObject: String!\n fFieldOnYBigObject: Int!\n gFieldOnYBigObject: Boolean!\n hFieldOnYBigObject: Float!\n iFieldOnYBigObject: String!\n jFieldOnYBigObject: Int!\n kFieldOnYBigObject: Boolean!\n lFieldOnYBigObject: Float!\n mFieldOnYBigObject: String!\n nFieldOnYBigObject: Int!\n oFieldOnYBigObject: Boolean!\n pFieldOnYBigObject: Float!\n qFieldOnYBigObject: String!\n rFieldOnYBigObject: Int!\n sFieldOnYBigObject: Boolean!\n tFieldOnYBigObject: Float!\n uFieldOnYBigObject: String!\n vFieldOnYBigObject: Int!\n wFieldOnYBigObject: Boolean!\n xFieldOnYBigObject: Float!\n yFieldOnYBigObject: String!\n zFieldOnYBigObject: Int!\n}\n\ntype ZBigObject {\n aFieldOnZBigObject: String!\n bFieldOnZBigObject: Int!\n cFieldOnZBigObject: Boolean!\n dFieldOnZBigObject: Float!\n eFieldOnZBigObject: String!\n fFieldOnZBigObject: Int!\n gFieldOnZBigObject: Boolean!\n hFieldOnZBigObject: Float!\n iFieldOnZBigObject: String!\n jFieldOnZBigObject: Int!\n kFieldOnZBigObject: Boolean!\n lFieldOnZBigObject: Float!\n mFieldOnZBigObject: String!\n nFieldOnZBigObject: Int!\n oFieldOnZBigObject: Boolean!\n pFieldOnZBigObject: Float!\n qFieldOnZBigObject: String!\n rFieldOnZBigObject: Int!\n sFieldOnZBigObject: Boolean!\n tFieldOnZBigObject: Float!\n uFieldOnZBigObject: String!\n vFieldOnZBigObject: Int!\n wFieldOnZBigObject: Boolean!\n xFieldOnZBigObject: Float!\n yFieldOnZBigObject: String!\n zFieldOnZBigObject: Int!\n}\n\ninput ProjectInput {\n name: String!\n description: String\n startDate: String\n endDate: String\n status: ProjectStatus!\n}\n\ninput MilestoneInput {\n projectId: ID!\n name: String!\n description: String\n dueDate: String\n status: MilestoneStatus!\n}\n\ninput TaskInput {\n projectId: ID!\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float\n}\n\ninterface Node {\n id: ID!\n}\n\ninterface Timestamped {\n startDate: String\n endDate: String\n}\n\ninterface Assignable {\n assigneeId: Int\n}\n\nenum ProjectStatus {\n PLANNING\n ACTIVE\n COMPLETED\n ON_HOLD\n}\n\nenum MilestoneStatus {\n PENDING\n IN_PROGRESS\n COMPLETED\n DELAYED\n}\n\nenum TaskStatus {\n TODO\n IN_PROGRESS\n REVIEW\n COMPLETED\n BLOCKED\n}\n\nenum TaskPriority {\n LOW\n MEDIUM\n HIGH\n URGENT\n}\n\nenum ProjectUpdateType {\n STATUS_CHANGE\n MILESTONE_ADDED\n TASK_ASSIGNED\n PROGRESS_UPDATE\n TEAM_CHANGE\n}\n\nunion ProjectResource = Employee | Product | Milestone | Task\n\nunion ProjectSearchResult = Project | Milestone | Task\n\nunion ProjectActivity = ProjectUpdate | Milestone | Task\n\ntype Product {\n upc: String!\n projects: [Project!]\n featureMatrix: [[String]]\n}\n\ntype Course {\n id: ID!\n title: String!\n description: String\n instructor: Employee!\n lessons: [Lesson!]!\n}\n\ntype Lesson {\n id: ID!\n courseId: ID!\n title: String!\n description: String\n order: Int!\n course: Course!\n}\n\ntype Engineer implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n engineerType: EngineerType!\n}\n\ntype Marketer implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n}\n\ntype Operator implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n operatorType: [OperationType!]!\n}\n\ntype Employee implements Identifiable {\n details: Details\n id: Int!\n tag: String!\n role: RoleType!\n notes: String\n updatedAt: String!\n startDate: String! @requiresScopes(scopes: [[\"read:employee\", \"read:private\"], [\"read:all\"]])\n currentMood: Mood!\n derivedMood: Mood!\n isAvailable: Boolean\n rootFieldThrowsError: String\n rootFieldErrorWrapper: ErrorWrapper\n hobbies: [Hobby!]\n products: [ProductName!]!\n fieldThrowsError: String\n projects: [Project!]\n assignedTasks: [Task!]!\n completedTasks: [Task!]!\n skills: [String]\n certifications: [String!]\n projectHistory: [[Project!]]!\n currentWorkload(includeCompleted: Boolean, projectId: ID): Int!\n averageTaskCompletionDays(projectId: ID, priority: TaskPriority): Float\n taughtCourses: [Course!]!\n}\n\ntype Cosmo implements IProduct {\n upc: ID!\n engineers: [Employee!]!\n lead: Employee!\n isLeadAvailable: Boolean\n name: ProductName!\n repositoryURL: String!\n}\n\ntype SDK implements IProduct {\n upc: ID!\n engineers: [Employee!]!\n owner: Employee!\n unicode: String!\n clientLanguages: [ProgrammingLanguage!]!\n}\n\ninterface Pet implements Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Alligator implements Pet & Animal {\n class: Class!\n dangerous: String!\n gender: Gender!\n name: String!\n}\n\ntype Cat implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n type: CatType!\n}\n\ntype Dog implements Pet & Animal {\n breed: DogBreed!\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Mouse implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Pony implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Exercise implements Hobby {\n employees: [Employee!]!\n category: ExerciseType!\n}\n\ntype Flying implements Experience & Hobby {\n employees: [Employee!]!\n planeModels: [String!]!\n yearsOfExperience: Float!\n}\n\ntype Gaming implements Experience & Hobby {\n employees: [Employee!]!\n genres: [GameGenre!]!\n name: String!\n yearsOfExperience: Float!\n}\n\ntype Other implements Hobby {\n employees: [Employee!]!\n name: String!\n}\n\ntype Programming implements Hobby {\n employees: [Employee!]!\n languages: [ProgrammingLanguage!]!\n}\n\ntype Travelling implements Hobby {\n employees: [Employee!]!\n countriesLived: [Country!]!\n}\n\ntype DirectiveFact implements TopSecretFact @authenticated {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype EntityFact implements TopSecretFact @requiresScopes(scopes: [[\"read:entity\"]]) {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype MiscellaneousFact implements TopSecretFact {\n title: String!\n description: FactContent! @requiresScopes(scopes: [[\"read:miscellaneous\"]])\n factType: TopSecretFactType\n}\n\ntype Project implements Node & Timestamped {\n id: ID!\n name: String!\n description: String\n startDate: String\n endDate: String\n status: ProjectStatus!\n teamMembers: [Employee!]!\n relatedProducts: [Product!]!\n milestoneIds: [String!]\n milestones: [Milestone!]!\n tasks: [Task!]!\n progress: Float\n tags: [String]\n alternativeProjects: [Project]\n dependencies: [Project!]\n resourceGroups: [[ProjectResource!]!]!\n tasksByPhase: [[Task!]]!\n milestoneGroups: [[Milestone]]\n priorityMatrix: [[[Task!]!]!]\n filteredTasks(status: TaskStatus, priority: TaskPriority, limit: Int): [Task!]!\n completionRate(includeSubtasks: Boolean): Float!\n estimatedDaysRemaining(fromDate: String): Int\n criticalDeadline(withinDays: Int): Timestamped\n topPriorityItem(category: String): ProjectSearchResult\n}\n\ntype Milestone implements Node & Timestamped {\n id: ID!\n projectId: ID!\n name: String!\n description: String\n startDate: String\n endDate: String\n status: MilestoneStatus!\n completionPercentage: Float\n dependencies: [Milestone]!\n subtasks: [Task]\n reviewers: [Employee!]\n isAtRisk(threshold: Float): Boolean!\n daysUntilDue(fromDate: String): Int\n}\n\ntype Task implements Node & Assignable {\n id: ID!\n projectId: ID!\n milestoneId: ID\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float @deprecated(reason: \"No more estimations!\")\n actualHours: Float\n createdAt: String\n completedAt: String\n labels: [String]\n subtasks: [Task!]\n dependencies: [Task]!\n attachmentUrls: [String!]!\n reviewerIds: [Int]\n isBlocked(checkDependencies: Boolean): Boolean!\n totalEffort(includeSubtasks: Boolean): Float\n}\n\ntype ProjectUpdate implements Node {\n id: ID!\n projectId: ID!\n updatedById: Int!\n updateType: ProjectUpdateType!\n description: String!\n timestamp: String!\n metadata: String\n}", + "graphqlSchema": "schema {\n query: Query\n mutation: Mutation\n subscription: Subscription\n}\n\ndirective @tag(name: String!) repeatable on ARGUMENT_DEFINITION | ENUM | ENUM_VALUE | FIELD_DEFINITION | INPUT_FIELD_DEFINITION | INPUT_OBJECT | INTERFACE | OBJECT | SCALAR | UNION\n\ndirective @requiresScopes(scopes: [[openfed__Scope!]!]!) on ENUM | FIELD_DEFINITION | INTERFACE | OBJECT | SCALAR\n\ndirective @authenticated on ENUM | FIELD_DEFINITION | INTERFACE | OBJECT | SCALAR\n\ndirective @inaccessible on ARGUMENT_DEFINITION | ENUM | ENUM_VALUE | FIELD_DEFINITION | INPUT_FIELD_DEFINITION | INPUT_OBJECT | INTERFACE | OBJECT | SCALAR | UNION\n\nscalar openfed__Scope\n\ntype Query {\n employee(id: Int!): Employee\n employeeAsList(id: Int!): [Employee]\n employees: [Employee]\n products: [Products!]!\n teammates(team: Department!): [Employee!]!\n firstEmployee: Employee! @tag(name: \"internal\")\n findEmployeesBy(criteria: FindEmployeeCriteria!): [Employee!]!\n \"\"\" This is a GraphQL query that retrieves a list of employees.\"\"\"\n findEmployees(criteria: SearchInput): [Employee!]!\n productTypes: [Products!]!\n topSecretFederationFacts: [TopSecretFact!]! @requiresScopes(scopes: [[\"read:fact\"], [\"read:all\"]])\n factTypes: [TopSecretFactType!]\n sharedThings(numOfA: Int!, numOfB: Int!): [Thing!]!\n \"\"\"Returns the value of the received HTTP header.\"\"\"\n headerValue(name: String!): String!\n \"\"\"Returns the value of the given key in the WS initial payload.\"\"\"\n initPayloadValue(key: String!): String!\n initialPayload: Map\n \"\"\"Returns response after the given delay\"\"\"\n delay(response: String!, ms: Int!): String!\n bigResponse(artificialDelay: Int! = 0, bigObjects: Int! = 100, nestedObjects: Int! = 100, deeplyNestedObjects: Int! = 100): [BigObject!]!\n longResponse(artificialDelay: Int! = 0, bytes: Int!): String\n bigAbstractResponse: BigAbstractResponse\n rootFieldWithListArg(arg: [String!]!): [String!]!\n rootFieldWithNestedListArg(arg: [[String!]!]!): [[String!]!]!\n rootFieldWithListOfInputArg(arg: [InputType!]!): [InputResponse!]!\n rootFieldWithListOfEnumArg(arg: [EnumType!]!): [EnumType!]!\n rootFieldWithInput(arg: InputArg!): String!\n floatField(arg: Float): Float\n secret: Secret @requiresScopes(scopes: [[\"read:secret\"]])\n projects: [Project!]!\n project(id: ID!): Project\n projectStatuses: [ProjectStatus!]!\n projectsByStatus(status: ProjectStatus!): [Project!]!\n projectResources(projectId: ID!): [ProjectResource!]!\n searchProjects(query: String!): [ProjectSearchResult!]!\n milestones(projectId: ID!): [Milestone!]!\n tasks(projectId: ID!): [Task!]!\n projectActivities(projectId: ID!): [ProjectActivity!]!\n projectTags: [String]\n archivedProjects: [Project]!\n tasksByPriority(projectId: ID!): [[Task]]\n resourceMatrix(projectId: ID!): [[ProjectResource!]!]!\n killService: Boolean!\n panic: Boolean!\n nodesById(id: ID!): [Node!]!\n courses: [Course!]!\n course(id: ID!): Course\n lessons(courseId: ID!): [Lesson!]!\n killCoursesService: Boolean!\n throwErrorCourses: Boolean!\n}\n\nscalar Upload\n\ntype Mutation {\n updateEmployeeTag(id: Int!, tag: String!): Employee\n singleUpload(file: Upload!): Boolean!\n singleUploadWithInput(arg: FileUpload!): Boolean!\n multipleUpload(files: [Upload!]!): Boolean!\n addFact(fact: TopSecretFactInput!): TopSecretFact! @requiresScopes(scopes: [[\"write:fact\"], [\"write:all\"]])\n \"\"\" This mutation updates the availability status of an employee in the system.\n \"\"\"\n updateAvailability(employeeID: Int!, isAvailable: Boolean!): Employee!\n \"\"\" This mutation update the mood of an employee. \"\"\"\n updateMood(employeeID: Int!, mood: Mood!): Employee!\n addProject(project: ProjectInput!): Project!\n addMilestone(milestone: MilestoneInput!): Milestone!\n addTask(task: TaskInput!): Task!\n updateProjectStatus(projectId: ID!, status: ProjectStatus!): ProjectUpdate!\n addCourse(title: String!, instructorId: Int!): Course!\n addLesson(courseId: ID!, title: String!, order: Int!): Lesson!\n}\n\ninput FileUpload {\n nested: DeeplyNestedFileUpload\n nestedList: [Upload!]\n}\n\ninput DeeplyNestedFileUpload {\n file: Upload!\n}\n\ntype Subscription {\n \"\"\"`currentTime` will return a stream of `Time` objects.\"\"\"\n currentTime: Time!\n countEmp(max: Int!, intervalMilliseconds: Int!): Int!\n countEmp2(max: Int!, intervalMilliseconds: Int!): Int!\n countFor(count: Int!): Int!\n countHob(max: Int!, intervalMilliseconds: Int!): Int!\n \"\"\"Returns a stream with the value of the received HTTP header.\"\"\"\n headerValue(name: String!, repeat: Int): TimestampedString!\n \"\"\"\n Returns a stream with the value of value of the given key in the WS initial payload.\n \"\"\"\n initPayloadValue(key: String!, repeat: Int): TimestampedString!\n \"\"\"Returns a stream with the value of the WS initial payload.\"\"\"\n initialPayload(repeat: Int): Map\n returnsError: String\n}\n\nenum Department {\n ENGINEERING\n MARKETING\n OPERATIONS\n}\n\ninterface RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n}\n\nenum EngineerType {\n BACKEND\n FRONTEND\n FULLSTACK\n}\n\ninterface Identifiable {\n id: Int!\n}\n\nenum OperationType {\n FINANCE\n HUMAN_RESOURCES\n}\n\ntype Details {\n forename: String!\n location: Country!\n surname: String!\n pastLocations: [City!]!\n middlename: String @deprecated(reason: \"No longer supported\")\n hasChildren: Boolean!\n maritalStatus: MaritalStatus\n nationality: Nationality!\n pets: [Pet]\n}\n\ntype City {\n type: String!\n name: String!\n country: Country\n}\n\ntype Country {\n key: CountryKey!\n language: String\n}\n\ntype CountryKey {\n name: String!\n}\n\nenum Mood {\n HAPPY\n SAD\n APATHETIC @inaccessible\n}\n\ntype ErrorWrapper {\n okField: String\n errorField: String\n}\n\ntype Time {\n unixTime: Int!\n timeStamp: String!\n}\n\nunion Products = Consultancy | Cosmo | SDK | Documentation\n\ninterface IProduct {\n upc: ID!\n engineers: [Employee!]!\n}\n\ntype Consultancy {\n upc: ID!\n lead: Employee!\n isLeadAvailable: Boolean\n name: ProductName!\n}\n\ninput FindEmployeeCriteria @oneOf {\n id: Int\n department: Department\n title: String\n}\n\nenum Class {\n FISH\n MAMMAL\n REPTILE\n}\n\nenum Gender {\n FEMALE\n MALE\n UNKNOWN\n}\n\ninterface Animal {\n class: Class!\n gender: Gender!\n}\n\nenum CatType {\n HOME\n STREET\n}\n\nenum DogBreed {\n GOLDEN_RETRIEVER\n POODLE\n ROTTWEILER\n YORKSHIRE_TERRIER\n}\n\nenum MaritalStatus {\n ENGAGED\n MARRIED\n}\n\nenum Nationality {\n AMERICAN\n DUTCH\n ENGLISH\n GERMAN\n INDIAN\n SPANISH\n UKRAINIAN\n}\n\n\"\"\" Allows to filter employees by their details. \"\"\"\ninput SearchInput {\n hasPets: Boolean\n nationality: Nationality\n nested: NestedSearchInput\n}\n\ninput NestedSearchInput {\n maritalStatus: MaritalStatus\n hasChildren: Boolean\n}\n\nenum ExerciseType {\n CALISTHENICS\n HIKING\n SPORT\n STRENGTH_TRAINING\n}\n\ninterface Experience {\n yearsOfExperience: Float!\n}\n\nenum GameGenre {\n ADVENTURE\n BOARD\n FPS\n CARD\n RPG\n ROGUELITE\n SIMULATION\n STRATEGY\n}\n\nenum ProgrammingLanguage {\n CSHARP\n GO\n RUST\n TYPESCRIPT\n}\n\ninterface Hobby {\n employees: [Employee!]!\n}\n\ntype Thing {\n a: String!\n b: String!\n}\n\ninput TopSecretFactInput {\n title: String!\n description: FactContent!\n factType: TopSecretFactType!\n}\n\nenum TopSecretFactType @authenticated {\n DIRECTIVE\n ENTITY\n MISCELLANEOUS\n}\n\ninterface TopSecretFact @authenticated {\n description: FactContent!\n factType: TopSecretFactType\n}\n\nscalar FactContent @requiresScopes(scopes: [[\"read:scalar\"], [\"read:all\"]])\n\nenum ProductName {\n CONSULTANCY\n COSMO\n ENGINE\n FINANCE\n HUMAN_RESOURCES\n MARKETING\n SDK\n}\n\ntype Documentation {\n url(product: ProductName!): String!\n urls(products: [ProductName!]!): [String!]!\n}\n\ntype Secret {\n value: String\n}\n\ninput InputArg {\n enums: [EnumType!]\n enum: EnumType\n string: String\n strings: [String!]\n}\n\nenum EnumType {\n A\n B\n C\n}\n\ninput InputType {\n arg: String!\n}\n\ntype InputResponse {\n arg: String!\n}\n\nscalar Map\n\ntype TimestampedString {\n \"\"\"The value of the string.\"\"\"\n value: String!\n \"\"\"The timestamp when the response was generated.\"\"\"\n unixTime: Int!\n \"\"\"Sequence number\"\"\"\n seq: Int!\n \"\"\"Total number of responses to be sent\"\"\"\n total: Int!\n initialPayload: Map\n}\n\ntype BigObject {\n nestedObjects: [NestedObject!]!\n}\n\ntype NestedObject {\n deeplyNestedObjects: [DeeplyNestedObject!]!\n}\n\ntype DeeplyNestedObject {\n aFieldOnDeeplyNestedObject: String!\n bFieldOnDeeplyNestedObject: Int!\n cFieldOnDeeplyNestedObject: Boolean!\n dFieldOnDeeplyNestedObject: Float!\n eFieldOnDeeplyNestedObject: String!\n fFieldOnDeeplyNestedObject: Int!\n gFieldOnDeeplyNestedObject: Boolean!\n hFieldOnDeeplyNestedObject: Float!\n iFieldOnDeeplyNestedObject: String!\n jFieldOnDeeplyNestedObject: Int!\n kFieldOnDeeplyNestedObject: Boolean!\n lFieldOnDeeplyNestedObject: Float!\n mFieldOnDeeplyNestedObject: String!\n nFieldOnDeeplyNestedObject: Int!\n oFieldOnDeeplyNestedObject: Boolean!\n pFieldOnDeeplyNestedObject: Float!\n qFieldOnDeeplyNestedObject: String!\n rFieldOnDeeplyNestedObject: Int!\n sFieldOnDeeplyNestedObject: Boolean!\n tFieldOnDeeplyNestedObject: Float!\n uFieldOnDeeplyNestedObject: String!\n vFieldOnDeeplyNestedObject: Int!\n wFieldOnDeeplyNestedObject: Boolean!\n xFieldOnDeeplyNestedObject: Float!\n yFieldOnDeeplyNestedObject: String!\n zFieldOnDeeplyNestedObject: Int!\n}\n\nunion BigAbstractResponse = ABigObject | BBigObject | CBigObject | DBigObject | EBigObject | FBigObject | GBigObject | HBigObject | IBigObject | JBigObject | KBigObject | LBigObject | MBigObject | NBigObject | OBigObject | PBigObject | QBigObject | RBigObject | SBigObject | TBigObject | UBigObject | VBigObject | WBigObject | XBigObject | YBigObject | ZBigObject\n\ntype ABigObject {\n aFieldOnABigObject: String!\n bFieldOnABigObject: Int!\n cFieldOnABigObject: Boolean!\n dFieldOnABigObject: Float!\n eFieldOnABigObject: String!\n fFieldOnABigObject: Int!\n gFieldOnABigObject: Boolean!\n hFieldOnABigObject: Float!\n iFieldOnABigObject: String!\n jFieldOnABigObject: Int!\n kFieldOnABigObject: Boolean!\n lFieldOnABigObject: Float!\n mFieldOnABigObject: String!\n nFieldOnABigObject: Int!\n oFieldOnABigObject: Boolean!\n pFieldOnABigObject: Float!\n qFieldOnABigObject: String!\n rFieldOnABigObject: Int!\n sFieldOnABigObject: Boolean!\n tFieldOnABigObject: Float!\n uFieldOnABigObject: String!\n vFieldOnABigObject: Int!\n wFieldOnABigObject: Boolean!\n xFieldOnABigObject: Float!\n yFieldOnABigObject: String!\n zFieldOnABigObject: Int!\n}\n\ntype BBigObject {\n aFieldOnBBigObject: String!\n bFieldOnBBigObject: Int!\n cFieldOnBBigObject: Boolean!\n dFieldOnBBigObject: Float!\n eFieldOnBBigObject: String!\n fFieldOnBBigObject: Int!\n gFieldOnBBigObject: Boolean!\n hFieldOnBBigObject: Float!\n iFieldOnBBigObject: String!\n jFieldOnBBigObject: Int!\n kFieldOnBBigObject: Boolean!\n lFieldOnBBigObject: Float!\n mFieldOnBBigObject: String!\n nFieldOnBBigObject: Int!\n oFieldOnBBigObject: Boolean!\n pFieldOnBBigObject: Float!\n qFieldOnBBigObject: String!\n rFieldOnBBigObject: Int!\n sFieldOnBBigObject: Boolean!\n tFieldOnBBigObject: Float!\n uFieldOnBBigObject: String!\n vFieldOnBBigObject: Int!\n wFieldOnBBigObject: Boolean!\n xFieldOnBBigObject: Float!\n yFieldOnBBigObject: String!\n zFieldOnBBigObject: Int!\n}\n\ntype CBigObject {\n aFieldOnCBigObject: String!\n bFieldOnCBigObject: Int!\n cFieldOnCBigObject: Boolean!\n dFieldOnCBigObject: Float!\n eFieldOnCBigObject: String!\n fFieldOnCBigObject: Int!\n gFieldOnCBigObject: Boolean!\n hFieldOnCBigObject: Float!\n iFieldOnCBigObject: String!\n jFieldOnCBigObject: Int!\n kFieldOnCBigObject: Boolean!\n lFieldOnCBigObject: Float!\n mFieldOnCBigObject: String!\n nFieldOnCBigObject: Int!\n oFieldOnCBigObject: Boolean!\n pFieldOnCBigObject: Float!\n qFieldOnCBigObject: String!\n rFieldOnCBigObject: Int!\n sFieldOnCBigObject: Boolean!\n tFieldOnCBigObject: Float!\n uFieldOnCBigObject: String!\n vFieldOnCBigObject: Int!\n wFieldOnCBigObject: Boolean!\n xFieldOnCBigObject: Float!\n yFieldOnCBigObject: String!\n zFieldOnCBigObject: Int!\n}\n\ntype DBigObject {\n aFieldOnDBigObject: String!\n bFieldOnDBigObject: Int!\n cFieldOnDBigObject: Boolean!\n dFieldOnDBigObject: Float!\n eFieldOnDBigObject: String!\n fFieldOnDBigObject: Int!\n gFieldOnDBigObject: Boolean!\n hFieldOnDBigObject: Float!\n iFieldOnDBigObject: String!\n jFieldOnDBigObject: Int!\n kFieldOnDBigObject: Boolean!\n lFieldOnDBigObject: Float!\n mFieldOnDBigObject: String!\n nFieldOnDBigObject: Int!\n oFieldOnDBigObject: Boolean!\n pFieldOnDBigObject: Float!\n qFieldOnDBigObject: String!\n rFieldOnDBigObject: Int!\n sFieldOnDBigObject: Boolean!\n tFieldOnDBigObject: Float!\n uFieldOnDBigObject: String!\n vFieldOnDBigObject: Int!\n wFieldOnDBigObject: Boolean!\n xFieldOnDBigObject: Float!\n yFieldOnDBigObject: String!\n zFieldOnDBigObject: Int!\n}\n\ntype EBigObject {\n aFieldOnEBigObject: String!\n bFieldOnEBigObject: Int!\n cFieldOnEBigObject: Boolean!\n dFieldOnEBigObject: Float!\n eFieldOnEBigObject: String!\n fFieldOnEBigObject: Int!\n gFieldOnEBigObject: Boolean!\n hFieldOnEBigObject: Float!\n iFieldOnEBigObject: String!\n jFieldOnEBigObject: Int!\n kFieldOnEBigObject: Boolean!\n lFieldOnEBigObject: Float!\n mFieldOnEBigObject: String!\n nFieldOnEBigObject: Int!\n oFieldOnEBigObject: Boolean!\n pFieldOnEBigObject: Float!\n qFieldOnEBigObject: String!\n rFieldOnEBigObject: Int!\n sFieldOnEBigObject: Boolean!\n tFieldOnEBigObject: Float!\n uFieldOnEBigObject: String!\n vFieldOnEBigObject: Int!\n wFieldOnEBigObject: Boolean!\n xFieldOnEBigObject: Float!\n yFieldOnEBigObject: String!\n zFieldOnEBigObject: Int!\n}\n\ntype FBigObject {\n aFieldOnFBigObject: String!\n bFieldOnFBigObject: Int!\n cFieldOnFBigObject: Boolean!\n dFieldOnFBigObject: Float!\n eFieldOnFBigObject: String!\n fFieldOnFBigObject: Int!\n gFieldOnFBigObject: Boolean!\n hFieldOnFBigObject: Float!\n iFieldOnFBigObject: String!\n jFieldOnFBigObject: Int!\n kFieldOnFBigObject: Boolean!\n lFieldOnFBigObject: Float!\n mFieldOnFBigObject: String!\n nFieldOnFBigObject: Int!\n oFieldOnFBigObject: Boolean!\n pFieldOnFBigObject: Float!\n qFieldOnFBigObject: String!\n rFieldOnFBigObject: Int!\n sFieldOnFBigObject: Boolean!\n tFieldOnFBigObject: Float!\n uFieldOnFBigObject: String!\n vFieldOnFBigObject: Int!\n wFieldOnFBigObject: Boolean!\n xFieldOnFBigObject: Float!\n yFieldOnFBigObject: String!\n zFieldOnFBigObject: Int!\n}\n\ntype GBigObject {\n aFieldOnGBigObject: String!\n bFieldOnGBigObject: Int!\n cFieldOnGBigObject: Boolean!\n dFieldOnGBigObject: Float!\n eFieldOnGBigObject: String!\n fFieldOnGBigObject: Int!\n gFieldOnGBigObject: Boolean!\n hFieldOnGBigObject: Float!\n iFieldOnGBigObject: String!\n jFieldOnGBigObject: Int!\n kFieldOnGBigObject: Boolean!\n lFieldOnGBigObject: Float!\n mFieldOnGBigObject: String!\n nFieldOnGBigObject: Int!\n oFieldOnGBigObject: Boolean!\n pFieldOnGBigObject: Float!\n qFieldOnGBigObject: String!\n rFieldOnGBigObject: Int!\n sFieldOnGBigObject: Boolean!\n tFieldOnGBigObject: Float!\n uFieldOnGBigObject: String!\n vFieldOnGBigObject: Int!\n wFieldOnGBigObject: Boolean!\n xFieldOnGBigObject: Float!\n yFieldOnGBigObject: String!\n zFieldOnGBigObject: Int!\n}\n\ntype HBigObject {\n aFieldOnHBigObject: String!\n bFieldOnHBigObject: Int!\n cFieldOnHBigObject: Boolean!\n dFieldOnHBigObject: Float!\n eFieldOnHBigObject: String!\n fFieldOnHBigObject: Int!\n gFieldOnHBigObject: Boolean!\n hFieldOnHBigObject: Float!\n iFieldOnHBigObject: String!\n jFieldOnHBigObject: Int!\n kFieldOnHBigObject: Boolean!\n lFieldOnHBigObject: Float!\n mFieldOnHBigObject: String!\n nFieldOnHBigObject: Int!\n oFieldOnHBigObject: Boolean!\n pFieldOnHBigObject: Float!\n qFieldOnHBigObject: String!\n rFieldOnHBigObject: Int!\n sFieldOnHBigObject: Boolean!\n tFieldOnHBigObject: Float!\n uFieldOnHBigObject: String!\n vFieldOnHBigObject: Int!\n wFieldOnHBigObject: Boolean!\n xFieldOnHBigObject: Float!\n yFieldOnHBigObject: String!\n zFieldOnHBigObject: Int!\n}\n\ntype IBigObject {\n aFieldOnIBigObject: String!\n bFieldOnIBigObject: Int!\n cFieldOnIBigObject: Boolean!\n dFieldOnIBigObject: Float!\n eFieldOnIBigObject: String!\n fFieldOnIBigObject: Int!\n gFieldOnIBigObject: Boolean!\n hFieldOnIBigObject: Float!\n iFieldOnIBigObject: String!\n jFieldOnIBigObject: Int!\n kFieldOnIBigObject: Boolean!\n lFieldOnIBigObject: Float!\n mFieldOnIBigObject: String!\n nFieldOnIBigObject: Int!\n oFieldOnIBigObject: Boolean!\n pFieldOnIBigObject: Float!\n qFieldOnIBigObject: String!\n rFieldOnIBigObject: Int!\n sFieldOnIBigObject: Boolean!\n tFieldOnIBigObject: Float!\n uFieldOnIBigObject: String!\n vFieldOnIBigObject: Int!\n wFieldOnIBigObject: Boolean!\n xFieldOnIBigObject: Float!\n yFieldOnIBigObject: String!\n zFieldOnIBigObject: Int!\n}\n\ntype JBigObject {\n aFieldOnJBigObject: String!\n bFieldOnJBigObject: Int!\n cFieldOnJBigObject: Boolean!\n dFieldOnJBigObject: Float!\n eFieldOnJBigObject: String!\n fFieldOnJBigObject: Int!\n gFieldOnJBigObject: Boolean!\n hFieldOnJBigObject: Float!\n iFieldOnJBigObject: String!\n jFieldOnJBigObject: Int!\n kFieldOnJBigObject: Boolean!\n lFieldOnJBigObject: Float!\n mFieldOnJBigObject: String!\n nFieldOnJBigObject: Int!\n oFieldOnJBigObject: Boolean!\n pFieldOnJBigObject: Float!\n qFieldOnJBigObject: String!\n rFieldOnJBigObject: Int!\n sFieldOnJBigObject: Boolean!\n tFieldOnJBigObject: Float!\n uFieldOnJBigObject: String!\n vFieldOnJBigObject: Int!\n wFieldOnJBigObject: Boolean!\n xFieldOnJBigObject: Float!\n yFieldOnJBigObject: String!\n zFieldOnJBigObject: Int!\n}\n\ntype KBigObject {\n aFieldOnKBigObject: String!\n bFieldOnKBigObject: Int!\n cFieldOnKBigObject: Boolean!\n dFieldOnKBigObject: Float!\n eFieldOnKBigObject: String!\n fFieldOnKBigObject: Int!\n gFieldOnKBigObject: Boolean!\n hFieldOnKBigObject: Float!\n iFieldOnKBigObject: String!\n jFieldOnKBigObject: Int!\n kFieldOnKBigObject: Boolean!\n lFieldOnKBigObject: Float!\n mFieldOnKBigObject: String!\n nFieldOnKBigObject: Int!\n oFieldOnKBigObject: Boolean!\n pFieldOnKBigObject: Float!\n qFieldOnKBigObject: String!\n rFieldOnKBigObject: Int!\n sFieldOnKBigObject: Boolean!\n tFieldOnKBigObject: Float!\n uFieldOnKBigObject: String!\n vFieldOnKBigObject: Int!\n wFieldOnKBigObject: Boolean!\n xFieldOnKBigObject: Float!\n yFieldOnKBigObject: String!\n zFieldOnKBigObject: Int!\n}\n\ntype LBigObject {\n aFieldOnLBigObject: String!\n bFieldOnLBigObject: Int!\n cFieldOnLBigObject: Boolean!\n dFieldOnLBigObject: Float!\n eFieldOnLBigObject: String!\n fFieldOnLBigObject: Int!\n gFieldOnLBigObject: Boolean!\n hFieldOnLBigObject: Float!\n iFieldOnLBigObject: String!\n jFieldOnLBigObject: Int!\n kFieldOnLBigObject: Boolean!\n lFieldOnLBigObject: Float!\n mFieldOnLBigObject: String!\n nFieldOnLBigObject: Int!\n oFieldOnLBigObject: Boolean!\n pFieldOnLBigObject: Float!\n qFieldOnLBigObject: String!\n rFieldOnLBigObject: Int!\n sFieldOnLBigObject: Boolean!\n tFieldOnLBigObject: Float!\n uFieldOnLBigObject: String!\n vFieldOnLBigObject: Int!\n wFieldOnLBigObject: Boolean!\n xFieldOnLBigObject: Float!\n yFieldOnLBigObject: String!\n zFieldOnLBigObject: Int!\n}\n\ntype MBigObject {\n aFieldOnMBigObject: String!\n bFieldOnMBigObject: Int!\n cFieldOnMBigObject: Boolean!\n dFieldOnMBigObject: Float!\n eFieldOnMBigObject: String!\n fFieldOnMBigObject: Int!\n gFieldOnMBigObject: Boolean!\n hFieldOnMBigObject: Float!\n iFieldOnMBigObject: String!\n jFieldOnMBigObject: Int!\n kFieldOnMBigObject: Boolean!\n lFieldOnMBigObject: Float!\n mFieldOnMBigObject: String!\n nFieldOnMBigObject: Int!\n oFieldOnMBigObject: Boolean!\n pFieldOnMBigObject: Float!\n qFieldOnMBigObject: String!\n rFieldOnMBigObject: Int!\n sFieldOnMBigObject: Boolean!\n tFieldOnMBigObject: Float!\n uFieldOnMBigObject: String!\n vFieldOnMBigObject: Int!\n wFieldOnMBigObject: Boolean!\n xFieldOnMBigObject: Float!\n yFieldOnMBigObject: String!\n zFieldOnMBigObject: Int!\n}\n\ntype NBigObject {\n aFieldOnNBigObject: String!\n bFieldOnNBigObject: Int!\n cFieldOnNBigObject: Boolean!\n dFieldOnNBigObject: Float!\n eFieldOnNBigObject: String!\n fFieldOnNBigObject: Int!\n gFieldOnNBigObject: Boolean!\n hFieldOnNBigObject: Float!\n iFieldOnNBigObject: String!\n jFieldOnNBigObject: Int!\n kFieldOnNBigObject: Boolean!\n lFieldOnNBigObject: Float!\n mFieldOnNBigObject: String!\n nFieldOnNBigObject: Int!\n oFieldOnNBigObject: Boolean!\n pFieldOnNBigObject: Float!\n qFieldOnNBigObject: String!\n rFieldOnNBigObject: Int!\n sFieldOnNBigObject: Boolean!\n tFieldOnNBigObject: Float!\n uFieldOnNBigObject: String!\n vFieldOnNBigObject: Int!\n wFieldOnNBigObject: Boolean!\n xFieldOnNBigObject: Float!\n yFieldOnNBigObject: String!\n zFieldOnNBigObject: Int!\n}\n\ntype OBigObject {\n aFieldOnOBigObject: String!\n bFieldOnOBigObject: Int!\n cFieldOnOBigObject: Boolean!\n dFieldOnOBigObject: Float!\n eFieldOnOBigObject: String!\n fFieldOnOBigObject: Int!\n gFieldOnOBigObject: Boolean!\n hFieldOnOBigObject: Float!\n iFieldOnOBigObject: String!\n jFieldOnOBigObject: Int!\n kFieldOnOBigObject: Boolean!\n lFieldOnOBigObject: Float!\n mFieldOnOBigObject: String!\n nFieldOnOBigObject: Int!\n oFieldOnOBigObject: Boolean!\n pFieldOnOBigObject: Float!\n qFieldOnOBigObject: String!\n rFieldOnOBigObject: Int!\n sFieldOnOBigObject: Boolean!\n tFieldOnOBigObject: Float!\n uFieldOnOBigObject: String!\n vFieldOnOBigObject: Int!\n wFieldOnOBigObject: Boolean!\n xFieldOnOBigObject: Float!\n yFieldOnOBigObject: String!\n zFieldOnOBigObject: Int!\n}\n\ntype PBigObject {\n aFieldOnPBigObject: String!\n bFieldOnPBigObject: Int!\n cFieldOnPBigObject: Boolean!\n dFieldOnPBigObject: Float!\n eFieldOnPBigObject: String!\n fFieldOnPBigObject: Int!\n gFieldOnPBigObject: Boolean!\n hFieldOnPBigObject: Float!\n iFieldOnPBigObject: String!\n jFieldOnPBigObject: Int!\n kFieldOnPBigObject: Boolean!\n lFieldOnPBigObject: Float!\n mFieldOnPBigObject: String!\n nFieldOnPBigObject: Int!\n oFieldOnPBigObject: Boolean!\n pFieldOnPBigObject: Float!\n qFieldOnPBigObject: String!\n rFieldOnPBigObject: Int!\n sFieldOnPBigObject: Boolean!\n tFieldOnPBigObject: Float!\n uFieldOnPBigObject: String!\n vFieldOnPBigObject: Int!\n wFieldOnPBigObject: Boolean!\n xFieldOnPBigObject: Float!\n yFieldOnPBigObject: String!\n zFieldOnPBigObject: Int!\n}\n\ntype QBigObject {\n aFieldOnQBigObject: String!\n bFieldOnQBigObject: Int!\n cFieldOnQBigObject: Boolean!\n dFieldOnQBigObject: Float!\n eFieldOnQBigObject: String!\n fFieldOnQBigObject: Int!\n gFieldOnQBigObject: Boolean!\n hFieldOnQBigObject: Float!\n iFieldOnQBigObject: String!\n jFieldOnQBigObject: Int!\n kFieldOnQBigObject: Boolean!\n lFieldOnQBigObject: Float!\n mFieldOnQBigObject: String!\n nFieldOnQBigObject: Int!\n oFieldOnQBigObject: Boolean!\n pFieldOnQBigObject: Float!\n qFieldOnQBigObject: String!\n rFieldOnQBigObject: Int!\n sFieldOnQBigObject: Boolean!\n tFieldOnQBigObject: Float!\n uFieldOnQBigObject: String!\n vFieldOnQBigObject: Int!\n wFieldOnQBigObject: Boolean!\n xFieldOnQBigObject: Float!\n yFieldOnQBigObject: String!\n zFieldOnQBigObject: Int!\n}\n\ntype RBigObject {\n aFieldOnRBigObject: String!\n bFieldOnRBigObject: Int!\n cFieldOnRBigObject: Boolean!\n dFieldOnRBigObject: Float!\n eFieldOnRBigObject: String!\n fFieldOnRBigObject: Int!\n gFieldOnRBigObject: Boolean!\n hFieldOnRBigObject: Float!\n iFieldOnRBigObject: String!\n jFieldOnRBigObject: Int!\n kFieldOnRBigObject: Boolean!\n lFieldOnRBigObject: Float!\n mFieldOnRBigObject: String!\n nFieldOnRBigObject: Int!\n oFieldOnRBigObject: Boolean!\n pFieldOnRBigObject: Float!\n qFieldOnRBigObject: String!\n rFieldOnRBigObject: Int!\n sFieldOnRBigObject: Boolean!\n tFieldOnRBigObject: Float!\n uFieldOnRBigObject: String!\n vFieldOnRBigObject: Int!\n wFieldOnRBigObject: Boolean!\n xFieldOnRBigObject: Float!\n yFieldOnRBigObject: String!\n zFieldOnRBigObject: Int!\n}\n\ntype SBigObject {\n aFieldOnSBigObject: String!\n bFieldOnSBigObject: Int!\n cFieldOnSBigObject: Boolean!\n dFieldOnSBigObject: Float!\n eFieldOnSBigObject: String!\n fFieldOnSBigObject: Int!\n gFieldOnSBigObject: Boolean!\n hFieldOnSBigObject: Float!\n iFieldOnSBigObject: String!\n jFieldOnSBigObject: Int!\n kFieldOnSBigObject: Boolean!\n lFieldOnSBigObject: Float!\n mFieldOnSBigObject: String!\n nFieldOnSBigObject: Int!\n oFieldOnSBigObject: Boolean!\n pFieldOnSBigObject: Float!\n qFieldOnSBigObject: String!\n rFieldOnSBigObject: Int!\n sFieldOnSBigObject: Boolean!\n tFieldOnSBigObject: Float!\n uFieldOnSBigObject: String!\n vFieldOnSBigObject: Int!\n wFieldOnSBigObject: Boolean!\n xFieldOnSBigObject: Float!\n yFieldOnSBigObject: String!\n zFieldOnSBigObject: Int!\n}\n\ntype TBigObject {\n aFieldOnTBigObject: String!\n bFieldOnTBigObject: Int!\n cFieldOnTBigObject: Boolean!\n dFieldOnTBigObject: Float!\n eFieldOnTBigObject: String!\n fFieldOnTBigObject: Int!\n gFieldOnTBigObject: Boolean!\n hFieldOnTBigObject: Float!\n iFieldOnTBigObject: String!\n jFieldOnTBigObject: Int!\n kFieldOnTBigObject: Boolean!\n lFieldOnTBigObject: Float!\n mFieldOnTBigObject: String!\n nFieldOnTBigObject: Int!\n oFieldOnTBigObject: Boolean!\n pFieldOnTBigObject: Float!\n qFieldOnTBigObject: String!\n rFieldOnTBigObject: Int!\n sFieldOnTBigObject: Boolean!\n tFieldOnTBigObject: Float!\n uFieldOnTBigObject: String!\n vFieldOnTBigObject: Int!\n wFieldOnTBigObject: Boolean!\n xFieldOnTBigObject: Float!\n yFieldOnTBigObject: String!\n zFieldOnTBigObject: Int!\n}\n\ntype UBigObject {\n aFieldOnUBigObject: String!\n bFieldOnUBigObject: Int!\n cFieldOnUBigObject: Boolean!\n dFieldOnUBigObject: Float!\n eFieldOnUBigObject: String!\n fFieldOnUBigObject: Int!\n gFieldOnUBigObject: Boolean!\n hFieldOnUBigObject: Float!\n iFieldOnUBigObject: String!\n jFieldOnUBigObject: Int!\n kFieldOnUBigObject: Boolean!\n lFieldOnUBigObject: Float!\n mFieldOnUBigObject: String!\n nFieldOnUBigObject: Int!\n oFieldOnUBigObject: Boolean!\n pFieldOnUBigObject: Float!\n qFieldOnUBigObject: String!\n rFieldOnUBigObject: Int!\n sFieldOnUBigObject: Boolean!\n tFieldOnUBigObject: Float!\n uFieldOnUBigObject: String!\n vFieldOnUBigObject: Int!\n wFieldOnUBigObject: Boolean!\n xFieldOnUBigObject: Float!\n yFieldOnUBigObject: String!\n zFieldOnUBigObject: Int!\n}\n\ntype VBigObject {\n aFieldOnVBigObject: String!\n bFieldOnVBigObject: Int!\n cFieldOnVBigObject: Boolean!\n dFieldOnVBigObject: Float!\n eFieldOnVBigObject: String!\n fFieldOnVBigObject: Int!\n gFieldOnVBigObject: Boolean!\n hFieldOnVBigObject: Float!\n iFieldOnVBigObject: String!\n jFieldOnVBigObject: Int!\n kFieldOnVBigObject: Boolean!\n lFieldOnVBigObject: Float!\n mFieldOnVBigObject: String!\n nFieldOnVBigObject: Int!\n oFieldOnVBigObject: Boolean!\n pFieldOnVBigObject: Float!\n qFieldOnVBigObject: String!\n rFieldOnVBigObject: Int!\n sFieldOnVBigObject: Boolean!\n tFieldOnVBigObject: Float!\n uFieldOnVBigObject: String!\n vFieldOnVBigObject: Int!\n wFieldOnVBigObject: Boolean!\n xFieldOnVBigObject: Float!\n yFieldOnVBigObject: String!\n zFieldOnVBigObject: Int!\n}\n\ntype WBigObject {\n aFieldOnWBigObject: String!\n bFieldOnWBigObject: Int!\n cFieldOnWBigObject: Boolean!\n dFieldOnWBigObject: Float!\n eFieldOnWBigObject: String!\n fFieldOnWBigObject: Int!\n gFieldOnWBigObject: Boolean!\n hFieldOnWBigObject: Float!\n iFieldOnWBigObject: String!\n jFieldOnWBigObject: Int!\n kFieldOnWBigObject: Boolean!\n lFieldOnWBigObject: Float!\n mFieldOnWBigObject: String!\n nFieldOnWBigObject: Int!\n oFieldOnWBigObject: Boolean!\n pFieldOnWBigObject: Float!\n qFieldOnWBigObject: String!\n rFieldOnWBigObject: Int!\n sFieldOnWBigObject: Boolean!\n tFieldOnWBigObject: Float!\n uFieldOnWBigObject: String!\n vFieldOnWBigObject: Int!\n wFieldOnWBigObject: Boolean!\n xFieldOnWBigObject: Float!\n yFieldOnWBigObject: String!\n zFieldOnWBigObject: Int!\n}\n\ntype XBigObject {\n aFieldOnXBigObject: String!\n bFieldOnXBigObject: Int!\n cFieldOnXBigObject: Boolean!\n dFieldOnXBigObject: Float!\n eFieldOnXBigObject: String!\n fFieldOnXBigObject: Int!\n gFieldOnXBigObject: Boolean!\n hFieldOnXBigObject: Float!\n iFieldOnXBigObject: String!\n jFieldOnXBigObject: Int!\n kFieldOnXBigObject: Boolean!\n lFieldOnXBigObject: Float!\n mFieldOnXBigObject: String!\n nFieldOnXBigObject: Int!\n oFieldOnXBigObject: Boolean!\n pFieldOnXBigObject: Float!\n qFieldOnXBigObject: String!\n rFieldOnXBigObject: Int!\n sFieldOnXBigObject: Boolean!\n tFieldOnXBigObject: Float!\n uFieldOnXBigObject: String!\n vFieldOnXBigObject: Int!\n wFieldOnXBigObject: Boolean!\n xFieldOnXBigObject: Float!\n yFieldOnXBigObject: String!\n zFieldOnXBigObject: Int!\n}\n\ntype YBigObject {\n aFieldOnYBigObject: String!\n bFieldOnYBigObject: Int!\n cFieldOnYBigObject: Boolean!\n dFieldOnYBigObject: Float!\n eFieldOnYBigObject: String!\n fFieldOnYBigObject: Int!\n gFieldOnYBigObject: Boolean!\n hFieldOnYBigObject: Float!\n iFieldOnYBigObject: String!\n jFieldOnYBigObject: Int!\n kFieldOnYBigObject: Boolean!\n lFieldOnYBigObject: Float!\n mFieldOnYBigObject: String!\n nFieldOnYBigObject: Int!\n oFieldOnYBigObject: Boolean!\n pFieldOnYBigObject: Float!\n qFieldOnYBigObject: String!\n rFieldOnYBigObject: Int!\n sFieldOnYBigObject: Boolean!\n tFieldOnYBigObject: Float!\n uFieldOnYBigObject: String!\n vFieldOnYBigObject: Int!\n wFieldOnYBigObject: Boolean!\n xFieldOnYBigObject: Float!\n yFieldOnYBigObject: String!\n zFieldOnYBigObject: Int!\n}\n\ntype ZBigObject {\n aFieldOnZBigObject: String!\n bFieldOnZBigObject: Int!\n cFieldOnZBigObject: Boolean!\n dFieldOnZBigObject: Float!\n eFieldOnZBigObject: String!\n fFieldOnZBigObject: Int!\n gFieldOnZBigObject: Boolean!\n hFieldOnZBigObject: Float!\n iFieldOnZBigObject: String!\n jFieldOnZBigObject: Int!\n kFieldOnZBigObject: Boolean!\n lFieldOnZBigObject: Float!\n mFieldOnZBigObject: String!\n nFieldOnZBigObject: Int!\n oFieldOnZBigObject: Boolean!\n pFieldOnZBigObject: Float!\n qFieldOnZBigObject: String!\n rFieldOnZBigObject: Int!\n sFieldOnZBigObject: Boolean!\n tFieldOnZBigObject: Float!\n uFieldOnZBigObject: String!\n vFieldOnZBigObject: Int!\n wFieldOnZBigObject: Boolean!\n xFieldOnZBigObject: Float!\n yFieldOnZBigObject: String!\n zFieldOnZBigObject: Int!\n}\n\ninput ProjectInput {\n name: String!\n description: String\n startDate: String\n endDate: String\n status: ProjectStatus!\n}\n\ninput MilestoneInput {\n projectId: ID!\n name: String!\n description: String\n dueDate: String\n status: MilestoneStatus!\n}\n\ninput TaskInput {\n projectId: ID!\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float\n}\n\ninterface Node {\n id: ID!\n}\n\ninterface Timestamped {\n startDate: String\n endDate: String\n}\n\ninterface Assignable {\n assigneeId: Int\n}\n\nenum ProjectStatus {\n PLANNING\n ACTIVE\n COMPLETED\n ON_HOLD\n}\n\nenum MilestoneStatus {\n PENDING\n IN_PROGRESS\n COMPLETED\n DELAYED\n}\n\nenum TaskStatus {\n TODO\n IN_PROGRESS\n REVIEW\n COMPLETED\n BLOCKED\n}\n\nenum TaskPriority {\n LOW\n MEDIUM\n HIGH\n URGENT\n}\n\nenum ProjectUpdateType {\n STATUS_CHANGE\n MILESTONE_ADDED\n TASK_ASSIGNED\n PROGRESS_UPDATE\n TEAM_CHANGE\n}\n\nunion ProjectResource = Employee | Product | Milestone | Task\n\nunion ProjectSearchResult = Project | Milestone | Task\n\nunion ProjectActivity = ProjectUpdate | Milestone | Task\n\ntype Product {\n upc: String!\n projects: [Project!]\n featureMatrix: [[String]]\n}\n\ntype Course {\n id: ID!\n title: String!\n description: String\n instructor: Employee!\n lessons: [Lesson!]!\n}\n\ntype Lesson {\n id: ID!\n courseId: ID!\n title: String!\n description: String\n order: Int!\n course: Course!\n}\n\ntype Engineer implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n engineerType: EngineerType!\n}\n\ntype Marketer implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n}\n\ntype Operator implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n operatorType: [OperationType!]!\n}\n\ntype Employee implements Identifiable {\n details: Details\n id: Int!\n tag: String!\n role: RoleType!\n notes: String\n updatedAt: String!\n startDate: String! @requiresScopes(scopes: [[\"read:employee\", \"read:private\"], [\"read:all\"]])\n currentMood: Mood!\n derivedMood: Mood!\n isAvailable: Boolean\n rootFieldThrowsError: String\n rootFieldErrorWrapper: ErrorWrapper\n hobbies: [Hobby!]\n products: [ProductName!]!\n fieldThrowsError: String\n projects: [Project!]\n assignedTasks: [Task!]!\n completedTasks: [Task!]!\n skills: [String]\n certifications: [String!]\n projectHistory: [[Project!]]!\n currentWorkload(includeCompleted: Boolean, projectId: ID): Int!\n averageTaskCompletionDays(projectId: ID, priority: TaskPriority): Float\n taughtCourses: [Course!]!\n}\n\ntype Cosmo implements IProduct {\n upc: ID!\n engineers: [Employee!]!\n lead: Employee!\n isLeadAvailable: Boolean\n name: ProductName!\n repositoryURL: String!\n}\n\ntype SDK implements IProduct {\n upc: ID!\n engineers: [Employee!]!\n owner: Employee!\n unicode: String!\n clientLanguages: [ProgrammingLanguage!]!\n}\n\ninterface Pet implements Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Alligator implements Pet & Animal {\n class: Class!\n dangerous: String!\n gender: Gender!\n name: String!\n}\n\ntype Cat implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n type: CatType!\n}\n\ntype Dog implements Pet & Animal {\n breed: DogBreed!\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Mouse implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Pony implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Exercise implements Hobby {\n employees: [Employee!]!\n category: ExerciseType!\n}\n\ntype Flying implements Experience & Hobby {\n employees: [Employee!]!\n planeModels: [String!]!\n yearsOfExperience: Float!\n}\n\ntype Gaming implements Experience & Hobby {\n employees: [Employee!]!\n genres: [GameGenre!]!\n name: String!\n yearsOfExperience: Float!\n}\n\ntype Other implements Hobby {\n employees: [Employee!]!\n name: String!\n}\n\ntype Programming implements Hobby {\n employees: [Employee!]!\n languages: [ProgrammingLanguage!]!\n}\n\ntype Travelling implements Hobby {\n employees: [Employee!]!\n countriesLived: [Country!]!\n}\n\ntype DirectiveFact implements TopSecretFact @authenticated {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype EntityFact implements TopSecretFact @requiresScopes(scopes: [[\"read:entity\"]]) {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype MiscellaneousFact implements TopSecretFact {\n title: String!\n description: FactContent! @requiresScopes(scopes: [[\"read:miscellaneous\"]])\n factType: TopSecretFactType\n}\n\ntype Project implements Node & Timestamped {\n id: ID!\n name: String!\n description: String\n startDate: String\n endDate: String\n status: ProjectStatus!\n teamMembers: [Employee!]!\n relatedProducts: [Product!]!\n milestoneIds: [String!]\n milestones: [Milestone!]!\n tasks: [Task!]!\n progress: Float\n tags: [String]\n alternativeProjects: [Project]\n dependencies: [Project!]\n resourceGroups: [[ProjectResource!]!]!\n tasksByPhase: [[Task!]]!\n milestoneGroups: [[Milestone]]\n priorityMatrix: [[[Task!]!]!]\n subProjects(includeArchived: Boolean): [Project!]!\n filteredTasks(status: TaskStatus, priority: TaskPriority, limit: Int): [Task!]!\n completionRate(includeSubtasks: Boolean): Float!\n estimatedDaysRemaining(fromDate: String): Int\n criticalDeadline(withinDays: Int): Timestamped\n topPriorityItem(category: String): ProjectSearchResult\n}\n\ntype Milestone implements Node & Timestamped {\n id: ID!\n projectId: ID!\n name: String!\n description: String\n startDate: String\n endDate: String\n status: MilestoneStatus!\n completionPercentage: Float\n dependencies: [Milestone]!\n subtasks: [Task]\n reviewers: [Employee!]\n isAtRisk(threshold: Float): Boolean!\n daysUntilDue(fromDate: String): Int\n}\n\ntype Task implements Node & Assignable {\n id: ID!\n projectId: ID!\n milestoneId: ID\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float @deprecated(reason: \"No more estimations!\")\n actualHours: Float\n createdAt: String\n completedAt: String\n labels: [String]\n subtasks: [Task!]\n dependencies: [Task]!\n attachmentUrls: [String!]!\n reviewerIds: [Int]\n isBlocked(checkDependencies: Boolean): Boolean!\n totalEffort(includeSubtasks: Boolean): Float\n}\n\ntype ProjectUpdate implements Node {\n id: ID!\n projectId: ID!\n updatedById: Int!\n updateType: ProjectUpdateType!\n description: String!\n timestamp: String!\n metadata: String\n}", "stringStorage": { "73e7c8ef50d3dc0c5d564e34702baf455be9cee3": "schema {\n query: Query\n mutation: Mutation\n subscription: Subscription\n}\n\ndirective @external on FIELD_DEFINITION | OBJECT\n\ndirective @goField(forceResolver: Boolean, name: String, omittable: Boolean) on FIELD_DEFINITION | INPUT_FIELD_DEFINITION\n\ndirective @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT\n\ndirective @link(as: String, for: link__Purpose, import: [link__Import], url: String!) repeatable on SCHEMA\n\ndirective @openfed__requireFetchReasons repeatable on FIELD_DEFINITION | INTERFACE | OBJECT\n\ndirective @requires(fields: openfed__FieldSet!) on FIELD_DEFINITION\n\ndirective @requiresScopes(scopes: [[openfed__Scope!]!]!) on ENUM | FIELD_DEFINITION | INTERFACE | OBJECT | SCALAR\n\ndirective @shareable repeatable on FIELD_DEFINITION | OBJECT\n\ndirective @tag(name: String!) repeatable on ARGUMENT_DEFINITION | ENUM | ENUM_VALUE | FIELD_DEFINITION | INPUT_FIELD_DEFINITION | INPUT_OBJECT | INTERFACE | OBJECT | SCALAR | UNION\n\ntype City {\n country: Country\n name: String!\n type: String!\n}\n\ntype Consultancy @key(fields: \"upc\") {\n isLeadAvailable: Boolean @requires(fields: \"lead { isAvailable }\")\n lead: Employee!\n upc: ID!\n}\n\ntype Cosmo implements IProduct @key(fields: \"upc\") {\n engineers: [Employee!]!\n isLeadAvailable: Boolean @requires(fields: \"lead { isAvailable }\")\n lead: Employee!\n upc: ID!\n}\n\ntype Country @key(fields: \"key { name }\", resolvable: false) {\n key: CountryKey!\n}\n\ntype CountryKey {\n name: String!\n}\n\ninput DeeplyNestedFileUpload {\n file: Upload!\n}\n\nenum Department {\n ENGINEERING\n MARKETING\n OPERATIONS\n}\n\ntype Details {\n forename: String! @shareable\n location: Country!\n pastLocations: [City!]!\n surname: String! @shareable\n}\n\ntype Employee implements Identifiable @key(fields: \"id\") {\n currentMood: Mood! @external\n derivedMood: Mood! @requires(fields: \"currentMood\")\n details: Details! @shareable\n id: Int!\n isAvailable: Boolean @external\n notes: String @shareable\n role: RoleType!\n rootFieldErrorWrapper: ErrorWrapper @goField(forceResolver: true)\n rootFieldThrowsError: String @goField(forceResolver: true)\n startDate: String! @requiresScopes(scopes: [[\"read:employee\", \"read:private\"], [\"read:all\"]])\n tag: String!\n updatedAt: String!\n}\n\ntype Engineer implements RoleType {\n departments: [Department!]!\n employees: [Employee!]! @goField(forceResolver: true)\n engineerType: EngineerType!\n title: [String!]!\n}\n\nenum EngineerType {\n BACKEND\n FRONTEND\n FULLSTACK\n}\n\ntype ErrorWrapper {\n errorField: String @goField(forceResolver: true)\n okField: String\n}\n\ninput FileUpload {\n nested: DeeplyNestedFileUpload\n nestedList: [Upload!]\n}\n\ninput FindEmployeeCriteria @oneOf {\n department: Department\n id: Int\n title: String\n}\n\ninterface IProduct {\n engineers: [Employee!]!\n upc: ID!\n}\n\ninterface Identifiable {\n id: Int! @openfed__requireFetchReasons\n}\n\ntype Marketer implements RoleType {\n departments: [Department!]!\n employees: [Employee!]! @goField(forceResolver: true)\n title: [String!]!\n}\n\nenum Mood {\n HAPPY\n SAD\n}\n\ntype Mutation {\n multipleUpload(files: [Upload!]!): Boolean!\n singleUpload(file: Upload!): Boolean!\n singleUploadWithInput(arg: FileUpload!): Boolean!\n updateEmployeeTag(id: Int!, tag: String!): Employee\n}\n\nenum OperationType {\n FINANCE\n HUMAN_RESOURCES\n}\n\ntype Operator implements RoleType {\n departments: [Department!]!\n employees: [Employee!]! @goField(forceResolver: true)\n operatorType: [OperationType!]!\n title: [String!]!\n}\n\nunion Products = Consultancy | Cosmo | SDK\n\ntype Query {\n employee(id: Int!): Employee @openfed__requireFetchReasons\n employeeAsList(id: Int!): [Employee]\n employees: [Employee]\n findEmployeesBy(criteria: FindEmployeeCriteria!): [Employee!]!\n firstEmployee: Employee! @tag(name: \"internal\")\n products: [Products!]!\n teammates(team: Department!): [Employee!]!\n}\n\ninterface RoleType {\n departments: [Department!]!\n employees: [Employee!]! @goField(forceResolver: true)\n title: [String!]!\n}\n\ntype SDK implements IProduct @key(fields: \"upc\") {\n engineers: [Employee!]!\n owner: Employee!\n unicode: String!\n upc: ID!\n}\n\ntype Subscription {\n countEmp(intervalMilliseconds: Int!, max: Int!): Int!\n countEmp2(intervalMilliseconds: Int!, max: Int!): Int!\n countFor(count: Int!): Int!\n \"\"\"`currentTime` will return a stream of `Time` objects.\"\"\"\n currentTime: Time!\n}\n\ntype Time {\n timeStamp: String!\n unixTime: Int!\n}\n\nscalar Upload\n\nscalar link__Import\n\nenum link__Purpose {\n EXECUTION\n SECURITY\n}\n\nscalar openfed__FieldSet\n\nscalar openfed__Scope", "2265a44afac63dcf9da5f7ee5ff35c7a6dc8adff": "schema {\n query: Query\n}\n\ndirective @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT\n\ndirective @link(as: String, for: link__Purpose, import: [link__Import], url: String!) repeatable on SCHEMA\n\ndirective @shareable repeatable on FIELD_DEFINITION | OBJECT\n\ntype Alligator implements Animal & Pet {\n class: Class!\n dangerous: String!\n gender: Gender!\n name: String!\n}\n\ninterface Animal {\n class: Class!\n gender: Gender!\n}\n\ntype Cat implements Animal & Pet {\n class: Class!\n gender: Gender!\n name: String!\n type: CatType!\n}\n\nenum CatType {\n HOME\n STREET\n}\n\nenum Class {\n FISH\n MAMMAL\n REPTILE\n}\n\ntype Details {\n forename: String! @shareable\n hasChildren: Boolean!\n maritalStatus: MaritalStatus\n middlename: String @deprecated(reason: \"No longer supported\")\n nationality: Nationality!\n pets: [Pet]\n surname: String! @shareable\n}\n\ntype Dog implements Animal & Pet {\n breed: DogBreed!\n class: Class!\n gender: Gender!\n name: String!\n}\n\nenum DogBreed {\n GOLDEN_RETRIEVER\n POODLE\n ROTTWEILER\n YORKSHIRE_TERRIER\n}\n\ntype Employee @key(fields: \"id\") {\n details: Details @shareable\n id: Int!\n}\n\nenum Gender {\n FEMALE\n MALE\n UNKNOWN\n}\n\nenum MaritalStatus {\n ENGAGED\n MARRIED\n}\n\ntype Mouse implements Animal & Pet {\n class: Class!\n gender: Gender!\n name: String!\n}\n\nenum Nationality {\n AMERICAN\n DUTCH\n ENGLISH\n GERMAN\n INDIAN\n SPANISH\n UKRAINIAN\n}\n\ninput NestedSearchInput {\n hasChildren: Boolean\n maritalStatus: MaritalStatus\n}\n\ninterface Pet implements Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Pony implements Animal & Pet {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Query {\n \"\"\" This is a GraphQL query that retrieves a list of employees.\"\"\"\n findEmployees(criteria: SearchInput): [Employee!]!\n}\n\n\"\"\" Allows to filter employees by their details. \"\"\"\ninput SearchInput {\n hasPets: Boolean\n nationality: Nationality\n nested: NestedSearchInput\n}\n\nscalar link__Import\n\nenum link__Purpose {\n EXECUTION\n SECURITY\n}\n\nscalar openfed__FieldSet", @@ -2718,10 +2743,10 @@ "865e365ca4e3de8aec4ccd25e875ca9a82a7edde": "schema {\n mutation: Mutation\n}\n\ndirective @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT\n\ndirective @link(as: String, for: link__Purpose, import: [link__Import], url: String!) repeatable on SCHEMA\n\ntype Employee @key(fields: \"id\") {\n id: Int!\n isAvailable: Boolean\n}\n\ntype Mutation {\n \"\"\" This mutation updates the availability status of an employee in the system.\n \"\"\"\n updateAvailability(employeeID: Int!, isAvailable: Boolean!): Employee!\n}\n\nscalar link__Import\n\nenum link__Purpose {\n EXECUTION\n SECURITY\n}\n\nscalar openfed__FieldSet", "10eccb92890a5709d24ac8c1293264d758b997c7": "schema {\n mutation: Mutation\n}\n\ndirective @inaccessible on ARGUMENT_DEFINITION | ENUM | ENUM_VALUE | FIELD_DEFINITION | INPUT_FIELD_DEFINITION | INPUT_OBJECT | INTERFACE | OBJECT | SCALAR | UNION\n\ndirective @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT\n\ndirective @link(as: String, for: link__Purpose, import: [link__Import], url: String!) repeatable on SCHEMA\n\ntype Employee @key(fields: \"id\") {\n currentMood: Mood!\n id: Int!\n}\n\nenum Mood {\n APATHETIC @inaccessible\n HAPPY\n SAD\n}\n\ntype Mutation {\n \"\"\" This mutation update the mood of an employee. \"\"\"\n updateMood(employeeID: Int!, mood: Mood!): Employee!\n}\n\nscalar link__Import\n\nenum link__Purpose {\n EXECUTION\n SECURITY\n}\n\nscalar openfed__FieldSet", "0c7a814514a54c0b54af7ea5fa33730a321921e6": "directive @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT\n\ndirective @link(as: String, for: link__Purpose, import: [link__Import], url: String!) repeatable on SCHEMA\n\ntype Country @key(fields: \"key { name }\") {\n key: CountryKey!\n language: String\n}\n\ntype CountryKey {\n name: String!\n}\n\nscalar link__Import\n\nenum link__Purpose {\n EXECUTION\n SECURITY\n}\n\nscalar openfed__FieldSet", - "52c91cae469d049c423debadfdfd37a91cfcdd18": "schema @link(url: \"https://specs.apollo.dev/federation/v2.5\", import: [\"@authenticated\", \"@composeDirective\", \"@external\", \"@extends\", \"@inaccessible\", \"@interfaceObject\", \"@override\", \"@provides\", \"@key\", \"@requires\", \"@requiresScopes\", \"@shareable\", \"@tag\"]) {\n query: Query\n mutation: Mutation\n}\n\ndirective @connect__fieldResolver(context: openfed__FieldSet!) on FIELD_DEFINITION\n\ndirective @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT\n\ndirective @link(as: String, for: link__Purpose, import: [link__Import], url: String!) repeatable on SCHEMA\n\ninterface Assignable {\n assigneeId: Int\n}\n\ntype Employee @key(fields: \"id\") {\n assignedTasks: [Task!]!\n averageTaskCompletionDays(priority: TaskPriority, projectId: ID): Float @connect__fieldResolver(context: \"id\")\n certifications: [String!]\n completedTasks: [Task!]!\n currentWorkload(includeCompleted: Boolean, projectId: ID): Int! @connect__fieldResolver(context: \"id\")\n id: Int!\n projectHistory: [[Project!]]!\n projects: [Project!]\n skills: [String]\n}\n\ntype Milestone implements Node & Timestamped @key(fields: \"id\") {\n completionPercentage: Float\n daysUntilDue(fromDate: String): Int @connect__fieldResolver(context: \"endDate\")\n dependencies: [Milestone]!\n description: String\n endDate: String\n id: ID!\n isAtRisk(threshold: Float): Boolean! @connect__fieldResolver(context: \"id endDate status completionPercentage\")\n name: String!\n projectId: ID!\n reviewers: [Employee!]\n startDate: String\n status: MilestoneStatus!\n subtasks: [Task]\n}\n\ninput MilestoneInput {\n description: String\n dueDate: String\n name: String!\n projectId: ID!\n status: MilestoneStatus!\n}\n\nenum MilestoneStatus {\n COMPLETED\n DELAYED\n IN_PROGRESS\n PENDING\n}\n\ntype Mutation {\n addMilestone(milestone: MilestoneInput!): Milestone!\n addProject(project: ProjectInput!): Project!\n addTask(task: TaskInput!): Task!\n updateProjectStatus(projectId: ID!, status: ProjectStatus!): ProjectUpdate!\n}\n\ninterface Node {\n id: ID!\n}\n\ntype Product @key(fields: \"upc\") {\n featureMatrix: [[String]]\n projects: [Project!]\n upc: String!\n}\n\ntype Project implements Node & Timestamped @key(fields: \"id\") {\n alternativeProjects: [Project]\n completionRate(includeSubtasks: Boolean): Float! @connect__fieldResolver(context: \"id startDate endDate status\")\n criticalDeadline(withinDays: Int): Timestamped @connect__fieldResolver(context: \"id status milestones\")\n dependencies: [Project!]\n description: String\n endDate: String\n estimatedDaysRemaining(fromDate: String): Int @connect__fieldResolver(context: \"id endDate status\")\n filteredTasks(limit: Int, priority: TaskPriority, status: TaskStatus): [Task!]! @connect__fieldResolver(context: \"id\")\n id: ID!\n milestoneGroups: [[Milestone]]\n milestoneIds: [String!]\n milestones: [Milestone!]!\n name: String!\n priorityMatrix: [[[Task!]!]!]\n progress: Float\n relatedProducts: [Product!]!\n resourceGroups: [[ProjectResource!]!]!\n startDate: String\n status: ProjectStatus!\n tags: [String]\n tasks: [Task!]!\n tasksByPhase: [[Task!]]!\n teamMembers: [Employee!]!\n topPriorityItem(category: String): ProjectSearchResult @connect__fieldResolver(context: \"id status\")\n}\n\nunion ProjectActivity = Milestone | ProjectUpdate | Task\n\ninput ProjectInput {\n description: String\n endDate: String\n name: String!\n startDate: String\n status: ProjectStatus!\n}\n\nunion ProjectResource = Employee | Milestone | Product | Task\n\nunion ProjectSearchResult = Milestone | Project | Task\n\nenum ProjectStatus {\n ACTIVE\n COMPLETED\n ON_HOLD\n PLANNING\n}\n\ntype ProjectUpdate implements Node {\n description: String!\n id: ID!\n metadata: String\n projectId: ID!\n timestamp: String!\n updateType: ProjectUpdateType!\n updatedById: Int!\n}\n\nenum ProjectUpdateType {\n MILESTONE_ADDED\n PROGRESS_UPDATE\n STATUS_CHANGE\n TASK_ASSIGNED\n TEAM_CHANGE\n}\n\ntype Query {\n archivedProjects: [Project]!\n killService: Boolean!\n milestones(projectId: ID!): [Milestone!]!\n nodesById(id: ID!): [Node!]!\n panic: Boolean!\n project(id: ID!): Project\n projectActivities(projectId: ID!): [ProjectActivity!]!\n projectResources(projectId: ID!): [ProjectResource!]!\n projectStatuses: [ProjectStatus!]!\n projectTags: [String]\n projects: [Project!]!\n projectsByStatus(status: ProjectStatus!): [Project!]!\n resourceMatrix(projectId: ID!): [[ProjectResource!]!]!\n searchProjects(query: String!): [ProjectSearchResult!]!\n tasks(projectId: ID!): [Task!]!\n tasksByPriority(projectId: ID!): [[Task]]\n}\n\ntype Task implements Assignable & Node @key(fields: \"id\") {\n actualHours: Float\n assigneeId: Int\n attachmentUrls: [String!]!\n completedAt: String\n createdAt: String\n dependencies: [Task]!\n description: String\n estimatedHours: Float @deprecated(reason: \"No more estimations!\")\n id: ID!\n isBlocked(checkDependencies: Boolean): Boolean! @connect__fieldResolver(context: \"id status\")\n labels: [String]\n milestoneId: ID\n name: String!\n priority: TaskPriority!\n projectId: ID!\n reviewerIds: [Int]\n status: TaskStatus!\n subtasks: [Task!]\n totalEffort(includeSubtasks: Boolean): Float @connect__fieldResolver(context: \"id estimatedHours actualHours\")\n}\n\ninput TaskInput {\n assigneeId: Int\n description: String\n estimatedHours: Float\n name: String!\n priority: TaskPriority!\n projectId: ID!\n status: TaskStatus!\n}\n\nenum TaskPriority {\n HIGH\n LOW\n MEDIUM\n URGENT\n}\n\nenum TaskStatus {\n BLOCKED\n COMPLETED\n IN_PROGRESS\n REVIEW\n TODO\n}\n\ninterface Timestamped {\n endDate: String\n startDate: String\n}\n\nscalar link__Import\n\nenum link__Purpose {\n EXECUTION\n SECURITY\n}\n\nscalar openfed__FieldSet", + "34e8a6b5fb00b0e37f716f0005c5bf6eee09c65c": "schema @link(url: \"https://specs.apollo.dev/federation/v2.5\", import: [\"@authenticated\", \"@composeDirective\", \"@external\", \"@extends\", \"@inaccessible\", \"@interfaceObject\", \"@override\", \"@provides\", \"@key\", \"@requires\", \"@requiresScopes\", \"@shareable\", \"@tag\"]) {\n query: Query\n mutation: Mutation\n}\n\ndirective @connect__fieldResolver(context: openfed__FieldSet!) on FIELD_DEFINITION\n\ndirective @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT\n\ndirective @link(as: String, for: link__Purpose, import: [link__Import], url: String!) repeatable on SCHEMA\n\ninterface Assignable {\n assigneeId: Int\n}\n\ntype Employee @key(fields: \"id\") {\n assignedTasks: [Task!]!\n averageTaskCompletionDays(priority: TaskPriority, projectId: ID): Float @connect__fieldResolver(context: \"id\")\n certifications: [String!]\n completedTasks: [Task!]!\n currentWorkload(includeCompleted: Boolean, projectId: ID): Int! @connect__fieldResolver(context: \"id\")\n id: Int!\n projectHistory: [[Project!]]!\n projects: [Project!]\n skills: [String]\n}\n\ntype Milestone implements Node & Timestamped @key(fields: \"id\") {\n completionPercentage: Float\n daysUntilDue(fromDate: String): Int @connect__fieldResolver(context: \"endDate\")\n dependencies: [Milestone]!\n description: String\n endDate: String\n id: ID!\n isAtRisk(threshold: Float): Boolean! @connect__fieldResolver(context: \"id endDate status completionPercentage\")\n name: String!\n projectId: ID!\n reviewers: [Employee!]\n startDate: String\n status: MilestoneStatus!\n subtasks: [Task]\n}\n\ninput MilestoneInput {\n description: String\n dueDate: String\n name: String!\n projectId: ID!\n status: MilestoneStatus!\n}\n\nenum MilestoneStatus {\n COMPLETED\n DELAYED\n IN_PROGRESS\n PENDING\n}\n\ntype Mutation {\n addMilestone(milestone: MilestoneInput!): Milestone!\n addProject(project: ProjectInput!): Project!\n addTask(task: TaskInput!): Task!\n updateProjectStatus(projectId: ID!, status: ProjectStatus!): ProjectUpdate!\n}\n\ninterface Node {\n id: ID!\n}\n\ntype Product @key(fields: \"upc\") {\n featureMatrix: [[String]]\n projects: [Project!]\n upc: String!\n}\n\ntype Project implements Node & Timestamped @key(fields: \"id\") {\n alternativeProjects: [Project]\n completionRate(includeSubtasks: Boolean): Float! @connect__fieldResolver(context: \"id startDate endDate status\")\n criticalDeadline(withinDays: Int): Timestamped @connect__fieldResolver(context: \"id status milestones\")\n dependencies: [Project!]\n description: String\n endDate: String\n estimatedDaysRemaining(fromDate: String): Int @connect__fieldResolver(context: \"id endDate status\")\n filteredTasks(limit: Int, priority: TaskPriority, status: TaskStatus): [Task!]! @connect__fieldResolver(context: \"id\")\n id: ID!\n milestoneGroups: [[Milestone]]\n milestoneIds: [String!]\n milestones: [Milestone!]!\n name: String!\n priorityMatrix: [[[Task!]!]!]\n progress: Float\n relatedProducts: [Product!]!\n resourceGroups: [[ProjectResource!]!]!\n startDate: String\n status: ProjectStatus!\n subProjects(includeArchived: Boolean): [Project!]! @connect__fieldResolver(context: \"id name status\")\n tags: [String]\n tasks: [Task!]!\n tasksByPhase: [[Task!]]!\n teamMembers: [Employee!]!\n topPriorityItem(category: String): ProjectSearchResult @connect__fieldResolver(context: \"id status\")\n}\n\nunion ProjectActivity = Milestone | ProjectUpdate | Task\n\ninput ProjectInput {\n description: String\n endDate: String\n name: String!\n startDate: String\n status: ProjectStatus!\n}\n\nunion ProjectResource = Employee | Milestone | Product | Task\n\nunion ProjectSearchResult = Milestone | Project | Task\n\nenum ProjectStatus {\n ACTIVE\n COMPLETED\n ON_HOLD\n PLANNING\n}\n\ntype ProjectUpdate implements Node {\n description: String!\n id: ID!\n metadata: String\n projectId: ID!\n timestamp: String!\n updateType: ProjectUpdateType!\n updatedById: Int!\n}\n\nenum ProjectUpdateType {\n MILESTONE_ADDED\n PROGRESS_UPDATE\n STATUS_CHANGE\n TASK_ASSIGNED\n TEAM_CHANGE\n}\n\ntype Query {\n archivedProjects: [Project]!\n killService: Boolean!\n milestones(projectId: ID!): [Milestone!]!\n nodesById(id: ID!): [Node!]!\n panic: Boolean!\n project(id: ID!): Project\n projectActivities(projectId: ID!): [ProjectActivity!]!\n projectResources(projectId: ID!): [ProjectResource!]!\n projectStatuses: [ProjectStatus!]!\n projectTags: [String]\n projects: [Project!]!\n projectsByStatus(status: ProjectStatus!): [Project!]!\n resourceMatrix(projectId: ID!): [[ProjectResource!]!]!\n searchProjects(query: String!): [ProjectSearchResult!]!\n tasks(projectId: ID!): [Task!]!\n tasksByPriority(projectId: ID!): [[Task]]\n}\n\ntype Task implements Assignable & Node @key(fields: \"id\") {\n actualHours: Float\n assigneeId: Int\n attachmentUrls: [String!]!\n completedAt: String\n createdAt: String\n dependencies: [Task]!\n description: String\n estimatedHours: Float @deprecated(reason: \"No more estimations!\")\n id: ID!\n isBlocked(checkDependencies: Boolean): Boolean! @connect__fieldResolver(context: \"id status\")\n labels: [String]\n milestoneId: ID\n name: String!\n priority: TaskPriority!\n projectId: ID!\n reviewerIds: [Int]\n status: TaskStatus!\n subtasks: [Task!]\n totalEffort(includeSubtasks: Boolean): Float @connect__fieldResolver(context: \"id estimatedHours actualHours\")\n}\n\ninput TaskInput {\n assigneeId: Int\n description: String\n estimatedHours: Float\n name: String!\n priority: TaskPriority!\n projectId: ID!\n status: TaskStatus!\n}\n\nenum TaskPriority {\n HIGH\n LOW\n MEDIUM\n URGENT\n}\n\nenum TaskStatus {\n BLOCKED\n COMPLETED\n IN_PROGRESS\n REVIEW\n TODO\n}\n\ninterface Timestamped {\n endDate: String\n startDate: String\n}\n\nscalar link__Import\n\nenum link__Purpose {\n EXECUTION\n SECURITY\n}\n\nscalar openfed__FieldSet", "ee6b1bfdd2b01ef540c2a53258a8f8e6f0d3e3dd": "schema @link(url: \"https://specs.apollo.dev/federation/v2.5\", import: [\"@key\", \"@shareable\"]) {\n query: Query\n mutation: Mutation\n}\n\ndirective @key(fields: openfed__FieldSet!, resolvable: Boolean = true) repeatable on INTERFACE | OBJECT\n\ndirective @link(as: String, for: link__Purpose, import: [link__Import], url: String!) repeatable on SCHEMA\n\ntype Course {\n description: String\n id: ID!\n instructor: Employee!\n lessons: [Lesson!]!\n title: String!\n}\n\ntype Employee @key(fields: \"id\") {\n id: Int!\n taughtCourses: [Course!]!\n}\n\ntype Lesson {\n course: Course!\n courseId: ID!\n description: String\n id: ID!\n order: Int!\n title: String!\n}\n\ntype Mutation {\n addCourse(instructorId: Int!, title: String!): Course!\n addLesson(courseId: ID!, order: Int!, title: String!): Lesson!\n}\n\ntype Query {\n course(id: ID!): Course\n courses: [Course!]!\n killCoursesService: Boolean!\n lessons(courseId: ID!): [Lesson!]!\n throwErrorCourses: Boolean!\n}\n\nscalar link__Import\n\nenum link__Purpose {\n EXECUTION\n SECURITY\n}\n\nscalar openfed__FieldSet" }, - "graphqlClientSchema": "schema {\n query: Query\n mutation: Mutation\n subscription: Subscription\n}\n\ntype Query {\n employee(id: Int!): Employee\n employeeAsList(id: Int!): [Employee]\n employees: [Employee]\n products: [Products!]!\n teammates(team: Department!): [Employee!]!\n firstEmployee: Employee!\n findEmployeesBy(criteria: FindEmployeeCriteria!): [Employee!]!\n \"\"\" This is a GraphQL query that retrieves a list of employees.\"\"\"\n findEmployees(criteria: SearchInput): [Employee!]!\n productTypes: [Products!]!\n topSecretFederationFacts: [TopSecretFact!]!\n factTypes: [TopSecretFactType!]\n sharedThings(numOfA: Int!, numOfB: Int!): [Thing!]!\n \"\"\"Returns the value of the received HTTP header.\"\"\"\n headerValue(name: String!): String!\n \"\"\"Returns the value of the given key in the WS initial payload.\"\"\"\n initPayloadValue(key: String!): String!\n initialPayload: Map\n \"\"\"Returns response after the given delay\"\"\"\n delay(response: String!, ms: Int!): String!\n bigResponse(artificialDelay: Int! = 0, bigObjects: Int! = 100, nestedObjects: Int! = 100, deeplyNestedObjects: Int! = 100): [BigObject!]!\n longResponse(artificialDelay: Int! = 0, bytes: Int!): String\n bigAbstractResponse: BigAbstractResponse\n rootFieldWithListArg(arg: [String!]!): [String!]!\n rootFieldWithNestedListArg(arg: [[String!]!]!): [[String!]!]!\n rootFieldWithListOfInputArg(arg: [InputType!]!): [InputResponse!]!\n rootFieldWithListOfEnumArg(arg: [EnumType!]!): [EnumType!]!\n rootFieldWithInput(arg: InputArg!): String!\n floatField(arg: Float): Float\n secret: Secret\n projects: [Project!]!\n project(id: ID!): Project\n projectStatuses: [ProjectStatus!]!\n projectsByStatus(status: ProjectStatus!): [Project!]!\n projectResources(projectId: ID!): [ProjectResource!]!\n searchProjects(query: String!): [ProjectSearchResult!]!\n milestones(projectId: ID!): [Milestone!]!\n tasks(projectId: ID!): [Task!]!\n projectActivities(projectId: ID!): [ProjectActivity!]!\n projectTags: [String]\n archivedProjects: [Project]!\n tasksByPriority(projectId: ID!): [[Task]]\n resourceMatrix(projectId: ID!): [[ProjectResource!]!]!\n killService: Boolean!\n panic: Boolean!\n nodesById(id: ID!): [Node!]!\n courses: [Course!]!\n course(id: ID!): Course\n lessons(courseId: ID!): [Lesson!]!\n killCoursesService: Boolean!\n throwErrorCourses: Boolean!\n}\n\nscalar Upload\n\ntype Mutation {\n updateEmployeeTag(id: Int!, tag: String!): Employee\n singleUpload(file: Upload!): Boolean!\n singleUploadWithInput(arg: FileUpload!): Boolean!\n multipleUpload(files: [Upload!]!): Boolean!\n addFact(fact: TopSecretFactInput!): TopSecretFact!\n \"\"\" This mutation updates the availability status of an employee in the system.\n \"\"\"\n updateAvailability(employeeID: Int!, isAvailable: Boolean!): Employee!\n \"\"\" This mutation update the mood of an employee. \"\"\"\n updateMood(employeeID: Int!, mood: Mood!): Employee!\n addProject(project: ProjectInput!): Project!\n addMilestone(milestone: MilestoneInput!): Milestone!\n addTask(task: TaskInput!): Task!\n updateProjectStatus(projectId: ID!, status: ProjectStatus!): ProjectUpdate!\n addCourse(title: String!, instructorId: Int!): Course!\n addLesson(courseId: ID!, title: String!, order: Int!): Lesson!\n}\n\ninput FileUpload {\n nested: DeeplyNestedFileUpload\n nestedList: [Upload!]\n}\n\ninput DeeplyNestedFileUpload {\n file: Upload!\n}\n\ntype Subscription {\n \"\"\"`currentTime` will return a stream of `Time` objects.\"\"\"\n currentTime: Time!\n countEmp(max: Int!, intervalMilliseconds: Int!): Int!\n countEmp2(max: Int!, intervalMilliseconds: Int!): Int!\n countFor(count: Int!): Int!\n countHob(max: Int!, intervalMilliseconds: Int!): Int!\n \"\"\"Returns a stream with the value of the received HTTP header.\"\"\"\n headerValue(name: String!, repeat: Int): TimestampedString!\n \"\"\"\n Returns a stream with the value of value of the given key in the WS initial payload.\n \"\"\"\n initPayloadValue(key: String!, repeat: Int): TimestampedString!\n \"\"\"Returns a stream with the value of the WS initial payload.\"\"\"\n initialPayload(repeat: Int): Map\n returnsError: String\n}\n\nenum Department {\n ENGINEERING\n MARKETING\n OPERATIONS\n}\n\ninterface RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n}\n\nenum EngineerType {\n BACKEND\n FRONTEND\n FULLSTACK\n}\n\ninterface Identifiable {\n id: Int!\n}\n\nenum OperationType {\n FINANCE\n HUMAN_RESOURCES\n}\n\ntype Details {\n forename: String!\n location: Country!\n surname: String!\n pastLocations: [City!]!\n middlename: String @deprecated(reason: \"No longer supported\")\n hasChildren: Boolean!\n maritalStatus: MaritalStatus\n nationality: Nationality!\n pets: [Pet]\n}\n\ntype City {\n type: String!\n name: String!\n country: Country\n}\n\ntype Country {\n key: CountryKey!\n language: String\n}\n\ntype CountryKey {\n name: String!\n}\n\nenum Mood {\n HAPPY\n SAD\n}\n\ntype ErrorWrapper {\n okField: String\n errorField: String\n}\n\ntype Time {\n unixTime: Int!\n timeStamp: String!\n}\n\nunion Products = Consultancy | Cosmo | SDK | Documentation\n\ninterface IProduct {\n upc: ID!\n engineers: [Employee!]!\n}\n\ntype Consultancy {\n upc: ID!\n lead: Employee!\n isLeadAvailable: Boolean\n name: ProductName!\n}\n\ninput FindEmployeeCriteria @oneOf {\n id: Int\n department: Department\n title: String\n}\n\nenum Class {\n FISH\n MAMMAL\n REPTILE\n}\n\nenum Gender {\n FEMALE\n MALE\n UNKNOWN\n}\n\ninterface Animal {\n class: Class!\n gender: Gender!\n}\n\nenum CatType {\n HOME\n STREET\n}\n\nenum DogBreed {\n GOLDEN_RETRIEVER\n POODLE\n ROTTWEILER\n YORKSHIRE_TERRIER\n}\n\nenum MaritalStatus {\n ENGAGED\n MARRIED\n}\n\nenum Nationality {\n AMERICAN\n DUTCH\n ENGLISH\n GERMAN\n INDIAN\n SPANISH\n UKRAINIAN\n}\n\n\"\"\" Allows to filter employees by their details. \"\"\"\ninput SearchInput {\n hasPets: Boolean\n nationality: Nationality\n nested: NestedSearchInput\n}\n\ninput NestedSearchInput {\n maritalStatus: MaritalStatus\n hasChildren: Boolean\n}\n\nenum ExerciseType {\n CALISTHENICS\n HIKING\n SPORT\n STRENGTH_TRAINING\n}\n\ninterface Experience {\n yearsOfExperience: Float!\n}\n\nenum GameGenre {\n ADVENTURE\n BOARD\n FPS\n CARD\n RPG\n ROGUELITE\n SIMULATION\n STRATEGY\n}\n\nenum ProgrammingLanguage {\n CSHARP\n GO\n RUST\n TYPESCRIPT\n}\n\ninterface Hobby {\n employees: [Employee!]!\n}\n\ntype Thing {\n a: String!\n b: String!\n}\n\ninput TopSecretFactInput {\n title: String!\n description: FactContent!\n factType: TopSecretFactType!\n}\n\nenum TopSecretFactType {\n DIRECTIVE\n ENTITY\n MISCELLANEOUS\n}\n\ninterface TopSecretFact {\n description: FactContent!\n factType: TopSecretFactType\n}\n\nscalar FactContent\n\nenum ProductName {\n CONSULTANCY\n COSMO\n ENGINE\n FINANCE\n HUMAN_RESOURCES\n MARKETING\n SDK\n}\n\ntype Documentation {\n url(product: ProductName!): String!\n urls(products: [ProductName!]!): [String!]!\n}\n\ntype Secret {\n value: String\n}\n\ninput InputArg {\n enums: [EnumType!]\n enum: EnumType\n string: String\n strings: [String!]\n}\n\nenum EnumType {\n A\n B\n C\n}\n\ninput InputType {\n arg: String!\n}\n\ntype InputResponse {\n arg: String!\n}\n\nscalar Map\n\ntype TimestampedString {\n \"\"\"The value of the string.\"\"\"\n value: String!\n \"\"\"The timestamp when the response was generated.\"\"\"\n unixTime: Int!\n \"\"\"Sequence number\"\"\"\n seq: Int!\n \"\"\"Total number of responses to be sent\"\"\"\n total: Int!\n initialPayload: Map\n}\n\ntype BigObject {\n nestedObjects: [NestedObject!]!\n}\n\ntype NestedObject {\n deeplyNestedObjects: [DeeplyNestedObject!]!\n}\n\ntype DeeplyNestedObject {\n aFieldOnDeeplyNestedObject: String!\n bFieldOnDeeplyNestedObject: Int!\n cFieldOnDeeplyNestedObject: Boolean!\n dFieldOnDeeplyNestedObject: Float!\n eFieldOnDeeplyNestedObject: String!\n fFieldOnDeeplyNestedObject: Int!\n gFieldOnDeeplyNestedObject: Boolean!\n hFieldOnDeeplyNestedObject: Float!\n iFieldOnDeeplyNestedObject: String!\n jFieldOnDeeplyNestedObject: Int!\n kFieldOnDeeplyNestedObject: Boolean!\n lFieldOnDeeplyNestedObject: Float!\n mFieldOnDeeplyNestedObject: String!\n nFieldOnDeeplyNestedObject: Int!\n oFieldOnDeeplyNestedObject: Boolean!\n pFieldOnDeeplyNestedObject: Float!\n qFieldOnDeeplyNestedObject: String!\n rFieldOnDeeplyNestedObject: Int!\n sFieldOnDeeplyNestedObject: Boolean!\n tFieldOnDeeplyNestedObject: Float!\n uFieldOnDeeplyNestedObject: String!\n vFieldOnDeeplyNestedObject: Int!\n wFieldOnDeeplyNestedObject: Boolean!\n xFieldOnDeeplyNestedObject: Float!\n yFieldOnDeeplyNestedObject: String!\n zFieldOnDeeplyNestedObject: Int!\n}\n\nunion BigAbstractResponse = ABigObject | BBigObject | CBigObject | DBigObject | EBigObject | FBigObject | GBigObject | HBigObject | IBigObject | JBigObject | KBigObject | LBigObject | MBigObject | NBigObject | OBigObject | PBigObject | QBigObject | RBigObject | SBigObject | TBigObject | UBigObject | VBigObject | WBigObject | XBigObject | YBigObject | ZBigObject\n\ntype ABigObject {\n aFieldOnABigObject: String!\n bFieldOnABigObject: Int!\n cFieldOnABigObject: Boolean!\n dFieldOnABigObject: Float!\n eFieldOnABigObject: String!\n fFieldOnABigObject: Int!\n gFieldOnABigObject: Boolean!\n hFieldOnABigObject: Float!\n iFieldOnABigObject: String!\n jFieldOnABigObject: Int!\n kFieldOnABigObject: Boolean!\n lFieldOnABigObject: Float!\n mFieldOnABigObject: String!\n nFieldOnABigObject: Int!\n oFieldOnABigObject: Boolean!\n pFieldOnABigObject: Float!\n qFieldOnABigObject: String!\n rFieldOnABigObject: Int!\n sFieldOnABigObject: Boolean!\n tFieldOnABigObject: Float!\n uFieldOnABigObject: String!\n vFieldOnABigObject: Int!\n wFieldOnABigObject: Boolean!\n xFieldOnABigObject: Float!\n yFieldOnABigObject: String!\n zFieldOnABigObject: Int!\n}\n\ntype BBigObject {\n aFieldOnBBigObject: String!\n bFieldOnBBigObject: Int!\n cFieldOnBBigObject: Boolean!\n dFieldOnBBigObject: Float!\n eFieldOnBBigObject: String!\n fFieldOnBBigObject: Int!\n gFieldOnBBigObject: Boolean!\n hFieldOnBBigObject: Float!\n iFieldOnBBigObject: String!\n jFieldOnBBigObject: Int!\n kFieldOnBBigObject: Boolean!\n lFieldOnBBigObject: Float!\n mFieldOnBBigObject: String!\n nFieldOnBBigObject: Int!\n oFieldOnBBigObject: Boolean!\n pFieldOnBBigObject: Float!\n qFieldOnBBigObject: String!\n rFieldOnBBigObject: Int!\n sFieldOnBBigObject: Boolean!\n tFieldOnBBigObject: Float!\n uFieldOnBBigObject: String!\n vFieldOnBBigObject: Int!\n wFieldOnBBigObject: Boolean!\n xFieldOnBBigObject: Float!\n yFieldOnBBigObject: String!\n zFieldOnBBigObject: Int!\n}\n\ntype CBigObject {\n aFieldOnCBigObject: String!\n bFieldOnCBigObject: Int!\n cFieldOnCBigObject: Boolean!\n dFieldOnCBigObject: Float!\n eFieldOnCBigObject: String!\n fFieldOnCBigObject: Int!\n gFieldOnCBigObject: Boolean!\n hFieldOnCBigObject: Float!\n iFieldOnCBigObject: String!\n jFieldOnCBigObject: Int!\n kFieldOnCBigObject: Boolean!\n lFieldOnCBigObject: Float!\n mFieldOnCBigObject: String!\n nFieldOnCBigObject: Int!\n oFieldOnCBigObject: Boolean!\n pFieldOnCBigObject: Float!\n qFieldOnCBigObject: String!\n rFieldOnCBigObject: Int!\n sFieldOnCBigObject: Boolean!\n tFieldOnCBigObject: Float!\n uFieldOnCBigObject: String!\n vFieldOnCBigObject: Int!\n wFieldOnCBigObject: Boolean!\n xFieldOnCBigObject: Float!\n yFieldOnCBigObject: String!\n zFieldOnCBigObject: Int!\n}\n\ntype DBigObject {\n aFieldOnDBigObject: String!\n bFieldOnDBigObject: Int!\n cFieldOnDBigObject: Boolean!\n dFieldOnDBigObject: Float!\n eFieldOnDBigObject: String!\n fFieldOnDBigObject: Int!\n gFieldOnDBigObject: Boolean!\n hFieldOnDBigObject: Float!\n iFieldOnDBigObject: String!\n jFieldOnDBigObject: Int!\n kFieldOnDBigObject: Boolean!\n lFieldOnDBigObject: Float!\n mFieldOnDBigObject: String!\n nFieldOnDBigObject: Int!\n oFieldOnDBigObject: Boolean!\n pFieldOnDBigObject: Float!\n qFieldOnDBigObject: String!\n rFieldOnDBigObject: Int!\n sFieldOnDBigObject: Boolean!\n tFieldOnDBigObject: Float!\n uFieldOnDBigObject: String!\n vFieldOnDBigObject: Int!\n wFieldOnDBigObject: Boolean!\n xFieldOnDBigObject: Float!\n yFieldOnDBigObject: String!\n zFieldOnDBigObject: Int!\n}\n\ntype EBigObject {\n aFieldOnEBigObject: String!\n bFieldOnEBigObject: Int!\n cFieldOnEBigObject: Boolean!\n dFieldOnEBigObject: Float!\n eFieldOnEBigObject: String!\n fFieldOnEBigObject: Int!\n gFieldOnEBigObject: Boolean!\n hFieldOnEBigObject: Float!\n iFieldOnEBigObject: String!\n jFieldOnEBigObject: Int!\n kFieldOnEBigObject: Boolean!\n lFieldOnEBigObject: Float!\n mFieldOnEBigObject: String!\n nFieldOnEBigObject: Int!\n oFieldOnEBigObject: Boolean!\n pFieldOnEBigObject: Float!\n qFieldOnEBigObject: String!\n rFieldOnEBigObject: Int!\n sFieldOnEBigObject: Boolean!\n tFieldOnEBigObject: Float!\n uFieldOnEBigObject: String!\n vFieldOnEBigObject: Int!\n wFieldOnEBigObject: Boolean!\n xFieldOnEBigObject: Float!\n yFieldOnEBigObject: String!\n zFieldOnEBigObject: Int!\n}\n\ntype FBigObject {\n aFieldOnFBigObject: String!\n bFieldOnFBigObject: Int!\n cFieldOnFBigObject: Boolean!\n dFieldOnFBigObject: Float!\n eFieldOnFBigObject: String!\n fFieldOnFBigObject: Int!\n gFieldOnFBigObject: Boolean!\n hFieldOnFBigObject: Float!\n iFieldOnFBigObject: String!\n jFieldOnFBigObject: Int!\n kFieldOnFBigObject: Boolean!\n lFieldOnFBigObject: Float!\n mFieldOnFBigObject: String!\n nFieldOnFBigObject: Int!\n oFieldOnFBigObject: Boolean!\n pFieldOnFBigObject: Float!\n qFieldOnFBigObject: String!\n rFieldOnFBigObject: Int!\n sFieldOnFBigObject: Boolean!\n tFieldOnFBigObject: Float!\n uFieldOnFBigObject: String!\n vFieldOnFBigObject: Int!\n wFieldOnFBigObject: Boolean!\n xFieldOnFBigObject: Float!\n yFieldOnFBigObject: String!\n zFieldOnFBigObject: Int!\n}\n\ntype GBigObject {\n aFieldOnGBigObject: String!\n bFieldOnGBigObject: Int!\n cFieldOnGBigObject: Boolean!\n dFieldOnGBigObject: Float!\n eFieldOnGBigObject: String!\n fFieldOnGBigObject: Int!\n gFieldOnGBigObject: Boolean!\n hFieldOnGBigObject: Float!\n iFieldOnGBigObject: String!\n jFieldOnGBigObject: Int!\n kFieldOnGBigObject: Boolean!\n lFieldOnGBigObject: Float!\n mFieldOnGBigObject: String!\n nFieldOnGBigObject: Int!\n oFieldOnGBigObject: Boolean!\n pFieldOnGBigObject: Float!\n qFieldOnGBigObject: String!\n rFieldOnGBigObject: Int!\n sFieldOnGBigObject: Boolean!\n tFieldOnGBigObject: Float!\n uFieldOnGBigObject: String!\n vFieldOnGBigObject: Int!\n wFieldOnGBigObject: Boolean!\n xFieldOnGBigObject: Float!\n yFieldOnGBigObject: String!\n zFieldOnGBigObject: Int!\n}\n\ntype HBigObject {\n aFieldOnHBigObject: String!\n bFieldOnHBigObject: Int!\n cFieldOnHBigObject: Boolean!\n dFieldOnHBigObject: Float!\n eFieldOnHBigObject: String!\n fFieldOnHBigObject: Int!\n gFieldOnHBigObject: Boolean!\n hFieldOnHBigObject: Float!\n iFieldOnHBigObject: String!\n jFieldOnHBigObject: Int!\n kFieldOnHBigObject: Boolean!\n lFieldOnHBigObject: Float!\n mFieldOnHBigObject: String!\n nFieldOnHBigObject: Int!\n oFieldOnHBigObject: Boolean!\n pFieldOnHBigObject: Float!\n qFieldOnHBigObject: String!\n rFieldOnHBigObject: Int!\n sFieldOnHBigObject: Boolean!\n tFieldOnHBigObject: Float!\n uFieldOnHBigObject: String!\n vFieldOnHBigObject: Int!\n wFieldOnHBigObject: Boolean!\n xFieldOnHBigObject: Float!\n yFieldOnHBigObject: String!\n zFieldOnHBigObject: Int!\n}\n\ntype IBigObject {\n aFieldOnIBigObject: String!\n bFieldOnIBigObject: Int!\n cFieldOnIBigObject: Boolean!\n dFieldOnIBigObject: Float!\n eFieldOnIBigObject: String!\n fFieldOnIBigObject: Int!\n gFieldOnIBigObject: Boolean!\n hFieldOnIBigObject: Float!\n iFieldOnIBigObject: String!\n jFieldOnIBigObject: Int!\n kFieldOnIBigObject: Boolean!\n lFieldOnIBigObject: Float!\n mFieldOnIBigObject: String!\n nFieldOnIBigObject: Int!\n oFieldOnIBigObject: Boolean!\n pFieldOnIBigObject: Float!\n qFieldOnIBigObject: String!\n rFieldOnIBigObject: Int!\n sFieldOnIBigObject: Boolean!\n tFieldOnIBigObject: Float!\n uFieldOnIBigObject: String!\n vFieldOnIBigObject: Int!\n wFieldOnIBigObject: Boolean!\n xFieldOnIBigObject: Float!\n yFieldOnIBigObject: String!\n zFieldOnIBigObject: Int!\n}\n\ntype JBigObject {\n aFieldOnJBigObject: String!\n bFieldOnJBigObject: Int!\n cFieldOnJBigObject: Boolean!\n dFieldOnJBigObject: Float!\n eFieldOnJBigObject: String!\n fFieldOnJBigObject: Int!\n gFieldOnJBigObject: Boolean!\n hFieldOnJBigObject: Float!\n iFieldOnJBigObject: String!\n jFieldOnJBigObject: Int!\n kFieldOnJBigObject: Boolean!\n lFieldOnJBigObject: Float!\n mFieldOnJBigObject: String!\n nFieldOnJBigObject: Int!\n oFieldOnJBigObject: Boolean!\n pFieldOnJBigObject: Float!\n qFieldOnJBigObject: String!\n rFieldOnJBigObject: Int!\n sFieldOnJBigObject: Boolean!\n tFieldOnJBigObject: Float!\n uFieldOnJBigObject: String!\n vFieldOnJBigObject: Int!\n wFieldOnJBigObject: Boolean!\n xFieldOnJBigObject: Float!\n yFieldOnJBigObject: String!\n zFieldOnJBigObject: Int!\n}\n\ntype KBigObject {\n aFieldOnKBigObject: String!\n bFieldOnKBigObject: Int!\n cFieldOnKBigObject: Boolean!\n dFieldOnKBigObject: Float!\n eFieldOnKBigObject: String!\n fFieldOnKBigObject: Int!\n gFieldOnKBigObject: Boolean!\n hFieldOnKBigObject: Float!\n iFieldOnKBigObject: String!\n jFieldOnKBigObject: Int!\n kFieldOnKBigObject: Boolean!\n lFieldOnKBigObject: Float!\n mFieldOnKBigObject: String!\n nFieldOnKBigObject: Int!\n oFieldOnKBigObject: Boolean!\n pFieldOnKBigObject: Float!\n qFieldOnKBigObject: String!\n rFieldOnKBigObject: Int!\n sFieldOnKBigObject: Boolean!\n tFieldOnKBigObject: Float!\n uFieldOnKBigObject: String!\n vFieldOnKBigObject: Int!\n wFieldOnKBigObject: Boolean!\n xFieldOnKBigObject: Float!\n yFieldOnKBigObject: String!\n zFieldOnKBigObject: Int!\n}\n\ntype LBigObject {\n aFieldOnLBigObject: String!\n bFieldOnLBigObject: Int!\n cFieldOnLBigObject: Boolean!\n dFieldOnLBigObject: Float!\n eFieldOnLBigObject: String!\n fFieldOnLBigObject: Int!\n gFieldOnLBigObject: Boolean!\n hFieldOnLBigObject: Float!\n iFieldOnLBigObject: String!\n jFieldOnLBigObject: Int!\n kFieldOnLBigObject: Boolean!\n lFieldOnLBigObject: Float!\n mFieldOnLBigObject: String!\n nFieldOnLBigObject: Int!\n oFieldOnLBigObject: Boolean!\n pFieldOnLBigObject: Float!\n qFieldOnLBigObject: String!\n rFieldOnLBigObject: Int!\n sFieldOnLBigObject: Boolean!\n tFieldOnLBigObject: Float!\n uFieldOnLBigObject: String!\n vFieldOnLBigObject: Int!\n wFieldOnLBigObject: Boolean!\n xFieldOnLBigObject: Float!\n yFieldOnLBigObject: String!\n zFieldOnLBigObject: Int!\n}\n\ntype MBigObject {\n aFieldOnMBigObject: String!\n bFieldOnMBigObject: Int!\n cFieldOnMBigObject: Boolean!\n dFieldOnMBigObject: Float!\n eFieldOnMBigObject: String!\n fFieldOnMBigObject: Int!\n gFieldOnMBigObject: Boolean!\n hFieldOnMBigObject: Float!\n iFieldOnMBigObject: String!\n jFieldOnMBigObject: Int!\n kFieldOnMBigObject: Boolean!\n lFieldOnMBigObject: Float!\n mFieldOnMBigObject: String!\n nFieldOnMBigObject: Int!\n oFieldOnMBigObject: Boolean!\n pFieldOnMBigObject: Float!\n qFieldOnMBigObject: String!\n rFieldOnMBigObject: Int!\n sFieldOnMBigObject: Boolean!\n tFieldOnMBigObject: Float!\n uFieldOnMBigObject: String!\n vFieldOnMBigObject: Int!\n wFieldOnMBigObject: Boolean!\n xFieldOnMBigObject: Float!\n yFieldOnMBigObject: String!\n zFieldOnMBigObject: Int!\n}\n\ntype NBigObject {\n aFieldOnNBigObject: String!\n bFieldOnNBigObject: Int!\n cFieldOnNBigObject: Boolean!\n dFieldOnNBigObject: Float!\n eFieldOnNBigObject: String!\n fFieldOnNBigObject: Int!\n gFieldOnNBigObject: Boolean!\n hFieldOnNBigObject: Float!\n iFieldOnNBigObject: String!\n jFieldOnNBigObject: Int!\n kFieldOnNBigObject: Boolean!\n lFieldOnNBigObject: Float!\n mFieldOnNBigObject: String!\n nFieldOnNBigObject: Int!\n oFieldOnNBigObject: Boolean!\n pFieldOnNBigObject: Float!\n qFieldOnNBigObject: String!\n rFieldOnNBigObject: Int!\n sFieldOnNBigObject: Boolean!\n tFieldOnNBigObject: Float!\n uFieldOnNBigObject: String!\n vFieldOnNBigObject: Int!\n wFieldOnNBigObject: Boolean!\n xFieldOnNBigObject: Float!\n yFieldOnNBigObject: String!\n zFieldOnNBigObject: Int!\n}\n\ntype OBigObject {\n aFieldOnOBigObject: String!\n bFieldOnOBigObject: Int!\n cFieldOnOBigObject: Boolean!\n dFieldOnOBigObject: Float!\n eFieldOnOBigObject: String!\n fFieldOnOBigObject: Int!\n gFieldOnOBigObject: Boolean!\n hFieldOnOBigObject: Float!\n iFieldOnOBigObject: String!\n jFieldOnOBigObject: Int!\n kFieldOnOBigObject: Boolean!\n lFieldOnOBigObject: Float!\n mFieldOnOBigObject: String!\n nFieldOnOBigObject: Int!\n oFieldOnOBigObject: Boolean!\n pFieldOnOBigObject: Float!\n qFieldOnOBigObject: String!\n rFieldOnOBigObject: Int!\n sFieldOnOBigObject: Boolean!\n tFieldOnOBigObject: Float!\n uFieldOnOBigObject: String!\n vFieldOnOBigObject: Int!\n wFieldOnOBigObject: Boolean!\n xFieldOnOBigObject: Float!\n yFieldOnOBigObject: String!\n zFieldOnOBigObject: Int!\n}\n\ntype PBigObject {\n aFieldOnPBigObject: String!\n bFieldOnPBigObject: Int!\n cFieldOnPBigObject: Boolean!\n dFieldOnPBigObject: Float!\n eFieldOnPBigObject: String!\n fFieldOnPBigObject: Int!\n gFieldOnPBigObject: Boolean!\n hFieldOnPBigObject: Float!\n iFieldOnPBigObject: String!\n jFieldOnPBigObject: Int!\n kFieldOnPBigObject: Boolean!\n lFieldOnPBigObject: Float!\n mFieldOnPBigObject: String!\n nFieldOnPBigObject: Int!\n oFieldOnPBigObject: Boolean!\n pFieldOnPBigObject: Float!\n qFieldOnPBigObject: String!\n rFieldOnPBigObject: Int!\n sFieldOnPBigObject: Boolean!\n tFieldOnPBigObject: Float!\n uFieldOnPBigObject: String!\n vFieldOnPBigObject: Int!\n wFieldOnPBigObject: Boolean!\n xFieldOnPBigObject: Float!\n yFieldOnPBigObject: String!\n zFieldOnPBigObject: Int!\n}\n\ntype QBigObject {\n aFieldOnQBigObject: String!\n bFieldOnQBigObject: Int!\n cFieldOnQBigObject: Boolean!\n dFieldOnQBigObject: Float!\n eFieldOnQBigObject: String!\n fFieldOnQBigObject: Int!\n gFieldOnQBigObject: Boolean!\n hFieldOnQBigObject: Float!\n iFieldOnQBigObject: String!\n jFieldOnQBigObject: Int!\n kFieldOnQBigObject: Boolean!\n lFieldOnQBigObject: Float!\n mFieldOnQBigObject: String!\n nFieldOnQBigObject: Int!\n oFieldOnQBigObject: Boolean!\n pFieldOnQBigObject: Float!\n qFieldOnQBigObject: String!\n rFieldOnQBigObject: Int!\n sFieldOnQBigObject: Boolean!\n tFieldOnQBigObject: Float!\n uFieldOnQBigObject: String!\n vFieldOnQBigObject: Int!\n wFieldOnQBigObject: Boolean!\n xFieldOnQBigObject: Float!\n yFieldOnQBigObject: String!\n zFieldOnQBigObject: Int!\n}\n\ntype RBigObject {\n aFieldOnRBigObject: String!\n bFieldOnRBigObject: Int!\n cFieldOnRBigObject: Boolean!\n dFieldOnRBigObject: Float!\n eFieldOnRBigObject: String!\n fFieldOnRBigObject: Int!\n gFieldOnRBigObject: Boolean!\n hFieldOnRBigObject: Float!\n iFieldOnRBigObject: String!\n jFieldOnRBigObject: Int!\n kFieldOnRBigObject: Boolean!\n lFieldOnRBigObject: Float!\n mFieldOnRBigObject: String!\n nFieldOnRBigObject: Int!\n oFieldOnRBigObject: Boolean!\n pFieldOnRBigObject: Float!\n qFieldOnRBigObject: String!\n rFieldOnRBigObject: Int!\n sFieldOnRBigObject: Boolean!\n tFieldOnRBigObject: Float!\n uFieldOnRBigObject: String!\n vFieldOnRBigObject: Int!\n wFieldOnRBigObject: Boolean!\n xFieldOnRBigObject: Float!\n yFieldOnRBigObject: String!\n zFieldOnRBigObject: Int!\n}\n\ntype SBigObject {\n aFieldOnSBigObject: String!\n bFieldOnSBigObject: Int!\n cFieldOnSBigObject: Boolean!\n dFieldOnSBigObject: Float!\n eFieldOnSBigObject: String!\n fFieldOnSBigObject: Int!\n gFieldOnSBigObject: Boolean!\n hFieldOnSBigObject: Float!\n iFieldOnSBigObject: String!\n jFieldOnSBigObject: Int!\n kFieldOnSBigObject: Boolean!\n lFieldOnSBigObject: Float!\n mFieldOnSBigObject: String!\n nFieldOnSBigObject: Int!\n oFieldOnSBigObject: Boolean!\n pFieldOnSBigObject: Float!\n qFieldOnSBigObject: String!\n rFieldOnSBigObject: Int!\n sFieldOnSBigObject: Boolean!\n tFieldOnSBigObject: Float!\n uFieldOnSBigObject: String!\n vFieldOnSBigObject: Int!\n wFieldOnSBigObject: Boolean!\n xFieldOnSBigObject: Float!\n yFieldOnSBigObject: String!\n zFieldOnSBigObject: Int!\n}\n\ntype TBigObject {\n aFieldOnTBigObject: String!\n bFieldOnTBigObject: Int!\n cFieldOnTBigObject: Boolean!\n dFieldOnTBigObject: Float!\n eFieldOnTBigObject: String!\n fFieldOnTBigObject: Int!\n gFieldOnTBigObject: Boolean!\n hFieldOnTBigObject: Float!\n iFieldOnTBigObject: String!\n jFieldOnTBigObject: Int!\n kFieldOnTBigObject: Boolean!\n lFieldOnTBigObject: Float!\n mFieldOnTBigObject: String!\n nFieldOnTBigObject: Int!\n oFieldOnTBigObject: Boolean!\n pFieldOnTBigObject: Float!\n qFieldOnTBigObject: String!\n rFieldOnTBigObject: Int!\n sFieldOnTBigObject: Boolean!\n tFieldOnTBigObject: Float!\n uFieldOnTBigObject: String!\n vFieldOnTBigObject: Int!\n wFieldOnTBigObject: Boolean!\n xFieldOnTBigObject: Float!\n yFieldOnTBigObject: String!\n zFieldOnTBigObject: Int!\n}\n\ntype UBigObject {\n aFieldOnUBigObject: String!\n bFieldOnUBigObject: Int!\n cFieldOnUBigObject: Boolean!\n dFieldOnUBigObject: Float!\n eFieldOnUBigObject: String!\n fFieldOnUBigObject: Int!\n gFieldOnUBigObject: Boolean!\n hFieldOnUBigObject: Float!\n iFieldOnUBigObject: String!\n jFieldOnUBigObject: Int!\n kFieldOnUBigObject: Boolean!\n lFieldOnUBigObject: Float!\n mFieldOnUBigObject: String!\n nFieldOnUBigObject: Int!\n oFieldOnUBigObject: Boolean!\n pFieldOnUBigObject: Float!\n qFieldOnUBigObject: String!\n rFieldOnUBigObject: Int!\n sFieldOnUBigObject: Boolean!\n tFieldOnUBigObject: Float!\n uFieldOnUBigObject: String!\n vFieldOnUBigObject: Int!\n wFieldOnUBigObject: Boolean!\n xFieldOnUBigObject: Float!\n yFieldOnUBigObject: String!\n zFieldOnUBigObject: Int!\n}\n\ntype VBigObject {\n aFieldOnVBigObject: String!\n bFieldOnVBigObject: Int!\n cFieldOnVBigObject: Boolean!\n dFieldOnVBigObject: Float!\n eFieldOnVBigObject: String!\n fFieldOnVBigObject: Int!\n gFieldOnVBigObject: Boolean!\n hFieldOnVBigObject: Float!\n iFieldOnVBigObject: String!\n jFieldOnVBigObject: Int!\n kFieldOnVBigObject: Boolean!\n lFieldOnVBigObject: Float!\n mFieldOnVBigObject: String!\n nFieldOnVBigObject: Int!\n oFieldOnVBigObject: Boolean!\n pFieldOnVBigObject: Float!\n qFieldOnVBigObject: String!\n rFieldOnVBigObject: Int!\n sFieldOnVBigObject: Boolean!\n tFieldOnVBigObject: Float!\n uFieldOnVBigObject: String!\n vFieldOnVBigObject: Int!\n wFieldOnVBigObject: Boolean!\n xFieldOnVBigObject: Float!\n yFieldOnVBigObject: String!\n zFieldOnVBigObject: Int!\n}\n\ntype WBigObject {\n aFieldOnWBigObject: String!\n bFieldOnWBigObject: Int!\n cFieldOnWBigObject: Boolean!\n dFieldOnWBigObject: Float!\n eFieldOnWBigObject: String!\n fFieldOnWBigObject: Int!\n gFieldOnWBigObject: Boolean!\n hFieldOnWBigObject: Float!\n iFieldOnWBigObject: String!\n jFieldOnWBigObject: Int!\n kFieldOnWBigObject: Boolean!\n lFieldOnWBigObject: Float!\n mFieldOnWBigObject: String!\n nFieldOnWBigObject: Int!\n oFieldOnWBigObject: Boolean!\n pFieldOnWBigObject: Float!\n qFieldOnWBigObject: String!\n rFieldOnWBigObject: Int!\n sFieldOnWBigObject: Boolean!\n tFieldOnWBigObject: Float!\n uFieldOnWBigObject: String!\n vFieldOnWBigObject: Int!\n wFieldOnWBigObject: Boolean!\n xFieldOnWBigObject: Float!\n yFieldOnWBigObject: String!\n zFieldOnWBigObject: Int!\n}\n\ntype XBigObject {\n aFieldOnXBigObject: String!\n bFieldOnXBigObject: Int!\n cFieldOnXBigObject: Boolean!\n dFieldOnXBigObject: Float!\n eFieldOnXBigObject: String!\n fFieldOnXBigObject: Int!\n gFieldOnXBigObject: Boolean!\n hFieldOnXBigObject: Float!\n iFieldOnXBigObject: String!\n jFieldOnXBigObject: Int!\n kFieldOnXBigObject: Boolean!\n lFieldOnXBigObject: Float!\n mFieldOnXBigObject: String!\n nFieldOnXBigObject: Int!\n oFieldOnXBigObject: Boolean!\n pFieldOnXBigObject: Float!\n qFieldOnXBigObject: String!\n rFieldOnXBigObject: Int!\n sFieldOnXBigObject: Boolean!\n tFieldOnXBigObject: Float!\n uFieldOnXBigObject: String!\n vFieldOnXBigObject: Int!\n wFieldOnXBigObject: Boolean!\n xFieldOnXBigObject: Float!\n yFieldOnXBigObject: String!\n zFieldOnXBigObject: Int!\n}\n\ntype YBigObject {\n aFieldOnYBigObject: String!\n bFieldOnYBigObject: Int!\n cFieldOnYBigObject: Boolean!\n dFieldOnYBigObject: Float!\n eFieldOnYBigObject: String!\n fFieldOnYBigObject: Int!\n gFieldOnYBigObject: Boolean!\n hFieldOnYBigObject: Float!\n iFieldOnYBigObject: String!\n jFieldOnYBigObject: Int!\n kFieldOnYBigObject: Boolean!\n lFieldOnYBigObject: Float!\n mFieldOnYBigObject: String!\n nFieldOnYBigObject: Int!\n oFieldOnYBigObject: Boolean!\n pFieldOnYBigObject: Float!\n qFieldOnYBigObject: String!\n rFieldOnYBigObject: Int!\n sFieldOnYBigObject: Boolean!\n tFieldOnYBigObject: Float!\n uFieldOnYBigObject: String!\n vFieldOnYBigObject: Int!\n wFieldOnYBigObject: Boolean!\n xFieldOnYBigObject: Float!\n yFieldOnYBigObject: String!\n zFieldOnYBigObject: Int!\n}\n\ntype ZBigObject {\n aFieldOnZBigObject: String!\n bFieldOnZBigObject: Int!\n cFieldOnZBigObject: Boolean!\n dFieldOnZBigObject: Float!\n eFieldOnZBigObject: String!\n fFieldOnZBigObject: Int!\n gFieldOnZBigObject: Boolean!\n hFieldOnZBigObject: Float!\n iFieldOnZBigObject: String!\n jFieldOnZBigObject: Int!\n kFieldOnZBigObject: Boolean!\n lFieldOnZBigObject: Float!\n mFieldOnZBigObject: String!\n nFieldOnZBigObject: Int!\n oFieldOnZBigObject: Boolean!\n pFieldOnZBigObject: Float!\n qFieldOnZBigObject: String!\n rFieldOnZBigObject: Int!\n sFieldOnZBigObject: Boolean!\n tFieldOnZBigObject: Float!\n uFieldOnZBigObject: String!\n vFieldOnZBigObject: Int!\n wFieldOnZBigObject: Boolean!\n xFieldOnZBigObject: Float!\n yFieldOnZBigObject: String!\n zFieldOnZBigObject: Int!\n}\n\ninput ProjectInput {\n name: String!\n description: String\n startDate: String\n endDate: String\n status: ProjectStatus!\n}\n\ninput MilestoneInput {\n projectId: ID!\n name: String!\n description: String\n dueDate: String\n status: MilestoneStatus!\n}\n\ninput TaskInput {\n projectId: ID!\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float\n}\n\ninterface Node {\n id: ID!\n}\n\ninterface Timestamped {\n startDate: String\n endDate: String\n}\n\ninterface Assignable {\n assigneeId: Int\n}\n\nenum ProjectStatus {\n PLANNING\n ACTIVE\n COMPLETED\n ON_HOLD\n}\n\nenum MilestoneStatus {\n PENDING\n IN_PROGRESS\n COMPLETED\n DELAYED\n}\n\nenum TaskStatus {\n TODO\n IN_PROGRESS\n REVIEW\n COMPLETED\n BLOCKED\n}\n\nenum TaskPriority {\n LOW\n MEDIUM\n HIGH\n URGENT\n}\n\nenum ProjectUpdateType {\n STATUS_CHANGE\n MILESTONE_ADDED\n TASK_ASSIGNED\n PROGRESS_UPDATE\n TEAM_CHANGE\n}\n\nunion ProjectResource = Employee | Product | Milestone | Task\n\nunion ProjectSearchResult = Project | Milestone | Task\n\nunion ProjectActivity = ProjectUpdate | Milestone | Task\n\ntype Product {\n upc: String!\n projects: [Project!]\n featureMatrix: [[String]]\n}\n\ntype Course {\n id: ID!\n title: String!\n description: String\n instructor: Employee!\n lessons: [Lesson!]!\n}\n\ntype Lesson {\n id: ID!\n courseId: ID!\n title: String!\n description: String\n order: Int!\n course: Course!\n}\n\ntype Engineer implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n engineerType: EngineerType!\n}\n\ntype Marketer implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n}\n\ntype Operator implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n operatorType: [OperationType!]!\n}\n\ntype Employee implements Identifiable {\n details: Details\n id: Int!\n tag: String!\n role: RoleType!\n notes: String\n updatedAt: String!\n startDate: String!\n currentMood: Mood!\n derivedMood: Mood!\n isAvailable: Boolean\n rootFieldThrowsError: String\n rootFieldErrorWrapper: ErrorWrapper\n hobbies: [Hobby!]\n products: [ProductName!]!\n fieldThrowsError: String\n projects: [Project!]\n assignedTasks: [Task!]!\n completedTasks: [Task!]!\n skills: [String]\n certifications: [String!]\n projectHistory: [[Project!]]!\n currentWorkload(includeCompleted: Boolean, projectId: ID): Int!\n averageTaskCompletionDays(projectId: ID, priority: TaskPriority): Float\n taughtCourses: [Course!]!\n}\n\ntype Cosmo implements IProduct {\n upc: ID!\n engineers: [Employee!]!\n lead: Employee!\n isLeadAvailable: Boolean\n name: ProductName!\n repositoryURL: String!\n}\n\ntype SDK implements IProduct {\n upc: ID!\n engineers: [Employee!]!\n owner: Employee!\n unicode: String!\n clientLanguages: [ProgrammingLanguage!]!\n}\n\ninterface Pet implements Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Alligator implements Pet & Animal {\n class: Class!\n dangerous: String!\n gender: Gender!\n name: String!\n}\n\ntype Cat implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n type: CatType!\n}\n\ntype Dog implements Pet & Animal {\n breed: DogBreed!\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Mouse implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Pony implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Exercise implements Hobby {\n employees: [Employee!]!\n category: ExerciseType!\n}\n\ntype Flying implements Experience & Hobby {\n employees: [Employee!]!\n planeModels: [String!]!\n yearsOfExperience: Float!\n}\n\ntype Gaming implements Experience & Hobby {\n employees: [Employee!]!\n genres: [GameGenre!]!\n name: String!\n yearsOfExperience: Float!\n}\n\ntype Other implements Hobby {\n employees: [Employee!]!\n name: String!\n}\n\ntype Programming implements Hobby {\n employees: [Employee!]!\n languages: [ProgrammingLanguage!]!\n}\n\ntype Travelling implements Hobby {\n employees: [Employee!]!\n countriesLived: [Country!]!\n}\n\ntype DirectiveFact implements TopSecretFact {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype EntityFact implements TopSecretFact {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype MiscellaneousFact implements TopSecretFact {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype Project implements Node & Timestamped {\n id: ID!\n name: String!\n description: String\n startDate: String\n endDate: String\n status: ProjectStatus!\n teamMembers: [Employee!]!\n relatedProducts: [Product!]!\n milestoneIds: [String!]\n milestones: [Milestone!]!\n tasks: [Task!]!\n progress: Float\n tags: [String]\n alternativeProjects: [Project]\n dependencies: [Project!]\n resourceGroups: [[ProjectResource!]!]!\n tasksByPhase: [[Task!]]!\n milestoneGroups: [[Milestone]]\n priorityMatrix: [[[Task!]!]!]\n filteredTasks(status: TaskStatus, priority: TaskPriority, limit: Int): [Task!]!\n completionRate(includeSubtasks: Boolean): Float!\n estimatedDaysRemaining(fromDate: String): Int\n criticalDeadline(withinDays: Int): Timestamped\n topPriorityItem(category: String): ProjectSearchResult\n}\n\ntype Milestone implements Node & Timestamped {\n id: ID!\n projectId: ID!\n name: String!\n description: String\n startDate: String\n endDate: String\n status: MilestoneStatus!\n completionPercentage: Float\n dependencies: [Milestone]!\n subtasks: [Task]\n reviewers: [Employee!]\n isAtRisk(threshold: Float): Boolean!\n daysUntilDue(fromDate: String): Int\n}\n\ntype Task implements Node & Assignable {\n id: ID!\n projectId: ID!\n milestoneId: ID\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float @deprecated(reason: \"No more estimations!\")\n actualHours: Float\n createdAt: String\n completedAt: String\n labels: [String]\n subtasks: [Task!]\n dependencies: [Task]!\n attachmentUrls: [String!]!\n reviewerIds: [Int]\n isBlocked(checkDependencies: Boolean): Boolean!\n totalEffort(includeSubtasks: Boolean): Float\n}\n\ntype ProjectUpdate implements Node {\n id: ID!\n projectId: ID!\n updatedById: Int!\n updateType: ProjectUpdateType!\n description: String!\n timestamp: String!\n metadata: String\n}" + "graphqlClientSchema": "schema {\n query: Query\n mutation: Mutation\n subscription: Subscription\n}\n\ntype Query {\n employee(id: Int!): Employee\n employeeAsList(id: Int!): [Employee]\n employees: [Employee]\n products: [Products!]!\n teammates(team: Department!): [Employee!]!\n firstEmployee: Employee!\n findEmployeesBy(criteria: FindEmployeeCriteria!): [Employee!]!\n \"\"\" This is a GraphQL query that retrieves a list of employees.\"\"\"\n findEmployees(criteria: SearchInput): [Employee!]!\n productTypes: [Products!]!\n topSecretFederationFacts: [TopSecretFact!]!\n factTypes: [TopSecretFactType!]\n sharedThings(numOfA: Int!, numOfB: Int!): [Thing!]!\n \"\"\"Returns the value of the received HTTP header.\"\"\"\n headerValue(name: String!): String!\n \"\"\"Returns the value of the given key in the WS initial payload.\"\"\"\n initPayloadValue(key: String!): String!\n initialPayload: Map\n \"\"\"Returns response after the given delay\"\"\"\n delay(response: String!, ms: Int!): String!\n bigResponse(artificialDelay: Int! = 0, bigObjects: Int! = 100, nestedObjects: Int! = 100, deeplyNestedObjects: Int! = 100): [BigObject!]!\n longResponse(artificialDelay: Int! = 0, bytes: Int!): String\n bigAbstractResponse: BigAbstractResponse\n rootFieldWithListArg(arg: [String!]!): [String!]!\n rootFieldWithNestedListArg(arg: [[String!]!]!): [[String!]!]!\n rootFieldWithListOfInputArg(arg: [InputType!]!): [InputResponse!]!\n rootFieldWithListOfEnumArg(arg: [EnumType!]!): [EnumType!]!\n rootFieldWithInput(arg: InputArg!): String!\n floatField(arg: Float): Float\n secret: Secret\n projects: [Project!]!\n project(id: ID!): Project\n projectStatuses: [ProjectStatus!]!\n projectsByStatus(status: ProjectStatus!): [Project!]!\n projectResources(projectId: ID!): [ProjectResource!]!\n searchProjects(query: String!): [ProjectSearchResult!]!\n milestones(projectId: ID!): [Milestone!]!\n tasks(projectId: ID!): [Task!]!\n projectActivities(projectId: ID!): [ProjectActivity!]!\n projectTags: [String]\n archivedProjects: [Project]!\n tasksByPriority(projectId: ID!): [[Task]]\n resourceMatrix(projectId: ID!): [[ProjectResource!]!]!\n killService: Boolean!\n panic: Boolean!\n nodesById(id: ID!): [Node!]!\n courses: [Course!]!\n course(id: ID!): Course\n lessons(courseId: ID!): [Lesson!]!\n killCoursesService: Boolean!\n throwErrorCourses: Boolean!\n}\n\nscalar Upload\n\ntype Mutation {\n updateEmployeeTag(id: Int!, tag: String!): Employee\n singleUpload(file: Upload!): Boolean!\n singleUploadWithInput(arg: FileUpload!): Boolean!\n multipleUpload(files: [Upload!]!): Boolean!\n addFact(fact: TopSecretFactInput!): TopSecretFact!\n \"\"\" This mutation updates the availability status of an employee in the system.\n \"\"\"\n updateAvailability(employeeID: Int!, isAvailable: Boolean!): Employee!\n \"\"\" This mutation update the mood of an employee. \"\"\"\n updateMood(employeeID: Int!, mood: Mood!): Employee!\n addProject(project: ProjectInput!): Project!\n addMilestone(milestone: MilestoneInput!): Milestone!\n addTask(task: TaskInput!): Task!\n updateProjectStatus(projectId: ID!, status: ProjectStatus!): ProjectUpdate!\n addCourse(title: String!, instructorId: Int!): Course!\n addLesson(courseId: ID!, title: String!, order: Int!): Lesson!\n}\n\ninput FileUpload {\n nested: DeeplyNestedFileUpload\n nestedList: [Upload!]\n}\n\ninput DeeplyNestedFileUpload {\n file: Upload!\n}\n\ntype Subscription {\n \"\"\"`currentTime` will return a stream of `Time` objects.\"\"\"\n currentTime: Time!\n countEmp(max: Int!, intervalMilliseconds: Int!): Int!\n countEmp2(max: Int!, intervalMilliseconds: Int!): Int!\n countFor(count: Int!): Int!\n countHob(max: Int!, intervalMilliseconds: Int!): Int!\n \"\"\"Returns a stream with the value of the received HTTP header.\"\"\"\n headerValue(name: String!, repeat: Int): TimestampedString!\n \"\"\"\n Returns a stream with the value of value of the given key in the WS initial payload.\n \"\"\"\n initPayloadValue(key: String!, repeat: Int): TimestampedString!\n \"\"\"Returns a stream with the value of the WS initial payload.\"\"\"\n initialPayload(repeat: Int): Map\n returnsError: String\n}\n\nenum Department {\n ENGINEERING\n MARKETING\n OPERATIONS\n}\n\ninterface RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n}\n\nenum EngineerType {\n BACKEND\n FRONTEND\n FULLSTACK\n}\n\ninterface Identifiable {\n id: Int!\n}\n\nenum OperationType {\n FINANCE\n HUMAN_RESOURCES\n}\n\ntype Details {\n forename: String!\n location: Country!\n surname: String!\n pastLocations: [City!]!\n middlename: String @deprecated(reason: \"No longer supported\")\n hasChildren: Boolean!\n maritalStatus: MaritalStatus\n nationality: Nationality!\n pets: [Pet]\n}\n\ntype City {\n type: String!\n name: String!\n country: Country\n}\n\ntype Country {\n key: CountryKey!\n language: String\n}\n\ntype CountryKey {\n name: String!\n}\n\nenum Mood {\n HAPPY\n SAD\n}\n\ntype ErrorWrapper {\n okField: String\n errorField: String\n}\n\ntype Time {\n unixTime: Int!\n timeStamp: String!\n}\n\nunion Products = Consultancy | Cosmo | SDK | Documentation\n\ninterface IProduct {\n upc: ID!\n engineers: [Employee!]!\n}\n\ntype Consultancy {\n upc: ID!\n lead: Employee!\n isLeadAvailable: Boolean\n name: ProductName!\n}\n\ninput FindEmployeeCriteria @oneOf {\n id: Int\n department: Department\n title: String\n}\n\nenum Class {\n FISH\n MAMMAL\n REPTILE\n}\n\nenum Gender {\n FEMALE\n MALE\n UNKNOWN\n}\n\ninterface Animal {\n class: Class!\n gender: Gender!\n}\n\nenum CatType {\n HOME\n STREET\n}\n\nenum DogBreed {\n GOLDEN_RETRIEVER\n POODLE\n ROTTWEILER\n YORKSHIRE_TERRIER\n}\n\nenum MaritalStatus {\n ENGAGED\n MARRIED\n}\n\nenum Nationality {\n AMERICAN\n DUTCH\n ENGLISH\n GERMAN\n INDIAN\n SPANISH\n UKRAINIAN\n}\n\n\"\"\" Allows to filter employees by their details. \"\"\"\ninput SearchInput {\n hasPets: Boolean\n nationality: Nationality\n nested: NestedSearchInput\n}\n\ninput NestedSearchInput {\n maritalStatus: MaritalStatus\n hasChildren: Boolean\n}\n\nenum ExerciseType {\n CALISTHENICS\n HIKING\n SPORT\n STRENGTH_TRAINING\n}\n\ninterface Experience {\n yearsOfExperience: Float!\n}\n\nenum GameGenre {\n ADVENTURE\n BOARD\n FPS\n CARD\n RPG\n ROGUELITE\n SIMULATION\n STRATEGY\n}\n\nenum ProgrammingLanguage {\n CSHARP\n GO\n RUST\n TYPESCRIPT\n}\n\ninterface Hobby {\n employees: [Employee!]!\n}\n\ntype Thing {\n a: String!\n b: String!\n}\n\ninput TopSecretFactInput {\n title: String!\n description: FactContent!\n factType: TopSecretFactType!\n}\n\nenum TopSecretFactType {\n DIRECTIVE\n ENTITY\n MISCELLANEOUS\n}\n\ninterface TopSecretFact {\n description: FactContent!\n factType: TopSecretFactType\n}\n\nscalar FactContent\n\nenum ProductName {\n CONSULTANCY\n COSMO\n ENGINE\n FINANCE\n HUMAN_RESOURCES\n MARKETING\n SDK\n}\n\ntype Documentation {\n url(product: ProductName!): String!\n urls(products: [ProductName!]!): [String!]!\n}\n\ntype Secret {\n value: String\n}\n\ninput InputArg {\n enums: [EnumType!]\n enum: EnumType\n string: String\n strings: [String!]\n}\n\nenum EnumType {\n A\n B\n C\n}\n\ninput InputType {\n arg: String!\n}\n\ntype InputResponse {\n arg: String!\n}\n\nscalar Map\n\ntype TimestampedString {\n \"\"\"The value of the string.\"\"\"\n value: String!\n \"\"\"The timestamp when the response was generated.\"\"\"\n unixTime: Int!\n \"\"\"Sequence number\"\"\"\n seq: Int!\n \"\"\"Total number of responses to be sent\"\"\"\n total: Int!\n initialPayload: Map\n}\n\ntype BigObject {\n nestedObjects: [NestedObject!]!\n}\n\ntype NestedObject {\n deeplyNestedObjects: [DeeplyNestedObject!]!\n}\n\ntype DeeplyNestedObject {\n aFieldOnDeeplyNestedObject: String!\n bFieldOnDeeplyNestedObject: Int!\n cFieldOnDeeplyNestedObject: Boolean!\n dFieldOnDeeplyNestedObject: Float!\n eFieldOnDeeplyNestedObject: String!\n fFieldOnDeeplyNestedObject: Int!\n gFieldOnDeeplyNestedObject: Boolean!\n hFieldOnDeeplyNestedObject: Float!\n iFieldOnDeeplyNestedObject: String!\n jFieldOnDeeplyNestedObject: Int!\n kFieldOnDeeplyNestedObject: Boolean!\n lFieldOnDeeplyNestedObject: Float!\n mFieldOnDeeplyNestedObject: String!\n nFieldOnDeeplyNestedObject: Int!\n oFieldOnDeeplyNestedObject: Boolean!\n pFieldOnDeeplyNestedObject: Float!\n qFieldOnDeeplyNestedObject: String!\n rFieldOnDeeplyNestedObject: Int!\n sFieldOnDeeplyNestedObject: Boolean!\n tFieldOnDeeplyNestedObject: Float!\n uFieldOnDeeplyNestedObject: String!\n vFieldOnDeeplyNestedObject: Int!\n wFieldOnDeeplyNestedObject: Boolean!\n xFieldOnDeeplyNestedObject: Float!\n yFieldOnDeeplyNestedObject: String!\n zFieldOnDeeplyNestedObject: Int!\n}\n\nunion BigAbstractResponse = ABigObject | BBigObject | CBigObject | DBigObject | EBigObject | FBigObject | GBigObject | HBigObject | IBigObject | JBigObject | KBigObject | LBigObject | MBigObject | NBigObject | OBigObject | PBigObject | QBigObject | RBigObject | SBigObject | TBigObject | UBigObject | VBigObject | WBigObject | XBigObject | YBigObject | ZBigObject\n\ntype ABigObject {\n aFieldOnABigObject: String!\n bFieldOnABigObject: Int!\n cFieldOnABigObject: Boolean!\n dFieldOnABigObject: Float!\n eFieldOnABigObject: String!\n fFieldOnABigObject: Int!\n gFieldOnABigObject: Boolean!\n hFieldOnABigObject: Float!\n iFieldOnABigObject: String!\n jFieldOnABigObject: Int!\n kFieldOnABigObject: Boolean!\n lFieldOnABigObject: Float!\n mFieldOnABigObject: String!\n nFieldOnABigObject: Int!\n oFieldOnABigObject: Boolean!\n pFieldOnABigObject: Float!\n qFieldOnABigObject: String!\n rFieldOnABigObject: Int!\n sFieldOnABigObject: Boolean!\n tFieldOnABigObject: Float!\n uFieldOnABigObject: String!\n vFieldOnABigObject: Int!\n wFieldOnABigObject: Boolean!\n xFieldOnABigObject: Float!\n yFieldOnABigObject: String!\n zFieldOnABigObject: Int!\n}\n\ntype BBigObject {\n aFieldOnBBigObject: String!\n bFieldOnBBigObject: Int!\n cFieldOnBBigObject: Boolean!\n dFieldOnBBigObject: Float!\n eFieldOnBBigObject: String!\n fFieldOnBBigObject: Int!\n gFieldOnBBigObject: Boolean!\n hFieldOnBBigObject: Float!\n iFieldOnBBigObject: String!\n jFieldOnBBigObject: Int!\n kFieldOnBBigObject: Boolean!\n lFieldOnBBigObject: Float!\n mFieldOnBBigObject: String!\n nFieldOnBBigObject: Int!\n oFieldOnBBigObject: Boolean!\n pFieldOnBBigObject: Float!\n qFieldOnBBigObject: String!\n rFieldOnBBigObject: Int!\n sFieldOnBBigObject: Boolean!\n tFieldOnBBigObject: Float!\n uFieldOnBBigObject: String!\n vFieldOnBBigObject: Int!\n wFieldOnBBigObject: Boolean!\n xFieldOnBBigObject: Float!\n yFieldOnBBigObject: String!\n zFieldOnBBigObject: Int!\n}\n\ntype CBigObject {\n aFieldOnCBigObject: String!\n bFieldOnCBigObject: Int!\n cFieldOnCBigObject: Boolean!\n dFieldOnCBigObject: Float!\n eFieldOnCBigObject: String!\n fFieldOnCBigObject: Int!\n gFieldOnCBigObject: Boolean!\n hFieldOnCBigObject: Float!\n iFieldOnCBigObject: String!\n jFieldOnCBigObject: Int!\n kFieldOnCBigObject: Boolean!\n lFieldOnCBigObject: Float!\n mFieldOnCBigObject: String!\n nFieldOnCBigObject: Int!\n oFieldOnCBigObject: Boolean!\n pFieldOnCBigObject: Float!\n qFieldOnCBigObject: String!\n rFieldOnCBigObject: Int!\n sFieldOnCBigObject: Boolean!\n tFieldOnCBigObject: Float!\n uFieldOnCBigObject: String!\n vFieldOnCBigObject: Int!\n wFieldOnCBigObject: Boolean!\n xFieldOnCBigObject: Float!\n yFieldOnCBigObject: String!\n zFieldOnCBigObject: Int!\n}\n\ntype DBigObject {\n aFieldOnDBigObject: String!\n bFieldOnDBigObject: Int!\n cFieldOnDBigObject: Boolean!\n dFieldOnDBigObject: Float!\n eFieldOnDBigObject: String!\n fFieldOnDBigObject: Int!\n gFieldOnDBigObject: Boolean!\n hFieldOnDBigObject: Float!\n iFieldOnDBigObject: String!\n jFieldOnDBigObject: Int!\n kFieldOnDBigObject: Boolean!\n lFieldOnDBigObject: Float!\n mFieldOnDBigObject: String!\n nFieldOnDBigObject: Int!\n oFieldOnDBigObject: Boolean!\n pFieldOnDBigObject: Float!\n qFieldOnDBigObject: String!\n rFieldOnDBigObject: Int!\n sFieldOnDBigObject: Boolean!\n tFieldOnDBigObject: Float!\n uFieldOnDBigObject: String!\n vFieldOnDBigObject: Int!\n wFieldOnDBigObject: Boolean!\n xFieldOnDBigObject: Float!\n yFieldOnDBigObject: String!\n zFieldOnDBigObject: Int!\n}\n\ntype EBigObject {\n aFieldOnEBigObject: String!\n bFieldOnEBigObject: Int!\n cFieldOnEBigObject: Boolean!\n dFieldOnEBigObject: Float!\n eFieldOnEBigObject: String!\n fFieldOnEBigObject: Int!\n gFieldOnEBigObject: Boolean!\n hFieldOnEBigObject: Float!\n iFieldOnEBigObject: String!\n jFieldOnEBigObject: Int!\n kFieldOnEBigObject: Boolean!\n lFieldOnEBigObject: Float!\n mFieldOnEBigObject: String!\n nFieldOnEBigObject: Int!\n oFieldOnEBigObject: Boolean!\n pFieldOnEBigObject: Float!\n qFieldOnEBigObject: String!\n rFieldOnEBigObject: Int!\n sFieldOnEBigObject: Boolean!\n tFieldOnEBigObject: Float!\n uFieldOnEBigObject: String!\n vFieldOnEBigObject: Int!\n wFieldOnEBigObject: Boolean!\n xFieldOnEBigObject: Float!\n yFieldOnEBigObject: String!\n zFieldOnEBigObject: Int!\n}\n\ntype FBigObject {\n aFieldOnFBigObject: String!\n bFieldOnFBigObject: Int!\n cFieldOnFBigObject: Boolean!\n dFieldOnFBigObject: Float!\n eFieldOnFBigObject: String!\n fFieldOnFBigObject: Int!\n gFieldOnFBigObject: Boolean!\n hFieldOnFBigObject: Float!\n iFieldOnFBigObject: String!\n jFieldOnFBigObject: Int!\n kFieldOnFBigObject: Boolean!\n lFieldOnFBigObject: Float!\n mFieldOnFBigObject: String!\n nFieldOnFBigObject: Int!\n oFieldOnFBigObject: Boolean!\n pFieldOnFBigObject: Float!\n qFieldOnFBigObject: String!\n rFieldOnFBigObject: Int!\n sFieldOnFBigObject: Boolean!\n tFieldOnFBigObject: Float!\n uFieldOnFBigObject: String!\n vFieldOnFBigObject: Int!\n wFieldOnFBigObject: Boolean!\n xFieldOnFBigObject: Float!\n yFieldOnFBigObject: String!\n zFieldOnFBigObject: Int!\n}\n\ntype GBigObject {\n aFieldOnGBigObject: String!\n bFieldOnGBigObject: Int!\n cFieldOnGBigObject: Boolean!\n dFieldOnGBigObject: Float!\n eFieldOnGBigObject: String!\n fFieldOnGBigObject: Int!\n gFieldOnGBigObject: Boolean!\n hFieldOnGBigObject: Float!\n iFieldOnGBigObject: String!\n jFieldOnGBigObject: Int!\n kFieldOnGBigObject: Boolean!\n lFieldOnGBigObject: Float!\n mFieldOnGBigObject: String!\n nFieldOnGBigObject: Int!\n oFieldOnGBigObject: Boolean!\n pFieldOnGBigObject: Float!\n qFieldOnGBigObject: String!\n rFieldOnGBigObject: Int!\n sFieldOnGBigObject: Boolean!\n tFieldOnGBigObject: Float!\n uFieldOnGBigObject: String!\n vFieldOnGBigObject: Int!\n wFieldOnGBigObject: Boolean!\n xFieldOnGBigObject: Float!\n yFieldOnGBigObject: String!\n zFieldOnGBigObject: Int!\n}\n\ntype HBigObject {\n aFieldOnHBigObject: String!\n bFieldOnHBigObject: Int!\n cFieldOnHBigObject: Boolean!\n dFieldOnHBigObject: Float!\n eFieldOnHBigObject: String!\n fFieldOnHBigObject: Int!\n gFieldOnHBigObject: Boolean!\n hFieldOnHBigObject: Float!\n iFieldOnHBigObject: String!\n jFieldOnHBigObject: Int!\n kFieldOnHBigObject: Boolean!\n lFieldOnHBigObject: Float!\n mFieldOnHBigObject: String!\n nFieldOnHBigObject: Int!\n oFieldOnHBigObject: Boolean!\n pFieldOnHBigObject: Float!\n qFieldOnHBigObject: String!\n rFieldOnHBigObject: Int!\n sFieldOnHBigObject: Boolean!\n tFieldOnHBigObject: Float!\n uFieldOnHBigObject: String!\n vFieldOnHBigObject: Int!\n wFieldOnHBigObject: Boolean!\n xFieldOnHBigObject: Float!\n yFieldOnHBigObject: String!\n zFieldOnHBigObject: Int!\n}\n\ntype IBigObject {\n aFieldOnIBigObject: String!\n bFieldOnIBigObject: Int!\n cFieldOnIBigObject: Boolean!\n dFieldOnIBigObject: Float!\n eFieldOnIBigObject: String!\n fFieldOnIBigObject: Int!\n gFieldOnIBigObject: Boolean!\n hFieldOnIBigObject: Float!\n iFieldOnIBigObject: String!\n jFieldOnIBigObject: Int!\n kFieldOnIBigObject: Boolean!\n lFieldOnIBigObject: Float!\n mFieldOnIBigObject: String!\n nFieldOnIBigObject: Int!\n oFieldOnIBigObject: Boolean!\n pFieldOnIBigObject: Float!\n qFieldOnIBigObject: String!\n rFieldOnIBigObject: Int!\n sFieldOnIBigObject: Boolean!\n tFieldOnIBigObject: Float!\n uFieldOnIBigObject: String!\n vFieldOnIBigObject: Int!\n wFieldOnIBigObject: Boolean!\n xFieldOnIBigObject: Float!\n yFieldOnIBigObject: String!\n zFieldOnIBigObject: Int!\n}\n\ntype JBigObject {\n aFieldOnJBigObject: String!\n bFieldOnJBigObject: Int!\n cFieldOnJBigObject: Boolean!\n dFieldOnJBigObject: Float!\n eFieldOnJBigObject: String!\n fFieldOnJBigObject: Int!\n gFieldOnJBigObject: Boolean!\n hFieldOnJBigObject: Float!\n iFieldOnJBigObject: String!\n jFieldOnJBigObject: Int!\n kFieldOnJBigObject: Boolean!\n lFieldOnJBigObject: Float!\n mFieldOnJBigObject: String!\n nFieldOnJBigObject: Int!\n oFieldOnJBigObject: Boolean!\n pFieldOnJBigObject: Float!\n qFieldOnJBigObject: String!\n rFieldOnJBigObject: Int!\n sFieldOnJBigObject: Boolean!\n tFieldOnJBigObject: Float!\n uFieldOnJBigObject: String!\n vFieldOnJBigObject: Int!\n wFieldOnJBigObject: Boolean!\n xFieldOnJBigObject: Float!\n yFieldOnJBigObject: String!\n zFieldOnJBigObject: Int!\n}\n\ntype KBigObject {\n aFieldOnKBigObject: String!\n bFieldOnKBigObject: Int!\n cFieldOnKBigObject: Boolean!\n dFieldOnKBigObject: Float!\n eFieldOnKBigObject: String!\n fFieldOnKBigObject: Int!\n gFieldOnKBigObject: Boolean!\n hFieldOnKBigObject: Float!\n iFieldOnKBigObject: String!\n jFieldOnKBigObject: Int!\n kFieldOnKBigObject: Boolean!\n lFieldOnKBigObject: Float!\n mFieldOnKBigObject: String!\n nFieldOnKBigObject: Int!\n oFieldOnKBigObject: Boolean!\n pFieldOnKBigObject: Float!\n qFieldOnKBigObject: String!\n rFieldOnKBigObject: Int!\n sFieldOnKBigObject: Boolean!\n tFieldOnKBigObject: Float!\n uFieldOnKBigObject: String!\n vFieldOnKBigObject: Int!\n wFieldOnKBigObject: Boolean!\n xFieldOnKBigObject: Float!\n yFieldOnKBigObject: String!\n zFieldOnKBigObject: Int!\n}\n\ntype LBigObject {\n aFieldOnLBigObject: String!\n bFieldOnLBigObject: Int!\n cFieldOnLBigObject: Boolean!\n dFieldOnLBigObject: Float!\n eFieldOnLBigObject: String!\n fFieldOnLBigObject: Int!\n gFieldOnLBigObject: Boolean!\n hFieldOnLBigObject: Float!\n iFieldOnLBigObject: String!\n jFieldOnLBigObject: Int!\n kFieldOnLBigObject: Boolean!\n lFieldOnLBigObject: Float!\n mFieldOnLBigObject: String!\n nFieldOnLBigObject: Int!\n oFieldOnLBigObject: Boolean!\n pFieldOnLBigObject: Float!\n qFieldOnLBigObject: String!\n rFieldOnLBigObject: Int!\n sFieldOnLBigObject: Boolean!\n tFieldOnLBigObject: Float!\n uFieldOnLBigObject: String!\n vFieldOnLBigObject: Int!\n wFieldOnLBigObject: Boolean!\n xFieldOnLBigObject: Float!\n yFieldOnLBigObject: String!\n zFieldOnLBigObject: Int!\n}\n\ntype MBigObject {\n aFieldOnMBigObject: String!\n bFieldOnMBigObject: Int!\n cFieldOnMBigObject: Boolean!\n dFieldOnMBigObject: Float!\n eFieldOnMBigObject: String!\n fFieldOnMBigObject: Int!\n gFieldOnMBigObject: Boolean!\n hFieldOnMBigObject: Float!\n iFieldOnMBigObject: String!\n jFieldOnMBigObject: Int!\n kFieldOnMBigObject: Boolean!\n lFieldOnMBigObject: Float!\n mFieldOnMBigObject: String!\n nFieldOnMBigObject: Int!\n oFieldOnMBigObject: Boolean!\n pFieldOnMBigObject: Float!\n qFieldOnMBigObject: String!\n rFieldOnMBigObject: Int!\n sFieldOnMBigObject: Boolean!\n tFieldOnMBigObject: Float!\n uFieldOnMBigObject: String!\n vFieldOnMBigObject: Int!\n wFieldOnMBigObject: Boolean!\n xFieldOnMBigObject: Float!\n yFieldOnMBigObject: String!\n zFieldOnMBigObject: Int!\n}\n\ntype NBigObject {\n aFieldOnNBigObject: String!\n bFieldOnNBigObject: Int!\n cFieldOnNBigObject: Boolean!\n dFieldOnNBigObject: Float!\n eFieldOnNBigObject: String!\n fFieldOnNBigObject: Int!\n gFieldOnNBigObject: Boolean!\n hFieldOnNBigObject: Float!\n iFieldOnNBigObject: String!\n jFieldOnNBigObject: Int!\n kFieldOnNBigObject: Boolean!\n lFieldOnNBigObject: Float!\n mFieldOnNBigObject: String!\n nFieldOnNBigObject: Int!\n oFieldOnNBigObject: Boolean!\n pFieldOnNBigObject: Float!\n qFieldOnNBigObject: String!\n rFieldOnNBigObject: Int!\n sFieldOnNBigObject: Boolean!\n tFieldOnNBigObject: Float!\n uFieldOnNBigObject: String!\n vFieldOnNBigObject: Int!\n wFieldOnNBigObject: Boolean!\n xFieldOnNBigObject: Float!\n yFieldOnNBigObject: String!\n zFieldOnNBigObject: Int!\n}\n\ntype OBigObject {\n aFieldOnOBigObject: String!\n bFieldOnOBigObject: Int!\n cFieldOnOBigObject: Boolean!\n dFieldOnOBigObject: Float!\n eFieldOnOBigObject: String!\n fFieldOnOBigObject: Int!\n gFieldOnOBigObject: Boolean!\n hFieldOnOBigObject: Float!\n iFieldOnOBigObject: String!\n jFieldOnOBigObject: Int!\n kFieldOnOBigObject: Boolean!\n lFieldOnOBigObject: Float!\n mFieldOnOBigObject: String!\n nFieldOnOBigObject: Int!\n oFieldOnOBigObject: Boolean!\n pFieldOnOBigObject: Float!\n qFieldOnOBigObject: String!\n rFieldOnOBigObject: Int!\n sFieldOnOBigObject: Boolean!\n tFieldOnOBigObject: Float!\n uFieldOnOBigObject: String!\n vFieldOnOBigObject: Int!\n wFieldOnOBigObject: Boolean!\n xFieldOnOBigObject: Float!\n yFieldOnOBigObject: String!\n zFieldOnOBigObject: Int!\n}\n\ntype PBigObject {\n aFieldOnPBigObject: String!\n bFieldOnPBigObject: Int!\n cFieldOnPBigObject: Boolean!\n dFieldOnPBigObject: Float!\n eFieldOnPBigObject: String!\n fFieldOnPBigObject: Int!\n gFieldOnPBigObject: Boolean!\n hFieldOnPBigObject: Float!\n iFieldOnPBigObject: String!\n jFieldOnPBigObject: Int!\n kFieldOnPBigObject: Boolean!\n lFieldOnPBigObject: Float!\n mFieldOnPBigObject: String!\n nFieldOnPBigObject: Int!\n oFieldOnPBigObject: Boolean!\n pFieldOnPBigObject: Float!\n qFieldOnPBigObject: String!\n rFieldOnPBigObject: Int!\n sFieldOnPBigObject: Boolean!\n tFieldOnPBigObject: Float!\n uFieldOnPBigObject: String!\n vFieldOnPBigObject: Int!\n wFieldOnPBigObject: Boolean!\n xFieldOnPBigObject: Float!\n yFieldOnPBigObject: String!\n zFieldOnPBigObject: Int!\n}\n\ntype QBigObject {\n aFieldOnQBigObject: String!\n bFieldOnQBigObject: Int!\n cFieldOnQBigObject: Boolean!\n dFieldOnQBigObject: Float!\n eFieldOnQBigObject: String!\n fFieldOnQBigObject: Int!\n gFieldOnQBigObject: Boolean!\n hFieldOnQBigObject: Float!\n iFieldOnQBigObject: String!\n jFieldOnQBigObject: Int!\n kFieldOnQBigObject: Boolean!\n lFieldOnQBigObject: Float!\n mFieldOnQBigObject: String!\n nFieldOnQBigObject: Int!\n oFieldOnQBigObject: Boolean!\n pFieldOnQBigObject: Float!\n qFieldOnQBigObject: String!\n rFieldOnQBigObject: Int!\n sFieldOnQBigObject: Boolean!\n tFieldOnQBigObject: Float!\n uFieldOnQBigObject: String!\n vFieldOnQBigObject: Int!\n wFieldOnQBigObject: Boolean!\n xFieldOnQBigObject: Float!\n yFieldOnQBigObject: String!\n zFieldOnQBigObject: Int!\n}\n\ntype RBigObject {\n aFieldOnRBigObject: String!\n bFieldOnRBigObject: Int!\n cFieldOnRBigObject: Boolean!\n dFieldOnRBigObject: Float!\n eFieldOnRBigObject: String!\n fFieldOnRBigObject: Int!\n gFieldOnRBigObject: Boolean!\n hFieldOnRBigObject: Float!\n iFieldOnRBigObject: String!\n jFieldOnRBigObject: Int!\n kFieldOnRBigObject: Boolean!\n lFieldOnRBigObject: Float!\n mFieldOnRBigObject: String!\n nFieldOnRBigObject: Int!\n oFieldOnRBigObject: Boolean!\n pFieldOnRBigObject: Float!\n qFieldOnRBigObject: String!\n rFieldOnRBigObject: Int!\n sFieldOnRBigObject: Boolean!\n tFieldOnRBigObject: Float!\n uFieldOnRBigObject: String!\n vFieldOnRBigObject: Int!\n wFieldOnRBigObject: Boolean!\n xFieldOnRBigObject: Float!\n yFieldOnRBigObject: String!\n zFieldOnRBigObject: Int!\n}\n\ntype SBigObject {\n aFieldOnSBigObject: String!\n bFieldOnSBigObject: Int!\n cFieldOnSBigObject: Boolean!\n dFieldOnSBigObject: Float!\n eFieldOnSBigObject: String!\n fFieldOnSBigObject: Int!\n gFieldOnSBigObject: Boolean!\n hFieldOnSBigObject: Float!\n iFieldOnSBigObject: String!\n jFieldOnSBigObject: Int!\n kFieldOnSBigObject: Boolean!\n lFieldOnSBigObject: Float!\n mFieldOnSBigObject: String!\n nFieldOnSBigObject: Int!\n oFieldOnSBigObject: Boolean!\n pFieldOnSBigObject: Float!\n qFieldOnSBigObject: String!\n rFieldOnSBigObject: Int!\n sFieldOnSBigObject: Boolean!\n tFieldOnSBigObject: Float!\n uFieldOnSBigObject: String!\n vFieldOnSBigObject: Int!\n wFieldOnSBigObject: Boolean!\n xFieldOnSBigObject: Float!\n yFieldOnSBigObject: String!\n zFieldOnSBigObject: Int!\n}\n\ntype TBigObject {\n aFieldOnTBigObject: String!\n bFieldOnTBigObject: Int!\n cFieldOnTBigObject: Boolean!\n dFieldOnTBigObject: Float!\n eFieldOnTBigObject: String!\n fFieldOnTBigObject: Int!\n gFieldOnTBigObject: Boolean!\n hFieldOnTBigObject: Float!\n iFieldOnTBigObject: String!\n jFieldOnTBigObject: Int!\n kFieldOnTBigObject: Boolean!\n lFieldOnTBigObject: Float!\n mFieldOnTBigObject: String!\n nFieldOnTBigObject: Int!\n oFieldOnTBigObject: Boolean!\n pFieldOnTBigObject: Float!\n qFieldOnTBigObject: String!\n rFieldOnTBigObject: Int!\n sFieldOnTBigObject: Boolean!\n tFieldOnTBigObject: Float!\n uFieldOnTBigObject: String!\n vFieldOnTBigObject: Int!\n wFieldOnTBigObject: Boolean!\n xFieldOnTBigObject: Float!\n yFieldOnTBigObject: String!\n zFieldOnTBigObject: Int!\n}\n\ntype UBigObject {\n aFieldOnUBigObject: String!\n bFieldOnUBigObject: Int!\n cFieldOnUBigObject: Boolean!\n dFieldOnUBigObject: Float!\n eFieldOnUBigObject: String!\n fFieldOnUBigObject: Int!\n gFieldOnUBigObject: Boolean!\n hFieldOnUBigObject: Float!\n iFieldOnUBigObject: String!\n jFieldOnUBigObject: Int!\n kFieldOnUBigObject: Boolean!\n lFieldOnUBigObject: Float!\n mFieldOnUBigObject: String!\n nFieldOnUBigObject: Int!\n oFieldOnUBigObject: Boolean!\n pFieldOnUBigObject: Float!\n qFieldOnUBigObject: String!\n rFieldOnUBigObject: Int!\n sFieldOnUBigObject: Boolean!\n tFieldOnUBigObject: Float!\n uFieldOnUBigObject: String!\n vFieldOnUBigObject: Int!\n wFieldOnUBigObject: Boolean!\n xFieldOnUBigObject: Float!\n yFieldOnUBigObject: String!\n zFieldOnUBigObject: Int!\n}\n\ntype VBigObject {\n aFieldOnVBigObject: String!\n bFieldOnVBigObject: Int!\n cFieldOnVBigObject: Boolean!\n dFieldOnVBigObject: Float!\n eFieldOnVBigObject: String!\n fFieldOnVBigObject: Int!\n gFieldOnVBigObject: Boolean!\n hFieldOnVBigObject: Float!\n iFieldOnVBigObject: String!\n jFieldOnVBigObject: Int!\n kFieldOnVBigObject: Boolean!\n lFieldOnVBigObject: Float!\n mFieldOnVBigObject: String!\n nFieldOnVBigObject: Int!\n oFieldOnVBigObject: Boolean!\n pFieldOnVBigObject: Float!\n qFieldOnVBigObject: String!\n rFieldOnVBigObject: Int!\n sFieldOnVBigObject: Boolean!\n tFieldOnVBigObject: Float!\n uFieldOnVBigObject: String!\n vFieldOnVBigObject: Int!\n wFieldOnVBigObject: Boolean!\n xFieldOnVBigObject: Float!\n yFieldOnVBigObject: String!\n zFieldOnVBigObject: Int!\n}\n\ntype WBigObject {\n aFieldOnWBigObject: String!\n bFieldOnWBigObject: Int!\n cFieldOnWBigObject: Boolean!\n dFieldOnWBigObject: Float!\n eFieldOnWBigObject: String!\n fFieldOnWBigObject: Int!\n gFieldOnWBigObject: Boolean!\n hFieldOnWBigObject: Float!\n iFieldOnWBigObject: String!\n jFieldOnWBigObject: Int!\n kFieldOnWBigObject: Boolean!\n lFieldOnWBigObject: Float!\n mFieldOnWBigObject: String!\n nFieldOnWBigObject: Int!\n oFieldOnWBigObject: Boolean!\n pFieldOnWBigObject: Float!\n qFieldOnWBigObject: String!\n rFieldOnWBigObject: Int!\n sFieldOnWBigObject: Boolean!\n tFieldOnWBigObject: Float!\n uFieldOnWBigObject: String!\n vFieldOnWBigObject: Int!\n wFieldOnWBigObject: Boolean!\n xFieldOnWBigObject: Float!\n yFieldOnWBigObject: String!\n zFieldOnWBigObject: Int!\n}\n\ntype XBigObject {\n aFieldOnXBigObject: String!\n bFieldOnXBigObject: Int!\n cFieldOnXBigObject: Boolean!\n dFieldOnXBigObject: Float!\n eFieldOnXBigObject: String!\n fFieldOnXBigObject: Int!\n gFieldOnXBigObject: Boolean!\n hFieldOnXBigObject: Float!\n iFieldOnXBigObject: String!\n jFieldOnXBigObject: Int!\n kFieldOnXBigObject: Boolean!\n lFieldOnXBigObject: Float!\n mFieldOnXBigObject: String!\n nFieldOnXBigObject: Int!\n oFieldOnXBigObject: Boolean!\n pFieldOnXBigObject: Float!\n qFieldOnXBigObject: String!\n rFieldOnXBigObject: Int!\n sFieldOnXBigObject: Boolean!\n tFieldOnXBigObject: Float!\n uFieldOnXBigObject: String!\n vFieldOnXBigObject: Int!\n wFieldOnXBigObject: Boolean!\n xFieldOnXBigObject: Float!\n yFieldOnXBigObject: String!\n zFieldOnXBigObject: Int!\n}\n\ntype YBigObject {\n aFieldOnYBigObject: String!\n bFieldOnYBigObject: Int!\n cFieldOnYBigObject: Boolean!\n dFieldOnYBigObject: Float!\n eFieldOnYBigObject: String!\n fFieldOnYBigObject: Int!\n gFieldOnYBigObject: Boolean!\n hFieldOnYBigObject: Float!\n iFieldOnYBigObject: String!\n jFieldOnYBigObject: Int!\n kFieldOnYBigObject: Boolean!\n lFieldOnYBigObject: Float!\n mFieldOnYBigObject: String!\n nFieldOnYBigObject: Int!\n oFieldOnYBigObject: Boolean!\n pFieldOnYBigObject: Float!\n qFieldOnYBigObject: String!\n rFieldOnYBigObject: Int!\n sFieldOnYBigObject: Boolean!\n tFieldOnYBigObject: Float!\n uFieldOnYBigObject: String!\n vFieldOnYBigObject: Int!\n wFieldOnYBigObject: Boolean!\n xFieldOnYBigObject: Float!\n yFieldOnYBigObject: String!\n zFieldOnYBigObject: Int!\n}\n\ntype ZBigObject {\n aFieldOnZBigObject: String!\n bFieldOnZBigObject: Int!\n cFieldOnZBigObject: Boolean!\n dFieldOnZBigObject: Float!\n eFieldOnZBigObject: String!\n fFieldOnZBigObject: Int!\n gFieldOnZBigObject: Boolean!\n hFieldOnZBigObject: Float!\n iFieldOnZBigObject: String!\n jFieldOnZBigObject: Int!\n kFieldOnZBigObject: Boolean!\n lFieldOnZBigObject: Float!\n mFieldOnZBigObject: String!\n nFieldOnZBigObject: Int!\n oFieldOnZBigObject: Boolean!\n pFieldOnZBigObject: Float!\n qFieldOnZBigObject: String!\n rFieldOnZBigObject: Int!\n sFieldOnZBigObject: Boolean!\n tFieldOnZBigObject: Float!\n uFieldOnZBigObject: String!\n vFieldOnZBigObject: Int!\n wFieldOnZBigObject: Boolean!\n xFieldOnZBigObject: Float!\n yFieldOnZBigObject: String!\n zFieldOnZBigObject: Int!\n}\n\ninput ProjectInput {\n name: String!\n description: String\n startDate: String\n endDate: String\n status: ProjectStatus!\n}\n\ninput MilestoneInput {\n projectId: ID!\n name: String!\n description: String\n dueDate: String\n status: MilestoneStatus!\n}\n\ninput TaskInput {\n projectId: ID!\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float\n}\n\ninterface Node {\n id: ID!\n}\n\ninterface Timestamped {\n startDate: String\n endDate: String\n}\n\ninterface Assignable {\n assigneeId: Int\n}\n\nenum ProjectStatus {\n PLANNING\n ACTIVE\n COMPLETED\n ON_HOLD\n}\n\nenum MilestoneStatus {\n PENDING\n IN_PROGRESS\n COMPLETED\n DELAYED\n}\n\nenum TaskStatus {\n TODO\n IN_PROGRESS\n REVIEW\n COMPLETED\n BLOCKED\n}\n\nenum TaskPriority {\n LOW\n MEDIUM\n HIGH\n URGENT\n}\n\nenum ProjectUpdateType {\n STATUS_CHANGE\n MILESTONE_ADDED\n TASK_ASSIGNED\n PROGRESS_UPDATE\n TEAM_CHANGE\n}\n\nunion ProjectResource = Employee | Product | Milestone | Task\n\nunion ProjectSearchResult = Project | Milestone | Task\n\nunion ProjectActivity = ProjectUpdate | Milestone | Task\n\ntype Product {\n upc: String!\n projects: [Project!]\n featureMatrix: [[String]]\n}\n\ntype Course {\n id: ID!\n title: String!\n description: String\n instructor: Employee!\n lessons: [Lesson!]!\n}\n\ntype Lesson {\n id: ID!\n courseId: ID!\n title: String!\n description: String\n order: Int!\n course: Course!\n}\n\ntype Engineer implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n engineerType: EngineerType!\n}\n\ntype Marketer implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n}\n\ntype Operator implements RoleType {\n departments: [Department!]!\n title: [String!]!\n employees: [Employee!]!\n operatorType: [OperationType!]!\n}\n\ntype Employee implements Identifiable {\n details: Details\n id: Int!\n tag: String!\n role: RoleType!\n notes: String\n updatedAt: String!\n startDate: String!\n currentMood: Mood!\n derivedMood: Mood!\n isAvailable: Boolean\n rootFieldThrowsError: String\n rootFieldErrorWrapper: ErrorWrapper\n hobbies: [Hobby!]\n products: [ProductName!]!\n fieldThrowsError: String\n projects: [Project!]\n assignedTasks: [Task!]!\n completedTasks: [Task!]!\n skills: [String]\n certifications: [String!]\n projectHistory: [[Project!]]!\n currentWorkload(includeCompleted: Boolean, projectId: ID): Int!\n averageTaskCompletionDays(projectId: ID, priority: TaskPriority): Float\n taughtCourses: [Course!]!\n}\n\ntype Cosmo implements IProduct {\n upc: ID!\n engineers: [Employee!]!\n lead: Employee!\n isLeadAvailable: Boolean\n name: ProductName!\n repositoryURL: String!\n}\n\ntype SDK implements IProduct {\n upc: ID!\n engineers: [Employee!]!\n owner: Employee!\n unicode: String!\n clientLanguages: [ProgrammingLanguage!]!\n}\n\ninterface Pet implements Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Alligator implements Pet & Animal {\n class: Class!\n dangerous: String!\n gender: Gender!\n name: String!\n}\n\ntype Cat implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n type: CatType!\n}\n\ntype Dog implements Pet & Animal {\n breed: DogBreed!\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Mouse implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Pony implements Pet & Animal {\n class: Class!\n gender: Gender!\n name: String!\n}\n\ntype Exercise implements Hobby {\n employees: [Employee!]!\n category: ExerciseType!\n}\n\ntype Flying implements Experience & Hobby {\n employees: [Employee!]!\n planeModels: [String!]!\n yearsOfExperience: Float!\n}\n\ntype Gaming implements Experience & Hobby {\n employees: [Employee!]!\n genres: [GameGenre!]!\n name: String!\n yearsOfExperience: Float!\n}\n\ntype Other implements Hobby {\n employees: [Employee!]!\n name: String!\n}\n\ntype Programming implements Hobby {\n employees: [Employee!]!\n languages: [ProgrammingLanguage!]!\n}\n\ntype Travelling implements Hobby {\n employees: [Employee!]!\n countriesLived: [Country!]!\n}\n\ntype DirectiveFact implements TopSecretFact {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype EntityFact implements TopSecretFact {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype MiscellaneousFact implements TopSecretFact {\n title: String!\n description: FactContent!\n factType: TopSecretFactType\n}\n\ntype Project implements Node & Timestamped {\n id: ID!\n name: String!\n description: String\n startDate: String\n endDate: String\n status: ProjectStatus!\n teamMembers: [Employee!]!\n relatedProducts: [Product!]!\n milestoneIds: [String!]\n milestones: [Milestone!]!\n tasks: [Task!]!\n progress: Float\n tags: [String]\n alternativeProjects: [Project]\n dependencies: [Project!]\n resourceGroups: [[ProjectResource!]!]!\n tasksByPhase: [[Task!]]!\n milestoneGroups: [[Milestone]]\n priorityMatrix: [[[Task!]!]!]\n subProjects(includeArchived: Boolean): [Project!]!\n filteredTasks(status: TaskStatus, priority: TaskPriority, limit: Int): [Task!]!\n completionRate(includeSubtasks: Boolean): Float!\n estimatedDaysRemaining(fromDate: String): Int\n criticalDeadline(withinDays: Int): Timestamped\n topPriorityItem(category: String): ProjectSearchResult\n}\n\ntype Milestone implements Node & Timestamped {\n id: ID!\n projectId: ID!\n name: String!\n description: String\n startDate: String\n endDate: String\n status: MilestoneStatus!\n completionPercentage: Float\n dependencies: [Milestone]!\n subtasks: [Task]\n reviewers: [Employee!]\n isAtRisk(threshold: Float): Boolean!\n daysUntilDue(fromDate: String): Int\n}\n\ntype Task implements Node & Assignable {\n id: ID!\n projectId: ID!\n milestoneId: ID\n assigneeId: Int\n name: String!\n description: String\n priority: TaskPriority!\n status: TaskStatus!\n estimatedHours: Float @deprecated(reason: \"No more estimations!\")\n actualHours: Float\n createdAt: String\n completedAt: String\n labels: [String]\n subtasks: [Task!]\n dependencies: [Task]!\n attachmentUrls: [String!]!\n reviewerIds: [Int]\n isBlocked(checkDependencies: Boolean): Boolean!\n totalEffort(includeSubtasks: Boolean): Float\n}\n\ntype ProjectUpdate implements Node {\n id: ID!\n projectId: ID!\n updatedById: Int!\n updateType: ProjectUpdateType!\n description: String!\n timestamp: String!\n metadata: String\n}" }, "version": "00000000-0000-0000-0000-000000000000", "subgraphs": [ diff --git a/router/go.mod b/router/go.mod index 0c97fe054e..415918d050 100644 --- a/router/go.mod +++ b/router/go.mod @@ -31,7 +31,7 @@ require ( github.com/tidwall/gjson v1.18.0 github.com/tidwall/sjson v1.2.5 github.com/twmb/franz-go v1.16.1 - github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.243 + github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.245 // Do not upgrade, it renames attributes we rely on go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 go.opentelemetry.io/contrib/propagators/b3 v1.23.0 @@ -194,4 +194,4 @@ replace ( // Remember you can use Go workspaces to avoid using replace directives in multiple go.mod files // Use what is best for your personal workflow. See CONTRIBUTING.md for more information -//replace github.com/wundergraph/graphql-go-tools/v2 => ../../graphql-go-tools/v2 +// replace github.com/wundergraph/graphql-go-tools/v2 => ../../graphql-go-tools/v2 diff --git a/router/go.sum b/router/go.sum index 01205d4ba8..715b552f47 100644 --- a/router/go.sum +++ b/router/go.sum @@ -322,8 +322,8 @@ github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/ github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= github.com/wundergraph/astjson v0.0.0-20250106123708-be463c97e083 h1:8/D7f8gKxTBjW+SZK4mhxTTBVpxcqeBgWF1Rfmltbfk= github.com/wundergraph/astjson v0.0.0-20250106123708-be463c97e083/go.mod h1:eOTL6acwctsN4F3b7YE+eE2t8zcJ/doLm9sZzsxxxrE= -github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.243 h1:yNchVRa9agA6JtK/X9ZBv8BW/8sm4kl2eaFD6rh6D90= -github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.243/go.mod h1:mX25ASEQiKamxaFSK6NZihh0oDCigIuzro30up4mFH4= +github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.245 h1:MYewlXgIhI9jusocPUeyo346J3M5cqzc6ddru1qp+S8= +github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.245/go.mod h1:mX25ASEQiKamxaFSK6NZihh0oDCigIuzro30up4mFH4= github.com/yosida95/uritemplate/v3 v3.0.2 h1:Ed3Oyj9yrmi9087+NczuL5BwkIc4wvTb5zIM+UJPGz4= github.com/yosida95/uritemplate/v3 v3.0.2/go.mod h1:ILOh0sOhIJR3+L/8afwt/kE++YT040gmv5BQTMR2HP4= github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M=