diff --git a/pb/c1/connectorapi/baton/v1/baton.pb.go b/pb/c1/connectorapi/baton/v1/baton.pb.go index 0e6cbdeb5..2c830c1be 100644 --- a/pb/c1/connectorapi/baton/v1/baton.pb.go +++ b/pb/c1/connectorapi/baton/v1/baton.pb.go @@ -106,6 +106,7 @@ type Task struct { // *Task_ActionStatus // *Task_CreateSyncDiff // *Task_CompactSyncs_ + // *Task_SyncPartial TaskType isTask_TaskType `protobuf_oneof:"task_type"` Debug bool `protobuf:"varint,3,opt,name=debug,proto3" json:"debug,omitempty"` unknownFields protoimpl.UnknownFields @@ -347,6 +348,15 @@ func (x *Task) GetCompactSyncs() *Task_CompactSyncs { return nil } +func (x *Task) GetSyncPartial() *Task_SyncPartialTask { + if x != nil { + if x, ok := x.TaskType.(*Task_SyncPartial); ok { + return x.SyncPartial + } + } + return nil +} + func (x *Task) GetDebug() bool { if x != nil { return x.Debug @@ -530,6 +540,14 @@ func (x *Task) SetCompactSyncs(v *Task_CompactSyncs) { x.TaskType = &Task_CompactSyncs_{v} } +func (x *Task) SetSyncPartial(v *Task_SyncPartialTask) { + if v == nil { + x.TaskType = nil + return + } + x.TaskType = &Task_SyncPartial{v} +} + func (x *Task) SetDebug(v bool) { x.Debug = v } @@ -709,6 +727,14 @@ func (x *Task) HasCompactSyncs() bool { return ok } +func (x *Task) HasSyncPartial() bool { + if x == nil { + return false + } + _, ok := x.TaskType.(*Task_SyncPartial) + return ok +} + func (x *Task) ClearTaskType() { x.TaskType = nil } @@ -839,6 +865,12 @@ func (x *Task) ClearCompactSyncs() { } } +func (x *Task) ClearSyncPartial() { + if _, ok := x.TaskType.(*Task_SyncPartial); ok { + x.TaskType = nil + } +} + const Task_TaskType_not_set_case case_Task_TaskType = 0 const Task_None_case case_Task_TaskType = 100 const Task_Hello_case case_Task_TaskType = 101 @@ -861,6 +893,7 @@ const Task_ActionInvoke_case case_Task_TaskType = 117 const Task_ActionStatus_case case_Task_TaskType = 118 const Task_CreateSyncDiff_case case_Task_TaskType = 119 const Task_CompactSyncs_case case_Task_TaskType = 120 +const Task_SyncPartial_case case_Task_TaskType = 121 func (x *Task) WhichTaskType() case_Task_TaskType { if x == nil { @@ -909,6 +942,8 @@ func (x *Task) WhichTaskType() case_Task_TaskType { return Task_CreateSyncDiff_case case *Task_CompactSyncs_: return Task_CompactSyncs_case + case *Task_SyncPartial: + return Task_SyncPartial_case default: return Task_TaskType_not_set_case } @@ -941,6 +976,7 @@ type Task_builder struct { ActionStatus *Task_ActionStatusTask CreateSyncDiff *Task_CreateSyncDiffTask CompactSyncs *Task_CompactSyncs + SyncPartial *Task_SyncPartialTask // -- end of TaskType Debug bool } @@ -1014,6 +1050,9 @@ func (b0 Task_builder) Build() *Task { if b.CompactSyncs != nil { x.TaskType = &Task_CompactSyncs_{b.CompactSyncs} } + if b.SyncPartial != nil { + x.TaskType = &Task_SyncPartial{b.SyncPartial} + } x.Debug = b.Debug return m0 } @@ -1116,6 +1155,10 @@ type Task_CompactSyncs_ struct { CompactSyncs *Task_CompactSyncs `protobuf:"bytes,120,opt,name=compact_syncs,json=compactSyncs,proto3,oneof"` } +type Task_SyncPartial struct { + SyncPartial *Task_SyncPartialTask `protobuf:"bytes,121,opt,name=sync_partial,json=syncPartial,proto3,oneof"` +} + func (*Task_None) isTask_TaskType() {} func (*Task_Hello) isTask_TaskType() {} @@ -1158,6 +1201,8 @@ func (*Task_CreateSyncDiff) isTask_TaskType() {} func (*Task_CompactSyncs_) isTask_TaskType() {} +func (*Task_SyncPartial) isTask_TaskType() {} + type BatonServiceHelloRequest struct { state protoimpl.MessageState `protogen:"hybrid.v1"` HostId string `protobuf:"bytes,1,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` @@ -2635,6 +2680,205 @@ func (b0 Task_SyncFullTask_builder) Build() *Task_SyncFullTask { return m0 } +// SyncPartialTask is a partial sync task that syncs either targeted resources or a single resource type. +// When using targeted_resources, entitlements and grants are included. +// When using resource_type_id, only resources are synced (entitlements and grants are skipped). +type Task_SyncPartialTask struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` + Annotations []*anypb.Any `protobuf:"bytes,1,rep,name=annotations,proto3" json:"annotations,omitempty"` + // Types that are valid to be assigned to SyncMode: + // + // *Task_SyncPartialTask_TargetedResources_ + // *Task_SyncPartialTask_ResourceTypeId + SyncMode isTask_SyncPartialTask_SyncMode `protobuf_oneof:"sync_mode"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Task_SyncPartialTask) Reset() { + *x = Task_SyncPartialTask{} + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Task_SyncPartialTask) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Task_SyncPartialTask) ProtoMessage() {} + +func (x *Task_SyncPartialTask) ProtoReflect() protoreflect.Message { + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Task_SyncPartialTask) GetAnnotations() []*anypb.Any { + if x != nil { + return x.Annotations + } + return nil +} + +func (x *Task_SyncPartialTask) GetSyncMode() isTask_SyncPartialTask_SyncMode { + if x != nil { + return x.SyncMode + } + return nil +} + +func (x *Task_SyncPartialTask) GetTargetedResources() *Task_SyncPartialTask_TargetedResources { + if x != nil { + if x, ok := x.SyncMode.(*Task_SyncPartialTask_TargetedResources_); ok { + return x.TargetedResources + } + } + return nil +} + +func (x *Task_SyncPartialTask) GetResourceTypeId() string { + if x != nil { + if x, ok := x.SyncMode.(*Task_SyncPartialTask_ResourceTypeId); ok { + return x.ResourceTypeId + } + } + return "" +} + +func (x *Task_SyncPartialTask) SetAnnotations(v []*anypb.Any) { + x.Annotations = v +} + +func (x *Task_SyncPartialTask) SetTargetedResources(v *Task_SyncPartialTask_TargetedResources) { + if v == nil { + x.SyncMode = nil + return + } + x.SyncMode = &Task_SyncPartialTask_TargetedResources_{v} +} + +func (x *Task_SyncPartialTask) SetResourceTypeId(v string) { + x.SyncMode = &Task_SyncPartialTask_ResourceTypeId{v} +} + +func (x *Task_SyncPartialTask) HasSyncMode() bool { + if x == nil { + return false + } + return x.SyncMode != nil +} + +func (x *Task_SyncPartialTask) HasTargetedResources() bool { + if x == nil { + return false + } + _, ok := x.SyncMode.(*Task_SyncPartialTask_TargetedResources_) + return ok +} + +func (x *Task_SyncPartialTask) HasResourceTypeId() bool { + if x == nil { + return false + } + _, ok := x.SyncMode.(*Task_SyncPartialTask_ResourceTypeId) + return ok +} + +func (x *Task_SyncPartialTask) ClearSyncMode() { + x.SyncMode = nil +} + +func (x *Task_SyncPartialTask) ClearTargetedResources() { + if _, ok := x.SyncMode.(*Task_SyncPartialTask_TargetedResources_); ok { + x.SyncMode = nil + } +} + +func (x *Task_SyncPartialTask) ClearResourceTypeId() { + if _, ok := x.SyncMode.(*Task_SyncPartialTask_ResourceTypeId); ok { + x.SyncMode = nil + } +} + +const Task_SyncPartialTask_SyncMode_not_set_case case_Task_SyncPartialTask_SyncMode = 0 +const Task_SyncPartialTask_TargetedResources_case case_Task_SyncPartialTask_SyncMode = 2 +const Task_SyncPartialTask_ResourceTypeId_case case_Task_SyncPartialTask_SyncMode = 3 + +func (x *Task_SyncPartialTask) WhichSyncMode() case_Task_SyncPartialTask_SyncMode { + if x == nil { + return Task_SyncPartialTask_SyncMode_not_set_case + } + switch x.SyncMode.(type) { + case *Task_SyncPartialTask_TargetedResources_: + return Task_SyncPartialTask_TargetedResources_case + case *Task_SyncPartialTask_ResourceTypeId: + return Task_SyncPartialTask_ResourceTypeId_case + default: + return Task_SyncPartialTask_SyncMode_not_set_case + } +} + +type Task_SyncPartialTask_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Annotations []*anypb.Any + // Fields of oneof SyncMode: + // Targeted resources to sync - includes entitlements and grants + TargetedResources *Task_SyncPartialTask_TargetedResources + // Single resource type to sync - skips entitlements and grants + ResourceTypeId *string + // -- end of SyncMode +} + +func (b0 Task_SyncPartialTask_builder) Build() *Task_SyncPartialTask { + m0 := &Task_SyncPartialTask{} + b, x := &b0, m0 + _, _ = b, x + x.Annotations = b.Annotations + if b.TargetedResources != nil { + x.SyncMode = &Task_SyncPartialTask_TargetedResources_{b.TargetedResources} + } + if b.ResourceTypeId != nil { + x.SyncMode = &Task_SyncPartialTask_ResourceTypeId{*b.ResourceTypeId} + } + return m0 +} + +type case_Task_SyncPartialTask_SyncMode protoreflect.FieldNumber + +func (x case_Task_SyncPartialTask_SyncMode) String() string { + md := file_c1_connectorapi_baton_v1_baton_proto_msgTypes[16].Descriptor() + if x == 0 { + return "not set" + } + return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x)) +} + +type isTask_SyncPartialTask_SyncMode interface { + isTask_SyncPartialTask_SyncMode() +} + +type Task_SyncPartialTask_TargetedResources_ struct { + // Targeted resources to sync - includes entitlements and grants + TargetedResources *Task_SyncPartialTask_TargetedResources `protobuf:"bytes,2,opt,name=targeted_resources,json=targetedResources,proto3,oneof"` +} + +type Task_SyncPartialTask_ResourceTypeId struct { + // Single resource type to sync - skips entitlements and grants + ResourceTypeId string `protobuf:"bytes,3,opt,name=resource_type_id,json=resourceTypeId,proto3,oneof"` +} + +func (*Task_SyncPartialTask_TargetedResources_) isTask_SyncPartialTask_SyncMode() {} + +func (*Task_SyncPartialTask_ResourceTypeId) isTask_SyncPartialTask_SyncMode() {} + type Task_EventFeedTask struct { state protoimpl.MessageState `protogen:"hybrid.v1"` Annotations []*anypb.Any `protobuf:"bytes,1,rep,name=annotations,proto3" json:"annotations,omitempty"` @@ -2645,7 +2889,7 @@ type Task_EventFeedTask struct { func (x *Task_EventFeedTask) Reset() { *x = Task_EventFeedTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[16] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2657,7 +2901,7 @@ func (x *Task_EventFeedTask) String() string { func (*Task_EventFeedTask) ProtoMessage() {} func (x *Task_EventFeedTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[16] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2729,7 +2973,7 @@ type Task_GrantTask struct { func (x *Task_GrantTask) Reset() { *x = Task_GrantTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[17] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2741,7 +2985,7 @@ func (x *Task_GrantTask) String() string { func (*Task_GrantTask) ProtoMessage() {} func (x *Task_GrantTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[17] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2859,7 +3103,7 @@ type Task_RevokeTask struct { func (x *Task_RevokeTask) Reset() { *x = Task_RevokeTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[18] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2871,7 +3115,7 @@ func (x *Task_RevokeTask) String() string { func (*Task_RevokeTask) ProtoMessage() {} func (x *Task_RevokeTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[18] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2942,7 +3186,7 @@ type Task_CreateAccountTask struct { func (x *Task_CreateAccountTask) Reset() { *x = Task_CreateAccountTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[19] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2954,7 +3198,7 @@ func (x *Task_CreateAccountTask) String() string { func (*Task_CreateAccountTask) ProtoMessage() {} func (x *Task_CreateAccountTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[19] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3047,7 +3291,7 @@ type Task_CreateResourceTask struct { func (x *Task_CreateResourceTask) Reset() { *x = Task_CreateResourceTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[20] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3059,7 +3303,7 @@ func (x *Task_CreateResourceTask) String() string { func (*Task_CreateResourceTask) ProtoMessage() {} func (x *Task_CreateResourceTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[20] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3116,7 +3360,7 @@ type Task_DeleteResourceTask struct { func (x *Task_DeleteResourceTask) Reset() { *x = Task_DeleteResourceTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[21] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3128,7 +3372,7 @@ func (x *Task_DeleteResourceTask) String() string { func (*Task_DeleteResourceTask) ProtoMessage() {} func (x *Task_DeleteResourceTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[21] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3210,7 +3454,7 @@ type Task_RotateCredentialsTask struct { func (x *Task_RotateCredentialsTask) Reset() { *x = Task_RotateCredentialsTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[22] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3222,7 +3466,7 @@ func (x *Task_RotateCredentialsTask) String() string { func (*Task_RotateCredentialsTask) ProtoMessage() {} func (x *Task_RotateCredentialsTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[22] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3317,7 +3561,7 @@ type Task_CreateTicketTask struct { func (x *Task_CreateTicketTask) Reset() { *x = Task_CreateTicketTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[23] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3329,7 +3573,7 @@ func (x *Task_CreateTicketTask) String() string { func (*Task_CreateTicketTask) ProtoMessage() {} func (x *Task_CreateTicketTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[23] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3422,7 +3666,7 @@ type Task_BulkCreateTicketsTask struct { func (x *Task_BulkCreateTicketsTask) Reset() { *x = Task_BulkCreateTicketsTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[24] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3434,7 +3678,7 @@ func (x *Task_BulkCreateTicketsTask) String() string { func (*Task_BulkCreateTicketsTask) ProtoMessage() {} func (x *Task_BulkCreateTicketsTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[24] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3479,7 +3723,7 @@ type Task_BulkGetTicketsTask struct { func (x *Task_BulkGetTicketsTask) Reset() { *x = Task_BulkGetTicketsTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[25] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3491,7 +3735,7 @@ func (x *Task_BulkGetTicketsTask) String() string { func (*Task_BulkGetTicketsTask) ProtoMessage() {} func (x *Task_BulkGetTicketsTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[25] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3536,7 +3780,7 @@ type Task_ListTicketSchemasTask struct { func (x *Task_ListTicketSchemasTask) Reset() { *x = Task_ListTicketSchemasTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[26] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3548,7 +3792,7 @@ func (x *Task_ListTicketSchemasTask) String() string { func (*Task_ListTicketSchemasTask) ProtoMessage() {} func (x *Task_ListTicketSchemasTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[26] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3594,7 +3838,7 @@ type Task_GetTicketTask struct { func (x *Task_GetTicketTask) Reset() { *x = Task_GetTicketTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[27] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3606,7 +3850,7 @@ func (x *Task_GetTicketTask) String() string { func (*Task_GetTicketTask) ProtoMessage() {} func (x *Task_GetTicketTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[27] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3664,7 +3908,7 @@ type Task_ActionListSchemasTask struct { func (x *Task_ActionListSchemasTask) Reset() { *x = Task_ActionListSchemasTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[28] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3676,7 +3920,7 @@ func (x *Task_ActionListSchemasTask) String() string { func (*Task_ActionListSchemasTask) ProtoMessage() {} func (x *Task_ActionListSchemasTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[28] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3722,7 +3966,7 @@ type Task_ActionGetSchemaTask struct { func (x *Task_ActionGetSchemaTask) Reset() { *x = Task_ActionGetSchemaTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[29] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3734,7 +3978,7 @@ func (x *Task_ActionGetSchemaTask) String() string { func (*Task_ActionGetSchemaTask) ProtoMessage() {} func (x *Task_ActionGetSchemaTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[29] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3794,7 +4038,7 @@ type Task_ActionInvokeTask struct { func (x *Task_ActionInvokeTask) Reset() { *x = Task_ActionInvokeTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[30] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3806,7 +4050,7 @@ func (x *Task_ActionInvokeTask) String() string { func (*Task_ActionInvokeTask) ProtoMessage() {} func (x *Task_ActionInvokeTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[30] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3890,7 +4134,7 @@ type Task_ActionStatusTask struct { func (x *Task_ActionStatusTask) Reset() { *x = Task_ActionStatusTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[31] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3902,7 +4146,7 @@ func (x *Task_ActionStatusTask) String() string { func (*Task_ActionStatusTask) ProtoMessage() {} func (x *Task_ActionStatusTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[31] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3976,7 +4220,7 @@ type Task_CreateSyncDiffTask struct { func (x *Task_CreateSyncDiffTask) Reset() { *x = Task_CreateSyncDiffTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[32] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3988,7 +4232,7 @@ func (x *Task_CreateSyncDiffTask) String() string { func (*Task_CreateSyncDiffTask) ProtoMessage() {} func (x *Task_CreateSyncDiffTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[32] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4061,7 +4305,7 @@ type Task_CompactSyncs struct { func (x *Task_CompactSyncs) Reset() { *x = Task_CompactSyncs{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[33] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4073,7 +4317,7 @@ func (x *Task_CompactSyncs) String() string { func (*Task_CompactSyncs) ProtoMessage() {} func (x *Task_CompactSyncs) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[33] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4122,6 +4366,63 @@ func (b0 Task_CompactSyncs_builder) Build() *Task_CompactSyncs { return m0 } +type Task_SyncPartialTask_TargetedResources struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` + Resources []*v2.Resource `protobuf:"bytes,1,rep,name=resources,proto3" json:"resources,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Task_SyncPartialTask_TargetedResources) Reset() { + *x = Task_SyncPartialTask_TargetedResources{} + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Task_SyncPartialTask_TargetedResources) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Task_SyncPartialTask_TargetedResources) ProtoMessage() {} + +func (x *Task_SyncPartialTask_TargetedResources) ProtoReflect() protoreflect.Message { + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[35] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Task_SyncPartialTask_TargetedResources) GetResources() []*v2.Resource { + if x != nil { + return x.Resources + } + return nil +} + +func (x *Task_SyncPartialTask_TargetedResources) SetResources(v []*v2.Resource) { + x.Resources = v +} + +type Task_SyncPartialTask_TargetedResources_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Resources []*v2.Resource +} + +func (b0 Task_SyncPartialTask_TargetedResources_builder) Build() *Task_SyncPartialTask_TargetedResources { + m0 := &Task_SyncPartialTask_TargetedResources{} + b, x := &b0, m0 + _, _ = b, x + x.Resources = b.Resources + return m0 +} + type Task_CompactSyncs_CompactableSync struct { state protoimpl.MessageState `protogen:"hybrid.v1"` FilePath string `protobuf:"bytes,1,opt,name=file_path,json=filePath,proto3" json:"file_path,omitempty"` @@ -4132,7 +4433,7 @@ type Task_CompactSyncs_CompactableSync struct { func (x *Task_CompactSyncs_CompactableSync) Reset() { *x = Task_CompactSyncs_CompactableSync{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[34] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4144,7 +4445,7 @@ func (x *Task_CompactSyncs_CompactableSync) String() string { func (*Task_CompactSyncs_CompactableSync) ProtoMessage() {} func (x *Task_CompactSyncs_CompactableSync) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[34] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4204,7 +4505,7 @@ type BatonServiceHelloRequest_BuildInfo struct { func (x *BatonServiceHelloRequest_BuildInfo) Reset() { *x = BatonServiceHelloRequest_BuildInfo{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[35] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4216,7 +4517,7 @@ func (x *BatonServiceHelloRequest_BuildInfo) String() string { func (*BatonServiceHelloRequest_BuildInfo) ProtoMessage() {} func (x *BatonServiceHelloRequest_BuildInfo) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[35] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4294,7 +4595,7 @@ type BatonServiceHelloRequest_OSInfo struct { func (x *BatonServiceHelloRequest_OSInfo) Reset() { *x = BatonServiceHelloRequest_OSInfo{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[36] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4306,7 +4607,7 @@ func (x *BatonServiceHelloRequest_OSInfo) String() string { func (*BatonServiceHelloRequest_OSInfo) ProtoMessage() {} func (x *BatonServiceHelloRequest_OSInfo) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[36] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4444,7 +4745,7 @@ type BatonServiceUploadAssetRequest_UploadMetadata struct { func (x *BatonServiceUploadAssetRequest_UploadMetadata) Reset() { *x = BatonServiceUploadAssetRequest_UploadMetadata{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[37] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4456,7 +4757,7 @@ func (x *BatonServiceUploadAssetRequest_UploadMetadata) String() string { func (*BatonServiceUploadAssetRequest_UploadMetadata) ProtoMessage() {} func (x *BatonServiceUploadAssetRequest_UploadMetadata) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[37] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4528,7 +4829,7 @@ type BatonServiceUploadAssetRequest_UploadData struct { func (x *BatonServiceUploadAssetRequest_UploadData) Reset() { *x = BatonServiceUploadAssetRequest_UploadData{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[38] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4540,7 +4841,7 @@ func (x *BatonServiceUploadAssetRequest_UploadData) String() string { func (*BatonServiceUploadAssetRequest_UploadData) ProtoMessage() {} func (x *BatonServiceUploadAssetRequest_UploadData) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[38] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4590,7 +4891,7 @@ type BatonServiceUploadAssetRequest_UploadEOF struct { func (x *BatonServiceUploadAssetRequest_UploadEOF) Reset() { *x = BatonServiceUploadAssetRequest_UploadEOF{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[39] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4602,7 +4903,7 @@ func (x *BatonServiceUploadAssetRequest_UploadEOF) String() string { func (*BatonServiceUploadAssetRequest_UploadEOF) ProtoMessage() {} func (x *BatonServiceUploadAssetRequest_UploadEOF) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[39] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4666,7 +4967,7 @@ type BatonServiceFinishTaskRequest_Error struct { func (x *BatonServiceFinishTaskRequest_Error) Reset() { *x = BatonServiceFinishTaskRequest_Error{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[40] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4678,7 +4979,7 @@ func (x *BatonServiceFinishTaskRequest_Error) String() string { func (*BatonServiceFinishTaskRequest_Error) ProtoMessage() {} func (x *BatonServiceFinishTaskRequest_Error) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[40] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4763,7 +5064,7 @@ type BatonServiceFinishTaskRequest_Success struct { func (x *BatonServiceFinishTaskRequest_Success) Reset() { *x = BatonServiceFinishTaskRequest_Success{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[41] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4775,7 +5076,7 @@ func (x *BatonServiceFinishTaskRequest_Success) String() string { func (*BatonServiceFinishTaskRequest_Success) ProtoMessage() {} func (x *BatonServiceFinishTaskRequest_Success) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[41] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4840,7 +5141,7 @@ var File_c1_connectorapi_baton_v1_baton_proto protoreflect.FileDescriptor const file_c1_connectorapi_baton_v1_baton_proto_rawDesc = "" + "\n" + - "$c1/connectorapi/baton/v1/baton.proto\x12\x18c1.connectorapi.baton.v1\x1a\x1fc1/connector/v2/connector.proto\x1a!c1/connector/v2/entitlement.proto\x1a\x1bc1/connector/v2/grant.proto\x1a\x1ec1/connector/v2/resource.proto\x1a\x1cc1/connector/v2/ticket.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\x1a\x17validate/validate.proto\"\xac(\n" + + "$c1/connectorapi/baton/v1/baton.proto\x12\x18c1.connectorapi.baton.v1\x1a\x1fc1/connector/v2/connector.proto\x1a!c1/connector/v2/entitlement.proto\x1a\x1bc1/connector/v2/grant.proto\x1a\x1ec1/connector/v2/resource.proto\x1a\x1cc1/connector/v2/ticket.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\x1a\x17validate/validate.proto\"\xc7+\n" + "\x04Task\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12=\n" + "\x06status\x18\x02 \x01(\x0e2%.c1.connectorapi.baton.v1.Task.StatusR\x06status\x12=\n" + @@ -4866,7 +5167,8 @@ const file_c1_connectorapi_baton_v1_baton_proto_rawDesc = "" + "\raction_invoke\x18u \x01(\v2/.c1.connectorapi.baton.v1.Task.ActionInvokeTaskH\x00R\factionInvoke\x12V\n" + "\raction_status\x18v \x01(\v2/.c1.connectorapi.baton.v1.Task.ActionStatusTaskH\x00R\factionStatus\x12]\n" + "\x10create_sync_diff\x18w \x01(\v21.c1.connectorapi.baton.v1.Task.CreateSyncDiffTaskH\x00R\x0ecreateSyncDiff\x12R\n" + - "\rcompact_syncs\x18x \x01(\v2+.c1.connectorapi.baton.v1.Task.CompactSyncsH\x00R\fcompactSyncs\x12\x14\n" + + "\rcompact_syncs\x18x \x01(\v2+.c1.connectorapi.baton.v1.Task.CompactSyncsH\x00R\fcompactSyncs\x12S\n" + + "\fsync_partial\x18y \x01(\v2..c1.connectorapi.baton.v1.Task.SyncPartialTaskH\x00R\vsyncPartial\x12\x14\n" + "\x05debug\x18\x03 \x01(\bR\x05debug\x1aB\n" + "\bNoneTask\x126\n" + "\vannotations\x18\x01 \x03(\v2\x14.google.protobuf.AnyR\vannotations\x1aC\n" + @@ -4876,7 +5178,14 @@ const file_c1_connectorapi_baton_v1_baton_proto_rawDesc = "" + "\vannotations\x18\x01 \x03(\v2\x14.google.protobuf.AnyR\vannotations\x12,\n" + "\x12skip_expand_grants\x18\x02 \x01(\bR\x10skipExpandGrants\x12?\n" + "\x1cskip_entitlements_and_grants\x18\x03 \x01(\bR\x19skipEntitlementsAndGrants\x12Q\n" + - "\x17targeted_sync_resources\x18\x04 \x03(\v2\x19.c1.connector.v2.ResourceR\x15targetedSyncResources\x1a~\n" + + "\x17targeted_sync_resources\x18\x04 \x03(\v2\x19.c1.connector.v2.ResourceR\x15targetedSyncResources\x1a\xc3\x02\n" + + "\x0fSyncPartialTask\x126\n" + + "\vannotations\x18\x01 \x03(\v2\x14.google.protobuf.AnyR\vannotations\x12q\n" + + "\x12targeted_resources\x18\x02 \x01(\v2@.c1.connectorapi.baton.v1.Task.SyncPartialTask.TargetedResourcesH\x00R\x11targetedResources\x12*\n" + + "\x10resource_type_id\x18\x03 \x01(\tH\x00R\x0eresourceTypeId\x1aL\n" + + "\x11TargetedResources\x127\n" + + "\tresources\x18\x01 \x03(\v2\x19.c1.connector.v2.ResourceR\tresourcesB\v\n" + + "\tsync_mode\x1a~\n" + "\rEventFeedTask\x126\n" + "\vannotations\x18\x01 \x03(\v2\x14.google.protobuf.AnyR\vannotations\x125\n" + "\bstart_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\astartAt\x1a\xf3\x01\n" + @@ -5050,7 +5359,7 @@ const file_c1_connectorapi_baton_v1_baton_proto_rawDesc = "" + "\x0eStartDebugging\x12/.c1.connectorapi.baton.v1.StartDebuggingRequest\x1a0.c1.connectorapi.baton.v1.StartDebuggingResponse\"\x00B7Z5gitlab.com/ductone/c1/pkg/pb/c1/connectorapi/baton/v1b\x06proto3" var file_c1_connectorapi_baton_v1_baton_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_c1_connectorapi_baton_v1_baton_proto_msgTypes = make([]protoimpl.MessageInfo, 42) +var file_c1_connectorapi_baton_v1_baton_proto_msgTypes = make([]protoimpl.MessageInfo, 44) var file_c1_connectorapi_baton_v1_baton_proto_goTypes = []any{ (Task_Status)(0), // 0: c1.connectorapi.baton.v1.Task.Status (*Task)(nil), // 1: c1.connectorapi.baton.v1.Task @@ -5069,150 +5378,156 @@ var file_c1_connectorapi_baton_v1_baton_proto_goTypes = []any{ (*Task_NoneTask)(nil), // 14: c1.connectorapi.baton.v1.Task.NoneTask (*Task_HelloTask)(nil), // 15: c1.connectorapi.baton.v1.Task.HelloTask (*Task_SyncFullTask)(nil), // 16: c1.connectorapi.baton.v1.Task.SyncFullTask - (*Task_EventFeedTask)(nil), // 17: c1.connectorapi.baton.v1.Task.EventFeedTask - (*Task_GrantTask)(nil), // 18: c1.connectorapi.baton.v1.Task.GrantTask - (*Task_RevokeTask)(nil), // 19: c1.connectorapi.baton.v1.Task.RevokeTask - (*Task_CreateAccountTask)(nil), // 20: c1.connectorapi.baton.v1.Task.CreateAccountTask - (*Task_CreateResourceTask)(nil), // 21: c1.connectorapi.baton.v1.Task.CreateResourceTask - (*Task_DeleteResourceTask)(nil), // 22: c1.connectorapi.baton.v1.Task.DeleteResourceTask - (*Task_RotateCredentialsTask)(nil), // 23: c1.connectorapi.baton.v1.Task.RotateCredentialsTask - (*Task_CreateTicketTask)(nil), // 24: c1.connectorapi.baton.v1.Task.CreateTicketTask - (*Task_BulkCreateTicketsTask)(nil), // 25: c1.connectorapi.baton.v1.Task.BulkCreateTicketsTask - (*Task_BulkGetTicketsTask)(nil), // 26: c1.connectorapi.baton.v1.Task.BulkGetTicketsTask - (*Task_ListTicketSchemasTask)(nil), // 27: c1.connectorapi.baton.v1.Task.ListTicketSchemasTask - (*Task_GetTicketTask)(nil), // 28: c1.connectorapi.baton.v1.Task.GetTicketTask - (*Task_ActionListSchemasTask)(nil), // 29: c1.connectorapi.baton.v1.Task.ActionListSchemasTask - (*Task_ActionGetSchemaTask)(nil), // 30: c1.connectorapi.baton.v1.Task.ActionGetSchemaTask - (*Task_ActionInvokeTask)(nil), // 31: c1.connectorapi.baton.v1.Task.ActionInvokeTask - (*Task_ActionStatusTask)(nil), // 32: c1.connectorapi.baton.v1.Task.ActionStatusTask - (*Task_CreateSyncDiffTask)(nil), // 33: c1.connectorapi.baton.v1.Task.CreateSyncDiffTask - (*Task_CompactSyncs)(nil), // 34: c1.connectorapi.baton.v1.Task.CompactSyncs - (*Task_CompactSyncs_CompactableSync)(nil), // 35: c1.connectorapi.baton.v1.Task.CompactSyncs.CompactableSync - (*BatonServiceHelloRequest_BuildInfo)(nil), // 36: c1.connectorapi.baton.v1.BatonServiceHelloRequest.BuildInfo - (*BatonServiceHelloRequest_OSInfo)(nil), // 37: c1.connectorapi.baton.v1.BatonServiceHelloRequest.OSInfo - (*BatonServiceUploadAssetRequest_UploadMetadata)(nil), // 38: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadMetadata - (*BatonServiceUploadAssetRequest_UploadData)(nil), // 39: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadData - (*BatonServiceUploadAssetRequest_UploadEOF)(nil), // 40: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadEOF - (*BatonServiceFinishTaskRequest_Error)(nil), // 41: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Error - (*BatonServiceFinishTaskRequest_Success)(nil), // 42: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Success - (*v2.ConnectorMetadata)(nil), // 43: c1.connector.v2.ConnectorMetadata - (*anypb.Any)(nil), // 44: google.protobuf.Any - (*durationpb.Duration)(nil), // 45: google.protobuf.Duration - (*status.Status)(nil), // 46: google.rpc.Status - (*v2.Resource)(nil), // 47: c1.connector.v2.Resource - (*timestamppb.Timestamp)(nil), // 48: google.protobuf.Timestamp - (*v2.Entitlement)(nil), // 49: c1.connector.v2.Entitlement - (*v2.Grant)(nil), // 50: c1.connector.v2.Grant - (*v2.AccountInfo)(nil), // 51: c1.connector.v2.AccountInfo - (*v2.CredentialOptions)(nil), // 52: c1.connector.v2.CredentialOptions - (*v2.EncryptionConfig)(nil), // 53: c1.connector.v2.EncryptionConfig - (*v2.ResourceId)(nil), // 54: c1.connector.v2.ResourceId - (*v2.TicketRequest)(nil), // 55: c1.connector.v2.TicketRequest - (*v2.TicketSchema)(nil), // 56: c1.connector.v2.TicketSchema - (*structpb.Struct)(nil), // 57: google.protobuf.Struct + (*Task_SyncPartialTask)(nil), // 17: c1.connectorapi.baton.v1.Task.SyncPartialTask + (*Task_EventFeedTask)(nil), // 18: c1.connectorapi.baton.v1.Task.EventFeedTask + (*Task_GrantTask)(nil), // 19: c1.connectorapi.baton.v1.Task.GrantTask + (*Task_RevokeTask)(nil), // 20: c1.connectorapi.baton.v1.Task.RevokeTask + (*Task_CreateAccountTask)(nil), // 21: c1.connectorapi.baton.v1.Task.CreateAccountTask + (*Task_CreateResourceTask)(nil), // 22: c1.connectorapi.baton.v1.Task.CreateResourceTask + (*Task_DeleteResourceTask)(nil), // 23: c1.connectorapi.baton.v1.Task.DeleteResourceTask + (*Task_RotateCredentialsTask)(nil), // 24: c1.connectorapi.baton.v1.Task.RotateCredentialsTask + (*Task_CreateTicketTask)(nil), // 25: c1.connectorapi.baton.v1.Task.CreateTicketTask + (*Task_BulkCreateTicketsTask)(nil), // 26: c1.connectorapi.baton.v1.Task.BulkCreateTicketsTask + (*Task_BulkGetTicketsTask)(nil), // 27: c1.connectorapi.baton.v1.Task.BulkGetTicketsTask + (*Task_ListTicketSchemasTask)(nil), // 28: c1.connectorapi.baton.v1.Task.ListTicketSchemasTask + (*Task_GetTicketTask)(nil), // 29: c1.connectorapi.baton.v1.Task.GetTicketTask + (*Task_ActionListSchemasTask)(nil), // 30: c1.connectorapi.baton.v1.Task.ActionListSchemasTask + (*Task_ActionGetSchemaTask)(nil), // 31: c1.connectorapi.baton.v1.Task.ActionGetSchemaTask + (*Task_ActionInvokeTask)(nil), // 32: c1.connectorapi.baton.v1.Task.ActionInvokeTask + (*Task_ActionStatusTask)(nil), // 33: c1.connectorapi.baton.v1.Task.ActionStatusTask + (*Task_CreateSyncDiffTask)(nil), // 34: c1.connectorapi.baton.v1.Task.CreateSyncDiffTask + (*Task_CompactSyncs)(nil), // 35: c1.connectorapi.baton.v1.Task.CompactSyncs + (*Task_SyncPartialTask_TargetedResources)(nil), // 36: c1.connectorapi.baton.v1.Task.SyncPartialTask.TargetedResources + (*Task_CompactSyncs_CompactableSync)(nil), // 37: c1.connectorapi.baton.v1.Task.CompactSyncs.CompactableSync + (*BatonServiceHelloRequest_BuildInfo)(nil), // 38: c1.connectorapi.baton.v1.BatonServiceHelloRequest.BuildInfo + (*BatonServiceHelloRequest_OSInfo)(nil), // 39: c1.connectorapi.baton.v1.BatonServiceHelloRequest.OSInfo + (*BatonServiceUploadAssetRequest_UploadMetadata)(nil), // 40: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadMetadata + (*BatonServiceUploadAssetRequest_UploadData)(nil), // 41: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadData + (*BatonServiceUploadAssetRequest_UploadEOF)(nil), // 42: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadEOF + (*BatonServiceFinishTaskRequest_Error)(nil), // 43: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Error + (*BatonServiceFinishTaskRequest_Success)(nil), // 44: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Success + (*v2.ConnectorMetadata)(nil), // 45: c1.connector.v2.ConnectorMetadata + (*anypb.Any)(nil), // 46: google.protobuf.Any + (*durationpb.Duration)(nil), // 47: google.protobuf.Duration + (*status.Status)(nil), // 48: google.rpc.Status + (*v2.Resource)(nil), // 49: c1.connector.v2.Resource + (*timestamppb.Timestamp)(nil), // 50: google.protobuf.Timestamp + (*v2.Entitlement)(nil), // 51: c1.connector.v2.Entitlement + (*v2.Grant)(nil), // 52: c1.connector.v2.Grant + (*v2.AccountInfo)(nil), // 53: c1.connector.v2.AccountInfo + (*v2.CredentialOptions)(nil), // 54: c1.connector.v2.CredentialOptions + (*v2.EncryptionConfig)(nil), // 55: c1.connector.v2.EncryptionConfig + (*v2.ResourceId)(nil), // 56: c1.connector.v2.ResourceId + (*v2.TicketRequest)(nil), // 57: c1.connector.v2.TicketRequest + (*v2.TicketSchema)(nil), // 58: c1.connector.v2.TicketSchema + (*structpb.Struct)(nil), // 59: google.protobuf.Struct } var file_c1_connectorapi_baton_v1_baton_proto_depIdxs = []int32{ 0, // 0: c1.connectorapi.baton.v1.Task.status:type_name -> c1.connectorapi.baton.v1.Task.Status 14, // 1: c1.connectorapi.baton.v1.Task.none:type_name -> c1.connectorapi.baton.v1.Task.NoneTask 15, // 2: c1.connectorapi.baton.v1.Task.hello:type_name -> c1.connectorapi.baton.v1.Task.HelloTask 16, // 3: c1.connectorapi.baton.v1.Task.sync_full:type_name -> c1.connectorapi.baton.v1.Task.SyncFullTask - 18, // 4: c1.connectorapi.baton.v1.Task.grant:type_name -> c1.connectorapi.baton.v1.Task.GrantTask - 19, // 5: c1.connectorapi.baton.v1.Task.revoke:type_name -> c1.connectorapi.baton.v1.Task.RevokeTask - 20, // 6: c1.connectorapi.baton.v1.Task.create_account:type_name -> c1.connectorapi.baton.v1.Task.CreateAccountTask - 21, // 7: c1.connectorapi.baton.v1.Task.create_resource:type_name -> c1.connectorapi.baton.v1.Task.CreateResourceTask - 22, // 8: c1.connectorapi.baton.v1.Task.delete_resource:type_name -> c1.connectorapi.baton.v1.Task.DeleteResourceTask - 23, // 9: c1.connectorapi.baton.v1.Task.rotate_credentials:type_name -> c1.connectorapi.baton.v1.Task.RotateCredentialsTask - 17, // 10: c1.connectorapi.baton.v1.Task.event_feed:type_name -> c1.connectorapi.baton.v1.Task.EventFeedTask - 24, // 11: c1.connectorapi.baton.v1.Task.create_ticket_task:type_name -> c1.connectorapi.baton.v1.Task.CreateTicketTask - 27, // 12: c1.connectorapi.baton.v1.Task.list_ticket_schemas:type_name -> c1.connectorapi.baton.v1.Task.ListTicketSchemasTask - 28, // 13: c1.connectorapi.baton.v1.Task.get_ticket:type_name -> c1.connectorapi.baton.v1.Task.GetTicketTask - 25, // 14: c1.connectorapi.baton.v1.Task.bulk_create_tickets:type_name -> c1.connectorapi.baton.v1.Task.BulkCreateTicketsTask - 26, // 15: c1.connectorapi.baton.v1.Task.bulk_get_tickets:type_name -> c1.connectorapi.baton.v1.Task.BulkGetTicketsTask - 29, // 16: c1.connectorapi.baton.v1.Task.action_list_schemas:type_name -> c1.connectorapi.baton.v1.Task.ActionListSchemasTask - 30, // 17: c1.connectorapi.baton.v1.Task.action_get_schema:type_name -> c1.connectorapi.baton.v1.Task.ActionGetSchemaTask - 31, // 18: c1.connectorapi.baton.v1.Task.action_invoke:type_name -> c1.connectorapi.baton.v1.Task.ActionInvokeTask - 32, // 19: c1.connectorapi.baton.v1.Task.action_status:type_name -> c1.connectorapi.baton.v1.Task.ActionStatusTask - 33, // 20: c1.connectorapi.baton.v1.Task.create_sync_diff:type_name -> c1.connectorapi.baton.v1.Task.CreateSyncDiffTask - 34, // 21: c1.connectorapi.baton.v1.Task.compact_syncs:type_name -> c1.connectorapi.baton.v1.Task.CompactSyncs - 36, // 22: c1.connectorapi.baton.v1.BatonServiceHelloRequest.build_info:type_name -> c1.connectorapi.baton.v1.BatonServiceHelloRequest.BuildInfo - 37, // 23: c1.connectorapi.baton.v1.BatonServiceHelloRequest.os_info:type_name -> c1.connectorapi.baton.v1.BatonServiceHelloRequest.OSInfo - 43, // 24: c1.connectorapi.baton.v1.BatonServiceHelloRequest.connector_metadata:type_name -> c1.connector.v2.ConnectorMetadata - 44, // 25: c1.connectorapi.baton.v1.BatonServiceHelloRequest.annotations:type_name -> google.protobuf.Any - 44, // 26: c1.connectorapi.baton.v1.BatonServiceHelloResponse.annotations:type_name -> google.protobuf.Any - 1, // 27: c1.connectorapi.baton.v1.BatonServiceGetTaskResponse.task:type_name -> c1.connectorapi.baton.v1.Task - 45, // 28: c1.connectorapi.baton.v1.BatonServiceGetTaskResponse.next_poll:type_name -> google.protobuf.Duration - 45, // 29: c1.connectorapi.baton.v1.BatonServiceGetTaskResponse.next_heartbeat:type_name -> google.protobuf.Duration - 44, // 30: c1.connectorapi.baton.v1.BatonServiceGetTaskResponse.annotations:type_name -> google.protobuf.Any - 44, // 31: c1.connectorapi.baton.v1.BatonServiceHeartbeatRequest.annotations:type_name -> google.protobuf.Any - 45, // 32: c1.connectorapi.baton.v1.BatonServiceHeartbeatResponse.next_heartbeat:type_name -> google.protobuf.Duration - 44, // 33: c1.connectorapi.baton.v1.BatonServiceHeartbeatResponse.annotations:type_name -> google.protobuf.Any - 38, // 34: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.metadata:type_name -> c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadMetadata - 39, // 35: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.data:type_name -> c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadData - 40, // 36: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.eof:type_name -> c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadEOF - 44, // 37: c1.connectorapi.baton.v1.BatonServiceUploadAssetResponse.annotations:type_name -> google.protobuf.Any - 46, // 38: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.status:type_name -> google.rpc.Status - 41, // 39: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.error:type_name -> c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Error - 42, // 40: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.success:type_name -> c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Success - 44, // 41: c1.connectorapi.baton.v1.BatonServiceFinishTaskResponse.annotations:type_name -> google.protobuf.Any - 44, // 42: c1.connectorapi.baton.v1.Task.NoneTask.annotations:type_name -> google.protobuf.Any - 44, // 43: c1.connectorapi.baton.v1.Task.HelloTask.annotations:type_name -> google.protobuf.Any - 44, // 44: c1.connectorapi.baton.v1.Task.SyncFullTask.annotations:type_name -> google.protobuf.Any - 47, // 45: c1.connectorapi.baton.v1.Task.SyncFullTask.targeted_sync_resources:type_name -> c1.connector.v2.Resource - 44, // 46: c1.connectorapi.baton.v1.Task.EventFeedTask.annotations:type_name -> google.protobuf.Any - 48, // 47: c1.connectorapi.baton.v1.Task.EventFeedTask.start_at:type_name -> google.protobuf.Timestamp - 49, // 48: c1.connectorapi.baton.v1.Task.GrantTask.entitlement:type_name -> c1.connector.v2.Entitlement - 47, // 49: c1.connectorapi.baton.v1.Task.GrantTask.principal:type_name -> c1.connector.v2.Resource - 44, // 50: c1.connectorapi.baton.v1.Task.GrantTask.annotations:type_name -> google.protobuf.Any - 45, // 51: c1.connectorapi.baton.v1.Task.GrantTask.duration:type_name -> google.protobuf.Duration - 50, // 52: c1.connectorapi.baton.v1.Task.RevokeTask.grant:type_name -> c1.connector.v2.Grant - 44, // 53: c1.connectorapi.baton.v1.Task.RevokeTask.annotations:type_name -> google.protobuf.Any - 51, // 54: c1.connectorapi.baton.v1.Task.CreateAccountTask.account_info:type_name -> c1.connector.v2.AccountInfo - 52, // 55: c1.connectorapi.baton.v1.Task.CreateAccountTask.credential_options:type_name -> c1.connector.v2.CredentialOptions - 53, // 56: c1.connectorapi.baton.v1.Task.CreateAccountTask.encryption_configs:type_name -> c1.connector.v2.EncryptionConfig - 47, // 57: c1.connectorapi.baton.v1.Task.CreateResourceTask.resource:type_name -> c1.connector.v2.Resource - 54, // 58: c1.connectorapi.baton.v1.Task.DeleteResourceTask.resource_id:type_name -> c1.connector.v2.ResourceId - 54, // 59: c1.connectorapi.baton.v1.Task.DeleteResourceTask.parent_resource_id:type_name -> c1.connector.v2.ResourceId - 54, // 60: c1.connectorapi.baton.v1.Task.RotateCredentialsTask.resource_id:type_name -> c1.connector.v2.ResourceId - 52, // 61: c1.connectorapi.baton.v1.Task.RotateCredentialsTask.credential_options:type_name -> c1.connector.v2.CredentialOptions - 53, // 62: c1.connectorapi.baton.v1.Task.RotateCredentialsTask.encryption_configs:type_name -> c1.connector.v2.EncryptionConfig - 55, // 63: c1.connectorapi.baton.v1.Task.CreateTicketTask.ticket_request:type_name -> c1.connector.v2.TicketRequest - 56, // 64: c1.connectorapi.baton.v1.Task.CreateTicketTask.ticket_schema:type_name -> c1.connector.v2.TicketSchema - 44, // 65: c1.connectorapi.baton.v1.Task.CreateTicketTask.annotations:type_name -> google.protobuf.Any - 24, // 66: c1.connectorapi.baton.v1.Task.BulkCreateTicketsTask.ticket_requests:type_name -> c1.connectorapi.baton.v1.Task.CreateTicketTask - 28, // 67: c1.connectorapi.baton.v1.Task.BulkGetTicketsTask.ticket_requests:type_name -> c1.connectorapi.baton.v1.Task.GetTicketTask - 44, // 68: c1.connectorapi.baton.v1.Task.ListTicketSchemasTask.annotations:type_name -> google.protobuf.Any - 44, // 69: c1.connectorapi.baton.v1.Task.GetTicketTask.annotations:type_name -> google.protobuf.Any - 44, // 70: c1.connectorapi.baton.v1.Task.ActionListSchemasTask.annotations:type_name -> google.protobuf.Any - 44, // 71: c1.connectorapi.baton.v1.Task.ActionGetSchemaTask.annotations:type_name -> google.protobuf.Any - 57, // 72: c1.connectorapi.baton.v1.Task.ActionInvokeTask.args:type_name -> google.protobuf.Struct - 44, // 73: c1.connectorapi.baton.v1.Task.ActionInvokeTask.annotations:type_name -> google.protobuf.Any - 44, // 74: c1.connectorapi.baton.v1.Task.ActionStatusTask.annotations:type_name -> google.protobuf.Any - 44, // 75: c1.connectorapi.baton.v1.Task.CreateSyncDiffTask.annotations:type_name -> google.protobuf.Any - 35, // 76: c1.connectorapi.baton.v1.Task.CompactSyncs.compactable_syncs:type_name -> c1.connectorapi.baton.v1.Task.CompactSyncs.CompactableSync - 44, // 77: c1.connectorapi.baton.v1.Task.CompactSyncs.annotations:type_name -> google.protobuf.Any - 44, // 78: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadMetadata.annotations:type_name -> google.protobuf.Any - 44, // 79: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadEOF.annotations:type_name -> google.protobuf.Any - 44, // 80: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Error.annotations:type_name -> google.protobuf.Any - 44, // 81: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Error.response:type_name -> google.protobuf.Any - 44, // 82: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Success.annotations:type_name -> google.protobuf.Any - 44, // 83: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Success.response:type_name -> google.protobuf.Any - 2, // 84: c1.connectorapi.baton.v1.BatonService.Hello:input_type -> c1.connectorapi.baton.v1.BatonServiceHelloRequest - 4, // 85: c1.connectorapi.baton.v1.BatonService.GetTask:input_type -> c1.connectorapi.baton.v1.BatonServiceGetTaskRequest - 6, // 86: c1.connectorapi.baton.v1.BatonService.Heartbeat:input_type -> c1.connectorapi.baton.v1.BatonServiceHeartbeatRequest - 10, // 87: c1.connectorapi.baton.v1.BatonService.FinishTask:input_type -> c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest - 8, // 88: c1.connectorapi.baton.v1.BatonService.UploadAsset:input_type -> c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest - 12, // 89: c1.connectorapi.baton.v1.BatonService.StartDebugging:input_type -> c1.connectorapi.baton.v1.StartDebuggingRequest - 3, // 90: c1.connectorapi.baton.v1.BatonService.Hello:output_type -> c1.connectorapi.baton.v1.BatonServiceHelloResponse - 5, // 91: c1.connectorapi.baton.v1.BatonService.GetTask:output_type -> c1.connectorapi.baton.v1.BatonServiceGetTaskResponse - 7, // 92: c1.connectorapi.baton.v1.BatonService.Heartbeat:output_type -> c1.connectorapi.baton.v1.BatonServiceHeartbeatResponse - 11, // 93: c1.connectorapi.baton.v1.BatonService.FinishTask:output_type -> c1.connectorapi.baton.v1.BatonServiceFinishTaskResponse - 9, // 94: c1.connectorapi.baton.v1.BatonService.UploadAsset:output_type -> c1.connectorapi.baton.v1.BatonServiceUploadAssetResponse - 13, // 95: c1.connectorapi.baton.v1.BatonService.StartDebugging:output_type -> c1.connectorapi.baton.v1.StartDebuggingResponse - 90, // [90:96] is the sub-list for method output_type - 84, // [84:90] is the sub-list for method input_type - 84, // [84:84] is the sub-list for extension type_name - 84, // [84:84] is the sub-list for extension extendee - 0, // [0:84] is the sub-list for field type_name + 19, // 4: c1.connectorapi.baton.v1.Task.grant:type_name -> c1.connectorapi.baton.v1.Task.GrantTask + 20, // 5: c1.connectorapi.baton.v1.Task.revoke:type_name -> c1.connectorapi.baton.v1.Task.RevokeTask + 21, // 6: c1.connectorapi.baton.v1.Task.create_account:type_name -> c1.connectorapi.baton.v1.Task.CreateAccountTask + 22, // 7: c1.connectorapi.baton.v1.Task.create_resource:type_name -> c1.connectorapi.baton.v1.Task.CreateResourceTask + 23, // 8: c1.connectorapi.baton.v1.Task.delete_resource:type_name -> c1.connectorapi.baton.v1.Task.DeleteResourceTask + 24, // 9: c1.connectorapi.baton.v1.Task.rotate_credentials:type_name -> c1.connectorapi.baton.v1.Task.RotateCredentialsTask + 18, // 10: c1.connectorapi.baton.v1.Task.event_feed:type_name -> c1.connectorapi.baton.v1.Task.EventFeedTask + 25, // 11: c1.connectorapi.baton.v1.Task.create_ticket_task:type_name -> c1.connectorapi.baton.v1.Task.CreateTicketTask + 28, // 12: c1.connectorapi.baton.v1.Task.list_ticket_schemas:type_name -> c1.connectorapi.baton.v1.Task.ListTicketSchemasTask + 29, // 13: c1.connectorapi.baton.v1.Task.get_ticket:type_name -> c1.connectorapi.baton.v1.Task.GetTicketTask + 26, // 14: c1.connectorapi.baton.v1.Task.bulk_create_tickets:type_name -> c1.connectorapi.baton.v1.Task.BulkCreateTicketsTask + 27, // 15: c1.connectorapi.baton.v1.Task.bulk_get_tickets:type_name -> c1.connectorapi.baton.v1.Task.BulkGetTicketsTask + 30, // 16: c1.connectorapi.baton.v1.Task.action_list_schemas:type_name -> c1.connectorapi.baton.v1.Task.ActionListSchemasTask + 31, // 17: c1.connectorapi.baton.v1.Task.action_get_schema:type_name -> c1.connectorapi.baton.v1.Task.ActionGetSchemaTask + 32, // 18: c1.connectorapi.baton.v1.Task.action_invoke:type_name -> c1.connectorapi.baton.v1.Task.ActionInvokeTask + 33, // 19: c1.connectorapi.baton.v1.Task.action_status:type_name -> c1.connectorapi.baton.v1.Task.ActionStatusTask + 34, // 20: c1.connectorapi.baton.v1.Task.create_sync_diff:type_name -> c1.connectorapi.baton.v1.Task.CreateSyncDiffTask + 35, // 21: c1.connectorapi.baton.v1.Task.compact_syncs:type_name -> c1.connectorapi.baton.v1.Task.CompactSyncs + 17, // 22: c1.connectorapi.baton.v1.Task.sync_partial:type_name -> c1.connectorapi.baton.v1.Task.SyncPartialTask + 38, // 23: c1.connectorapi.baton.v1.BatonServiceHelloRequest.build_info:type_name -> c1.connectorapi.baton.v1.BatonServiceHelloRequest.BuildInfo + 39, // 24: c1.connectorapi.baton.v1.BatonServiceHelloRequest.os_info:type_name -> c1.connectorapi.baton.v1.BatonServiceHelloRequest.OSInfo + 45, // 25: c1.connectorapi.baton.v1.BatonServiceHelloRequest.connector_metadata:type_name -> c1.connector.v2.ConnectorMetadata + 46, // 26: c1.connectorapi.baton.v1.BatonServiceHelloRequest.annotations:type_name -> google.protobuf.Any + 46, // 27: c1.connectorapi.baton.v1.BatonServiceHelloResponse.annotations:type_name -> google.protobuf.Any + 1, // 28: c1.connectorapi.baton.v1.BatonServiceGetTaskResponse.task:type_name -> c1.connectorapi.baton.v1.Task + 47, // 29: c1.connectorapi.baton.v1.BatonServiceGetTaskResponse.next_poll:type_name -> google.protobuf.Duration + 47, // 30: c1.connectorapi.baton.v1.BatonServiceGetTaskResponse.next_heartbeat:type_name -> google.protobuf.Duration + 46, // 31: c1.connectorapi.baton.v1.BatonServiceGetTaskResponse.annotations:type_name -> google.protobuf.Any + 46, // 32: c1.connectorapi.baton.v1.BatonServiceHeartbeatRequest.annotations:type_name -> google.protobuf.Any + 47, // 33: c1.connectorapi.baton.v1.BatonServiceHeartbeatResponse.next_heartbeat:type_name -> google.protobuf.Duration + 46, // 34: c1.connectorapi.baton.v1.BatonServiceHeartbeatResponse.annotations:type_name -> google.protobuf.Any + 40, // 35: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.metadata:type_name -> c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadMetadata + 41, // 36: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.data:type_name -> c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadData + 42, // 37: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.eof:type_name -> c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadEOF + 46, // 38: c1.connectorapi.baton.v1.BatonServiceUploadAssetResponse.annotations:type_name -> google.protobuf.Any + 48, // 39: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.status:type_name -> google.rpc.Status + 43, // 40: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.error:type_name -> c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Error + 44, // 41: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.success:type_name -> c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Success + 46, // 42: c1.connectorapi.baton.v1.BatonServiceFinishTaskResponse.annotations:type_name -> google.protobuf.Any + 46, // 43: c1.connectorapi.baton.v1.Task.NoneTask.annotations:type_name -> google.protobuf.Any + 46, // 44: c1.connectorapi.baton.v1.Task.HelloTask.annotations:type_name -> google.protobuf.Any + 46, // 45: c1.connectorapi.baton.v1.Task.SyncFullTask.annotations:type_name -> google.protobuf.Any + 49, // 46: c1.connectorapi.baton.v1.Task.SyncFullTask.targeted_sync_resources:type_name -> c1.connector.v2.Resource + 46, // 47: c1.connectorapi.baton.v1.Task.SyncPartialTask.annotations:type_name -> google.protobuf.Any + 36, // 48: c1.connectorapi.baton.v1.Task.SyncPartialTask.targeted_resources:type_name -> c1.connectorapi.baton.v1.Task.SyncPartialTask.TargetedResources + 46, // 49: c1.connectorapi.baton.v1.Task.EventFeedTask.annotations:type_name -> google.protobuf.Any + 50, // 50: c1.connectorapi.baton.v1.Task.EventFeedTask.start_at:type_name -> google.protobuf.Timestamp + 51, // 51: c1.connectorapi.baton.v1.Task.GrantTask.entitlement:type_name -> c1.connector.v2.Entitlement + 49, // 52: c1.connectorapi.baton.v1.Task.GrantTask.principal:type_name -> c1.connector.v2.Resource + 46, // 53: c1.connectorapi.baton.v1.Task.GrantTask.annotations:type_name -> google.protobuf.Any + 47, // 54: c1.connectorapi.baton.v1.Task.GrantTask.duration:type_name -> google.protobuf.Duration + 52, // 55: c1.connectorapi.baton.v1.Task.RevokeTask.grant:type_name -> c1.connector.v2.Grant + 46, // 56: c1.connectorapi.baton.v1.Task.RevokeTask.annotations:type_name -> google.protobuf.Any + 53, // 57: c1.connectorapi.baton.v1.Task.CreateAccountTask.account_info:type_name -> c1.connector.v2.AccountInfo + 54, // 58: c1.connectorapi.baton.v1.Task.CreateAccountTask.credential_options:type_name -> c1.connector.v2.CredentialOptions + 55, // 59: c1.connectorapi.baton.v1.Task.CreateAccountTask.encryption_configs:type_name -> c1.connector.v2.EncryptionConfig + 49, // 60: c1.connectorapi.baton.v1.Task.CreateResourceTask.resource:type_name -> c1.connector.v2.Resource + 56, // 61: c1.connectorapi.baton.v1.Task.DeleteResourceTask.resource_id:type_name -> c1.connector.v2.ResourceId + 56, // 62: c1.connectorapi.baton.v1.Task.DeleteResourceTask.parent_resource_id:type_name -> c1.connector.v2.ResourceId + 56, // 63: c1.connectorapi.baton.v1.Task.RotateCredentialsTask.resource_id:type_name -> c1.connector.v2.ResourceId + 54, // 64: c1.connectorapi.baton.v1.Task.RotateCredentialsTask.credential_options:type_name -> c1.connector.v2.CredentialOptions + 55, // 65: c1.connectorapi.baton.v1.Task.RotateCredentialsTask.encryption_configs:type_name -> c1.connector.v2.EncryptionConfig + 57, // 66: c1.connectorapi.baton.v1.Task.CreateTicketTask.ticket_request:type_name -> c1.connector.v2.TicketRequest + 58, // 67: c1.connectorapi.baton.v1.Task.CreateTicketTask.ticket_schema:type_name -> c1.connector.v2.TicketSchema + 46, // 68: c1.connectorapi.baton.v1.Task.CreateTicketTask.annotations:type_name -> google.protobuf.Any + 25, // 69: c1.connectorapi.baton.v1.Task.BulkCreateTicketsTask.ticket_requests:type_name -> c1.connectorapi.baton.v1.Task.CreateTicketTask + 29, // 70: c1.connectorapi.baton.v1.Task.BulkGetTicketsTask.ticket_requests:type_name -> c1.connectorapi.baton.v1.Task.GetTicketTask + 46, // 71: c1.connectorapi.baton.v1.Task.ListTicketSchemasTask.annotations:type_name -> google.protobuf.Any + 46, // 72: c1.connectorapi.baton.v1.Task.GetTicketTask.annotations:type_name -> google.protobuf.Any + 46, // 73: c1.connectorapi.baton.v1.Task.ActionListSchemasTask.annotations:type_name -> google.protobuf.Any + 46, // 74: c1.connectorapi.baton.v1.Task.ActionGetSchemaTask.annotations:type_name -> google.protobuf.Any + 59, // 75: c1.connectorapi.baton.v1.Task.ActionInvokeTask.args:type_name -> google.protobuf.Struct + 46, // 76: c1.connectorapi.baton.v1.Task.ActionInvokeTask.annotations:type_name -> google.protobuf.Any + 46, // 77: c1.connectorapi.baton.v1.Task.ActionStatusTask.annotations:type_name -> google.protobuf.Any + 46, // 78: c1.connectorapi.baton.v1.Task.CreateSyncDiffTask.annotations:type_name -> google.protobuf.Any + 37, // 79: c1.connectorapi.baton.v1.Task.CompactSyncs.compactable_syncs:type_name -> c1.connectorapi.baton.v1.Task.CompactSyncs.CompactableSync + 46, // 80: c1.connectorapi.baton.v1.Task.CompactSyncs.annotations:type_name -> google.protobuf.Any + 49, // 81: c1.connectorapi.baton.v1.Task.SyncPartialTask.TargetedResources.resources:type_name -> c1.connector.v2.Resource + 46, // 82: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadMetadata.annotations:type_name -> google.protobuf.Any + 46, // 83: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadEOF.annotations:type_name -> google.protobuf.Any + 46, // 84: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Error.annotations:type_name -> google.protobuf.Any + 46, // 85: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Error.response:type_name -> google.protobuf.Any + 46, // 86: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Success.annotations:type_name -> google.protobuf.Any + 46, // 87: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Success.response:type_name -> google.protobuf.Any + 2, // 88: c1.connectorapi.baton.v1.BatonService.Hello:input_type -> c1.connectorapi.baton.v1.BatonServiceHelloRequest + 4, // 89: c1.connectorapi.baton.v1.BatonService.GetTask:input_type -> c1.connectorapi.baton.v1.BatonServiceGetTaskRequest + 6, // 90: c1.connectorapi.baton.v1.BatonService.Heartbeat:input_type -> c1.connectorapi.baton.v1.BatonServiceHeartbeatRequest + 10, // 91: c1.connectorapi.baton.v1.BatonService.FinishTask:input_type -> c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest + 8, // 92: c1.connectorapi.baton.v1.BatonService.UploadAsset:input_type -> c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest + 12, // 93: c1.connectorapi.baton.v1.BatonService.StartDebugging:input_type -> c1.connectorapi.baton.v1.StartDebuggingRequest + 3, // 94: c1.connectorapi.baton.v1.BatonService.Hello:output_type -> c1.connectorapi.baton.v1.BatonServiceHelloResponse + 5, // 95: c1.connectorapi.baton.v1.BatonService.GetTask:output_type -> c1.connectorapi.baton.v1.BatonServiceGetTaskResponse + 7, // 96: c1.connectorapi.baton.v1.BatonService.Heartbeat:output_type -> c1.connectorapi.baton.v1.BatonServiceHeartbeatResponse + 11, // 97: c1.connectorapi.baton.v1.BatonService.FinishTask:output_type -> c1.connectorapi.baton.v1.BatonServiceFinishTaskResponse + 9, // 98: c1.connectorapi.baton.v1.BatonService.UploadAsset:output_type -> c1.connectorapi.baton.v1.BatonServiceUploadAssetResponse + 13, // 99: c1.connectorapi.baton.v1.BatonService.StartDebugging:output_type -> c1.connectorapi.baton.v1.StartDebuggingResponse + 94, // [94:100] is the sub-list for method output_type + 88, // [88:94] is the sub-list for method input_type + 88, // [88:88] is the sub-list for extension type_name + 88, // [88:88] is the sub-list for extension extendee + 0, // [0:88] is the sub-list for field type_name } func init() { file_c1_connectorapi_baton_v1_baton_proto_init() } @@ -5242,6 +5557,7 @@ func file_c1_connectorapi_baton_v1_baton_proto_init() { (*Task_ActionStatus)(nil), (*Task_CreateSyncDiff)(nil), (*Task_CompactSyncs_)(nil), + (*Task_SyncPartial)(nil), } file_c1_connectorapi_baton_v1_baton_proto_msgTypes[7].OneofWrappers = []any{ (*BatonServiceUploadAssetRequest_Metadata)(nil), @@ -5252,13 +5568,17 @@ func file_c1_connectorapi_baton_v1_baton_proto_init() { (*BatonServiceFinishTaskRequest_Error_)(nil), (*BatonServiceFinishTaskRequest_Success_)(nil), } + file_c1_connectorapi_baton_v1_baton_proto_msgTypes[16].OneofWrappers = []any{ + (*Task_SyncPartialTask_TargetedResources_)(nil), + (*Task_SyncPartialTask_ResourceTypeId)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_c1_connectorapi_baton_v1_baton_proto_rawDesc), len(file_c1_connectorapi_baton_v1_baton_proto_rawDesc)), NumEnums: 1, - NumMessages: 42, + NumMessages: 44, NumExtensions: 0, NumServices: 1, }, diff --git a/pb/c1/connectorapi/baton/v1/baton.pb.validate.go b/pb/c1/connectorapi/baton/v1/baton.pb.validate.go index 3e9a11770..d84430efd 100644 --- a/pb/c1/connectorapi/baton/v1/baton.pb.validate.go +++ b/pb/c1/connectorapi/baton/v1/baton.pb.validate.go @@ -924,6 +924,47 @@ func (m *Task) validate(all bool) error { } } + case *Task_SyncPartial: + if v == nil { + err := TaskValidationError{ + field: "TaskType", + reason: "oneof value cannot be a typed-nil", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetSyncPartial()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, TaskValidationError{ + field: "SyncPartial", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, TaskValidationError{ + field: "SyncPartial", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSyncPartial()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return TaskValidationError{ + field: "SyncPartial", + reason: "embedded message failed validation", + cause: err, + } + } + } + default: _ = v // ensures v is used } @@ -3532,6 +3573,200 @@ var _ interface { ErrorName() string } = Task_SyncFullTaskValidationError{} +// Validate checks the field values on Task_SyncPartialTask with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *Task_SyncPartialTask) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Task_SyncPartialTask with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// Task_SyncPartialTaskMultiError, or nil if none found. +func (m *Task_SyncPartialTask) ValidateAll() error { + return m.validate(true) +} + +func (m *Task_SyncPartialTask) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetAnnotations() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, Task_SyncPartialTaskValidationError{ + field: fmt.Sprintf("Annotations[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, Task_SyncPartialTaskValidationError{ + field: fmt.Sprintf("Annotations[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return Task_SyncPartialTaskValidationError{ + field: fmt.Sprintf("Annotations[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + switch v := m.SyncMode.(type) { + case *Task_SyncPartialTask_TargetedResources_: + if v == nil { + err := Task_SyncPartialTaskValidationError{ + field: "SyncMode", + reason: "oneof value cannot be a typed-nil", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetTargetedResources()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, Task_SyncPartialTaskValidationError{ + field: "TargetedResources", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, Task_SyncPartialTaskValidationError{ + field: "TargetedResources", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTargetedResources()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return Task_SyncPartialTaskValidationError{ + field: "TargetedResources", + reason: "embedded message failed validation", + cause: err, + } + } + } + + case *Task_SyncPartialTask_ResourceTypeId: + if v == nil { + err := Task_SyncPartialTaskValidationError{ + field: "SyncMode", + reason: "oneof value cannot be a typed-nil", + } + if !all { + return err + } + errors = append(errors, err) + } + // no validation rules for ResourceTypeId + default: + _ = v // ensures v is used + } + + if len(errors) > 0 { + return Task_SyncPartialTaskMultiError(errors) + } + + return nil +} + +// Task_SyncPartialTaskMultiError is an error wrapping multiple validation +// errors returned by Task_SyncPartialTask.ValidateAll() if the designated +// constraints aren't met. +type Task_SyncPartialTaskMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m Task_SyncPartialTaskMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m Task_SyncPartialTaskMultiError) AllErrors() []error { return m } + +// Task_SyncPartialTaskValidationError is the validation error returned by +// Task_SyncPartialTask.Validate if the designated constraints aren't met. +type Task_SyncPartialTaskValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e Task_SyncPartialTaskValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e Task_SyncPartialTaskValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e Task_SyncPartialTaskValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e Task_SyncPartialTaskValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e Task_SyncPartialTaskValidationError) ErrorName() string { + return "Task_SyncPartialTaskValidationError" +} + +// Error satisfies the builtin error interface +func (e Task_SyncPartialTaskValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sTask_SyncPartialTask.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = Task_SyncPartialTaskValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = Task_SyncPartialTaskValidationError{} + // Validate checks the field values on Task_EventFeedTask with the rules // defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. @@ -6391,6 +6626,146 @@ var _ interface { ErrorName() string } = Task_CompactSyncsValidationError{} +// Validate checks the field values on Task_SyncPartialTask_TargetedResources +// with the rules defined in the proto definition for this message. If any +// rules are violated, the first error encountered is returned, or nil if +// there are no violations. +func (m *Task_SyncPartialTask_TargetedResources) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on +// Task_SyncPartialTask_TargetedResources with the rules defined in the proto +// definition for this message. If any rules are violated, the result is a +// list of violation errors wrapped in +// Task_SyncPartialTask_TargetedResourcesMultiError, or nil if none found. +func (m *Task_SyncPartialTask_TargetedResources) ValidateAll() error { + return m.validate(true) +} + +func (m *Task_SyncPartialTask_TargetedResources) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetResources() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, Task_SyncPartialTask_TargetedResourcesValidationError{ + field: fmt.Sprintf("Resources[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, Task_SyncPartialTask_TargetedResourcesValidationError{ + field: fmt.Sprintf("Resources[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return Task_SyncPartialTask_TargetedResourcesValidationError{ + field: fmt.Sprintf("Resources[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if len(errors) > 0 { + return Task_SyncPartialTask_TargetedResourcesMultiError(errors) + } + + return nil +} + +// Task_SyncPartialTask_TargetedResourcesMultiError is an error wrapping +// multiple validation errors returned by +// Task_SyncPartialTask_TargetedResources.ValidateAll() if the designated +// constraints aren't met. +type Task_SyncPartialTask_TargetedResourcesMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m Task_SyncPartialTask_TargetedResourcesMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m Task_SyncPartialTask_TargetedResourcesMultiError) AllErrors() []error { return m } + +// Task_SyncPartialTask_TargetedResourcesValidationError is the validation +// error returned by Task_SyncPartialTask_TargetedResources.Validate if the +// designated constraints aren't met. +type Task_SyncPartialTask_TargetedResourcesValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e Task_SyncPartialTask_TargetedResourcesValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e Task_SyncPartialTask_TargetedResourcesValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e Task_SyncPartialTask_TargetedResourcesValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e Task_SyncPartialTask_TargetedResourcesValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e Task_SyncPartialTask_TargetedResourcesValidationError) ErrorName() string { + return "Task_SyncPartialTask_TargetedResourcesValidationError" +} + +// Error satisfies the builtin error interface +func (e Task_SyncPartialTask_TargetedResourcesValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sTask_SyncPartialTask_TargetedResources.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = Task_SyncPartialTask_TargetedResourcesValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = Task_SyncPartialTask_TargetedResourcesValidationError{} + // Validate checks the field values on Task_CompactSyncs_CompactableSync with // the rules defined in the proto definition for this message. If any rules // are violated, the first error encountered is returned, or nil if there are diff --git a/pb/c1/connectorapi/baton/v1/baton_protoopaque.pb.go b/pb/c1/connectorapi/baton/v1/baton_protoopaque.pb.go index 3ca4c3e3d..e45049ed4 100644 --- a/pb/c1/connectorapi/baton/v1/baton_protoopaque.pb.go +++ b/pb/c1/connectorapi/baton/v1/baton_protoopaque.pb.go @@ -317,6 +317,15 @@ func (x *Task) GetCompactSyncs() *Task_CompactSyncs { return nil } +func (x *Task) GetSyncPartial() *Task_SyncPartialTask { + if x != nil { + if x, ok := x.xxx_hidden_TaskType.(*task_SyncPartial); ok { + return x.SyncPartial + } + } + return nil +} + func (x *Task) GetDebug() bool { if x != nil { return x.xxx_hidden_Debug @@ -500,6 +509,14 @@ func (x *Task) SetCompactSyncs(v *Task_CompactSyncs) { x.xxx_hidden_TaskType = &task_CompactSyncs_{v} } +func (x *Task) SetSyncPartial(v *Task_SyncPartialTask) { + if v == nil { + x.xxx_hidden_TaskType = nil + return + } + x.xxx_hidden_TaskType = &task_SyncPartial{v} +} + func (x *Task) SetDebug(v bool) { x.xxx_hidden_Debug = v } @@ -679,6 +696,14 @@ func (x *Task) HasCompactSyncs() bool { return ok } +func (x *Task) HasSyncPartial() bool { + if x == nil { + return false + } + _, ok := x.xxx_hidden_TaskType.(*task_SyncPartial) + return ok +} + func (x *Task) ClearTaskType() { x.xxx_hidden_TaskType = nil } @@ -809,6 +834,12 @@ func (x *Task) ClearCompactSyncs() { } } +func (x *Task) ClearSyncPartial() { + if _, ok := x.xxx_hidden_TaskType.(*task_SyncPartial); ok { + x.xxx_hidden_TaskType = nil + } +} + const Task_TaskType_not_set_case case_Task_TaskType = 0 const Task_None_case case_Task_TaskType = 100 const Task_Hello_case case_Task_TaskType = 101 @@ -831,6 +862,7 @@ const Task_ActionInvoke_case case_Task_TaskType = 117 const Task_ActionStatus_case case_Task_TaskType = 118 const Task_CreateSyncDiff_case case_Task_TaskType = 119 const Task_CompactSyncs_case case_Task_TaskType = 120 +const Task_SyncPartial_case case_Task_TaskType = 121 func (x *Task) WhichTaskType() case_Task_TaskType { if x == nil { @@ -879,6 +911,8 @@ func (x *Task) WhichTaskType() case_Task_TaskType { return Task_CreateSyncDiff_case case *task_CompactSyncs_: return Task_CompactSyncs_case + case *task_SyncPartial: + return Task_SyncPartial_case default: return Task_TaskType_not_set_case } @@ -911,6 +945,7 @@ type Task_builder struct { ActionStatus *Task_ActionStatusTask CreateSyncDiff *Task_CreateSyncDiffTask CompactSyncs *Task_CompactSyncs + SyncPartial *Task_SyncPartialTask // -- end of xxx_hidden_TaskType Debug bool } @@ -984,6 +1019,9 @@ func (b0 Task_builder) Build() *Task { if b.CompactSyncs != nil { x.xxx_hidden_TaskType = &task_CompactSyncs_{b.CompactSyncs} } + if b.SyncPartial != nil { + x.xxx_hidden_TaskType = &task_SyncPartial{b.SyncPartial} + } x.xxx_hidden_Debug = b.Debug return m0 } @@ -1086,6 +1124,10 @@ type task_CompactSyncs_ struct { CompactSyncs *Task_CompactSyncs `protobuf:"bytes,120,opt,name=compact_syncs,json=compactSyncs,proto3,oneof"` } +type task_SyncPartial struct { + SyncPartial *Task_SyncPartialTask `protobuf:"bytes,121,opt,name=sync_partial,json=syncPartial,proto3,oneof"` +} + func (*task_None) isTask_TaskType() {} func (*task_Hello) isTask_TaskType() {} @@ -1128,6 +1170,8 @@ func (*task_CreateSyncDiff) isTask_TaskType() {} func (*task_CompactSyncs_) isTask_TaskType() {} +func (*task_SyncPartial) isTask_TaskType() {} + type BatonServiceHelloRequest struct { state protoimpl.MessageState `protogen:"opaque.v1"` xxx_hidden_HostId string `protobuf:"bytes,1,opt,name=host_id,json=hostId,proto3"` @@ -2604,6 +2648,196 @@ func (b0 Task_SyncFullTask_builder) Build() *Task_SyncFullTask { return m0 } +// SyncPartialTask is a partial sync task that syncs either targeted resources or a single resource type. +// When using targeted_resources, entitlements and grants are included. +// When using resource_type_id, only resources are synced (entitlements and grants are skipped). +type Task_SyncPartialTask struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Annotations *[]*anypb.Any `protobuf:"bytes,1,rep,name=annotations,proto3"` + xxx_hidden_SyncMode isTask_SyncPartialTask_SyncMode `protobuf_oneof:"sync_mode"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Task_SyncPartialTask) Reset() { + *x = Task_SyncPartialTask{} + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Task_SyncPartialTask) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Task_SyncPartialTask) ProtoMessage() {} + +func (x *Task_SyncPartialTask) ProtoReflect() protoreflect.Message { + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Task_SyncPartialTask) GetAnnotations() []*anypb.Any { + if x != nil { + if x.xxx_hidden_Annotations != nil { + return *x.xxx_hidden_Annotations + } + } + return nil +} + +func (x *Task_SyncPartialTask) GetTargetedResources() *Task_SyncPartialTask_TargetedResources { + if x != nil { + if x, ok := x.xxx_hidden_SyncMode.(*task_SyncPartialTask_TargetedResources_); ok { + return x.TargetedResources + } + } + return nil +} + +func (x *Task_SyncPartialTask) GetResourceTypeId() string { + if x != nil { + if x, ok := x.xxx_hidden_SyncMode.(*task_SyncPartialTask_ResourceTypeId); ok { + return x.ResourceTypeId + } + } + return "" +} + +func (x *Task_SyncPartialTask) SetAnnotations(v []*anypb.Any) { + x.xxx_hidden_Annotations = &v +} + +func (x *Task_SyncPartialTask) SetTargetedResources(v *Task_SyncPartialTask_TargetedResources) { + if v == nil { + x.xxx_hidden_SyncMode = nil + return + } + x.xxx_hidden_SyncMode = &task_SyncPartialTask_TargetedResources_{v} +} + +func (x *Task_SyncPartialTask) SetResourceTypeId(v string) { + x.xxx_hidden_SyncMode = &task_SyncPartialTask_ResourceTypeId{v} +} + +func (x *Task_SyncPartialTask) HasSyncMode() bool { + if x == nil { + return false + } + return x.xxx_hidden_SyncMode != nil +} + +func (x *Task_SyncPartialTask) HasTargetedResources() bool { + if x == nil { + return false + } + _, ok := x.xxx_hidden_SyncMode.(*task_SyncPartialTask_TargetedResources_) + return ok +} + +func (x *Task_SyncPartialTask) HasResourceTypeId() bool { + if x == nil { + return false + } + _, ok := x.xxx_hidden_SyncMode.(*task_SyncPartialTask_ResourceTypeId) + return ok +} + +func (x *Task_SyncPartialTask) ClearSyncMode() { + x.xxx_hidden_SyncMode = nil +} + +func (x *Task_SyncPartialTask) ClearTargetedResources() { + if _, ok := x.xxx_hidden_SyncMode.(*task_SyncPartialTask_TargetedResources_); ok { + x.xxx_hidden_SyncMode = nil + } +} + +func (x *Task_SyncPartialTask) ClearResourceTypeId() { + if _, ok := x.xxx_hidden_SyncMode.(*task_SyncPartialTask_ResourceTypeId); ok { + x.xxx_hidden_SyncMode = nil + } +} + +const Task_SyncPartialTask_SyncMode_not_set_case case_Task_SyncPartialTask_SyncMode = 0 +const Task_SyncPartialTask_TargetedResources_case case_Task_SyncPartialTask_SyncMode = 2 +const Task_SyncPartialTask_ResourceTypeId_case case_Task_SyncPartialTask_SyncMode = 3 + +func (x *Task_SyncPartialTask) WhichSyncMode() case_Task_SyncPartialTask_SyncMode { + if x == nil { + return Task_SyncPartialTask_SyncMode_not_set_case + } + switch x.xxx_hidden_SyncMode.(type) { + case *task_SyncPartialTask_TargetedResources_: + return Task_SyncPartialTask_TargetedResources_case + case *task_SyncPartialTask_ResourceTypeId: + return Task_SyncPartialTask_ResourceTypeId_case + default: + return Task_SyncPartialTask_SyncMode_not_set_case + } +} + +type Task_SyncPartialTask_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Annotations []*anypb.Any + // Fields of oneof xxx_hidden_SyncMode: + // Targeted resources to sync - includes entitlements and grants + TargetedResources *Task_SyncPartialTask_TargetedResources + // Single resource type to sync - skips entitlements and grants + ResourceTypeId *string + // -- end of xxx_hidden_SyncMode +} + +func (b0 Task_SyncPartialTask_builder) Build() *Task_SyncPartialTask { + m0 := &Task_SyncPartialTask{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Annotations = &b.Annotations + if b.TargetedResources != nil { + x.xxx_hidden_SyncMode = &task_SyncPartialTask_TargetedResources_{b.TargetedResources} + } + if b.ResourceTypeId != nil { + x.xxx_hidden_SyncMode = &task_SyncPartialTask_ResourceTypeId{*b.ResourceTypeId} + } + return m0 +} + +type case_Task_SyncPartialTask_SyncMode protoreflect.FieldNumber + +func (x case_Task_SyncPartialTask_SyncMode) String() string { + md := file_c1_connectorapi_baton_v1_baton_proto_msgTypes[16].Descriptor() + if x == 0 { + return "not set" + } + return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x)) +} + +type isTask_SyncPartialTask_SyncMode interface { + isTask_SyncPartialTask_SyncMode() +} + +type task_SyncPartialTask_TargetedResources_ struct { + // Targeted resources to sync - includes entitlements and grants + TargetedResources *Task_SyncPartialTask_TargetedResources `protobuf:"bytes,2,opt,name=targeted_resources,json=targetedResources,proto3,oneof"` +} + +type task_SyncPartialTask_ResourceTypeId struct { + // Single resource type to sync - skips entitlements and grants + ResourceTypeId string `protobuf:"bytes,3,opt,name=resource_type_id,json=resourceTypeId,proto3,oneof"` +} + +func (*task_SyncPartialTask_TargetedResources_) isTask_SyncPartialTask_SyncMode() {} + +func (*task_SyncPartialTask_ResourceTypeId) isTask_SyncPartialTask_SyncMode() {} + type Task_EventFeedTask struct { state protoimpl.MessageState `protogen:"opaque.v1"` xxx_hidden_Annotations *[]*anypb.Any `protobuf:"bytes,1,rep,name=annotations,proto3"` @@ -2614,7 +2848,7 @@ type Task_EventFeedTask struct { func (x *Task_EventFeedTask) Reset() { *x = Task_EventFeedTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[16] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2626,7 +2860,7 @@ func (x *Task_EventFeedTask) String() string { func (*Task_EventFeedTask) ProtoMessage() {} func (x *Task_EventFeedTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[16] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2700,7 +2934,7 @@ type Task_GrantTask struct { func (x *Task_GrantTask) Reset() { *x = Task_GrantTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[17] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2712,7 +2946,7 @@ func (x *Task_GrantTask) String() string { func (*Task_GrantTask) ProtoMessage() {} func (x *Task_GrantTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[17] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2832,7 +3066,7 @@ type Task_RevokeTask struct { func (x *Task_RevokeTask) Reset() { *x = Task_RevokeTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[18] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2844,7 +3078,7 @@ func (x *Task_RevokeTask) String() string { func (*Task_RevokeTask) ProtoMessage() {} func (x *Task_RevokeTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[18] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2917,7 +3151,7 @@ type Task_CreateAccountTask struct { func (x *Task_CreateAccountTask) Reset() { *x = Task_CreateAccountTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[19] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2929,7 +3163,7 @@ func (x *Task_CreateAccountTask) String() string { func (*Task_CreateAccountTask) ProtoMessage() {} func (x *Task_CreateAccountTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[19] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3024,7 +3258,7 @@ type Task_CreateResourceTask struct { func (x *Task_CreateResourceTask) Reset() { *x = Task_CreateResourceTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[20] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3036,7 +3270,7 @@ func (x *Task_CreateResourceTask) String() string { func (*Task_CreateResourceTask) ProtoMessage() {} func (x *Task_CreateResourceTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[20] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3093,7 +3327,7 @@ type Task_DeleteResourceTask struct { func (x *Task_DeleteResourceTask) Reset() { *x = Task_DeleteResourceTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[21] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3105,7 +3339,7 @@ func (x *Task_DeleteResourceTask) String() string { func (*Task_DeleteResourceTask) ProtoMessage() {} func (x *Task_DeleteResourceTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[21] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3187,7 +3421,7 @@ type Task_RotateCredentialsTask struct { func (x *Task_RotateCredentialsTask) Reset() { *x = Task_RotateCredentialsTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[22] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3199,7 +3433,7 @@ func (x *Task_RotateCredentialsTask) String() string { func (*Task_RotateCredentialsTask) ProtoMessage() {} func (x *Task_RotateCredentialsTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[22] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3296,7 +3530,7 @@ type Task_CreateTicketTask struct { func (x *Task_CreateTicketTask) Reset() { *x = Task_CreateTicketTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[23] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3308,7 +3542,7 @@ func (x *Task_CreateTicketTask) String() string { func (*Task_CreateTicketTask) ProtoMessage() {} func (x *Task_CreateTicketTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[23] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3403,7 +3637,7 @@ type Task_BulkCreateTicketsTask struct { func (x *Task_BulkCreateTicketsTask) Reset() { *x = Task_BulkCreateTicketsTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[24] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3415,7 +3649,7 @@ func (x *Task_BulkCreateTicketsTask) String() string { func (*Task_BulkCreateTicketsTask) ProtoMessage() {} func (x *Task_BulkCreateTicketsTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[24] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3462,7 +3696,7 @@ type Task_BulkGetTicketsTask struct { func (x *Task_BulkGetTicketsTask) Reset() { *x = Task_BulkGetTicketsTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[25] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3474,7 +3708,7 @@ func (x *Task_BulkGetTicketsTask) String() string { func (*Task_BulkGetTicketsTask) ProtoMessage() {} func (x *Task_BulkGetTicketsTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[25] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3521,7 +3755,7 @@ type Task_ListTicketSchemasTask struct { func (x *Task_ListTicketSchemasTask) Reset() { *x = Task_ListTicketSchemasTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[26] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3533,7 +3767,7 @@ func (x *Task_ListTicketSchemasTask) String() string { func (*Task_ListTicketSchemasTask) ProtoMessage() {} func (x *Task_ListTicketSchemasTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[26] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3581,7 +3815,7 @@ type Task_GetTicketTask struct { func (x *Task_GetTicketTask) Reset() { *x = Task_GetTicketTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[27] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3593,7 +3827,7 @@ func (x *Task_GetTicketTask) String() string { func (*Task_GetTicketTask) ProtoMessage() {} func (x *Task_GetTicketTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[27] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3653,7 +3887,7 @@ type Task_ActionListSchemasTask struct { func (x *Task_ActionListSchemasTask) Reset() { *x = Task_ActionListSchemasTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[28] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3665,7 +3899,7 @@ func (x *Task_ActionListSchemasTask) String() string { func (*Task_ActionListSchemasTask) ProtoMessage() {} func (x *Task_ActionListSchemasTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[28] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3713,7 +3947,7 @@ type Task_ActionGetSchemaTask struct { func (x *Task_ActionGetSchemaTask) Reset() { *x = Task_ActionGetSchemaTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[29] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3725,7 +3959,7 @@ func (x *Task_ActionGetSchemaTask) String() string { func (*Task_ActionGetSchemaTask) ProtoMessage() {} func (x *Task_ActionGetSchemaTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[29] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3787,7 +4021,7 @@ type Task_ActionInvokeTask struct { func (x *Task_ActionInvokeTask) Reset() { *x = Task_ActionInvokeTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[30] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3799,7 +4033,7 @@ func (x *Task_ActionInvokeTask) String() string { func (*Task_ActionInvokeTask) ProtoMessage() {} func (x *Task_ActionInvokeTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[30] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3885,7 +4119,7 @@ type Task_ActionStatusTask struct { func (x *Task_ActionStatusTask) Reset() { *x = Task_ActionStatusTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[31] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3897,7 +4131,7 @@ func (x *Task_ActionStatusTask) String() string { func (*Task_ActionStatusTask) ProtoMessage() {} func (x *Task_ActionStatusTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[31] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3972,7 +4206,7 @@ type Task_CreateSyncDiffTask struct { func (x *Task_CreateSyncDiffTask) Reset() { *x = Task_CreateSyncDiffTask{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[32] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3984,7 +4218,7 @@ func (x *Task_CreateSyncDiffTask) String() string { func (*Task_CreateSyncDiffTask) ProtoMessage() {} func (x *Task_CreateSyncDiffTask) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[32] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4059,7 +4293,7 @@ type Task_CompactSyncs struct { func (x *Task_CompactSyncs) Reset() { *x = Task_CompactSyncs{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[33] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4071,7 +4305,7 @@ func (x *Task_CompactSyncs) String() string { func (*Task_CompactSyncs) ProtoMessage() {} func (x *Task_CompactSyncs) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[33] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4124,6 +4358,65 @@ func (b0 Task_CompactSyncs_builder) Build() *Task_CompactSyncs { return m0 } +type Task_SyncPartialTask_TargetedResources struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Resources *[]*v2.Resource `protobuf:"bytes,1,rep,name=resources,proto3"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Task_SyncPartialTask_TargetedResources) Reset() { + *x = Task_SyncPartialTask_TargetedResources{} + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Task_SyncPartialTask_TargetedResources) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Task_SyncPartialTask_TargetedResources) ProtoMessage() {} + +func (x *Task_SyncPartialTask_TargetedResources) ProtoReflect() protoreflect.Message { + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[35] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Task_SyncPartialTask_TargetedResources) GetResources() []*v2.Resource { + if x != nil { + if x.xxx_hidden_Resources != nil { + return *x.xxx_hidden_Resources + } + } + return nil +} + +func (x *Task_SyncPartialTask_TargetedResources) SetResources(v []*v2.Resource) { + x.xxx_hidden_Resources = &v +} + +type Task_SyncPartialTask_TargetedResources_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Resources []*v2.Resource +} + +func (b0 Task_SyncPartialTask_TargetedResources_builder) Build() *Task_SyncPartialTask_TargetedResources { + m0 := &Task_SyncPartialTask_TargetedResources{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Resources = &b.Resources + return m0 +} + type Task_CompactSyncs_CompactableSync struct { state protoimpl.MessageState `protogen:"opaque.v1"` xxx_hidden_FilePath string `protobuf:"bytes,1,opt,name=file_path,json=filePath,proto3"` @@ -4134,7 +4427,7 @@ type Task_CompactSyncs_CompactableSync struct { func (x *Task_CompactSyncs_CompactableSync) Reset() { *x = Task_CompactSyncs_CompactableSync{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[34] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4146,7 +4439,7 @@ func (x *Task_CompactSyncs_CompactableSync) String() string { func (*Task_CompactSyncs_CompactableSync) ProtoMessage() {} func (x *Task_CompactSyncs_CompactableSync) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[34] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4206,7 +4499,7 @@ type BatonServiceHelloRequest_BuildInfo struct { func (x *BatonServiceHelloRequest_BuildInfo) Reset() { *x = BatonServiceHelloRequest_BuildInfo{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[35] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4218,7 +4511,7 @@ func (x *BatonServiceHelloRequest_BuildInfo) String() string { func (*BatonServiceHelloRequest_BuildInfo) ProtoMessage() {} func (x *BatonServiceHelloRequest_BuildInfo) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[35] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4296,7 +4589,7 @@ type BatonServiceHelloRequest_OSInfo struct { func (x *BatonServiceHelloRequest_OSInfo) Reset() { *x = BatonServiceHelloRequest_OSInfo{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[36] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4308,7 +4601,7 @@ func (x *BatonServiceHelloRequest_OSInfo) String() string { func (*BatonServiceHelloRequest_OSInfo) ProtoMessage() {} func (x *BatonServiceHelloRequest_OSInfo) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[36] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4446,7 +4739,7 @@ type BatonServiceUploadAssetRequest_UploadMetadata struct { func (x *BatonServiceUploadAssetRequest_UploadMetadata) Reset() { *x = BatonServiceUploadAssetRequest_UploadMetadata{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[37] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4458,7 +4751,7 @@ func (x *BatonServiceUploadAssetRequest_UploadMetadata) String() string { func (*BatonServiceUploadAssetRequest_UploadMetadata) ProtoMessage() {} func (x *BatonServiceUploadAssetRequest_UploadMetadata) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[37] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4531,7 +4824,7 @@ type BatonServiceUploadAssetRequest_UploadData struct { func (x *BatonServiceUploadAssetRequest_UploadData) Reset() { *x = BatonServiceUploadAssetRequest_UploadData{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[38] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4543,7 +4836,7 @@ func (x *BatonServiceUploadAssetRequest_UploadData) String() string { func (*BatonServiceUploadAssetRequest_UploadData) ProtoMessage() {} func (x *BatonServiceUploadAssetRequest_UploadData) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[38] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4593,7 +4886,7 @@ type BatonServiceUploadAssetRequest_UploadEOF struct { func (x *BatonServiceUploadAssetRequest_UploadEOF) Reset() { *x = BatonServiceUploadAssetRequest_UploadEOF{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[39] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4605,7 +4898,7 @@ func (x *BatonServiceUploadAssetRequest_UploadEOF) String() string { func (*BatonServiceUploadAssetRequest_UploadEOF) ProtoMessage() {} func (x *BatonServiceUploadAssetRequest_UploadEOF) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[39] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4670,7 +4963,7 @@ type BatonServiceFinishTaskRequest_Error struct { func (x *BatonServiceFinishTaskRequest_Error) Reset() { *x = BatonServiceFinishTaskRequest_Error{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[40] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4682,7 +4975,7 @@ func (x *BatonServiceFinishTaskRequest_Error) String() string { func (*BatonServiceFinishTaskRequest_Error) ProtoMessage() {} func (x *BatonServiceFinishTaskRequest_Error) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[40] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4768,7 +5061,7 @@ type BatonServiceFinishTaskRequest_Success struct { func (x *BatonServiceFinishTaskRequest_Success) Reset() { *x = BatonServiceFinishTaskRequest_Success{} - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[41] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4780,7 +5073,7 @@ func (x *BatonServiceFinishTaskRequest_Success) String() string { func (*BatonServiceFinishTaskRequest_Success) ProtoMessage() {} func (x *BatonServiceFinishTaskRequest_Success) ProtoReflect() protoreflect.Message { - mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[41] + mi := &file_c1_connectorapi_baton_v1_baton_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4847,7 +5140,7 @@ var File_c1_connectorapi_baton_v1_baton_proto protoreflect.FileDescriptor const file_c1_connectorapi_baton_v1_baton_proto_rawDesc = "" + "\n" + - "$c1/connectorapi/baton/v1/baton.proto\x12\x18c1.connectorapi.baton.v1\x1a\x1fc1/connector/v2/connector.proto\x1a!c1/connector/v2/entitlement.proto\x1a\x1bc1/connector/v2/grant.proto\x1a\x1ec1/connector/v2/resource.proto\x1a\x1cc1/connector/v2/ticket.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\x1a\x17validate/validate.proto\"\xac(\n" + + "$c1/connectorapi/baton/v1/baton.proto\x12\x18c1.connectorapi.baton.v1\x1a\x1fc1/connector/v2/connector.proto\x1a!c1/connector/v2/entitlement.proto\x1a\x1bc1/connector/v2/grant.proto\x1a\x1ec1/connector/v2/resource.proto\x1a\x1cc1/connector/v2/ticket.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\x1a\x17validate/validate.proto\"\xc7+\n" + "\x04Task\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12=\n" + "\x06status\x18\x02 \x01(\x0e2%.c1.connectorapi.baton.v1.Task.StatusR\x06status\x12=\n" + @@ -4873,7 +5166,8 @@ const file_c1_connectorapi_baton_v1_baton_proto_rawDesc = "" + "\raction_invoke\x18u \x01(\v2/.c1.connectorapi.baton.v1.Task.ActionInvokeTaskH\x00R\factionInvoke\x12V\n" + "\raction_status\x18v \x01(\v2/.c1.connectorapi.baton.v1.Task.ActionStatusTaskH\x00R\factionStatus\x12]\n" + "\x10create_sync_diff\x18w \x01(\v21.c1.connectorapi.baton.v1.Task.CreateSyncDiffTaskH\x00R\x0ecreateSyncDiff\x12R\n" + - "\rcompact_syncs\x18x \x01(\v2+.c1.connectorapi.baton.v1.Task.CompactSyncsH\x00R\fcompactSyncs\x12\x14\n" + + "\rcompact_syncs\x18x \x01(\v2+.c1.connectorapi.baton.v1.Task.CompactSyncsH\x00R\fcompactSyncs\x12S\n" + + "\fsync_partial\x18y \x01(\v2..c1.connectorapi.baton.v1.Task.SyncPartialTaskH\x00R\vsyncPartial\x12\x14\n" + "\x05debug\x18\x03 \x01(\bR\x05debug\x1aB\n" + "\bNoneTask\x126\n" + "\vannotations\x18\x01 \x03(\v2\x14.google.protobuf.AnyR\vannotations\x1aC\n" + @@ -4883,7 +5177,14 @@ const file_c1_connectorapi_baton_v1_baton_proto_rawDesc = "" + "\vannotations\x18\x01 \x03(\v2\x14.google.protobuf.AnyR\vannotations\x12,\n" + "\x12skip_expand_grants\x18\x02 \x01(\bR\x10skipExpandGrants\x12?\n" + "\x1cskip_entitlements_and_grants\x18\x03 \x01(\bR\x19skipEntitlementsAndGrants\x12Q\n" + - "\x17targeted_sync_resources\x18\x04 \x03(\v2\x19.c1.connector.v2.ResourceR\x15targetedSyncResources\x1a~\n" + + "\x17targeted_sync_resources\x18\x04 \x03(\v2\x19.c1.connector.v2.ResourceR\x15targetedSyncResources\x1a\xc3\x02\n" + + "\x0fSyncPartialTask\x126\n" + + "\vannotations\x18\x01 \x03(\v2\x14.google.protobuf.AnyR\vannotations\x12q\n" + + "\x12targeted_resources\x18\x02 \x01(\v2@.c1.connectorapi.baton.v1.Task.SyncPartialTask.TargetedResourcesH\x00R\x11targetedResources\x12*\n" + + "\x10resource_type_id\x18\x03 \x01(\tH\x00R\x0eresourceTypeId\x1aL\n" + + "\x11TargetedResources\x127\n" + + "\tresources\x18\x01 \x03(\v2\x19.c1.connector.v2.ResourceR\tresourcesB\v\n" + + "\tsync_mode\x1a~\n" + "\rEventFeedTask\x126\n" + "\vannotations\x18\x01 \x03(\v2\x14.google.protobuf.AnyR\vannotations\x125\n" + "\bstart_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\astartAt\x1a\xf3\x01\n" + @@ -5057,7 +5358,7 @@ const file_c1_connectorapi_baton_v1_baton_proto_rawDesc = "" + "\x0eStartDebugging\x12/.c1.connectorapi.baton.v1.StartDebuggingRequest\x1a0.c1.connectorapi.baton.v1.StartDebuggingResponse\"\x00B7Z5gitlab.com/ductone/c1/pkg/pb/c1/connectorapi/baton/v1b\x06proto3" var file_c1_connectorapi_baton_v1_baton_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_c1_connectorapi_baton_v1_baton_proto_msgTypes = make([]protoimpl.MessageInfo, 42) +var file_c1_connectorapi_baton_v1_baton_proto_msgTypes = make([]protoimpl.MessageInfo, 44) var file_c1_connectorapi_baton_v1_baton_proto_goTypes = []any{ (Task_Status)(0), // 0: c1.connectorapi.baton.v1.Task.Status (*Task)(nil), // 1: c1.connectorapi.baton.v1.Task @@ -5076,150 +5377,156 @@ var file_c1_connectorapi_baton_v1_baton_proto_goTypes = []any{ (*Task_NoneTask)(nil), // 14: c1.connectorapi.baton.v1.Task.NoneTask (*Task_HelloTask)(nil), // 15: c1.connectorapi.baton.v1.Task.HelloTask (*Task_SyncFullTask)(nil), // 16: c1.connectorapi.baton.v1.Task.SyncFullTask - (*Task_EventFeedTask)(nil), // 17: c1.connectorapi.baton.v1.Task.EventFeedTask - (*Task_GrantTask)(nil), // 18: c1.connectorapi.baton.v1.Task.GrantTask - (*Task_RevokeTask)(nil), // 19: c1.connectorapi.baton.v1.Task.RevokeTask - (*Task_CreateAccountTask)(nil), // 20: c1.connectorapi.baton.v1.Task.CreateAccountTask - (*Task_CreateResourceTask)(nil), // 21: c1.connectorapi.baton.v1.Task.CreateResourceTask - (*Task_DeleteResourceTask)(nil), // 22: c1.connectorapi.baton.v1.Task.DeleteResourceTask - (*Task_RotateCredentialsTask)(nil), // 23: c1.connectorapi.baton.v1.Task.RotateCredentialsTask - (*Task_CreateTicketTask)(nil), // 24: c1.connectorapi.baton.v1.Task.CreateTicketTask - (*Task_BulkCreateTicketsTask)(nil), // 25: c1.connectorapi.baton.v1.Task.BulkCreateTicketsTask - (*Task_BulkGetTicketsTask)(nil), // 26: c1.connectorapi.baton.v1.Task.BulkGetTicketsTask - (*Task_ListTicketSchemasTask)(nil), // 27: c1.connectorapi.baton.v1.Task.ListTicketSchemasTask - (*Task_GetTicketTask)(nil), // 28: c1.connectorapi.baton.v1.Task.GetTicketTask - (*Task_ActionListSchemasTask)(nil), // 29: c1.connectorapi.baton.v1.Task.ActionListSchemasTask - (*Task_ActionGetSchemaTask)(nil), // 30: c1.connectorapi.baton.v1.Task.ActionGetSchemaTask - (*Task_ActionInvokeTask)(nil), // 31: c1.connectorapi.baton.v1.Task.ActionInvokeTask - (*Task_ActionStatusTask)(nil), // 32: c1.connectorapi.baton.v1.Task.ActionStatusTask - (*Task_CreateSyncDiffTask)(nil), // 33: c1.connectorapi.baton.v1.Task.CreateSyncDiffTask - (*Task_CompactSyncs)(nil), // 34: c1.connectorapi.baton.v1.Task.CompactSyncs - (*Task_CompactSyncs_CompactableSync)(nil), // 35: c1.connectorapi.baton.v1.Task.CompactSyncs.CompactableSync - (*BatonServiceHelloRequest_BuildInfo)(nil), // 36: c1.connectorapi.baton.v1.BatonServiceHelloRequest.BuildInfo - (*BatonServiceHelloRequest_OSInfo)(nil), // 37: c1.connectorapi.baton.v1.BatonServiceHelloRequest.OSInfo - (*BatonServiceUploadAssetRequest_UploadMetadata)(nil), // 38: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadMetadata - (*BatonServiceUploadAssetRequest_UploadData)(nil), // 39: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadData - (*BatonServiceUploadAssetRequest_UploadEOF)(nil), // 40: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadEOF - (*BatonServiceFinishTaskRequest_Error)(nil), // 41: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Error - (*BatonServiceFinishTaskRequest_Success)(nil), // 42: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Success - (*v2.ConnectorMetadata)(nil), // 43: c1.connector.v2.ConnectorMetadata - (*anypb.Any)(nil), // 44: google.protobuf.Any - (*durationpb.Duration)(nil), // 45: google.protobuf.Duration - (*status.Status)(nil), // 46: google.rpc.Status - (*v2.Resource)(nil), // 47: c1.connector.v2.Resource - (*timestamppb.Timestamp)(nil), // 48: google.protobuf.Timestamp - (*v2.Entitlement)(nil), // 49: c1.connector.v2.Entitlement - (*v2.Grant)(nil), // 50: c1.connector.v2.Grant - (*v2.AccountInfo)(nil), // 51: c1.connector.v2.AccountInfo - (*v2.CredentialOptions)(nil), // 52: c1.connector.v2.CredentialOptions - (*v2.EncryptionConfig)(nil), // 53: c1.connector.v2.EncryptionConfig - (*v2.ResourceId)(nil), // 54: c1.connector.v2.ResourceId - (*v2.TicketRequest)(nil), // 55: c1.connector.v2.TicketRequest - (*v2.TicketSchema)(nil), // 56: c1.connector.v2.TicketSchema - (*structpb.Struct)(nil), // 57: google.protobuf.Struct + (*Task_SyncPartialTask)(nil), // 17: c1.connectorapi.baton.v1.Task.SyncPartialTask + (*Task_EventFeedTask)(nil), // 18: c1.connectorapi.baton.v1.Task.EventFeedTask + (*Task_GrantTask)(nil), // 19: c1.connectorapi.baton.v1.Task.GrantTask + (*Task_RevokeTask)(nil), // 20: c1.connectorapi.baton.v1.Task.RevokeTask + (*Task_CreateAccountTask)(nil), // 21: c1.connectorapi.baton.v1.Task.CreateAccountTask + (*Task_CreateResourceTask)(nil), // 22: c1.connectorapi.baton.v1.Task.CreateResourceTask + (*Task_DeleteResourceTask)(nil), // 23: c1.connectorapi.baton.v1.Task.DeleteResourceTask + (*Task_RotateCredentialsTask)(nil), // 24: c1.connectorapi.baton.v1.Task.RotateCredentialsTask + (*Task_CreateTicketTask)(nil), // 25: c1.connectorapi.baton.v1.Task.CreateTicketTask + (*Task_BulkCreateTicketsTask)(nil), // 26: c1.connectorapi.baton.v1.Task.BulkCreateTicketsTask + (*Task_BulkGetTicketsTask)(nil), // 27: c1.connectorapi.baton.v1.Task.BulkGetTicketsTask + (*Task_ListTicketSchemasTask)(nil), // 28: c1.connectorapi.baton.v1.Task.ListTicketSchemasTask + (*Task_GetTicketTask)(nil), // 29: c1.connectorapi.baton.v1.Task.GetTicketTask + (*Task_ActionListSchemasTask)(nil), // 30: c1.connectorapi.baton.v1.Task.ActionListSchemasTask + (*Task_ActionGetSchemaTask)(nil), // 31: c1.connectorapi.baton.v1.Task.ActionGetSchemaTask + (*Task_ActionInvokeTask)(nil), // 32: c1.connectorapi.baton.v1.Task.ActionInvokeTask + (*Task_ActionStatusTask)(nil), // 33: c1.connectorapi.baton.v1.Task.ActionStatusTask + (*Task_CreateSyncDiffTask)(nil), // 34: c1.connectorapi.baton.v1.Task.CreateSyncDiffTask + (*Task_CompactSyncs)(nil), // 35: c1.connectorapi.baton.v1.Task.CompactSyncs + (*Task_SyncPartialTask_TargetedResources)(nil), // 36: c1.connectorapi.baton.v1.Task.SyncPartialTask.TargetedResources + (*Task_CompactSyncs_CompactableSync)(nil), // 37: c1.connectorapi.baton.v1.Task.CompactSyncs.CompactableSync + (*BatonServiceHelloRequest_BuildInfo)(nil), // 38: c1.connectorapi.baton.v1.BatonServiceHelloRequest.BuildInfo + (*BatonServiceHelloRequest_OSInfo)(nil), // 39: c1.connectorapi.baton.v1.BatonServiceHelloRequest.OSInfo + (*BatonServiceUploadAssetRequest_UploadMetadata)(nil), // 40: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadMetadata + (*BatonServiceUploadAssetRequest_UploadData)(nil), // 41: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadData + (*BatonServiceUploadAssetRequest_UploadEOF)(nil), // 42: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadEOF + (*BatonServiceFinishTaskRequest_Error)(nil), // 43: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Error + (*BatonServiceFinishTaskRequest_Success)(nil), // 44: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Success + (*v2.ConnectorMetadata)(nil), // 45: c1.connector.v2.ConnectorMetadata + (*anypb.Any)(nil), // 46: google.protobuf.Any + (*durationpb.Duration)(nil), // 47: google.protobuf.Duration + (*status.Status)(nil), // 48: google.rpc.Status + (*v2.Resource)(nil), // 49: c1.connector.v2.Resource + (*timestamppb.Timestamp)(nil), // 50: google.protobuf.Timestamp + (*v2.Entitlement)(nil), // 51: c1.connector.v2.Entitlement + (*v2.Grant)(nil), // 52: c1.connector.v2.Grant + (*v2.AccountInfo)(nil), // 53: c1.connector.v2.AccountInfo + (*v2.CredentialOptions)(nil), // 54: c1.connector.v2.CredentialOptions + (*v2.EncryptionConfig)(nil), // 55: c1.connector.v2.EncryptionConfig + (*v2.ResourceId)(nil), // 56: c1.connector.v2.ResourceId + (*v2.TicketRequest)(nil), // 57: c1.connector.v2.TicketRequest + (*v2.TicketSchema)(nil), // 58: c1.connector.v2.TicketSchema + (*structpb.Struct)(nil), // 59: google.protobuf.Struct } var file_c1_connectorapi_baton_v1_baton_proto_depIdxs = []int32{ 0, // 0: c1.connectorapi.baton.v1.Task.status:type_name -> c1.connectorapi.baton.v1.Task.Status 14, // 1: c1.connectorapi.baton.v1.Task.none:type_name -> c1.connectorapi.baton.v1.Task.NoneTask 15, // 2: c1.connectorapi.baton.v1.Task.hello:type_name -> c1.connectorapi.baton.v1.Task.HelloTask 16, // 3: c1.connectorapi.baton.v1.Task.sync_full:type_name -> c1.connectorapi.baton.v1.Task.SyncFullTask - 18, // 4: c1.connectorapi.baton.v1.Task.grant:type_name -> c1.connectorapi.baton.v1.Task.GrantTask - 19, // 5: c1.connectorapi.baton.v1.Task.revoke:type_name -> c1.connectorapi.baton.v1.Task.RevokeTask - 20, // 6: c1.connectorapi.baton.v1.Task.create_account:type_name -> c1.connectorapi.baton.v1.Task.CreateAccountTask - 21, // 7: c1.connectorapi.baton.v1.Task.create_resource:type_name -> c1.connectorapi.baton.v1.Task.CreateResourceTask - 22, // 8: c1.connectorapi.baton.v1.Task.delete_resource:type_name -> c1.connectorapi.baton.v1.Task.DeleteResourceTask - 23, // 9: c1.connectorapi.baton.v1.Task.rotate_credentials:type_name -> c1.connectorapi.baton.v1.Task.RotateCredentialsTask - 17, // 10: c1.connectorapi.baton.v1.Task.event_feed:type_name -> c1.connectorapi.baton.v1.Task.EventFeedTask - 24, // 11: c1.connectorapi.baton.v1.Task.create_ticket_task:type_name -> c1.connectorapi.baton.v1.Task.CreateTicketTask - 27, // 12: c1.connectorapi.baton.v1.Task.list_ticket_schemas:type_name -> c1.connectorapi.baton.v1.Task.ListTicketSchemasTask - 28, // 13: c1.connectorapi.baton.v1.Task.get_ticket:type_name -> c1.connectorapi.baton.v1.Task.GetTicketTask - 25, // 14: c1.connectorapi.baton.v1.Task.bulk_create_tickets:type_name -> c1.connectorapi.baton.v1.Task.BulkCreateTicketsTask - 26, // 15: c1.connectorapi.baton.v1.Task.bulk_get_tickets:type_name -> c1.connectorapi.baton.v1.Task.BulkGetTicketsTask - 29, // 16: c1.connectorapi.baton.v1.Task.action_list_schemas:type_name -> c1.connectorapi.baton.v1.Task.ActionListSchemasTask - 30, // 17: c1.connectorapi.baton.v1.Task.action_get_schema:type_name -> c1.connectorapi.baton.v1.Task.ActionGetSchemaTask - 31, // 18: c1.connectorapi.baton.v1.Task.action_invoke:type_name -> c1.connectorapi.baton.v1.Task.ActionInvokeTask - 32, // 19: c1.connectorapi.baton.v1.Task.action_status:type_name -> c1.connectorapi.baton.v1.Task.ActionStatusTask - 33, // 20: c1.connectorapi.baton.v1.Task.create_sync_diff:type_name -> c1.connectorapi.baton.v1.Task.CreateSyncDiffTask - 34, // 21: c1.connectorapi.baton.v1.Task.compact_syncs:type_name -> c1.connectorapi.baton.v1.Task.CompactSyncs - 36, // 22: c1.connectorapi.baton.v1.BatonServiceHelloRequest.build_info:type_name -> c1.connectorapi.baton.v1.BatonServiceHelloRequest.BuildInfo - 37, // 23: c1.connectorapi.baton.v1.BatonServiceHelloRequest.os_info:type_name -> c1.connectorapi.baton.v1.BatonServiceHelloRequest.OSInfo - 43, // 24: c1.connectorapi.baton.v1.BatonServiceHelloRequest.connector_metadata:type_name -> c1.connector.v2.ConnectorMetadata - 44, // 25: c1.connectorapi.baton.v1.BatonServiceHelloRequest.annotations:type_name -> google.protobuf.Any - 44, // 26: c1.connectorapi.baton.v1.BatonServiceHelloResponse.annotations:type_name -> google.protobuf.Any - 1, // 27: c1.connectorapi.baton.v1.BatonServiceGetTaskResponse.task:type_name -> c1.connectorapi.baton.v1.Task - 45, // 28: c1.connectorapi.baton.v1.BatonServiceGetTaskResponse.next_poll:type_name -> google.protobuf.Duration - 45, // 29: c1.connectorapi.baton.v1.BatonServiceGetTaskResponse.next_heartbeat:type_name -> google.protobuf.Duration - 44, // 30: c1.connectorapi.baton.v1.BatonServiceGetTaskResponse.annotations:type_name -> google.protobuf.Any - 44, // 31: c1.connectorapi.baton.v1.BatonServiceHeartbeatRequest.annotations:type_name -> google.protobuf.Any - 45, // 32: c1.connectorapi.baton.v1.BatonServiceHeartbeatResponse.next_heartbeat:type_name -> google.protobuf.Duration - 44, // 33: c1.connectorapi.baton.v1.BatonServiceHeartbeatResponse.annotations:type_name -> google.protobuf.Any - 38, // 34: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.metadata:type_name -> c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadMetadata - 39, // 35: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.data:type_name -> c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadData - 40, // 36: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.eof:type_name -> c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadEOF - 44, // 37: c1.connectorapi.baton.v1.BatonServiceUploadAssetResponse.annotations:type_name -> google.protobuf.Any - 46, // 38: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.status:type_name -> google.rpc.Status - 41, // 39: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.error:type_name -> c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Error - 42, // 40: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.success:type_name -> c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Success - 44, // 41: c1.connectorapi.baton.v1.BatonServiceFinishTaskResponse.annotations:type_name -> google.protobuf.Any - 44, // 42: c1.connectorapi.baton.v1.Task.NoneTask.annotations:type_name -> google.protobuf.Any - 44, // 43: c1.connectorapi.baton.v1.Task.HelloTask.annotations:type_name -> google.protobuf.Any - 44, // 44: c1.connectorapi.baton.v1.Task.SyncFullTask.annotations:type_name -> google.protobuf.Any - 47, // 45: c1.connectorapi.baton.v1.Task.SyncFullTask.targeted_sync_resources:type_name -> c1.connector.v2.Resource - 44, // 46: c1.connectorapi.baton.v1.Task.EventFeedTask.annotations:type_name -> google.protobuf.Any - 48, // 47: c1.connectorapi.baton.v1.Task.EventFeedTask.start_at:type_name -> google.protobuf.Timestamp - 49, // 48: c1.connectorapi.baton.v1.Task.GrantTask.entitlement:type_name -> c1.connector.v2.Entitlement - 47, // 49: c1.connectorapi.baton.v1.Task.GrantTask.principal:type_name -> c1.connector.v2.Resource - 44, // 50: c1.connectorapi.baton.v1.Task.GrantTask.annotations:type_name -> google.protobuf.Any - 45, // 51: c1.connectorapi.baton.v1.Task.GrantTask.duration:type_name -> google.protobuf.Duration - 50, // 52: c1.connectorapi.baton.v1.Task.RevokeTask.grant:type_name -> c1.connector.v2.Grant - 44, // 53: c1.connectorapi.baton.v1.Task.RevokeTask.annotations:type_name -> google.protobuf.Any - 51, // 54: c1.connectorapi.baton.v1.Task.CreateAccountTask.account_info:type_name -> c1.connector.v2.AccountInfo - 52, // 55: c1.connectorapi.baton.v1.Task.CreateAccountTask.credential_options:type_name -> c1.connector.v2.CredentialOptions - 53, // 56: c1.connectorapi.baton.v1.Task.CreateAccountTask.encryption_configs:type_name -> c1.connector.v2.EncryptionConfig - 47, // 57: c1.connectorapi.baton.v1.Task.CreateResourceTask.resource:type_name -> c1.connector.v2.Resource - 54, // 58: c1.connectorapi.baton.v1.Task.DeleteResourceTask.resource_id:type_name -> c1.connector.v2.ResourceId - 54, // 59: c1.connectorapi.baton.v1.Task.DeleteResourceTask.parent_resource_id:type_name -> c1.connector.v2.ResourceId - 54, // 60: c1.connectorapi.baton.v1.Task.RotateCredentialsTask.resource_id:type_name -> c1.connector.v2.ResourceId - 52, // 61: c1.connectorapi.baton.v1.Task.RotateCredentialsTask.credential_options:type_name -> c1.connector.v2.CredentialOptions - 53, // 62: c1.connectorapi.baton.v1.Task.RotateCredentialsTask.encryption_configs:type_name -> c1.connector.v2.EncryptionConfig - 55, // 63: c1.connectorapi.baton.v1.Task.CreateTicketTask.ticket_request:type_name -> c1.connector.v2.TicketRequest - 56, // 64: c1.connectorapi.baton.v1.Task.CreateTicketTask.ticket_schema:type_name -> c1.connector.v2.TicketSchema - 44, // 65: c1.connectorapi.baton.v1.Task.CreateTicketTask.annotations:type_name -> google.protobuf.Any - 24, // 66: c1.connectorapi.baton.v1.Task.BulkCreateTicketsTask.ticket_requests:type_name -> c1.connectorapi.baton.v1.Task.CreateTicketTask - 28, // 67: c1.connectorapi.baton.v1.Task.BulkGetTicketsTask.ticket_requests:type_name -> c1.connectorapi.baton.v1.Task.GetTicketTask - 44, // 68: c1.connectorapi.baton.v1.Task.ListTicketSchemasTask.annotations:type_name -> google.protobuf.Any - 44, // 69: c1.connectorapi.baton.v1.Task.GetTicketTask.annotations:type_name -> google.protobuf.Any - 44, // 70: c1.connectorapi.baton.v1.Task.ActionListSchemasTask.annotations:type_name -> google.protobuf.Any - 44, // 71: c1.connectorapi.baton.v1.Task.ActionGetSchemaTask.annotations:type_name -> google.protobuf.Any - 57, // 72: c1.connectorapi.baton.v1.Task.ActionInvokeTask.args:type_name -> google.protobuf.Struct - 44, // 73: c1.connectorapi.baton.v1.Task.ActionInvokeTask.annotations:type_name -> google.protobuf.Any - 44, // 74: c1.connectorapi.baton.v1.Task.ActionStatusTask.annotations:type_name -> google.protobuf.Any - 44, // 75: c1.connectorapi.baton.v1.Task.CreateSyncDiffTask.annotations:type_name -> google.protobuf.Any - 35, // 76: c1.connectorapi.baton.v1.Task.CompactSyncs.compactable_syncs:type_name -> c1.connectorapi.baton.v1.Task.CompactSyncs.CompactableSync - 44, // 77: c1.connectorapi.baton.v1.Task.CompactSyncs.annotations:type_name -> google.protobuf.Any - 44, // 78: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadMetadata.annotations:type_name -> google.protobuf.Any - 44, // 79: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadEOF.annotations:type_name -> google.protobuf.Any - 44, // 80: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Error.annotations:type_name -> google.protobuf.Any - 44, // 81: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Error.response:type_name -> google.protobuf.Any - 44, // 82: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Success.annotations:type_name -> google.protobuf.Any - 44, // 83: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Success.response:type_name -> google.protobuf.Any - 2, // 84: c1.connectorapi.baton.v1.BatonService.Hello:input_type -> c1.connectorapi.baton.v1.BatonServiceHelloRequest - 4, // 85: c1.connectorapi.baton.v1.BatonService.GetTask:input_type -> c1.connectorapi.baton.v1.BatonServiceGetTaskRequest - 6, // 86: c1.connectorapi.baton.v1.BatonService.Heartbeat:input_type -> c1.connectorapi.baton.v1.BatonServiceHeartbeatRequest - 10, // 87: c1.connectorapi.baton.v1.BatonService.FinishTask:input_type -> c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest - 8, // 88: c1.connectorapi.baton.v1.BatonService.UploadAsset:input_type -> c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest - 12, // 89: c1.connectorapi.baton.v1.BatonService.StartDebugging:input_type -> c1.connectorapi.baton.v1.StartDebuggingRequest - 3, // 90: c1.connectorapi.baton.v1.BatonService.Hello:output_type -> c1.connectorapi.baton.v1.BatonServiceHelloResponse - 5, // 91: c1.connectorapi.baton.v1.BatonService.GetTask:output_type -> c1.connectorapi.baton.v1.BatonServiceGetTaskResponse - 7, // 92: c1.connectorapi.baton.v1.BatonService.Heartbeat:output_type -> c1.connectorapi.baton.v1.BatonServiceHeartbeatResponse - 11, // 93: c1.connectorapi.baton.v1.BatonService.FinishTask:output_type -> c1.connectorapi.baton.v1.BatonServiceFinishTaskResponse - 9, // 94: c1.connectorapi.baton.v1.BatonService.UploadAsset:output_type -> c1.connectorapi.baton.v1.BatonServiceUploadAssetResponse - 13, // 95: c1.connectorapi.baton.v1.BatonService.StartDebugging:output_type -> c1.connectorapi.baton.v1.StartDebuggingResponse - 90, // [90:96] is the sub-list for method output_type - 84, // [84:90] is the sub-list for method input_type - 84, // [84:84] is the sub-list for extension type_name - 84, // [84:84] is the sub-list for extension extendee - 0, // [0:84] is the sub-list for field type_name + 19, // 4: c1.connectorapi.baton.v1.Task.grant:type_name -> c1.connectorapi.baton.v1.Task.GrantTask + 20, // 5: c1.connectorapi.baton.v1.Task.revoke:type_name -> c1.connectorapi.baton.v1.Task.RevokeTask + 21, // 6: c1.connectorapi.baton.v1.Task.create_account:type_name -> c1.connectorapi.baton.v1.Task.CreateAccountTask + 22, // 7: c1.connectorapi.baton.v1.Task.create_resource:type_name -> c1.connectorapi.baton.v1.Task.CreateResourceTask + 23, // 8: c1.connectorapi.baton.v1.Task.delete_resource:type_name -> c1.connectorapi.baton.v1.Task.DeleteResourceTask + 24, // 9: c1.connectorapi.baton.v1.Task.rotate_credentials:type_name -> c1.connectorapi.baton.v1.Task.RotateCredentialsTask + 18, // 10: c1.connectorapi.baton.v1.Task.event_feed:type_name -> c1.connectorapi.baton.v1.Task.EventFeedTask + 25, // 11: c1.connectorapi.baton.v1.Task.create_ticket_task:type_name -> c1.connectorapi.baton.v1.Task.CreateTicketTask + 28, // 12: c1.connectorapi.baton.v1.Task.list_ticket_schemas:type_name -> c1.connectorapi.baton.v1.Task.ListTicketSchemasTask + 29, // 13: c1.connectorapi.baton.v1.Task.get_ticket:type_name -> c1.connectorapi.baton.v1.Task.GetTicketTask + 26, // 14: c1.connectorapi.baton.v1.Task.bulk_create_tickets:type_name -> c1.connectorapi.baton.v1.Task.BulkCreateTicketsTask + 27, // 15: c1.connectorapi.baton.v1.Task.bulk_get_tickets:type_name -> c1.connectorapi.baton.v1.Task.BulkGetTicketsTask + 30, // 16: c1.connectorapi.baton.v1.Task.action_list_schemas:type_name -> c1.connectorapi.baton.v1.Task.ActionListSchemasTask + 31, // 17: c1.connectorapi.baton.v1.Task.action_get_schema:type_name -> c1.connectorapi.baton.v1.Task.ActionGetSchemaTask + 32, // 18: c1.connectorapi.baton.v1.Task.action_invoke:type_name -> c1.connectorapi.baton.v1.Task.ActionInvokeTask + 33, // 19: c1.connectorapi.baton.v1.Task.action_status:type_name -> c1.connectorapi.baton.v1.Task.ActionStatusTask + 34, // 20: c1.connectorapi.baton.v1.Task.create_sync_diff:type_name -> c1.connectorapi.baton.v1.Task.CreateSyncDiffTask + 35, // 21: c1.connectorapi.baton.v1.Task.compact_syncs:type_name -> c1.connectorapi.baton.v1.Task.CompactSyncs + 17, // 22: c1.connectorapi.baton.v1.Task.sync_partial:type_name -> c1.connectorapi.baton.v1.Task.SyncPartialTask + 38, // 23: c1.connectorapi.baton.v1.BatonServiceHelloRequest.build_info:type_name -> c1.connectorapi.baton.v1.BatonServiceHelloRequest.BuildInfo + 39, // 24: c1.connectorapi.baton.v1.BatonServiceHelloRequest.os_info:type_name -> c1.connectorapi.baton.v1.BatonServiceHelloRequest.OSInfo + 45, // 25: c1.connectorapi.baton.v1.BatonServiceHelloRequest.connector_metadata:type_name -> c1.connector.v2.ConnectorMetadata + 46, // 26: c1.connectorapi.baton.v1.BatonServiceHelloRequest.annotations:type_name -> google.protobuf.Any + 46, // 27: c1.connectorapi.baton.v1.BatonServiceHelloResponse.annotations:type_name -> google.protobuf.Any + 1, // 28: c1.connectorapi.baton.v1.BatonServiceGetTaskResponse.task:type_name -> c1.connectorapi.baton.v1.Task + 47, // 29: c1.connectorapi.baton.v1.BatonServiceGetTaskResponse.next_poll:type_name -> google.protobuf.Duration + 47, // 30: c1.connectorapi.baton.v1.BatonServiceGetTaskResponse.next_heartbeat:type_name -> google.protobuf.Duration + 46, // 31: c1.connectorapi.baton.v1.BatonServiceGetTaskResponse.annotations:type_name -> google.protobuf.Any + 46, // 32: c1.connectorapi.baton.v1.BatonServiceHeartbeatRequest.annotations:type_name -> google.protobuf.Any + 47, // 33: c1.connectorapi.baton.v1.BatonServiceHeartbeatResponse.next_heartbeat:type_name -> google.protobuf.Duration + 46, // 34: c1.connectorapi.baton.v1.BatonServiceHeartbeatResponse.annotations:type_name -> google.protobuf.Any + 40, // 35: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.metadata:type_name -> c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadMetadata + 41, // 36: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.data:type_name -> c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadData + 42, // 37: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.eof:type_name -> c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadEOF + 46, // 38: c1.connectorapi.baton.v1.BatonServiceUploadAssetResponse.annotations:type_name -> google.protobuf.Any + 48, // 39: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.status:type_name -> google.rpc.Status + 43, // 40: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.error:type_name -> c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Error + 44, // 41: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.success:type_name -> c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Success + 46, // 42: c1.connectorapi.baton.v1.BatonServiceFinishTaskResponse.annotations:type_name -> google.protobuf.Any + 46, // 43: c1.connectorapi.baton.v1.Task.NoneTask.annotations:type_name -> google.protobuf.Any + 46, // 44: c1.connectorapi.baton.v1.Task.HelloTask.annotations:type_name -> google.protobuf.Any + 46, // 45: c1.connectorapi.baton.v1.Task.SyncFullTask.annotations:type_name -> google.protobuf.Any + 49, // 46: c1.connectorapi.baton.v1.Task.SyncFullTask.targeted_sync_resources:type_name -> c1.connector.v2.Resource + 46, // 47: c1.connectorapi.baton.v1.Task.SyncPartialTask.annotations:type_name -> google.protobuf.Any + 36, // 48: c1.connectorapi.baton.v1.Task.SyncPartialTask.targeted_resources:type_name -> c1.connectorapi.baton.v1.Task.SyncPartialTask.TargetedResources + 46, // 49: c1.connectorapi.baton.v1.Task.EventFeedTask.annotations:type_name -> google.protobuf.Any + 50, // 50: c1.connectorapi.baton.v1.Task.EventFeedTask.start_at:type_name -> google.protobuf.Timestamp + 51, // 51: c1.connectorapi.baton.v1.Task.GrantTask.entitlement:type_name -> c1.connector.v2.Entitlement + 49, // 52: c1.connectorapi.baton.v1.Task.GrantTask.principal:type_name -> c1.connector.v2.Resource + 46, // 53: c1.connectorapi.baton.v1.Task.GrantTask.annotations:type_name -> google.protobuf.Any + 47, // 54: c1.connectorapi.baton.v1.Task.GrantTask.duration:type_name -> google.protobuf.Duration + 52, // 55: c1.connectorapi.baton.v1.Task.RevokeTask.grant:type_name -> c1.connector.v2.Grant + 46, // 56: c1.connectorapi.baton.v1.Task.RevokeTask.annotations:type_name -> google.protobuf.Any + 53, // 57: c1.connectorapi.baton.v1.Task.CreateAccountTask.account_info:type_name -> c1.connector.v2.AccountInfo + 54, // 58: c1.connectorapi.baton.v1.Task.CreateAccountTask.credential_options:type_name -> c1.connector.v2.CredentialOptions + 55, // 59: c1.connectorapi.baton.v1.Task.CreateAccountTask.encryption_configs:type_name -> c1.connector.v2.EncryptionConfig + 49, // 60: c1.connectorapi.baton.v1.Task.CreateResourceTask.resource:type_name -> c1.connector.v2.Resource + 56, // 61: c1.connectorapi.baton.v1.Task.DeleteResourceTask.resource_id:type_name -> c1.connector.v2.ResourceId + 56, // 62: c1.connectorapi.baton.v1.Task.DeleteResourceTask.parent_resource_id:type_name -> c1.connector.v2.ResourceId + 56, // 63: c1.connectorapi.baton.v1.Task.RotateCredentialsTask.resource_id:type_name -> c1.connector.v2.ResourceId + 54, // 64: c1.connectorapi.baton.v1.Task.RotateCredentialsTask.credential_options:type_name -> c1.connector.v2.CredentialOptions + 55, // 65: c1.connectorapi.baton.v1.Task.RotateCredentialsTask.encryption_configs:type_name -> c1.connector.v2.EncryptionConfig + 57, // 66: c1.connectorapi.baton.v1.Task.CreateTicketTask.ticket_request:type_name -> c1.connector.v2.TicketRequest + 58, // 67: c1.connectorapi.baton.v1.Task.CreateTicketTask.ticket_schema:type_name -> c1.connector.v2.TicketSchema + 46, // 68: c1.connectorapi.baton.v1.Task.CreateTicketTask.annotations:type_name -> google.protobuf.Any + 25, // 69: c1.connectorapi.baton.v1.Task.BulkCreateTicketsTask.ticket_requests:type_name -> c1.connectorapi.baton.v1.Task.CreateTicketTask + 29, // 70: c1.connectorapi.baton.v1.Task.BulkGetTicketsTask.ticket_requests:type_name -> c1.connectorapi.baton.v1.Task.GetTicketTask + 46, // 71: c1.connectorapi.baton.v1.Task.ListTicketSchemasTask.annotations:type_name -> google.protobuf.Any + 46, // 72: c1.connectorapi.baton.v1.Task.GetTicketTask.annotations:type_name -> google.protobuf.Any + 46, // 73: c1.connectorapi.baton.v1.Task.ActionListSchemasTask.annotations:type_name -> google.protobuf.Any + 46, // 74: c1.connectorapi.baton.v1.Task.ActionGetSchemaTask.annotations:type_name -> google.protobuf.Any + 59, // 75: c1.connectorapi.baton.v1.Task.ActionInvokeTask.args:type_name -> google.protobuf.Struct + 46, // 76: c1.connectorapi.baton.v1.Task.ActionInvokeTask.annotations:type_name -> google.protobuf.Any + 46, // 77: c1.connectorapi.baton.v1.Task.ActionStatusTask.annotations:type_name -> google.protobuf.Any + 46, // 78: c1.connectorapi.baton.v1.Task.CreateSyncDiffTask.annotations:type_name -> google.protobuf.Any + 37, // 79: c1.connectorapi.baton.v1.Task.CompactSyncs.compactable_syncs:type_name -> c1.connectorapi.baton.v1.Task.CompactSyncs.CompactableSync + 46, // 80: c1.connectorapi.baton.v1.Task.CompactSyncs.annotations:type_name -> google.protobuf.Any + 49, // 81: c1.connectorapi.baton.v1.Task.SyncPartialTask.TargetedResources.resources:type_name -> c1.connector.v2.Resource + 46, // 82: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadMetadata.annotations:type_name -> google.protobuf.Any + 46, // 83: c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest.UploadEOF.annotations:type_name -> google.protobuf.Any + 46, // 84: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Error.annotations:type_name -> google.protobuf.Any + 46, // 85: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Error.response:type_name -> google.protobuf.Any + 46, // 86: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Success.annotations:type_name -> google.protobuf.Any + 46, // 87: c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest.Success.response:type_name -> google.protobuf.Any + 2, // 88: c1.connectorapi.baton.v1.BatonService.Hello:input_type -> c1.connectorapi.baton.v1.BatonServiceHelloRequest + 4, // 89: c1.connectorapi.baton.v1.BatonService.GetTask:input_type -> c1.connectorapi.baton.v1.BatonServiceGetTaskRequest + 6, // 90: c1.connectorapi.baton.v1.BatonService.Heartbeat:input_type -> c1.connectorapi.baton.v1.BatonServiceHeartbeatRequest + 10, // 91: c1.connectorapi.baton.v1.BatonService.FinishTask:input_type -> c1.connectorapi.baton.v1.BatonServiceFinishTaskRequest + 8, // 92: c1.connectorapi.baton.v1.BatonService.UploadAsset:input_type -> c1.connectorapi.baton.v1.BatonServiceUploadAssetRequest + 12, // 93: c1.connectorapi.baton.v1.BatonService.StartDebugging:input_type -> c1.connectorapi.baton.v1.StartDebuggingRequest + 3, // 94: c1.connectorapi.baton.v1.BatonService.Hello:output_type -> c1.connectorapi.baton.v1.BatonServiceHelloResponse + 5, // 95: c1.connectorapi.baton.v1.BatonService.GetTask:output_type -> c1.connectorapi.baton.v1.BatonServiceGetTaskResponse + 7, // 96: c1.connectorapi.baton.v1.BatonService.Heartbeat:output_type -> c1.connectorapi.baton.v1.BatonServiceHeartbeatResponse + 11, // 97: c1.connectorapi.baton.v1.BatonService.FinishTask:output_type -> c1.connectorapi.baton.v1.BatonServiceFinishTaskResponse + 9, // 98: c1.connectorapi.baton.v1.BatonService.UploadAsset:output_type -> c1.connectorapi.baton.v1.BatonServiceUploadAssetResponse + 13, // 99: c1.connectorapi.baton.v1.BatonService.StartDebugging:output_type -> c1.connectorapi.baton.v1.StartDebuggingResponse + 94, // [94:100] is the sub-list for method output_type + 88, // [88:94] is the sub-list for method input_type + 88, // [88:88] is the sub-list for extension type_name + 88, // [88:88] is the sub-list for extension extendee + 0, // [0:88] is the sub-list for field type_name } func init() { file_c1_connectorapi_baton_v1_baton_proto_init() } @@ -5249,6 +5556,7 @@ func file_c1_connectorapi_baton_v1_baton_proto_init() { (*task_ActionStatus)(nil), (*task_CreateSyncDiff)(nil), (*task_CompactSyncs_)(nil), + (*task_SyncPartial)(nil), } file_c1_connectorapi_baton_v1_baton_proto_msgTypes[7].OneofWrappers = []any{ (*batonServiceUploadAssetRequest_Metadata)(nil), @@ -5259,13 +5567,17 @@ func file_c1_connectorapi_baton_v1_baton_proto_init() { (*batonServiceFinishTaskRequest_Error_)(nil), (*batonServiceFinishTaskRequest_Success_)(nil), } + file_c1_connectorapi_baton_v1_baton_proto_msgTypes[16].OneofWrappers = []any{ + (*task_SyncPartialTask_TargetedResources_)(nil), + (*task_SyncPartialTask_ResourceTypeId)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_c1_connectorapi_baton_v1_baton_proto_rawDesc), len(file_c1_connectorapi_baton_v1_baton_proto_rawDesc)), NumEnums: 1, - NumMessages: 42, + NumMessages: 44, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/sync/state.go b/pkg/sync/state.go index 81eeace7e..314a94693 100644 --- a/pkg/sync/state.go +++ b/pkg/sync/state.go @@ -67,6 +67,10 @@ func (s ActionOp) String() string { return "targeted-resource-sync" case SyncStaticEntitlementsOp: return "list-static-entitlements" + case SyncResourceTypedOp: + return "sync-resource-typed" + case SetupResourceTypedSyncOp: + return "setup-resource-typed-sync" default: return "unknown" } @@ -114,6 +118,10 @@ func newActionOp(str string) ActionOp { return SyncStaticEntitlementsOp case ListResourcesForEntitlementsOp.String(): return ListResourcesForEntitlementsOp + case SyncResourceTypedOp.String(): + return SyncResourceTypedOp + case SetupResourceTypedSyncOp.String(): + return SetupResourceTypedSyncOp default: return UnknownOp } @@ -134,6 +142,8 @@ const ( SyncGrantExpansionOp SyncTargetedResourceOp SyncStaticEntitlementsOp + SyncResourceTypedOp // Syncs resources of a specific type (incremental sync) + SetupResourceTypedSyncOp // Discovers parent types and queues appropriate SyncResourceTypedOp actions ) // Action stores the current operation, page token, and optional fields for which resource is being worked with. diff --git a/pkg/sync/syncer.go b/pkg/sync/syncer.go index 778e7f19d..54dd0fb0c 100644 --- a/pkg/sync/syncer.go +++ b/pkg/sync/syncer.go @@ -220,6 +220,9 @@ type syncer struct { injectSyncIDAnnotation bool setSessionStore sessions.SetSessionStore syncResourceTypes []string + // resourceTypedSyncID is the target resource type for resource-typed incremental sync. + // Used both as the sync configuration and as the filter for child resource discovery. + resourceTypedSyncID string } const minCheckpointInterval = 10 * time.Second @@ -527,6 +530,18 @@ func (s *syncer) Sync(ctx context.Context) error { continue } + // Partial sync for a single resource type: only sync resources, never entitlements/grants + // SetupResourceTypedSyncOp will discover parent types and queue the appropriate sync actions + if s.resourceTypedSyncID != "" { + s.state.PushAction(ctx, Action{Op: SetupResourceTypedSyncOp, ResourceTypeID: s.resourceTypedSyncID}) + s.state.PushAction(ctx, Action{Op: SyncResourceTypesOp}) + err = s.Checkpoint(ctx, true) + if err != nil { + return err + } + continue + } + // FIXME(jirwin): Disabling syncing assets for now // s.state.PushAction(ctx, Action{Op: SyncAssetsOp}) if !s.state.ShouldSkipEntitlementsAndGrants() { @@ -651,6 +666,21 @@ func (s *syncer) Sync(ctx context.Context) error { return err } continue + + case SyncResourceTypedOp: + err = s.SyncResourceTyped(ctx) + if !retryer.ShouldWaitAndRetry(ctx, err) { + return err + } + continue + + case SetupResourceTypedSyncOp: + err = s.SetupResourceTypedSync(ctx) + if !retryer.ShouldWaitAndRetry(ctx, err) { + return err + } + continue + default: return fmt.Errorf("unexpected sync step") } @@ -1093,6 +1123,246 @@ func (s *syncer) syncResources(ctx context.Context) error { return nil } +// SyncResourceTyped syncs all resources of a specific resource type. +// This is used for resource-typed incremental syncs. +func (s *syncer) SyncResourceTyped(ctx context.Context) error { + ctx, span := tracer.Start(ctx, "syncer.SyncResourceTyped") + defer span.End() + + resourceTypeID := s.state.ResourceTypeID(ctx) + if resourceTypeID == "" { + return errors.New("resource type ID is required for resource-typed sync") + } + + pageToken := s.state.PageToken(ctx) + + if pageToken == "" { + ctxzap.Extract(ctx).Info("Syncing resources for type...", zap.String("resource_type_id", resourceTypeID)) + s.handleInitialActionForStep(ctx, *s.state.Current()) + } + + req := v2.ResourcesServiceListResourcesRequest_builder{ + ResourceTypeId: resourceTypeID, + PageToken: pageToken, + ActiveSyncId: s.getActiveSyncID(), + }.Build() + if s.state.ParentResourceTypeID(ctx) != "" && s.state.ParentResourceID(ctx) != "" { + req.SetParentResourceId(v2.ResourceId_builder{ + ResourceType: s.state.ParentResourceTypeID(ctx), + Resource: s.state.ParentResourceID(ctx), + }.Build()) + } + + resp, err := s.connector.ListResources(ctx, req) + if err != nil { + return err + } + + s.handleProgress(ctx, s.state.Current(), len(resp.GetList())) + + s.counts.Resources[resourceTypeID] += len(resp.GetList()) + + if resp.GetNextPageToken() == "" { + s.counts.LogResourcesProgress(ctx, resourceTypeID) + s.state.FinishAction(ctx) + } else { + err = s.state.NextPage(ctx, resp.GetNextPageToken()) + if err != nil { + return err + } + } + + bulkPutResources := []*v2.Resource{} + for _, r := range resp.GetList() { + // Check if we've already synced this resource, skip it if we have + _, err = s.store.GetResource(ctx, reader_v2.ResourcesReaderServiceGetResourceRequest_builder{ + ResourceId: v2.ResourceId_builder{ResourceType: r.GetId().GetResourceType(), Resource: r.GetId().GetResource()}.Build(), + }.Build()) + if err == nil { + continue + } + + if !errors.Is(err, sql.ErrNoRows) { + return err + } + + err = s.validateResourceTraits(ctx, r) + if err != nil { + return err + } + + // Set the resource creation source + r.SetCreationSource(v2.Resource_CREATION_SOURCE_CONNECTOR_LIST_RESOURCES) + + bulkPutResources = append(bulkPutResources, r) + + // Only follow child annotations that match our target resource type + err = s.getSubResourcesForType(ctx, r, s.resourceTypedSyncID) + if err != nil { + return err + } + } + + if len(bulkPutResources) > 0 { + err = s.store.PutResources(ctx, bulkPutResources...) + if err != nil { + return err + } + } + + return nil +} + +// getSubResourcesForType fetches sub-resources that match the target resource type. +// This is used for resource-typed syncs to only follow child annotations of the same type. +func (s *syncer) getSubResourcesForType(ctx context.Context, parent *v2.Resource, targetResourceTypeID string) error { + ctx, span := tracer.Start(ctx, "syncer.getSubResourcesForType") + defer span.End() + + for _, a := range parent.GetAnnotations() { + if a.MessageIs((*v2.ChildResourceType)(nil)) { + crt := &v2.ChildResourceType{} + err := a.UnmarshalTo(crt) + if err != nil { + return err + } + + // Only follow child annotations that match our target type + if crt.GetResourceTypeId() != targetResourceTypeID { + continue + } + + childAction := Action{ + Op: SyncResourceTypedOp, + ResourceTypeID: crt.GetResourceTypeId(), + ParentResourceID: parent.GetId().GetResource(), + ParentResourceTypeID: parent.GetId().GetResourceType(), + } + s.state.PushAction(ctx, childAction) + } + } + + return nil +} + +// SetupResourceTypedSync discovers the resource hierarchy and queues appropriate sync actions. +// For child resource types (like users under orgs), it discovers parent types first. +func (s *syncer) SetupResourceTypedSync(ctx context.Context) error { + ctx, span := tracer.Start(ctx, "syncer.SetupResourceTypedSync") + defer span.End() + + l := ctxzap.Extract(ctx) + targetTypeID := s.state.ResourceTypeID(ctx) + if targetTypeID == "" { + return errors.New("resource type ID is required for SetupResourceTypedSync") + } + + l.Info("Setting up resource-typed sync, discovering parent types...", zap.String("target_type", targetTypeID)) + + // First, try to find parent types by sampling resources from each type + // and checking their ChildResourceType annotations + parentTypes := []string{} + + resp, err := s.store.ListResourceTypes(ctx, v2.ResourceTypesServiceListResourceTypesRequest_builder{}.Build()) + if err != nil { + return err + } + + for _, rt := range resp.GetList() { + // Skip the target type itself + if rt.GetId() == targetTypeID { + continue + } + + // Try to get a sample resource of this type to check annotations + hasTargetAsChild, err := s.resourceTypeHasChildType(ctx, rt.GetId(), targetTypeID) + if err != nil { + l.Debug("error checking if resource type has child type", + zap.String("parent_type", rt.GetId()), + zap.String("target_type", targetTypeID), + zap.Error(err)) + continue + } + + if hasTargetAsChild { + parentTypes = append(parentTypes, rt.GetId()) + l.Debug("found parent type for target", + zap.String("parent_type", rt.GetId()), + zap.String("target_type", targetTypeID)) + } + } + + s.state.FinishAction(ctx) + + if len(parentTypes) > 0 { + // We found parent types - queue syncing them first + // When they sync, getSubResourcesForType will queue syncing children + l.Info("Discovered parent types for target, syncing parents first", + zap.String("target_type", targetTypeID), + zap.Strings("parent_types", parentTypes)) + + for _, parentType := range parentTypes { + s.state.PushAction(ctx, Action{ + Op: SyncResourceTypedOp, + ResourceTypeID: parentType, + }) + } + } else { + // No parents found - target is a root-level type, sync directly + l.Info("No parent types found, syncing target type directly", + zap.String("target_type", targetTypeID)) + + s.state.PushAction(ctx, Action{ + Op: SyncResourceTypedOp, + ResourceTypeID: targetTypeID, + }) + } + + return nil +} + +// resourceTypeHasChildType checks if a resource type has the target type as a child +// by sampling a resource and checking its ChildResourceType annotations. +func (s *syncer) resourceTypeHasChildType(ctx context.Context, resourceTypeID string, targetTypeID string) (bool, error) { + ctx, span := tracer.Start(ctx, "syncer.resourceTypeHasChildType") + defer span.End() + + // Try to get a single sample resource of this type from the connector + // We only need one resource to check annotations since all resources of the same type + // should have the same child type annotations + resp, err := s.connector.ListResources(ctx, v2.ResourcesServiceListResourcesRequest_builder{ + ResourceTypeId: resourceTypeID, + PageSize: 1, + ActiveSyncId: s.getActiveSyncID(), + }.Build()) + if err != nil { + return false, err + } + + // Check the first resource's annotations for ChildResourceType matching our target + resources := resp.GetList() + if len(resources) == 0 { + return false, nil + } + + r := resources[0] + for _, a := range r.GetAnnotations() { + if a.MessageIs((*v2.ChildResourceType)(nil)) { + crt := &v2.ChildResourceType{} + err := a.UnmarshalTo(crt) + if err != nil { + return false, err + } + + if crt.GetResourceTypeId() == targetTypeID { + return true, nil + } + } + } + + return false, nil +} + func (s *syncer) validateResourceTraits(ctx context.Context, r *v2.Resource) error { ctx, span := tracer.Start(ctx, "syncer.validateResourceTraits") defer span.End() @@ -1233,6 +1503,12 @@ func (s *syncer) SyncEntitlements(ctx context.Context) error { ctx, span := tracer.Start(ctx, "syncer.SyncEntitlements") defer span.End() + // If ResourceTypeID is set but ResourceID is not, we're doing a resource-typed sync + // and should only sync entitlements for resources of that type + if s.state.ResourceTypeID(ctx) != "" && s.state.ResourceID(ctx) == "" { + return s.syncEntitlementsForResourceType(ctx, s.state.ResourceTypeID(ctx)) + } + if s.state.ResourceTypeID(ctx) == "" && s.state.ResourceID(ctx) == "" { pageToken := s.state.PageToken(ctx) @@ -1327,6 +1603,51 @@ func (s *syncer) syncEntitlementsForResource(ctx context.Context, resourceID *v2 return nil } +// syncEntitlementsForResourceType syncs entitlements for all resources of a specific type. +// This is used for resource-typed incremental syncs. +func (s *syncer) syncEntitlementsForResourceType(ctx context.Context, resourceTypeID string) error { + ctx, span := tracer.Start(ctx, "syncer.syncEntitlementsForResourceType") + defer span.End() + + pageToken := s.state.PageToken(ctx) + + if pageToken == "" { + ctxzap.Extract(ctx).Info("Syncing entitlements for resource type...", zap.String("resource_type_id", resourceTypeID)) + s.handleInitialActionForStep(ctx, *s.state.Current()) + } + + resp, err := s.store.ListResources(ctx, v2.ResourcesServiceListResourcesRequest_builder{ + ResourceTypeId: resourceTypeID, + PageToken: pageToken, + }.Build()) + if err != nil { + return err + } + + // We want to take action on the next page before we push any new actions + if resp.GetNextPageToken() != "" { + err = s.state.NextPage(ctx, resp.GetNextPageToken()) + if err != nil { + return err + } + } else { + s.state.FinishAction(ctx) + } + + for _, r := range resp.GetList() { + shouldSkipEntitlements, err := s.shouldSkipEntitlements(ctx, r) + if err != nil { + return err + } + if shouldSkipEntitlements { + continue + } + s.state.PushAction(ctx, Action{Op: SyncEntitlementsOp, ResourceID: r.GetId().GetResource(), ResourceTypeID: r.GetId().GetResourceType()}) + } + + return nil +} + func (s *syncer) SyncStaticEntitlements(ctx context.Context) error { ctx, span := tracer.Start(ctx, "syncer.SyncStaticEntitlements") defer span.End() @@ -1764,6 +2085,12 @@ func (s *syncer) SyncGrants(ctx context.Context) error { ctx, span := tracer.Start(ctx, "syncer.SyncGrants") defer span.End() + // If ResourceTypeID is set but ResourceID is not, we're doing a resource-typed sync + // and should only sync grants for resources of that type + if s.state.ResourceTypeID(ctx) != "" && s.state.ResourceID(ctx) == "" { + return s.syncGrantsForResourceType(ctx, s.state.ResourceTypeID(ctx)) + } + if s.state.ResourceTypeID(ctx) == "" && s.state.ResourceID(ctx) == "" { pageToken := s.state.PageToken(ctx) @@ -1812,6 +2139,52 @@ func (s *syncer) SyncGrants(ctx context.Context) error { return nil } +// syncGrantsForResourceType syncs grants for all resources of a specific type. +// This is used for resource-typed incremental syncs. +func (s *syncer) syncGrantsForResourceType(ctx context.Context, resourceTypeID string) error { + ctx, span := tracer.Start(ctx, "syncer.syncGrantsForResourceType") + defer span.End() + + pageToken := s.state.PageToken(ctx) + + if pageToken == "" { + ctxzap.Extract(ctx).Info("Syncing grants for resource type...", zap.String("resource_type_id", resourceTypeID)) + s.handleInitialActionForStep(ctx, *s.state.Current()) + } + + resp, err := s.store.ListResources(ctx, v2.ResourcesServiceListResourcesRequest_builder{ + ResourceTypeId: resourceTypeID, + PageToken: pageToken, + }.Build()) + if err != nil { + return err + } + + // We want to take action on the next page before we push any new actions + if resp.GetNextPageToken() != "" { + err = s.state.NextPage(ctx, resp.GetNextPageToken()) + if err != nil { + return err + } + } else { + s.state.FinishAction(ctx) + } + + for _, r := range resp.GetList() { + shouldSkip, err := s.shouldSkipGrants(ctx, r) + if err != nil { + return err + } + + if shouldSkip { + continue + } + s.state.PushAction(ctx, Action{Op: SyncGrantsOp, ResourceID: r.GetId().GetResource(), ResourceTypeID: r.GetId().GetResourceType()}) + } + + return nil +} + type latestSyncFetcher interface { LatestFinishedSync(ctx context.Context, syncType connectorstore.SyncType) (string, error) } @@ -3004,6 +3377,13 @@ func WithSkipGrants(skip bool) SyncOpt { } } +func WithPartialSyncResourceType(resourceTypeID string) SyncOpt { + return func(s *syncer) { + s.resourceTypedSyncID = resourceTypeID + s.syncType = connectorstore.SyncTypePartial + } +} + // NewSyncer returns a new syncer object. func NewSyncer(ctx context.Context, c types.ConnectorClient, opts ...SyncOpt) (Syncer, error) { s := &syncer{ diff --git a/pkg/tasks/c1api/manager.go b/pkg/tasks/c1api/manager.go index 7b6aec9d9..3f7478816 100644 --- a/pkg/tasks/c1api/manager.go +++ b/pkg/tasks/c1api/manager.go @@ -286,6 +286,8 @@ func (c *c1ApiTaskManager) Process(ctx context.Context, task *v1.Task, cc types. handler = newActionInvokeTaskHandler(task, tHelpers) case taskTypes.ActionStatusType: handler = newActionStatusTaskHandler(task, tHelpers) + case taskTypes.PartialSyncType: + handler = newPartialSyncTaskHandler(task, tHelpers) default: return c.finishTask(ctx, task, nil, nil, errors.New("unsupported task type")) } diff --git a/pkg/tasks/c1api/partial_sync.go b/pkg/tasks/c1api/partial_sync.go new file mode 100644 index 000000000..8003c8adb --- /dev/null +++ b/pkg/tasks/c1api/partial_sync.go @@ -0,0 +1,162 @@ +package c1api + +import ( + "context" + "errors" + "os" + + "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap/ctxzap" + "go.uber.org/zap" + + v1 "github.com/conductorone/baton-sdk/pb/c1/connectorapi/baton/v1" + "github.com/conductorone/baton-sdk/pkg/session" + sdkSync "github.com/conductorone/baton-sdk/pkg/sync" + "github.com/conductorone/baton-sdk/pkg/tasks" +) + +type partialSyncTaskHandler struct { + task *v1.Task + helpers fullSyncHelpers +} + +func (c *partialSyncTaskHandler) sync(ctx context.Context, c1zPath string) error { + ctx, span := tracer.Start(ctx, "partialSyncTaskHandler.sync") + defer span.End() + + l := ctxzap.Extract(ctx).With(zap.String("task_id", c.task.GetId()), zap.Stringer("task_type", tasks.GetType(c.task))) + + syncPartialTask := c.task.GetSyncPartial() + if syncPartialTask == nil { + return errors.New("task is not a partial sync task") + } + + syncOpts := []sdkSync.SyncOpt{ + sdkSync.WithC1ZPath(c1zPath), + sdkSync.WithTmpDir(c.helpers.TempDir()), + } + + cc := c.helpers.ConnectorClient() + + // Check which sync mode is set + switch { + case syncPartialTask.HasTargetedResources(): + // Targeted resources mode - includes entitlements and grants + targetedResources := syncPartialTask.GetTargetedResources() + if targetedResources != nil && len(targetedResources.GetResources()) > 0 { + l.Info("Running partial sync for targeted resources", + zap.Int("resource_count", len(targetedResources.GetResources()))) + syncOpts = append(syncOpts, sdkSync.WithTargetedSyncResources(targetedResources.GetResources())) + } else { + return errors.New("targeted_resources is set but contains no resources") + } + + case syncPartialTask.GetResourceTypeId() != "": + // Resource type mode - skips entitlements and grants + resourceTypeID := syncPartialTask.GetResourceTypeId() + l.Info("Running partial sync for resource type", zap.String("resource_type_id", resourceTypeID)) + syncOpts = append(syncOpts, sdkSync.WithPartialSyncResourceType(resourceTypeID)) + + default: + return errors.New("partial sync task must specify either targeted_resources or resource_type_id") + } + + if setSessionStore, ok := cc.(session.SetSessionStore); ok { + syncOpts = append(syncOpts, sdkSync.WithSessionStore(setSessionStore)) + } + + syncer, err := sdkSync.NewSyncer(ctx, cc, syncOpts...) + if err != nil { + l.Error("failed to create syncer", zap.Error(err)) + return err + } + + err = syncer.Sync(ctx) + if err != nil { + l.Error("failed to sync", zap.Error(err)) + + if closeErr := syncer.Close(ctx); closeErr != nil { + l.Error("failed to close syncer after sync error", zap.Error(closeErr)) + err = errors.Join(err, closeErr) + } + + return err + } + + if err := syncer.Close(ctx); err != nil { + l.Error("failed to close syncer", zap.Error(err)) + return err + } + + return nil +} + +func (c *partialSyncTaskHandler) HandleTask(ctx context.Context) error { + ctx, span := tracer.Start(ctx, "partialSyncTaskHandler.HandleTask") + defer span.End() + + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + l := ctxzap.Extract(ctx).With(zap.String("task_id", c.task.GetId()), zap.Stringer("task_type", tasks.GetType(c.task))) + l.Info("Handling partial sync task.") + + assetFile, err := os.CreateTemp(c.helpers.TempDir(), "baton-sdk-partial-sync-upload") + if err != nil { + l.Error("failed to create temp file", zap.Error(err)) + return c.helpers.FinishTask(ctx, nil, nil, err) + } + c1zPath := assetFile.Name() + err = assetFile.Close() + if err != nil { + return c.helpers.FinishTask(ctx, nil, nil, err) + } + + ctx, err = c.helpers.HeartbeatTask(ctx, nil) + if err != nil { + l.Error("failed to heartbeat task", zap.Error(err)) + return err + } + + err = c.sync(ctx, c1zPath) + if err != nil { + l.Error("failed to sync", zap.Error(err)) + return c.helpers.FinishTask(ctx, nil, nil, err) + } + + c1zF, err := os.Open(c1zPath) + if err != nil { + l.Error("failed to open sync asset prior to upload", zap.Error(err)) + return c.helpers.FinishTask(ctx, nil, nil, err) + } + defer func(f *os.File) { + err = f.Close() + if err != nil { + l.Error("failed to close sync asset", zap.Error(err), zap.String("path", f.Name())) + } + err = os.Remove(f.Name()) + if err != nil { + l.Error("failed to remove temp file", zap.Error(err), zap.String("path", f.Name())) + } + }(c1zF) + + err = c.helpers.Upload(ctx, c1zF) + if err != nil { + l.Error("failed to upload sync asset", zap.Error(err)) + return c.helpers.FinishTask(ctx, nil, nil, err) + } + + err = uploadDebugLogs(ctx, c.helpers) + if err != nil { + return c.helpers.FinishTask(ctx, nil, nil, err) + } + + return c.helpers.FinishTask(ctx, nil, nil, nil) +} + +func newPartialSyncTaskHandler(task *v1.Task, helpers fullSyncHelpers) tasks.TaskHandler { + return &partialSyncTaskHandler{ + task: task, + helpers: helpers, + } +} + diff --git a/pkg/tasks/local/partial_sync.go b/pkg/tasks/local/partial_sync.go new file mode 100644 index 000000000..ad76e67fd --- /dev/null +++ b/pkg/tasks/local/partial_sync.go @@ -0,0 +1,161 @@ +package local + +import ( + "context" + "errors" + "sync" + "time" + + "go.opentelemetry.io/otel/trace" + + v2 "github.com/conductorone/baton-sdk/pb/c1/connector/v2" + v1 "github.com/conductorone/baton-sdk/pb/c1/connectorapi/baton/v1" + "github.com/conductorone/baton-sdk/pkg/session" + sdkSync "github.com/conductorone/baton-sdk/pkg/sync" + "github.com/conductorone/baton-sdk/pkg/tasks" + "github.com/conductorone/baton-sdk/pkg/types" +) + +type localPartialSync struct { + dbPath string + resourceTypeID string + targetedResources []*v2.Resource + tmpDir string + o sync.Once +} + +type PartialSyncOption func(*localPartialSync) + +func (m *localPartialSync) GetTempDir() string { + return "" +} + +func (m *localPartialSync) ShouldDebug() bool { + return false +} + +func (m *localPartialSync) Next(ctx context.Context) (*v1.Task, time.Duration, error) { + var task *v1.Task + m.o.Do(func() { + taskBuilder := v1.Task_builder{} + + syncPartialBuilder := v1.Task_SyncPartialTask_builder{} + + if len(m.targetedResources) > 0 { + // Targeted resources mode + syncPartialBuilder.TargetedResources = v1.Task_SyncPartialTask_TargetedResources_builder{ + Resources: m.targetedResources, + }.Build() + } else if m.resourceTypeID != "" { + // Resource type mode + syncPartialBuilder.ResourceTypeId = &m.resourceTypeID + } + + taskBuilder.SyncPartial = syncPartialBuilder.Build() + task = taskBuilder.Build() + }) + return task, 0, nil +} + +func (m *localPartialSync) Process(ctx context.Context, task *v1.Task, cc types.ConnectorClient) error { + ctx, span := tracer.Start(ctx, "localPartialSync.Process", trace.WithNewRoot()) + defer span.End() + + var setSessionStore session.SetSessionStore + if ssetSessionStore, ok := cc.(session.SetSessionStore); ok { + setSessionStore = ssetSessionStore + } + + syncTask := task.GetSyncPartial() + if syncTask == nil { + return errors.New("task is not a partial sync task") + } + + syncOpts := []sdkSync.SyncOpt{ + sdkSync.WithC1ZPath(m.dbPath), + sdkSync.WithTmpDir(m.tmpDir), + sdkSync.WithSessionStore(setSessionStore), + } + + // Check which sync mode is set + switch { + case syncTask.HasTargetedResources(): + // Targeted resources mode - includes entitlements and grants + targetedResources := syncTask.GetTargetedResources() + if targetedResources != nil && len(targetedResources.GetResources()) > 0 { + syncOpts = append(syncOpts, sdkSync.WithTargetedSyncResources(targetedResources.GetResources())) + } else { + return errors.New("targeted_resources is set but contains no resources") + } + + case syncTask.GetResourceTypeId() != "": + // Resource type mode - skips entitlements and grants + syncOpts = append(syncOpts, sdkSync.WithPartialSyncResourceType(syncTask.GetResourceTypeId())) + + default: + return errors.New("partial sync task must specify either targeted_resources or resource_type_id") + } + + syncer, err := sdkSync.NewSyncer(ctx, cc, syncOpts...) + if err != nil { + return err + } + + err = syncer.Sync(ctx) + if err != nil { + if closeErr := syncer.Close(ctx); closeErr != nil { + err = errors.Join(err, closeErr) + } + return err + } + + if err := syncer.Close(ctx); err != nil { + return err + } + + return nil +} + +// NewPartialSync returns a task manager that queues a partial sync task. +// It supports two modes: +// - Resource type mode: Syncs resources of a single type (with parent discovery). Entitlements and grants are skipped. +// - Targeted resources mode: Syncs specific resources with their entitlements and grants. +func NewPartialSync(ctx context.Context, dbPath string, opts ...PartialSyncOption) (tasks.Manager, error) { + nm := &localPartialSync{ + dbPath: dbPath, + } + + for _, opt := range opts { + opt(nm) + } + + if nm.resourceTypeID == "" && len(nm.targetedResources) == 0 { + return nil, errors.New("partial sync requires either a resource type ID or targeted resources") + } + + return nm, nil +} + +// WithPartialSyncResourceType sets the resource type ID for resource type mode. +// In this mode, only resources are synced - entitlements and grants are skipped. +func WithPartialSyncResourceType(resourceTypeID string) PartialSyncOption { + return func(m *localPartialSync) { + m.resourceTypeID = resourceTypeID + } +} + +// WithPartialSyncTargetedResources sets the targeted resources for targeted resources mode. +// In this mode, full sync data (resources, entitlements, grants) is synced for the specified resources. +func WithPartialSyncTargetedResources(resources []*v2.Resource) PartialSyncOption { + return func(m *localPartialSync) { + m.targetedResources = resources + } +} + +// WithPartialSyncTmpDir sets the temp directory for the partial sync. +func WithPartialSyncTmpDir(tmpDir string) PartialSyncOption { + return func(m *localPartialSync) { + m.tmpDir = tmpDir + } +} + diff --git a/pkg/tasks/tasks.go b/pkg/tasks/tasks.go index db0e64d40..a24727d29 100644 --- a/pkg/tasks/tasks.go +++ b/pkg/tasks/tasks.go @@ -68,6 +68,8 @@ func Is(task *v1.Task, target taskTypes.TaskType) bool { return actualType == v1.Task_ActionStatus_case case taskTypes.CreateSyncDiff: return actualType == v1.Task_CreateSyncDiff_case + case taskTypes.PartialSyncType: + return actualType == v1.Task_SyncPartial_case default: return false } @@ -119,6 +121,8 @@ func GetType(task *v1.Task) taskTypes.TaskType { return taskTypes.ActionStatusType case v1.Task_CreateSyncDiff_case: return taskTypes.CreateSyncDiff + case v1.Task_SyncPartial_case: + return taskTypes.PartialSyncType default: return taskTypes.UnknownType } diff --git a/pkg/types/tasks/tasks.go b/pkg/types/tasks/tasks.go index 07e38a89f..c30fa5a93 100644 --- a/pkg/types/tasks/tasks.go +++ b/pkg/types/tasks/tasks.go @@ -66,6 +66,8 @@ func (tt TaskType) String() string { return "action_status" case CreateSyncDiff: return "create_sync_diff" + case PartialSyncType: + return "sync_partial" default: return "unknown" } @@ -104,4 +106,5 @@ const ( ActionStatusType CreateSyncDiff ListStaticEntitlementsType + PartialSyncType ) diff --git a/proto/c1/connectorapi/baton/v1/baton.proto b/proto/c1/connectorapi/baton/v1/baton.proto index 976d05aeb..4853b1eb0 100644 --- a/proto/c1/connectorapi/baton/v1/baton.proto +++ b/proto/c1/connectorapi/baton/v1/baton.proto @@ -52,6 +52,24 @@ message Task { repeated connector.v2.Resource targeted_sync_resources = 4; } + // SyncPartialTask is a partial sync task that syncs either targeted resources or a single resource type. + // When using targeted_resources, entitlements and grants are included. + // When using resource_type_id, only resources are synced (entitlements and grants are skipped). + message SyncPartialTask { + message TargetedResources { + repeated connector.v2.Resource resources = 1; + } + + repeated google.protobuf.Any annotations = 1; + + oneof sync_mode { + // Targeted resources to sync - includes entitlements and grants + TargetedResources targeted_resources = 2; + // Single resource type to sync - skips entitlements and grants + string resource_type_id = 3; + } + } + message EventFeedTask { repeated google.protobuf.Any annotations = 1; google.protobuf.Timestamp start_at = 2; @@ -175,6 +193,7 @@ message Task { ActionStatusTask action_status = 118; CreateSyncDiffTask create_sync_diff = 119; CompactSyncs compact_syncs = 120; + SyncPartialTask sync_partial = 121; } bool debug = 3; }